Posteador
aperpen
Vip



[MOD] Posts conjuntos (Dos usuarios)




Hola amigos!, a pedido de Jonas les traigo este MOD:
Consiste en que puedes añadir un usuario secundario a un post, que tendrá permisos para editarlo y los puntos se repartirán a partes iguales entre los dos.
 
¿Que trae?
- Poder poner a dos usuarios como dueños de un post.
- Usuario secundario no puede votar, si es secundario en el post.
- Usuario secundario puede editar post
- Tarjeta de usuario secundario en post.
 
 
La instalación es un poco larga, así que empecemos:
 
1) Hacen esta SQL en su BD:
ALTER TABLE  `p_posts` ADD  `post_usec` INT( 11 ) NOT NULL DEFAULT  '0';

 
2) Abren el c.posts.php de inc/class y buscan:
	/*
newPost()
*/
function newPost(){
global $tsCore, $tsUser, $tsMonitor, $tsActividad;
//
if($tsUser->is_admod || $tsUser->permisos['gopp']){
//
$postData = array(
'date' => time(),
'title' => $tsCore->parseBadWords($tsCore->setSecure($_POST['titulo'], true)),2,
'body' => $tsCore->setSecure($_POST['cuerpo']),
'tags' => $tsCore->parseBadWords($tsCore->setSecure($_POST['tags'], true)),true,1,
'category' => intval($_POST['categoria']),

Y justo abajo, agregan:
	'sec' => empty($_POST['sec']) ? 0 : $tsCore->setSecure($_POST['sec']),

 
En ese archivo buscan:
//ANTIFLOOD
$antiflood = 2;

Y abajo agregan:
if($postData['sec'] != 0){
$postData['sec'] = $tsUser->getUserID($postData['sec']);
if($postData['sec'] == 0) return 'El usuario secundario ingresado no existe.';
}

Luego buscan:
if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky,

Y justo al lado añaden:
post_usec,

Ahí cerca buscan:
\''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', 

Y justo al lado agregan:
\''.$postData['sec'].'\', 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
En ese archivo buscan:
$query = mysql_query('SELECT post_user, post_sponsored, post_sticky, post_status FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');

Y lo reemplazan por:
$query = mysql_query('SELECT post_user, post_sponsored, post_sticky, post_usec, post_status FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');

Luego buscan:
    if($data['post_status'] != '0' && !$tsUser->is_admod && !$tsUser->permisos['moedpo']) {
return 'El post no puede ser editado.';
}
//
$postData = array(
'title' => $tsCore->parseBadWords($_POST['titulo'], true),
'body' => $tsCore->setSecure($_POST['cuerpo'], true),
'tags' => $tsCore->parseBadWords($tsCore->setSecure($_POST['tags'], true)),
'category' => $_POST['categoria'],
 );

 
Y lo reemplazan por:
    if($data['post_status'] != '0' && !$tsUser->is_admod && !$tsUser->permisos['moedpo']  && $tsUser->uid != $data['post_usec']) {
return 'El post no puede ser editado.';
}
//
$postData = array(
'title' => $tsCore->parseBadWords($_POST['titulo'], true),
'body' => $tsCore->setSecure($_POST['cuerpo'], true),
'tags' => $tsCore->parseBadWords($tsCore->setSecure($_POST['tags'], true)),
'category' => $_POST['categoria'],
'sec' => empty($_POST['sec']) ? 0 : $tsCore->setSecure($_POST['sec']),
);
if(!empty($postData['sec'])){
$postData['sec'] = $tsUser->getUserID($postData['sec']);
if($postData['sec'] == 0) return 'El usuario secundario ingresado no existe.';
}

 
En ese archivo buscan:
post_visitantes = \''.$postData['visitantes'].'\',

 
Y justo al lado añaden: 
post_usec = \''.$postData['sec'].'\', 

 
 Luego buscan:
 
 //
if(empty($ford['post_id'])){
return 'El post elegido no existe.';
}elseif($ford['post_status'] != '0' && $tsUser->is_admod == 0 && $tsUser->permisos['moedpo'] == false){
return 'El post no puede ser editado.';
}elseif(($tsUser->uid != $ford['post_user']) && $tsUser->is_admod == 0 && $tsUser->permisos['moedpo'] == false){
return 'No puedes editar un post que no es tuyo.';
}


Y lo reemplazan por:
 //
if(empty($ford['post_id'])){
return 'El post elegido no existe.';
}elseif($ford['post_status'] != '0' && $tsUser->is_admod == 0 && $tsUser->permisos['moedpo'] == false){
return 'El post no puede ser editado.';
}elseif(($tsUser->uid != $ford['post_user'] && $ford['post_usec'] != $tsUser->uid) && $tsUser->is_admod == 0 && $tsUser->permisos['moedpo'] == false){
return 'No puedes editar un post que no es tuyo.';
}

$ford['post_usec'] = $tsUser->getUserName($ford['post_usec']);

Buscan:
		if(empty($post_id)) return array('deleted','Oops! Este post no existe o fue eliminado.');
// DAR MEDALLA
$this->DarMedalla($post_id);
// DATOS DEL POST
$query = mysql_query('SELECT c.* ,m.*, u.user_id FROM `p_posts` AS c LEFT JOIN `u_miembros` AS u ON c.post_user = u.user_id LEFT JOIN `u_perfil` AS m ON c.post_user = m.user_id WHERE `post_id` = \''.(int)$post_id.'\' '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' LIMIT 1');
//
$postData = mysql_fetch_assoc($query); 

Y abajo añaden:
if($postData['post_usec'] > 0){
$postData['aut_sec'] = mysql_fetch_assoc(mysql_query('SELECT m.*, u.* FROM `p_posts` AS c LEFT JOIN `u_miembros` AS u ON c.post_usec = u.user_id LEFT JOIN `u_perfil` AS m ON c.post_usec = m.user_id WHERE `post_id` = \''.(int)$post_id.'\' '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' LIMIT 1')); //
$postData['aut_sec']['rango'] = mysql_fetch_assoc(mysql_query('SELECT * FROM `u_rangos` WHERE `rango_id` = \''.(int)$postData['aut_sec']['user_rango'].'\' LIMIT 1'));

 
 

Para acabar en este archivo buscan:
		// SUMAR PUNTOS
$query = mysql_query('SELECT post_user FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');
$data = mysql_fetch_assoc($query);

// ES MI POST?
$is_mypost = ($data['post_user'] == $tsUser->uid) ? true : false;
// NO ES MI POST, PUEDO VOTAR
if(!$is_mypost){
// YA LO VOTE?
$votado = mysql_num_rows(mysql_query('SELECT tid FROM p_votos WHERE tid = \''.(int)$post_id.'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'1\' LIMIT 1'));
if(empty($votado)){

// COMPROBAMOS LOS PUNTOS QUE PODEMOS DAR
if($tsCore->settings['c_allow_points'] > 0) {
$max_points = $tsCore->settings['c_allow_points'];
}elseif($tsCore->settings['c_allow_points'] == '-1') { //TRUCO, podrás dar todos los puntos que tengas disponibles
$max_points = $tsUser->info['user_puntosxdar'];
}elseif($tsCore->settings['c_allow_points'] == '-2') { //TRUCO, podrás dar todos los puntos que quieras (sin abusar ¬¬), se restarán igual, si tienes puesto mantener puntos, estarás debiendo puntos durante una temporada.
$max_points = 999999999;
}else{
$max_points = $tsUser->permisos['gopfp'];
}
// TENGO SUFICIENTES PUNTOS
if($tsUser->info['user_puntosxdar'] >= $puntos){
if($puntos > 0) { // Votar sin dar puntos? No, gracias.
if($puntos <= $max_points) { // seroo churra XD ._. No alteraciones de javascript para sumar más de lo que se permite (? LOL ¬¬
// SUMAR PUNTOS AL POST
mysql_query('UPDATE p_posts SET post_puntos = post_puntos + '.(int)$puntos.' WHERE post_id = \''.(int)$post_id.'\'');
// SUMAR PUNTOS AL DUEÑO DEL POST
mysql_query('UPDATE u_miembros SET user_puntos = user_puntos + \''.(int)$puntos.'\' WHERE user_id = \''.(int)$data['post_user'].'\'');


Y lo reemplazan por:
		// SUMAR PUNTOS
$query = mysql_query('SELECT post_user, post_usec FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');
$data = mysql_fetch_assoc($query);

// ES MI POST?
$is_mypost = ($data['post_user'] == $tsUser->uid || $data['post_usec'] == $tsUser->uid) ? true : false;
// NO ES MI POST, PUEDO VOTAR
if(!$is_mypost){
// YA LO VOTE?
$votado = mysql_num_rows(mysql_query('SELECT tid FROM p_votos WHERE tid = \''.(int)$post_id.'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'1\' LIMIT 1'));
if(empty($votado)){

// COMPROBAMOS LOS PUNTOS QUE PODEMOS DAR
if($tsCore->settings['c_allow_points'] > 0) {
$max_points = $tsCore->settings['c_allow_points'];
}elseif($tsCore->settings['c_allow_points'] == '-1') { //TRUCO, podrás dar todos los puntos que tengas disponibles
$max_points = $tsUser->info['user_puntosxdar'];
}elseif($tsCore->settings['c_allow_points'] == '-2') { //TRUCO, podrás dar todos los puntos que quieras (sin abusar ¬¬), se restarán igual, si tienes puesto mantener puntos, estarás debiendo puntos durante una temporada.
$max_points = 999999999;
}else{
$max_points = $tsUser->permisos['gopfp'];
}
// TENGO SUFICIENTES PUNTOS
if($tsUser->info['user_puntosxdar'] >= $puntos){
if($puntos > 0) { // Votar sin dar puntos? No, gracias.
if($puntos <= $max_points) { // seroo churra XD ._. No alteraciones de javascript para sumar más de lo que se permite (? LOL ¬¬
// SUMAR PUNTOS AL POST
mysql_query('UPDATE p_posts SET post_puntos = post_puntos + '.(int)$puntos.' WHERE post_id = \''.(int)$post_id.'\'');
// SUMAR PUNTOS AL DUEÑO DEL POST
if($data['post_usec'] > 0){
$puntos = $puntos / 2;
mysql_query('UPDATE u_miembros SET user_puntos = user_puntos + \''.(int)$puntos.'\' WHERE user_id = \''.(int)$data['post_user'].'\'');
mysql_query('UPDATE u_miembros SET user_puntos = user_puntos + \''.(int)$puntos.'\' WHERE user_id = \''.(int)$data['post_usec'].'\'');
}else{
mysql_query('UPDATE u_miembros SET user_puntos = user_puntos + \''.(int)$puntos.'\' WHERE user_id = \''.(int)$data['post_user'].'\'');
}


 
3) Abren el m.post_content.tpl de themes/TUTEMA/templates/modules y buscan:
{if !$tsUser->is_member}{include file='modules/m.global_ads_728.tpl'}{/if}


 
Y abajo agregan:
 {if $tsPost.post_usec == $tsUser->uid}
<a title="Editar Post" onclick="location.href='{$tsConfig.url}/posts/editar/{$tsPost.post_id}'; return false" href="" class="btnActions">

<img alt="Editar" src="{$tsConfig.images}/editar.png"/> Editar</a>
{/if}

 
4) Abren el m.agregar_form.tpl de themes/TUTEMA/templates/modules y buscan:
     <li>
<label>Tags</label>
<span style="display: none;" class="errormsg"></span>
<input type="text" tabindex="4" name="tags" maxlength="128" class="text-inp required" value="{$tsDraft.b_tags}"/>
Una lista separada por comas, que describa el contenido. Ejemplo: <b>gol, ingleses, Copa Oro, futbol, Chicharito, M&eacute;xico</b>
</li>

Y abajo agregas:
<li>
<label>Usuario secundario</label>
<input type="text" tabindex="4" name="sec" maxlength="128" class="text-inp required" value="{$tsDraft.b_usec}"/>
Puedes insertar aqui un usuario que tendrá permiso para editar el post y los puntos obtenidos en este post se repartirán. <b>Verifica que escribes bien el usuario, escribe las mayúsculas, minisculás etc. que tenga su nick. De lo contrario, si introduces un usuario incorrecto se perderá mucha información.</b>
</li>

 
5) Abren el m.post_autor.tpl de themes/TUTEMA/templates/modules y buscan:
AVISO: Este diseño es para la v4, iré publicando diseños sueltos para diferentes themes

 
       </div>
{/if}
</div>

<br />

Y abajo añades:
<div class="post-autor vcard">
<div class="box_title">
<div class="box_txt post_autor">Usuario secundario:</div>
<div class="box_rss">
<a href="{$tsConfig.url}/rss/posts-usuario/{$tsPost.aut_sec.user_name}">
<span style="position:relative;">
<img border="0" title="RSS con posts de {$tsPost.aut_sec.user_name}" alt="RSS con posts de Usuario" style="position:absolute; top:-354px; clip:rect(352px 16px 368px 0px);" src="{$tsConfig.images}/big1v12.png"/>
<img border="0" style="width:14px;height:12px" src="{$tsConfig.images}/space.gif"/>
</span>
</a>
</div>
</div>

<div class="avatarBox">
<a href="{$tsConfig.url}/perfil/{$tsPost.aut_sec.user_name}">
<img title="Ver perfil de {$tsPost.aut_sec.user_name}" alt="Ver perfil de {$tsPost.aut_sec.user_name}" class="avatar" src="{$tsConfig.url}/files/avatar/{$tsPost.aut_sec.user_id}_120.jpg"/>
</a>
</div>
<a href="{$tsConfig.url}/perfil/{$tsPost.aut_sec.user_name}" style="text-decoration:none">
<span class="given-name" style="color:#{$tsPost.aut_sec.rango.r_color}">{$tsPost.aut_sec.user_name}</span>
</a>
<br />
<span class="title">{$tsPost.aut_sec.rango.r_name}</span>
<br />
<img src="{$tsConfig.default}/images/space.gif" class="status {$tsPost.aut_sec.status.css}" title="{$tsPost.aut_sec.status.t}"/>
<img src="{$tsConfig.default}/images/icons/ran/{$tsPost.aut_sec.rango.r_image}" title="{$tsPost.aut_sec.rango.r_name}" />
<img src="{$tsConfig.default}/images/icons/{if $tsPost.aut_sec.user_sexo == 0}female{else}male{/if}.png" title="{if $tsPost.aut_sec.user_sexo == 0}Mujer{else}Hombre{/if}" />
<img src="{$tsConfig.default}/images/flags/{$tsPost.aut_sec.pais.icon}.png" style="padding:2px" title="{$tsPost.aut_sec.pais.name}" />
{if $tsPost.aut_sec.user_id != $tsUser->uid}<a href="#" onclick="{if !$tsUser->is_member}registro_load_form();{else}mensaje.nuevo('{$tsPost.aut_sec.user_name}','','','');{/if}return false"><img title="Enviar mensaje privado" src="{$tsConfig.images}/icon-mensajes-recibidos.gif"/></a>{/if}
{if !$tsUser->is_member}
<hr class="divider"/>
<a class="btn_g follow_user_post" href="#" onclick="registro_load_form(); return false"><span class="icons follow">Seguir Usuario</span></a>
{elseif $tsPost.aut_sec.user_id != $tsUser->uid}
<hr class="divider"/>
<a class="btn_g unfollow_user_post" onclick="notifica.unfollow('user', {$tsPost.aut_sec.user_id}, notifica.userInPostHandle, $(this).children('span'))" {if !$tsPost.aut_sec.follow}style="display: none;"{/if}><span class="icons unfollow">Dejar de seguir</span></a>
<a class="btn_g follow_user_post" onclick="notifica.follow('user', {$tsPost.aut_sec.user_id}, notifica.userInPostHandle, $(this).children('span'))" {if $tsPost.aut_sec.follow > 0}style="display: none;"{/if}><span class="icons follow">Seguir Usuario</span></a>
{/if}
<hr class="divider"/>
<div class="metadata-usuario">
<span class="nData user_follow_count">{$tsPost.aut_sec.user_seguidores}</span>
<span class="txtData">Seguidores</span>
<span class="nData" style="color: #0196ff">{$tsPost.aut_sec.user_puntos}</span>
<span class="txtData">Puntos</span>
<span class="nData">{$tsPost.aut_sec.user_posts}</span>
<span class="txtData">Posts</span>
<span style="color: #456c00" class="nData">{$tsPost.aut_sec.user_comentarios}</span>
<span class="txtData">Comentarios</span>
</div>
{if $tsUser->is_admod || $tsUser->permisos.modu || $tsUser->permisos.mosu}
<hr class="divider"/>
<div class="mod-actions">
<b>Herramientas</b>
<a href="{$tsConfig.url}/moderacion/buscador/1/1/{$tsPost.post_ip}" class="geoip" target="_blank">{$tsPost.post_ip}</a>
{if $tsUser->is_admod == 1}<a href="{$tsConfig.url}/admin/users?act=show&amp;uid={$tsPost.aut_sec.user_id}" class="edituser">Editar Usuario</a>{/if}
{if $tsPost.aut_sec.user_id != $tsUser->uid} <a href="#" onclick="mod.users.action({$tsPost.aut_sec.user_id}, 'aviso', false); return false;" class="alert">Enviar Aviso</a>{/if}
{if $tsPost.aut_sec.user_id != $tsUser->uid && $tsUser->is_admod || $tsUser->permisos.modu || $tsUser->permisos.mosu}
{if $tsPost.aut_sec.user_baneado}
{if $tsUser->is_admod || $tsUser->permisos.modu}<a href="#" onclick="mod.reboot({$tsPost.aut_sec.user_id}, 'users', 'unban', false); $(this).remove(); return false;" class="unban">Desuspender Usuario</a>{/if}
{else}
{if $tsUser->is_admod || $tsUser->permisos.mosu}<a href="#" onclick="mod.users.action({$tsPost.aut_sec.user_id}, 'ban', false); $(this).remove(); return false;" class="ban">Suspender Usuario</a>{/if}
{/if}
{/if}
</div>
{/if}
</div>

<br />

Y listo!!
Les muestro caps:

 

 
Espero que les guste
 
Saludos y próximamente versiones para más themes 





12 Comentarios


Cargando comentarios espera un momento...
No tienes permisos para comentar.

Para poder comentar necesitas estar Registrado. O.. ya tienes usuario? Logueate!
Ir al cielo