¡Bienvenido! Para acceder al chat y realizar descargas, es necesario tener una cuenta activa. Regístrate aquí y asegúrate de utilizar un correo electrónico válido para completar tu activación.
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Moderación de fotos - Aprobar antes de publicar
#1

2
Mejor respuesta del mensaje Moderación de fotos - Aprobar antes de publicar
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]



Hacer la consulta en la base de datos:
 
ALTER TABLE `w_configuracion` ADD `c_desapprove_foto` INT(1) NOT NULL DEFAULT '0' AFTER `c_desapprove_post`;


En el archivo c.admin.php y buscar:
 
'desapprove_post' => empty($_POST['desapprove_post']) ? 0 : 1,


Debajo de eso agregar:
 
'desapprove_foto' => empty($_POST['desapprove_foto']) ? 0 : 1,


Luego de eso buscamos:
 
$c['desapprove_post'] . '\'


Al lado de eso agregar:
 
, `c_desapprove_foto` = \'' . $c['desapprove_foto'] . '\'



Luego buscar dos veces:
 
'mocp' => $_POST['mod-contenidoposts'],


Y debajo de cada uno agregar:
 
'mocf' => $_POST['mod-contenidofotos'],


Casi al final del archivo buscar:
 
(SELECT count(foto_id) FROM f_fotos WHERE f_status = \'0\') as fotos_visibles,


Y agregar debajo esto:
 
(SELECT count(foto_id) FROM f_fotos WHERE f_status = \'3\') as fotos_revision,


Un poco mas abajo buscar:
 
+ $num['fotos_eliminadas']


Agregar al lado:
 
$num['fotos_revision'


En el archivo c.core.php buscar:
 
(SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts,


Al lado de eso agregar:
 
(SELECT count(foto_id) FROM f_fotos WHERE f_status = \'3\') as revfotos,


Y una línea abajo buscar:
 
+ $datos['revposts']


Agregar al lado:
 
+ $datos['revfotos']



En el archivo c.moderacion.php buscar:
 
/**
    * @name getHistory()


Arriba de eso agregar:
 
public function getFotosD()
    {
        global $tsUser, $tsCore;
        //
        $max = 20; // MAXIMO A MOSTRAR
        $limit = $tsCore->setPageLimit($max, true);

        // PAGINAS
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM f_fotos AS f LEFT JOIN u_miembros AS u ON u.user_id = f.f_user WHERE f.f_status = \'3\'');

        list($total) = db_exec('fetch_row', $query);
        
        $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] .
            "/moderacion/revfotos?", $_GET['s'], $total, $max);
        //
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, h.*, f.foto_id, f.f_title FROM f_fotos AS f LEFT JOIN w_historial AS h ON h.pofid = f.foto_id LEFT JOIN u_miembros AS u ON u.user_id = h.mod  WHERE h.type = \'2\' AND h.action = \'3\' AND f.f_status = \'3\' LIMIT ' .
            $limit);
        $data['datos'] = result_array($query);
        
        //
        return $data;
    }


Buscar la función:
 
function rebootFoto($fid)


Y reemplazarla por esta:
 
function rebootFoto($fid)
    {
        global $tsUser;
        if ($tsUser->is_admod || $tsUser->permisos['mocdf'])
        {
// PRIMERO COMPROBAMOS SI ESTÁ OCULTO
            $datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT foto_id, f_status FROM f_fotos WHERE foto_id = \'' .
                (int)$fid . '\' LIMIT 1'));
            if ($datos['f_status'] == 3)
            {
                if (!db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_historial` WHERE `pofid` = \'' . (int) $fid . '\' && `type` = \'2\' && `action` = \'3\''))
                    return '0: No se pudo restaurar la foto.';
            } else
            {
                //BORRAMOS LA DENUNCIAS
                if (!db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_denuncias` WHERE `obj_id` = \'' . (int) $fid . '\' AND `d_type` = \'4\''))
                    return '0: No se pudo eliminar la denuncia.';
            }
            // REGRESAMOS EL POST
            if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `f_fotos` SET `f_status` = \'0\' WHERE `foto_id` = \'' .
                $fid . '\''))
            {
                return '1: La foto ha sido restaurada.';
            } else
                return '0: No se pudo restaurar la foto.';
        } else
            return '0: No continúe por aquí.';
    }


En c.fotos.php buscar:
 
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `f_fotos` (f_title, f_date, f_description, f_url, f_user, f_closed, f_visitas, f_last, f_ip) VALUES (\''.$fData['titulo'].'\', \''.time().'\', \''.$fData['desc'].'\',  \''.$img_url.'\', \''.$tsUser->uid.'\', \''.$fData['closed'].'\', \''.$fData['visitas'].'\', \'1\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {
                $fid = db_exec('insert_id');


Y reemplazarlo por:
 
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `f_fotos` (f_title, f_date, f_description, f_url, f_user, f_closed, f_visitas, f_status, f_last, f_ip) VALUES (\''.$fData['titulo'].'\', \''.time().'\', \''.$fData['desc'].'\',  \''.$img_url.'\', \''.$tsUser->uid.'\', \''.$fData['closed'].'\', \''.$fData['visitas'].'\', '.((!$tsUser->is_admod && $tsCore->settings['c_desapprove_foto'] == 1) ? '\'3\'' : '\'0\'').', \'1\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {
$fid = db_exec('insert_id');
// Si está oculto, lo creamos en el historial e.e
if(!$tsUser->is_admod && $tsCore->settings['c_desapprove_foto'] == 1) db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `w_historial` (`pofid`, `action`, `type`, `mod`, `reason`, `date`, `mod_ip`) VALUES (\''.(int)$fid.'\', \'3\', \'2\', \''.$tsUser->uid.'\', \'Revisión al publicar\', \''.time().'\', \''.$_SERVER['REMOTE_ADDR'].'\')');


Buscar y eliminar la línea:
 
$data['foto']['exist'] = db_exec('num_rows', $query);


Buscar un poco arriba de eso:
 
$data['foto'] = db_exec('fetch_assoc', $query);


Y debajo agregar:
 
if(empty($data['foto']['foto_id'])) return 'La foto fue eliminada!';
        elseif($data['foto']['f_status'] == 1 && (!$tsUser->is_admod && $tsUser->permisos['morf'] == false)) return 'La foto está en revisión por acumulación de denuncias.';
        elseif($data['foto']['f_status'] == 3 && (!$tsUser->is_admod && $tsUser->permisos['mocf'] == false)) return 'La foto se encuentra en revisión, a la espera de su publicación.';


Un poco mas arriba en la consulta buscar y eliminar
 
AND f.f_status = \'0\'


En fotos.php al lado de:
 
"La imagen <b>".$titulo."</b> fue agregada."


Agregar:
 
.(!$tsUser->is_admod && $tsCore->settings['c_desapprove_foto'] == 1 ? ' Deber&aacute; esperar su aprobaci&oacute;n' : '')


Un poco abajo buscar el contenido del case "ver":
 
$tsFoto = $tsFotos->getFoto();
            // TITULO
            $tsTitle = $tsFoto['foto']['f_title'].' - '.$tsFoto['foto']['user_name'].' - '.$tsCore->settings['titulo'];
            
            if($tsFoto['foto']['f_status'] == 1 && (!$tsUser->is_admod && $tsUser->permisos['moacp'] == false)) {
            $tsPage = 'aviso';
            $smarty->assign("tsAviso",array('titulo' => 'Opps...', 'mensaje' => 'Esta foto se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias', 'but' => 'Ir a Fotos', 'link' => "{$tsCore->settings['url']}/fotos/"));
            }elseif($tsFoto['foto']['exist'] == 0){
            $tsPage = 'aviso';
            $smarty->assign("tsAviso",array('titulo' => 'Opps...', 'mensaje' => 'Esta foto no existe', 'but' => 'Ir a Fotos', 'link' => "{$tsCore->settings['url']}/fotos/"));
            }else{
            $smarty->assign("tsFoto", $tsFoto['foto']);
            $smarty->assign("tsUFotos", $tsFoto['last']);
            $smarty->assign("tsFFotos", $tsFoto['amigos']);
            $smarty->assign("tsFComments", $tsFoto['comments']);
            $smarty->assign("tsFVisitas", $tsFoto['visitas']);
            $smarty->assign("tsFMedallas", $tsFoto['medallas']);
            $smarty->assign("tsTMedallas", $tsFoto['m_total']);
            }


Y todo eso Reemplazarlo por:
 
$tsFoto = $tsFotos->getFoto();            
            if(is_array($tsFoto)) {
                // TITULO
                $tsTitle = $tsFoto['foto']['f_title'].' - '.$tsFoto['foto']['user_name'].' - '.$tsCore->settings['titulo'];
    $smarty->assign("tsFoto", $tsFoto['foto']);
                $smarty->assign("tsUFotos", $tsFoto['last']);
                $smarty->assign("tsFFotos", $tsFoto['amigos']);
                $smarty->assign("tsFComments", $tsFoto['comments']);
    $smarty->assign("tsFVisitas", $tsFoto['visitas']);
    $smarty->assign("tsFMedallas", $tsFoto['medallas']);
    $smarty->assign("tsTMedallas", $tsFoto['m_total']);
} else {
                $tsPage = 'aviso';
                $smarty->assign("tsAviso",array('titulo' => 'Opps...', 'mensaje' => $tsFoto, 'but' => 'Ir a Fotos', 'link' => "{$tsCore->settings['url']}/fotos/"));
            }



En moderacion.php buscar:
 
elseif($action == 'revposts'){
        $smarty->assign("tsPosts",$tsMod->getPostsD());
    }


Debajo de eso agregar:
 
elseif($action == 'revfotos'){
        $smarty->assign("tsFotos",$tsMod->getFotosD());
    }



En templates/admin_mods/m.admin_configs.tpl debajo de:
 
<dl>
    <dt><label for="ai_desapprove_post">Revisi&oacute;n de posts tras su publicaci&oacute;n</label><br /><span>Si est&aacute; activado, el equipo de moderaci&oacute;n deber&aacute; aprobar un post antes de que &eacute;ste sea publicado.</span></dt>                                            
                                            <dd>
      <label><input name="desapprove_post" type="radio" id="ai_desapprove_post" value="1" {if $tsConfig.c_desapprove_post == 1}checked="checked"{/if} class="radio"/>S&iacute;</label>                                              
      <label><input name="desapprove_post" type="radio" id="ai_desapprove_post" value="0" {if $tsConfig.c_desapprove_post != 1}checked="checked"{/if} class="radio"/>No</label>                                            
                                            </dd>
                                        </dl>


Agregar:
 
<dl>
                                            <dt><label for="ai_desapprove_foto">Revisi&oacute;n de fotos tras su publicaci&oacute;n</label><br /><span>Si est&aacute; activado, el equipo de moderaci&oacute;n deber&aacute; aprobar una foto antes de que &eacute;sta sea publicada.</span></dt>                                            
                                            <dd>
                                              <label><input name="desapprove_foto" type="radio" id="ai_desapprove_foto" value="1" {if $tsConfig.c_desapprove_foto == 1}checked="checked"{/if} class="radio"/>S&iacute;</label>                                              
                                              <label><input name="desapprove_foto" type="radio" id="ai_desapprove_foto" value="0" {if $tsConfig.c_desapprove_foto != 1}checked="checked"{/if} class="radio"/>No</label>                                            
                                            </dd>
                                        </dl>



En templates/admin_mods/m.admin_rangos.tpl debajo de:
 
<input type="checkbox" id="mocp" name="mod-contenidoposts" {if $tsRango.permisos.mocp}checked{/if} /><label style="font-weight:bold;" for="mocp">Posts desaprobados. </label><label for="mocp">   Podr&aacute;n ver la secci&oacute;n y los posts ocultos.</label>
<br /><hr>


Agregar:
 
<input type="checkbox" id="mocf" name="mod-contenidofotos" {if $tsRango.permisos.mocf}checked{/if} /><label style="font-weight:bold;" for="mocf">Fotos desaprobadas. </label><label for="mocf">   Podr&aacute;n ver la secci&oacute;n y las fotos ocultas.</label>
<br /><hr>


En esa carpeta crear el archivo templates/admin_mods/m.mod_revision_fotos.tpl y en su contenido agregar:
 
<div class="boxy-title">
   <h3>Fotos desaprobadas</h3>
</div>
<div id="res" class="boxy-content" style="position:relative">                          
{if !$tsFotos.datos}
<div class="phpostAlfa">No hay fotos esperando aprobaci&oacute;n</div>
{else}
<table cellpadding="0" cellspacing="0" border="0" class="admin_table" width="100%" align="center">
    <thead>
        <th>ID</th>
        <th>Foto</th>
        <th>Moderador</th>                            
        <th>Raz&oacute;n</th>                                        
        <th>Fecha</th>                                                          
        <th>IP</th>
        <th>Acciones</th>
    </thead>
    <tbody>
        {foreach from=$tsFotos.datos item=f}
        <tr id="report_{$f.foto_id}">                                            
            <td>{$f.foto_id}</td>
            <td><a href="{$tsConfig.url}/fotos/{$f.user_name}/{$f.foto_id}/{$f.f_title|seo}.html" target="_blank" title="{$f.f_title}"><img src="{$f.f_url}" width="50" height="50" /></a></td>
            <td><a href="{$tsConfig.url}/perfil/{$f.user_name}" class="hovercard" uid="{$f.user_id}">{$f.user_name}</a></td>
            <td>{$f.reason}</td>
            <td>{$f.date|hace:true}</td>
            <td>{$f.mod_ip}</td>                                    
            <td class="admin_actions">
                    <a href="#" onclick="mod.reboot({$f.foto_id}, 'fotos', 'reboot', false); return false;"><img src="{$tsConfig.default}/images/icons/reboot.png" title="Reactivar Foto" /></a>
                    <a href="{$tsConfig.url}/fotos/editar.php?id={$f.foto_id}" target="_blank"><img src="{$tsConfig.default}/images/icons/edit.png" title="Editar Foto" /></a>
                    <a href="#" onclick="mod.fotos.borrar({$f.foto_id}, false); return false"><img src="{$tsConfig.default}/images/icons/close.png" title="Borrar Foto" /></a>
            </td>
        </tr>
        {/foreach}
    </tbody>
    <tfoot>
        <td colspan="8">P&aacute;ginas: {$tsFotos.pages}</td>
    </tfoot>
</table>
{/if}                                
</div>


En el archivo templates/admin_mods/m.mods_sidemenu.tpl en la misma carpeta, buscar:
 
{if $tsUser->is_admod || $tsUser->permisos.mocp}<li id="a_revposts"><span class="cat-title"><a onclick="$('#a_revposts').addClass('active');" href="{$tsConfig.url}/moderacion/revposts">Posts <span class="cadGe cadGe_{if $tsConfig.novemods.revposts > 15}red{elseif $tsConfig.novemods.revposts > 5}purple{else}green{/if}">{$tsConfig.novemods.revposts}</span></a></span></li>{/if}


Debajo agregar:
 
{if $tsUser->is_admod || $tsUser->permisos.mocf}<li id="a_revfotos"><span class="cat-title"><a onclick="$('#a_revfotos').addClass('active');" href="{$tsConfig.url}/moderacion/revfotos">Fotos <span class="cadGe cadGe_{if $tsConfig.novemods.revfotos > 15}red{elseif $tsConfig.novemods.revfotos > 5}purple{else}green{/if}">{$tsConfig.novemods.revfotos}</span></a></span></li>{/if}


En el archivo templates/admin_mods/m.admin_fotos.tpl al lado de:
 
if $f.f_status == 1


Agregar:
 
|| $f.f_status == 3


En el archivo templates/admin_mods/m.admin_stats.tpl buscar:
 
<li class="clearfix"><span class="floatL">  En revisi&oacute;n</span><span class="floatR number">{$tsAdminStats.fotos_ocultas}  </span></li>


Reemplazar por:
 
<li class="clearfix"><span class="floatL">  En revisi&oacute;n</span><span class="floatR number">{$tsAdminStats.fotos_revision}  </span></li>
        <li class="clearfix"><span class="floatL">  Inactivas</span><span class="floatR number">{$tsAdminStats.fotos_ocultas}  </span></li>


En el archivo templates/t.moderacion.tpl debajo de:
 
{if $tsUser->is_admod || $tsUser->permisos.mocp}{include file='admin_mods/m.mod_revision_posts.tpl'}{/if}


Agregar:
 
{elseif $tsAction == 'revfotos'}
                                {if $tsUser->is_admod || $tsUser->permisos.mocf}{include file='admin_mods/m.mod_revision_fotos.tpl'}{/if}



Por último en css/moderacion.css al lado de:
 
li#a_revposts


Agregar:
 
, li#a_revfotos




Dejo el script con la instalación echa.

Mega
Debes agradecer para ver el contenido...




Creditos: Debes agradecer para ver el contenido...
Responder
#2

1
@ Tronlar Falta agregar a los pasos la parte de: 
 
+ $num['fotos_revision'];

A lado de: 
 
+ $num['fotos_eliminadas']
Responder
#3

0
Hola @"Alt98" gracias por avisar, ya lo he corregido.
Te voy a dejar ahora lo que pides en le otro tema, hoy no trabajo y tengo todo el día, voy adelantar unas pocas de cosas.
Responder
#4

1
(03-08-2021, 07:46 AM)Tronlar escribió:  Hola @"Alt98" gracias por avisar, ya lo he corregido.
Te voy a dejar ahora lo que pides en le otro tema, hoy no trabajo y tengo todo el día, voy adelantar unas pocas de cosas.

Un placer poder apoyar aunque sea un poco
Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)