Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Altffenser

[MOD] Limitar posts basado en rangos

Recommended Posts

Hola a todos, quisiera compartir con todos este mod que ya van varias personas que están interesadas en él y nada, para mí esto fue como una práctica, sé que algún día llegaré a tener el nivel de conocimientos que me he impuesto. En fín, este MOD lo que hace es limitar a los usuarios el numero de posts que pueden publicar, es decir, el administrador impone a cada usuario o rango un límite de posts por día; ésto nos ayudará a disminúir el spam en usuarios novatos (por ejemplo). Sin más, les dejo las instrucciones.

 

Aviso: la instalación es sólo para el tema default, aunque el código (PHP) sea el mismo la estructra de cada tema puede cambiar.

1. Abrir el archivo c.admin.php y busca:

'cant' => $row['r_cant'],

Debajo coloca:

'post_cant' => $row['r_posts'],

a) Busca:

'cant' => empty($_POST['global-cantidadrequerida']) ? 0 : $tsCore->setSecure($_POST['global-cantidadrequerida']),

Añadir debajo:

'post_cant' => empty($_POST['global-postsforday']) ? 0 : $tsCore->setSecure($_POST['global-postsforday']),

b ) Busca (unas cuantas líneas abajo):

'gopfd' => $_POST['global-pointsforday']);

Borra el ); y pon en su lugar una coma ,

Presiona la tecla Intro para hacer un saldo de línea, luego, añade lo siguiente:

'golpd' => $_POST['global-postsforday']);

Deberá quedar de la siguiente manera:

'gopfd' => $_POST['global-pointsforday'],
'golpd' => $_POST['global-postsforday']);

c) Busca (unas cuantas líneas abajo);

if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_rangos` SET r_name = \'' . $tsCore->setSecure($r['name']) . '\', r_color = \'' . $r['color'] . '\', r_image = \'' . $tsCore->setSecure($r['img']) . '\', r_cant = \'' . (int)$r['cant'] . '\', r_allows = \'' . $tsCore->setSecure($permisos) . '\', r_type = \'' . $r['type'] . '\' WHERE rango_id = \'' . (int)$rid . '\''))

Reemplazar por:

if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_rangos` SET r_name = \'' . $tsCore->setSecure($r['name']) . '\', r_color = \'' . $r['color'] . '\', r_image = \'' . $tsCore->setSecure($r['img']) . '\', r_cant = \'' . (int)$r['cant'] . '\', r_posts = \'' . (int)$r['post_cant'] . '\', r_allows = \'' . $tsCore->setSecure($permisos) . '\', r_type = \'' . $r['type'] . '\' WHERE rango_id = \'' . (int)$rid . '\''))

d) Busca:

'cant' => empty($_POST['global-cantidadrequerida']) ? 0 : $tsCore->setSecure($_POST['global-cantidadrequerida']),

Añadir debajo:

'post_cant' => empty($_POST['global-postsforday']) ? 0 : $tsCore->setSecure($_POST['global-postsforday']),

e) Busca:

'gopfd' => $_POST['global-pointsforday'],

 

Info: Hacer lo mismo que en el inciso b ).

f) Busca (unas cuantas líneas abajo):

if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_rangos` (`r_name`, `r_color`, `r_image`, `r_cant`, `r_allows`, `r_type`) VALUES (\'' .
            $tsCore->setSecure($r['name']) . '\', \'' . $r['color'] . '\', 
            \'' . $tsCore->setSecure($r['img']) . '\', 
            \'' . (int)$r['cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\',
            \'' . (int)$r['type'] . '\')'))
            return 1;

Reemplazar por:

if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_rangos` (`r_name`, `r_color`, `r_image`, `r_cant`, `r_posts`, `r_allows`, `r_type`) VALUES (\'' .
            $tsCore->setSecure($r['name']) . '\', \'' . $r['color'] . '\', 
            \'' . $tsCore->setSecure($r['img']) . '\', 
            \'' . (int)$r['cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\',
            \'' . (int)$r['post_cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\',
            \'' . (int)$r['type'] . '\')'))
            return 1;

g) Buscar:

$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `user_name`, `user_email`, `user_password` FROM u_miembros WHERE user_id = \'' . (int)$user_id . '\'');

Y donde está `user_password` añadir a un lado:

, `user_limiteposts`

Quedará de la siguiente manera:

`user_password`, `user_limiteposts`

h) Buscar (unas cuantas lineas abajo):

$pointsxdar = empty($_POST['pointsxdar']) ? $data['user_puntos'] : $_POST['pointsxdar'];

Añadir debajo:

$postsxdia = empty($_POST['poststodo']) ? $data['user_limiteposts'] : $_POST['poststodo'];

i) Buscar:

return 'Los puntos para dar no se reconocen';

Añadir debajo:

if ($postsxdia >= 0) {
   $ptodo = ', user_limiteposts = \''. (int)$postsxdia . '\'';
} else {
   return "El límite de posts no se reconocen";
}

j) Buscar:

if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET user_email = \'' . $tsCore->setSecure($email) .
            '\' ' . $changedis . ' ' . $new_nick . ' ' . $pxd . ' ' . $apoints . ' ' . $db_key .
            ' WHERE user_id = \'' . (int)$user_id . '\''))

Reemplazar por:

if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET user_email = \'' . $tsCore->setSecure($email) .
            '\' ' . $changedis . ' ' . $new_nick . ' ' . $pxd . ' ' . $ptodo . ' ' . $apoints . ' ' . $db_key .
            ' WHERE user_id = \'' . (int)$user_id . '\''))

 

2. Abrir el archivo c.user.php y...

a) Buscar:

$this->actualizarPuntos();

Añadir debajo:

$this->actualizarPost();

b ) Buscar:

function actualizarPuntos()
    {
		// HORA EN LA CUAL RECARGAR PUNTOS 0 = MEDIA NOCHE DEL SERVIDOR
		$ultimaRecarga = $this->info['user_nextpuntos'];
		$tiempoActual = time();
		// SI YA SE PASO EL TIEMPO RECARGAMOS...
		if($ultimaRecarga < $tiempoActual){
			// OPERACION SIG RECARGA A LAS 24 HRS
            $horaActual = date("G",$tiempoActual);
            $minActuales = date("i",$tiempoActual) * 60;
            $segActuales = date("s",$tiempoActual);
			$sigRecarga = 24 - $horaActual;
			$sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales);
			$sigRecarga = $tiempoActual + $sigRecarga;
			// LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR
			//
            db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_puntosxdar = '.($tsCore->settings['c_keep_points'] == 0 ? $this->permisos['gopfd'] : 'user_puntosxdar + '.$this->permisos['gopfd']).', user_nextpuntos = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\'');
			// VAMONOS
			return true;
		}
	}

Añadir debajo:

function actualizarPost()
    {
		// HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR
		$ultimaRecarga = $this->info['user_nextlimiteposts'];
		$tiempoActual = time();
		// SI YA SE PASO EL TIEMPO RECARGAMOS...
		if($ultimaRecarga < $tiempoActual){
			// OPERACION SIG RECARGA A LAS 24 HRS
            $horaActual = date("G",$tiempoActual);
            $minActuales = date("i",$tiempoActual) * 60;
            $segActuales = date("s",$tiempoActual);
			$sigRecarga = 24 - $horaActual;
			$sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales);
			$sigRecarga = $tiempoActual + $sigRecarga;
			// LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR
			//
            db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\'');
			// VAMONOS
			return true;
		}
	}

 

Esta función no la he testeado como se debe, por lo que no he comprobado su funcionalidad al 100%.

3. Abrir el archivo c.posts.php  y...

a) Buscar:

else {
	$postData['sponsored'] = empty($_POST['patrocinado']) ? 0 : 1;
	$postData['sticky'] = empty($_POST['sticky']) ? 0 : 1;
}

Añadir debajo:

if($tsUser->info['user_limiteposts'] == 0) return 'Has alcanzado el l&iacute;mite de posts por d&iacute;a';

b ) Buscar:

 // ULTIMO POST

            db_exec(array(
              __FILE__,
              __LINE__
            ) , 'query', 'UPDATE u_miembros SET user_lastpost = \'' . $time . '\' WHERE user_id = \'' . $tsUser->uid . '\'');

Añadir debajo:

// RESTAR POSTS DISPONIBLES
            db_exec(array(
              __FILE__,
              __LINE__
            ) , 'query', 'UPDATE u_miembros SET user_limiteposts = user_limiteposts - 1  WHERE user_id = \'' . $tsUser->uid . '\'');

4. Ejecutar las siguientes consultas SQL:

ALTER TABLE `u_miembros` ADD `user_limiteposts` INT(2) UNSIGNED NOT NULL DEFAULT '0' AFTER `user_puntosxdar`;
ALTER TABLE `u_rangos` ADD `r_posts` INT(5) NOT NULL AFTER `r_cant`;
ALTER TABLE `u_miembros` ADD `user_nextlimiteposts` INT(10) NOT NULL DEFAULT '0' AFTER `user_nextpuntos`;

5. Abrir el archivo m.admin_rangos.tpl y...

a) Buscar:

<th>Puntos por post</th>

Añadir debajo:

<th>Límite de posts</th>

 

Hacer lo mismo para las dos 2 coincidencias

b ) Buscar:

<td>{$r.max_points}</td>

Añadir debajo:

<td>{$r.post_cant}</td>

 

Hacer lo mismo para las dos 2 coincidencias

c) Buscar:

<dl>
    <dt><label for="gopfp">Puntos por post</label><br /><span>Puntos que puede dar en cada post.</span></dt>
    <dd><input type="text" id="gopfp" name="global-pointsforposts" value="{$tsRango.permisos.gopfp}" style="width:30%"/></dd>
</dl>

Añadir debajo:

<dl>
    <dt><label for="golpd">Límite de posts</label><br /><span>Posts que puede crear al día</span></dt>
    <dd><input type="text" id="golpd" name="global-postsforday" value="{$tsRango.permisos.golpd}" style="width:30%"/></dd>
</dl>

6. Abrir el archivo m.admin_users.tpl y...

a) Buscar:

<dl>
	<dt><label>Puntos para dar:</label></dt>
	<dd><input type="text" name="pointsxdar" id="pointsxdar" value="{$tsUserD.user_puntosxdar}" style="width:10%" /></dd>
</dl>

Añadir debajo:

<dl>
	<dt><label>Límte de posts a crear:</label></dt>
	<dd><input type="text" name="poststodo" id="poststodo" value="{$tsUserD.user_limiteposts}" style="width:10%" /></dd>
</dl>

 

Nota: Si quieres mostrar los posts que restan; en el perfil del usuario, has lo siguiente: (sólo lo verá el dueño del perfil, administrador o moderador)

 

En m.perfil_headinfo.tpl Busca:

<li>
	<strong>{$tsInfo.stats.user_fotos}</strong>
	<span>Fotos</span>
</li>

Añadir debajo:

{if $tsUser->uid == $tsInfo.uid && $tsUser->is_member || $tsUser->is_admod}
<li class="qtip" title="Tu rango tiene un límite de posts por día, asegúrate de postear algo interesante">
    <strong>{$tsInfo.stats.user_limiteposts}</strong>
    <span>Posts restantes</span>
</li>
{/if}

 

¡Has terminado!

 

Y bien, como dije al inicio, este mod es 100% administrable, puedes otorgarle a cierto usuario o rango un límite de posts. Dejaré losarchivos editados por si alguien gusta descargarlos y evitarse el trabajo de modificar los archivos.

 

Descargar archivos

 

Capturas

Error al publicar el postEditando usuarioRangos

 

Avisar de cualquier error en los comentarios. :)

 

Edited by Altffenser
  • Like 7

Share this post


Link to post
Share on other sites

no creo que lo use, pero es muy probable que lo instale, motivo... es un mod bastante bueno y que no se si en un futuro puede ser util y vale la pena tenerlo por las dudas. me gusta

Share this post


Link to post
Share on other sites
hace 4 minutos, Altffenser dijo:

 

Has creado las tablas en la base de datos? 

Si te refieres al paso 4 si q lo hice ;) 

 

 

PD.: apropósito en el paso 2 A  ( m.admin_users.tpl  )has invertido lo q hay q buscar y lo q hay q pegar,pero eso lo hice bien

Edited by KillerJohn

Share this post


Link to post
Share on other sites
hace 3 minutos, KillerJohn dijo:

Si te refieres al paso 4 si q lo hice ;) 

La columna "user_nextlimiteposts" en u_miembros está vacía?

Share this post


Link to post
Share on other sites
hace 16 minutos, Altffenser dijo:

Qué raro, intenta llenar es columna, y/o dale valores a los rangos.

what?? -qh   no se hacer eso,mejor espero , aver si con la modificacion  q haras si me funciona,saludos! :) 

Share this post


Link to post
Share on other sites
hace 15 horas, KillerJohn dijo:

what?? -qh   no se hacer eso,mejor espero , aver si con la modificacion  q haras si me funciona,saludos! :) 

 

El error está en la consulta que se hace para recargar los posts cada día. Aquí está la forma correcta de ponerlo:

Abre c.user.php y busca:

function actualizarPost()
    {
		// HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR
		$ultimaRecarga = $this->info['user_nextlimiteposts'];
		$tiempoActual = time();
		// SI YA SE PASO EL TIEMPO RECARGAMOS...
		if($ultimaRecarga < $tiempoActual){
			// OPERACION SIG RECARGA A LAS 24 HRS
            $horaActual = date("G",$tiempoActual);
            $minActuales = date("i",$tiempoActual) * 60;
            $segActuales = date("s",$tiempoActual);
			$sigRecarga = 24 - $horaActual;
			$sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales);
			$sigRecarga = $tiempoActual + $sigRecarga;
			// LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR
			//
            db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = '.($tsCore->settings['c_keep_posts'] == 0 ? $this->permisos['golpd'] : 'user_limiteposts + '.$this->permisos['golpd']).', user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\'');
			// VAMONOS
			return true;
		}
	}

Reemplaza por esta:

function actualizarPost()
    {
		// HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR
		$ultimaRecarga = $this->info['user_nextlimiteposts'];
		$tiempoActual = time();
		// SI YA SE PASO EL TIEMPO RECARGAMOS...
		if($ultimaRecarga < $tiempoActual){
			// OPERACION SIG RECARGA A LAS 24 HRS
            $horaActual = date("G",$tiempoActual);
            $minActuales = date("i",$tiempoActual) * 60;
            $segActuales = date("s",$tiempoActual);
			$sigRecarga = 24 - $horaActual;
			$sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales);
			$sigRecarga = $tiempoActual + $sigRecarga;
			// LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR
			//
            db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\'');
			// VAMONOS
			return true;
		}
	}

 

  • Like 1

Share this post


Link to post
Share on other sites
hace 12 minutos, Altffenser dijo:

El error está en la consulta que se hace para recargar los posts cada día

Gracias master! parece q ahora si está funcionando !!! :D

Share this post


Link to post
Share on other sites

Que buen Complemento, varios lo podia, esta Genial Amigo, lo usare de seguro..

Pero crees que sea posible montrar en el mensaje cuando se crea el posts la cantidad de posts que le quedan por dia?

Almenos eso creo dara una idea al usuario para crear mas temas y no matarse con un super posts y que se le borreo todo.

+1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Tronlar
      Hola a [email protected], os dejo el mod dinero por posts V4 actualizado a 1.3 , lo he probado en el tema default de risus pero tiene que funcionar en cualquier tema, lo que cambia es el diseño.
       
      Demo
       

       

       

       

       

       

       
       
      Ejecutar estas consultas 
       
      ALTER TABLE `p_posts` ADD `x_dinero` float NOT NULL DEFAULT '0', ADD `p_validate` int(1) NOT NULL DEFAULT '0';  
      ALTER TABLE `w_configuracion` ADD `dinerox` int(1) NOT NULL DEFAULT '0', ADD `dinerp` float NOT NULL DEFAULT '0'; ALTER TABLE `u_miembros` ADD `uid_act` int(6) NOT NULL , ADD `dinok` float NOT NULL DEFAULT '0' ; CREATE TABLE IF NOT EXISTS `u_pagos` ( `pid` int(11) NOT NULL AUTO_INCREMENT, `p_user_id` int(11) NOT NULL, `p_up` int(6) NOT NULL, `p_dinero` float NOT NULL, `p_secret` varchar(50) NOT NULL, `p_date` int(10) NOT NULL, `p_autor_ip` varchar(15) NOT NULL, `p_type` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `u_cobros` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `c_user_id` int(11) NOT NULL, `c_email` varchar(50) NOT NULL, `c_pais` varchar(50) NOT NULL, `c_dinero` float NOT NULL, `c_secret` varchar(50) NOT NULL, `c_coment` varchar(300) NOT NULL, `c_date` int(10) NOT NULL, `c_autor_ip` varchar(15) NOT NULL, `c_type` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`cid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `u_registros` ( `rid` int(11) NOT NULL AUTO_INCREMENT, `r_user_id` int(11) NOT NULL, `r_dinero` float NOT NULL, `r_codigo` varchar(50) NOT NULL, `r_comentario` varchar(200) NOT NULL, `r_autor_ip` varchar(15) NOT NULL, `r_date` int(10) NOT NULL, `r_type` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`rid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  
      En c.admin.php --> inc --> class --> c.admin.php

      Buscar:
      'gopfd' => $_POST['global-pointsforday']); Agregar arriba:
      'gopxd' => $_POST['global-pointsxdinero'], Buscar:
      'gopfd' => $_POST['global-pointsforday']); Agregar arriba:
      'gopxd' => $_POST['global-pointsxdinero'], Buscar:
      'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])), Debajo agregar:
      'dinerox' => empty($_POST['dinerox']) ? 0 : 1, 'dinerp' => $tsCore->setSecure($_POST['dinerp']), Buscar:
      , `offline_message` = \'' . $c['offline_message'] . '\' Agregar al lado:
      , `dinerox` = \'' . $c['dinerox'] .'\', `dinerp` = \'' . $c['dinerp'] . '\' Buscar al final:
      /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ } Agregar arriba:
      function setUserXdinero($user_id) { global $tsCore, $tsUser; $ipuser = $_SERVER['REMOTE_ADDR']; $din = (float)$tsCore->setSecure($_POST['dinero']); $csecret = $tsCore->setSecure($_POST['csecret']); $time = time(); $datinfo = 'Se h&aacute; enviado <b>$'.$din.'</b> ( Guarda este c&oacute;digo : '.$csecret.' )<br><a href="/dinero/confirma">Confirma desde Aqui</a>'; if($din!=0){ if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_avisos` (`user_id`, `av_subject`, `av_body`, `av_date`, `av_type`) VALUES (\''.(int)$user_id.'\', \'Confirmaci&oacute;n\', \'' . $datinfo . '\', \''.$time.'\', \'0\')')) if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_avisos` (`user_id`, `av_subject`, `av_body`, `av_date`, `av_type`) VALUES (\'1\', \'Se cambio el saldo \', \'</b> Se h&aacute; cambiado el saldo del usuario <a href="/perfil/'.$tsUser->getUserName($user_id).'">'.$tsUser->getUserName($user_id).'</a> <a href="/perfil/'.$tsUser->getUserName($user_id).'"><img class="hovercard" uid="'.(int)$user_id.'" style="width:16px; height:16px;margin:0 5px 0 5px;" src="'.$tsCore->settings['url'].'/files/avatar/'.(int)$user_id.'_50.jpg"></img></a><br/><span>Operaci&oacute;n realizada por <a href="/perfil/'.$tsUser->nick.'"><b>'.$tsUser->nick.'</b></a></span><br/>C&oacute;digo de la operaci&oacute;n : '.$csecret.'\', \''.$time.'\', \'0\')')) if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_pagos` (`p_user_id`, `p_up`,`p_dinero`,`p_secret`, `p_date`, `p_autor_ip`, `p_type`) VALUES (\'' .(int)$user_id . '\', \'' . $tsUser->uid .'\', \'' . $din . '\', \'' . $csecret . '\', \'' . $time .'\', \'' . $ipuser .'\', \'0\')')) db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_cobros SET c_type = \'1\' WHERE c_user_id = \''.$user_id.'\' && c_secret = \''.$csecret.'\' LIMIT 1'); return '<div style="width:655px;" class="dinerok">Operaci&oacute;n Exitosa.</div>'; }else return '<div style="width:655px;" class="errorsol">No seleccionaste el dinero</div>'; } function getPostUserD($user_id) { global $tsCore; // $data['dinero'] = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_posts, u.user_baneado, u.uid_act, v.post_user, v.x_dinero, v.post_status, v.p_validate, c.c_user_id, c.c_email, c.c_pais, c.c_secret, c.c_dinero, c.c_coment, c.c_date, c.c_autor_ip, c.c_type, r.rango_id, r.r_name, r.r_color FROM u_miembros AS u LEFT JOIN p_posts AS v ON v.post_user = u.user_id LEFT JOIN u_cobros AS c ON c.c_user_id = u.user_id LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE u.user_id = \''.(int)$user_id.'\' && c.c_type = 0 GROUP BY user_id')); $q1 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT CAST(SUM(x_dinero) as DECIMAL(5,2)) FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $q2 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(post_id) as p FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $q3 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT SUM(post_puntos) as ps FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $q4 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(p_validate) as r FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'2\'')); $data['dinero']['x_dinero'] = $q1[0]; $data['dinero']['post_id'] = $q2[0]; $data['dinero']['post_puntos'] = $q3[0]; $data['dinero']['p_validate'] = $q4[0]; return $data; } function getSolprim($user_id) { global $tsCore; // $user_id = $tsCore->setSecure($_GET['uid']); $data['datainfo'] = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_posts, u.user_baneado, u.uid_act, p.post_user, p.x_dinero, p.post_status, p.p_validate FROM u_miembros AS u LEFT JOIN p_posts AS p ON p.post_user = u.user_id WHERE u.user_id = \''.(int)$user_id.'\' GROUP BY user_id')); $q1 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT CAST(SUM(x_dinero) as DECIMAL(5,2)) FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); $data['datainfo']['x_dinero'] = $q1[0]; return $data; } En c.cuenta.php --> inc --> class --> c.cuenta.php
       
      Buscar:
      // REAL STATS $data['stats'] = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_rango, u.user_puntos, u.user_posts, u.user_comentarios, u.user_seguidores, u.user_cache, r.r_name, r.r_color FROM u_miembros AS u LEFT JOIN u_rangos AS r ON u.user_rango = r.rango_id WHERE u.user_id = \''.(int)$user_id.'\'')); Antes de:
      FROM Agregar:
      , u.uid_act, u.dinok, v.post_user, v.x_dinero, v.post_status, v.p_validate En la misma linea buscar:
      WHERE Agregar antes:
      LEFT JOIN p_posts AS v ON v.post_user = u.user_id Buscar:
      $q3 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(cid) AS c FROM p_comentarios WHERE c_user = \''.(int)$user_id.'\' && c_status = \'0\'')); Debajo agregar:
      $q5 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT CAST(SUM(x_dinero) as DECIMAL(5,2)) FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\' && p_validate = \'1\'')); Buscar:
      $data['stats']['user_comentarios'] = $q3[0]; Debajo agregar:
      $data['stats']['x_dinero'] = $q5[0]; En c.modeacion.php --> inc --> class --> c.modeacion.php
       
      Antes de la última } agregar arriba:
      public function getDineroP() { global $tsUser, $tsCore; $max = 10; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); // PAGINAS $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(post_id) FROM p_posts WHERE post_status = \'0\' && x_dinero > \'0\' && p_validate = \'0\''); list($total) = db_exec('fetch_row', $query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/moderacion/dinero?", $_GET['s'], $total, $max); // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_puntos, p.x_dinero, p.post_ip, p.post_status, p.p_validate, c.cid, c.c_seo, u.user_id, u.user_name FROM `p_posts` AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category LEFT JOIN u_miembros AS u ON u.user_id = p.post_user WHERE post_status = \'0\' && x_dinero > \'0\' && p_validate = \'0\' ORDER BY post_id DESC LIMIT ' . $limit); $data['datos'] = result_array($query); // return $data; } /* DineroA() */ public function DineroA($id) { // filtramos // $id = (int) $id; $activ = 1; db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `p_posts` SET `p_validate` = \''.$activ.'\' WHERE post_id = '.$id); } /* DineroR() */ public function DineroR($id) { // filtramos // $id = (int) $id; $rech = (int) 0; db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE p_posts SET p_validate = 2 WHERE post_id = '.$id); db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `p_posts` SET `x_dinero` = \''.$rech.'\' WHERE post_id = '.$id); } En moderacion.php --> inc --> php --> moderacion.php
       
      Buscar:
      //PAPELERAS elseif($action == 'pospelera'){ $smarty->assign("tsPospelera",$tsMod->getPospelera()); } Debajo agregar:
      //CONTROL DE DINERO elseif($action == 'dinero'){ $smarty->assign("tsDinero",$tsMod->getDineroP()); if(isset($_GET['link'])) { $tsMod->DineroA($_GET['link']); } if(isset($_GET['link'])) {$tsCore->redirectTo($tsCore->settings['url'].'/moderacion/dinero/');} if(isset($_GET['reac'])) { $tsMod->DineroR($_GET['reac']); } if(isset($_GET['reac'])) {$tsCore->redirectTo($tsCore->settings['url'].'/moderacion/dinero/');} } En c.core.php --> inc --> class --> c.core.php

      Buscar:
      function getNovemods() { $datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\' ) as revcomentarios, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'1\') as repposts, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'2\') as repmps, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'3\') as repusers, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'4\') as repfotos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera')); $datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios']; return $datos; } Reemplazar por:
      function getNovemods() { $datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\' ) as revcomentarios, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'1\') as repposts, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'2\') as repmps, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'3\') as repusers, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'4\') as repfotos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera, (SELECT count(post_id) FROM p_posts WHERE post_status = \'0\' && x_dinero > \'0\' && p_validate = \'0\') as dineromod')); $datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios'] + $datos['dineromod']; return $datos; } En admin.php --> inc --> php --> admin.php
       
      Buscar:
      case 8: if(!empty($_POST['save'])){ $update = $tsAdmin->setUserFirma($user_id); if($update == 'OK') $tsCore->redirectTo($tsCore->settings['url'].'/admin/users?act=show&uid='.$user_id.'&save=true'); else $smarty->assign("tsError",$update); } $smarty->assign("tsUserF",$tsAdmin->getUserData()); break; Debajo agregar:
      case 9: if(!empty($_POST['save'])){ $update = $tsAdmin->setUserXdinero($user_id); if($update == 'OK') $tsCore->redirectTo($tsCore->settings['url'].'/admin/users?act=show&uid='.$user_id.'&save=true'); else $smarty->assign("tsError",$update); } $smarty->assign("tsPostU",$tsAdmin->getPostUserD($user_id)); $smarty->assign("tsSolprim",$tsAdmin->getSolprim($user_id)); break; En c.posts.php --> inc --> class --> c.posts.php

      Buscar:
      if(db_exec(array(__FILE__, __LINE__), '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, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = db_exec('insert_id'); Agregar arriba:
      if($tsCore->settings['dinerox'] == 1 && $tsUser->info['uid_act']==0){$dinerox = (float)$tsUser->permisos['gopxd'];}else $dinerox = 0; En la linea buscada buscar:
      , post_status  
      ( o el último campo que tengan agregado )
      Agregar al lado:
      , x_dinero Al final de la misma linea buscar:
      ? '\'3\'' : '\'0\'').')')) { Reemplazar por:
      ? '\'3\'' : '\'0\'').', \''.$dinerox.'\')')) { En agregar.php --> inc --> php --> agregar.php

      Buscar:
      $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => 'El post <b>'.$_POST['titulo'].'</b> fue agregado. '.(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); Reemplazar por:
      if($tsCore->settings['dinerox'] == 1 && $tsUser->info['uid_act']==0){$smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => "El post <font color='#0099ff'><b>{$_POST['titulo']}</b></font> fue agregado.<i>Sumaste: $ </i><blink><font color='greenlima'><b>{$tsUser->permisos['gopxd']}</b></font></blink> de Dinero.".(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html"));} else{ $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => 'El post <b>'.$_POST['titulo'].'</b> fue agregado. '.(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); } En m.admin_rangos.tpl --> themes --> default --> templates --> admin_mods --> m.admin_rangos.tpl
       
      Buscar:
      <dl> <dt><label for="goaf">Anti-flood</label><br /><span>Tiempo que deben esperar entre acci&oacute;n.</span></dt> <dd><input type="text" id="goaf" name="global-antiflood" value="{$tsRango.permisos.goaf}" style="width:30%"/></dd> </dl> Agregar arriba:
      <dl> <dt><label for="gopxd">Dinero por Posts</label><br /><span>Cantidad de dinero por posts creado</span></dt> <dd><input type="text" id="gopxd" name="global-pointsxdinero" value="{$tsRango.permisos.gopxd}" style="width:30%"/></dd> </dl> En m.admin_users.tpl --> themes --> default --> templates --> admin_mods --> m.admin_users.tpl
       
      Buscar:
      <option value="8"{if $tsType == 8} selected="true"{/if}>Firma</option> Debajo agregar:
      <option value="9"{if $tsType == 9} selected="true"{/if}>Dinero</option> Buscar:
      {elseif $tsType == 8} <legend>Modificar firma de usuario</legend> <textarea name="firma" rows="3" cols="50">{$tsUserF.user_firma}</textarea> {else} <div class="phpostAlfa">Pendiente</div> {/if} <p><input type="submit" name="save" value="Enviar Cambios" class="btn_g"/></p> </fieldset> Reemplazar por:
      {elseif $tsType == 8} <div style="overflow: hidden;clear: both;margin-bottom: 20px;"> <textarea class="searchBar autogrow markItUpEditor" name="firma" rows="3" cols="50" style="font-size: 14px;width: 570px;margin: 0;">{$tsUserF.user_firma}</textarea> </div> {elseif $tsType == 9} <legend>Dinero Disponible</legend> <a href="/perfil/{$tsSolprim.datainfo.user_name}">{$tsSolprim.datainfo.user_name}</a> acumula de saldo<b>&nbsp;${if $tsSolprim.datainfo.x_dinero!=''}{$tsSolprim.datainfo.x_dinero}{else}0.00{/if}</b><br/><br/> <br/>{if $tsSave}Cuando confirme su Dinero recibido le sera descontado el Importe.{/if} {if $tsSolprim.datainfo.uid_act == 0} No h&aacute; solicitado su pago. {/if} {if $tsPostU.dinero.uid_act==1} <div class="solicitud-user"> <h3>Informacion:</h3> <ul> <li>Usuario: <b> {$tsPostU.dinero.user_name}</b></li> <li>Rango: <b style="color:#{$tsPostU.dinero.r_color};"> {$tsPostU.dinero.r_name}</b></li> <li>H&aacute; solicitado: <b>$ {$tsPostU.dinero.c_dinero}</b></li> <li>Posts Aprobados: <b>{$tsPostU.dinero.post_id}</b></li> <li>Posts Rechazados: <b>{$tsPostU.dinero.p_validate}</b></li> <li>Puntos Recibidos: <b>{$tsPostU.dinero.post_puntos}</b></li> </ul> <h3>Datos Ofrecidos:</h3> <ul> <li>Enviado: {$tsPostU.dinero.c_date|hace}</li> <li>Paypal: {$tsPostU.dinero.c_email}</li> <li>Pa&iacute;s: {$tsPostU.dinero.c_pais}</li> <li>C&oacute;digo: {$tsPostU.dinero.c_secret}</li> <li>Comentario: {$tsPostU.dinero.c_coment}</li> <li>Ip: <a href="/moderacion/buscador/1/1/{$tsPostU.dinero.c_autor_ip }" target="_blank">{$tsPostU.dinero.c_autor_ip }</a></li> </ul> <br/> <input type="hidden" name="csecret" value="{$tsPostU.dinero.c_secret}"/> <select id="dinero" name="dinero" style="width: 120px;"> <option value="0" {if $tsPostU.dinero.x_dinero > 0}selected{/if} >Seleccionar dinero</option> <option value="{$tsPostU.dinero.x_dinero}" >Disponible $ {$tsPostU.dinero.x_dinero}</option> </select> <br/><br/><h4>El dinero Disponible le sera Descontado de su Saldo.<br/>Al enviar los cambios el usuario queda a disposici&oacute;n para la recepcion del dinero.</h4> </div> {/if} {else} <div class="phpostAlfa">Pendiente</div> {/if} {if $tsType == 9 && (($tsPostU.dinero.x_dinero >= $tsConfig.dinerp) && $tsPostU.dinero.uid_act == 1)} <p><input type="submit" name="save" value="Enviar Cambios" class="btn_g"/></p> {else} {if $tsType == 9 && $tsPostU.dinero.c_type == 0} {else} <p><input type="submit" name="save" value="Enviar Cambios" class="btn_g"/></p> {/if}{/if} </fieldset> En m.admin_configs.tpl --> themes --> default --> templates --> admin_mods --> m.admin_configs.tpl
       
      Buscar:
      <dl> <dt><label for="ai_chat">Chatango ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://chatango.com">Chatango</a> para tu web, solo crea tu grupo he ingresa el nombre. (Dejar vac&iacute;o para usar xat)</span></dt> <dd><input type="text" id="ai_chat" name="chat" maxlength="20" value="{$tsConfig.chat_id}" class="searchBar" style="width: 280px;"/> </dd> </dl> Agregar arriba:
      <hr> <dl> <dt><label for="dinerox">Activar Dinero por posts.</label><br /><span>Aqu&iacute; podras activar el pago de dinero por posts creados. Desea activarlo?</span></dt> <dd> <label><input name="dinerox" type="radio" id="dinerox" value="1" {if $tsConfig.dinerox == 1}checked="checked"{/if} class="radio"/> S&iacute;</label> <label><input name="dinerox" type="radio" id="dinerox" value="0" {if $tsConfig.dinerox != 1}checked="checked"{/if} class="radio"/> No</label> </dd> </dl> <dl> <dt><label for="dinerp">Cantidad Dinero</label><br /><span>Indique la cantidad m&iacute;nima de dinero que el usuario necesita para poder cobrar.</span></dt> <dd><input type="text" id="dinerp" name="dinerp" style="width:10%" maxlength="5" value="{$tsConfig.dinerp}" /> </dd> </dl> <hr> En m.perfil_headinfo.tpl --> themes --> default --> templates --> modules --> m.perfil_headinfo.tpl

      Buscar:
      <li> <strong>{$tsInfo.stats.user_fotos}</strong> <span>Fotos</span> </li> Debajo agregar:
      <li id="xdin"> <strong>${if $tsInfo.stats.x_dinero!=''}{$tsInfo.stats.x_dinero}{else}0{/if}</strong> <span>Dinero Acumulado</span> </li> <li id="xdin"> <strong>${$tsInfo.stats.dinok}</strong> <span>Dinero Pagado</span> </li> En t.moderacion.tpl --> themes --> default --> templates --> t.moderacion.tpl
       
      Buscar:
      {elseif $tsAction == 'users'} {include file='admin_mods/m.mod_report_users.tpl'} Debajo agregar:
      {elseif $tsAction == 'dinero'} {include file='admin_mods/m.mod_dinero_posts.tpl'} En m.mod_sidemenu.tpl --> themes --> default --> templates --> admin_mods --> m.mod_sidemenu.tpl
       
      Buscar:
      {if $tsUser->is_admod || $tsUser->permisos.mocc}<li id="a_comentarios"><span class="cat-title"><a onclick="$('#a_comentarios').addClass('active');" href="{$tsConfig.url}/moderacion/comentarios">Comentarios <span class="cadGe cadGe_{if $tsConfig.novemods.revcomentarios > 15}red{elseif $tsConfig.novemods.revcomentarios > 5}purple{else}green{/if}">{$tsConfig.novemods.revcomentarios}</span></a></span></li>{/if} Debajo agregar:
      {if $tsUser->is_admod || $tsUser->permisos.mocc}<li id="a_dinero"><span class="cat-title"><a onclick="$('#a_dinero').addClass('active');" href="{$tsConfig.url}/moderacion/dinero">Dinero <span class="cadGe cadGe_{if $tsConfig.novemods.dineromod > 15}red{elseif $tsConfig.novemods.dineromod > 5}purple{else}green{/if}">{$tsConfig.novemods.dineromod}</span></a></span></li>{/if} En head_menu.tpl --> themes --> default --> templates --> sections --> head_menu.tpl
         
      Buscar:
      $tsPage != 'fotos' Agregar al lado:
      && $tsPage != 'dinero' Buscar:
      <li class="tabbed {if $tsPage == 'tops'}here{/if}" id="tabbedtops"> <a title="Ir a TOPs" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/top/">TOPs <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Debajo agregar:
      {if $tsUser->is_member} <li class="tabbed {if $tsPage == 'dinero'}here{/if}" id="tabbedtops"> <a title="Ir l Panel" onclick="menu('dinero', this.href); return false;" href="{$tsConfig.url}/dinero/">Dinero <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> {/if} En head_submenu.tpl --> themes --> default --> templates --> sections --> head_submenu.tpl
       
      Buscar:
      <div id="subMenuTops" class="subMenu {if $tsPage == 'tops'}here{/if}"> Agregar arriba:
      <div id="subMenuPosts" class="subMenu {if $tsPage == 'dinero'}here{/if}"> <ul class="floatL tabsMenu"> <li{if $tsAction != 'rec' && $tsAction != 'rev'} class="here"{/if}><a href="{$tsConfig.url}/dinero/">Inicio</a></li> <li {if $tsAction == 'rec'}class="here"{/if}><a href="{$tsConfig.url}/dinero/rec">Rechazados</a></li> <li{if $tsAction == 'rev'} class="here"{/if}><a href="{$tsConfig.url}/dinero/rev">Revision</a></li> {if $tsDiner.dinero.x_dinero >= $tsConfig.dinerp}<li{if $tsAction == 'pagos'} class="here"{/if}><a href="{$tsConfig.url}/dinero/pagos">Solicitar</a></li>{/if} </ul> <div class="clearBoth"></div> </div> En moderacion.css --> themes --> default --> moderacion.css

      Buscar:
      li#a_comentarios {background-image: url(../images/icons/comment.png);} Debajo agregar:
      li#a_dinero {background-image: url(../images/icons/currency.png);} En estilo.css --> themes --> default --> estilo.css
       
      Al final agregar:
      .dinerok{background:#0f0;color:#fff;width:590px;border:5px solid #0c0;font-size:14px;font-weight:700;margin-bottom:10px;padding:10px;text-align:center} .errorsol{background:#d90000;color:#fff;width:590px;border:5px solid orange;font-size:14px;font-weight:700;margin-bottom:10px;padding:10px;text-align:center} .errorlog{background:orange;color:#fff;width:590px;border:5px solid orange;font-size:14px;font-weight:700;margin-bottom:10px;padding:10px;text-align:center} .solicitud-user{background:#eee;width:660px;height:auto;padding:10px;border:1px solid #ccc} .solicitud-user ul li{background:#fff;display:block;border:1px solid #ccc;padding:5px;margin:5px 0} #panel-userD{width:100%;height:auto;font-family:Helvetica,Arial;background:#fff url(images/sidebar.png);overflow:hidden;border:1px solid #dfdfd0} .prindu{background:#eee;border-bottom:1px solid #dfdfd0;width:620px;height:115px;overflow:hidden} .prindu a img{width:100px;height:100px;padding:1px;border:1px solid #ccc;margin:5px} .prindu a img:hover{opacity:.7;background:#fff;border:1px solid #fff} .prindu span{float:right;width:480px;margin:5px;font-size:12px;padding:5px;color:#666} .list-du{background:#eee;float:left;width:610px;margin:5px 0 5px 0;font-size:12px;padding:5px} .din_table{background:#fff;border:1px solid #ddd;border-width:1px 0 0 1px}.din_table thead{background:#f4f4f4} .din_table td,.din_table th{padding:3px 4px;border:1px solid #ddd;border-width:0 1px 1px 0;vertical-align:middle;text-align:center} .panelud{background:#fff;float:right;width:300px;margin-bottom:20px;height:auto;overflow:hidden} .panelud span{text-align:left}.panelud span p{font-size:12px;text-align:center;margin-top:20px;color:#666} .panelud span p b{background:url(images/coins.png) no-repeat left;padding:4px 3px 4px 30px;margin-top:15px;font-size:26px;color:#000} .regd{background:#eee;width:620px;height:auto;margin-top:5px;border-bottom:1px solid #e7e7da} .regd span p{padding:0 10px 0 10px}.dinx{margin-right:5px;margin-top:-3px} .dinx img{width:16px;height:16px;margin-right:3px;margin-left:8px} #xdin{background:#eceae1 url(images/coins.png) no-repeat;background-position:110px 5px} #xdin:hover{background:#fff url(images/coins.png) no-repeat;background-position:110px 5px} .postsrev{width:620px;height:auto}.postsrev ul{margin:5px;border-bottom:1px solid #e0e0e0} .postsrev ul li{display:block;padding:5px;background:#fff;color:#666} .postsrev ul li:nth-child(2n+1){border-top:1px solid #e0e0e0;background:#f5f5f5} .postsrev ul li a{font-size:12px;font-weight:700;color:#005ca5} .pag-din{overflow:hidden;clear:both;color:transparent;margin:10px 0 10px 25px} .pag-din b{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;color:#fff;background:#65d43b;background:-moz-linear-gradient(top,#88e64f 0,#5ed037 100%);background:-webkit-gradient(linear,0 0,0 100%,from(#88e64f),to(#5ed037));border:1px solid #53a32e;padding:4px 10px;display:inline-block;text-shadow:0 -1px 1px #6acb3c} .pag-din a{padding:5px 10px;display:inline-block;font-weight:700;border:1px solid #bbb;color:#555!important;text-shadow:0 1px 0 #eee;background:#e4e4e4;background:-moz-linear-gradient(top,#fcfcfc 0,#eee 100%);background:-webkit-gradient(linear,0 0,0 100%,from(#fcfcfc),to(#eee));-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px} .pag-din a:hover{color:#888!important;text-shadow:0 1px 0 #eee;background:#e4e4e4!important;text-decoration:none;background:-moz-linear-gradient(top,#fcfcfc 0,#ddd 100%)!important;background:-webkit-gradient(linear,0 0,0 100%,from(#fcfcfc),to(#ddd))!important} .solicitud-pago{width:620px;height:auto}.solicitud-pago ul{padding:10px} .solicitud-pago ul li{display:block;margin-bottom:10px;border:1px solid #ccc;padding:15px 10px;color:#00468c;font-weight:600} .input-opc{border:solid 1px #cecece;box-shadow:0 0 1px #d3d3d3;-moz-box-shadow:0 0 1px #d3d3d3;-webkit-box-shadow:0 0 1px #d3d3d3;color:#999;font-weight:700;width:280px;padding:5px 10px;float:right;margin-right:100px;margin-top:-7px;border-radius:2px} .input-opc:hover{box-shadow:0 0 5px 0 #b5dff1;-moz-box-shadow:0 0 5px 0 #b5dff1;-webkit-box-shadow:0 0 5px 0 #b5dff1;border:1px solid #38b2e5} .input-opc:focus{box-shadow:0 0 5px 0 #b5dff1;-moz-box-shadow:0 0 5px 0 #b5dff1;-webkit-box-shadow:0 0 5px 0 #b5dff1;border:1px solid #38b2e5;color:#00a3d9} .recitext{border:solid 1px #cecece;box-shadow:0 0 1px #d3d3d3;-moz-box-shadow:0 0 1px #d3d3d3;-webkit-box-shadow:0 0 1px #d3d3d3;color:#999;font-weight:700;width:280px;padding:5px;margin-right:100px;margin-top:-2px;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px} .recitext:hover{box-shadow:0 0 5px 0 #b5dff1;-moz-box-shadow:0 0 5px 0 #b5dff1;-webkit-box-shadow:0 0 5px 0 #b5dff1;border:1px solid #38b2e5} .recitext:focus{box-shadow:0 0 5px 0 #b5dff1;-moz-box-shadow:0 0 5px 0 #b5dff1;-webkit-box-shadow:0 0 5px 0 #b5dff1;border:1px solid #38b2e5;color:#00a3d9}  
      Y subir esta carpeta

      https://mega.nz/file/JFp0xIbA#Ogaj1-X2odoYgzULzD_qnJT2Tx4UmPO6mLxMIbpto-Q
       
       
      Creditos: Vellenger
       
       
    • By fellomix
      Hola tengo instalado el Mod imagen de portada en los posts
      y quiero que reflejen la imagen de portada en el modulo posts destacados de la home.
       
      la pagina es http://cinevela.xyz
       
      El codigo del modulo modules/m.home_posts_destacados.tpl que tengo ahora es:
       
      <div class="boxposts separa" id="despost"> <div class="titular"> <h2>Destacados</h2> <div class="mentop"> <div class="actualtop" id="dcambi">6h</div> <div class="listop" id="dctops"> <a onclick="pestana('dctops','dayer','dtayer','dcambi','despost'), filtrar_post_destacados('6');" class="dtayer">15m</a> <a onclick="pestana('dctops','dhoy','dthoy','dcambi','despost'), filtrar_post_destacados('8');" class="dthoy">1h</a> <a onclick="pestana('dctops','dsemana','dtsemana','dcambi','despost'), filtrar_post_destacados('9');" class="dtsemana">3h</a> <a onclick="pestana('dctops','dmes','dtmes','dcambi','despost'), filtrar_post_destacados('10');" class="dtmes listo">6h</a> </div> </div> </div> <section class="tops" id="posdestacados"> {if $tsPostsDestacados} {foreach from=$tsPostsDestacados item=p} <div class="clerela" style="height: 100px;"> <a class="cates" title="{$p.post_title}" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html"> {if $p.post_portada} <img class="loadimg" data-original="{$p.post_portada}" style="width: 78px; height: 100px;"> {else} <img class="loadimg" data-original="{$tsConfig.url}/files/avatar/{$tsAutor.user_id}_120.jpg" style="width: 78px; height: 100px;"/> {/if} </a> <div class="ditip"> <span>{$p.c_nombre}</span> <a title="{$p.post_title}" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|limit:55}</a> </div> </div> {/foreach} {else} <div class="nada-gris" style="margin-bottom: 10px;">Sin destacados en este periodo</div> {/if} </section> <div class="paginar"><a href="/top/">Ver m&aacute;s</a></div> </div>  
    • By Miguel92
      ESTA HECHO
      Este es un pedido para @KillerJohn

      1) Primero ejecutaremos esta consulta o mejor a lo último asi saben en donde lo van a colocar y si van a tener que agregar más consulta
      CREATE TABLE IF NOT EXISTS `w_background` ( `id` int(11) NOT NULL, `creador` varchar(250) NOT NULL, `home` TEXT NOT NULL, `posts` TEXT NOT NULL, `fotos` TEXT NOT NULL, `admin` TEXT NOT NULL, `alternativa` TEXT NOT NULL ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; INSERT INTO `w_background` (`id`, `creador`,`home`, `posts`, `fotos`, `admin`, `alternativa`) VALUES (1, '@Miguel92', '', '', '', '', 'En el caso que no sean fotos,home,posts, etc'); En el caso que quieran más debajo de `posts` TEXT NOT NULL, agregan esto `*` TEXT NOT NULL, --> donde esta * le agregan el nombre que quieran .

      luego a lado de `posts`, agregan ``,
      (1, '@Miguel92', '','',  '*', '', ''); asi
       
      2) Ahora vamos a la raiz header.php y buscamos    
      // Nofiticaciones $smarty->assign('tsNots',$tsMonitor->notificaciones); y debajo agregamos
      // background de home-posts-fotos-etc $smarty->assign('tsBack',$tsCore->backgrounds);  
      3) Ahora buscamos en inc/class/c.core.php y buscamos
      $this->settings = $this->getSettings();       
      y debajo agregamos
      $this->backgrounds = $this->getBack(); y un poco más abajo buscamos    
      /* getCategorias() */ y abajo pegamos
      /* getBack() :: @Miguel */ function getBack() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM `w_background`'); return db_exec('fetch_assoc', $query); } 4) En el mismo directorio buscamos inc/class/c.admin.php y antes de la llave } agregaremos esto
       
      /* saveBack() by @Miguel92 */ function saveBack() { global $tsCore; // $c = array( 'creador' => $tsCore->setSecure($tsCore->parseBadWords($_POST['creador'])) , 'home' => $tsCore->setSecure($_POST['home']), 'posts' => $tsCore->setSecure($_POST['posts']), 'fotos' => $tsCore->setSecure($_POST['fotos']), 'admin' => $tsCore->setSecure($_POST['admin']), 'alternativa' => $tsCore->setSecure($_POST['alternativa']), ); // UPDATE if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_background` SET `creador` = \'' . $c['creador']. '\', `home` = \'' . $c['home']. '\', `posts` = \'' . $c['posts']. '\', `fotos` = \'' . $c['fotos'] .'\', `admin` = \'' . $c['admin']. '\', `alternativa` = \'' . $c['alternativa']. '\' WHERE `id` = \'1\'')) return true; else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); } 5) Luego buscamos en inc/php/admin.php y buscamos
      /** NOTICIAS **/ } elseif($action == 'news'){ y arriba ponemos
      /** Backgrounds by @Miguel92 **/ }elseif($action == 'fondos'){ // GUARDAR CONTROLES if(!empty($_POST['home'])) { if($tsAdmin->saveBack()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/fondos?save=true'); } 6) Luego buscamos templates/t.admin.tpl y buscamos
      {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'} y debajo agregamos
      {elseif $tsAction == 'fondos'} {include file='admin_mods/m.admin_back.tpl'} 7) Luego vamos a templates/admin_mods y crearemos un archivo llamado ' m.admin_back.tpl ' y allí alojaremos esto
      <div class="boxy-title"> <h3>Backgrounds para cambios depende de página</h3> </div> <div id="res" class="boxy-content"> {if $tsSave}<div style="display: block;" class="mensajes ok">Las configuraciones han sido guardadas! </div>{/if} <form action="" method="post" autocomplete="off"> <fieldset> <legend>Backgrounds</legend> <!-- COPYRIGHT --> <dl> <dt><label for="creador">Hecho por</label><br /><span>Creado para todos ustedes con amor!.</span></dt> <dd><input type="text" id="creador" name="creador" value="{$tsBack.creador}" /></dd> </dl> <!-- PARA POSTS --> <dl> <dt><label for="posts">Fondo para Posts</label><br /><span>Introduce la URL de fondo que quieres!.</span></dt> <dd><input type="text" id="posts" name="posts" value="{$tsBack.posts}" /></dd> </dl> <!-- PARA FOTOS --> <dl> <dt><label for="fotos">Fondo para Fotos</label><br /><span>Introduce la URL de fondo que quieres!.</span></dt> <dd><input type="text" id="fotos" name="fotos" maxlength="300" value="{$tsBack.fotos}" /></dd> </dl> <!-- PARA ADMIN --> <dl> <dt><label for="admin">Fondo para Admin</label><br /><span>Introduce la URL de fondo que quieres!.</span></dt> <dd><input type="text" id="admin" name="admin" value="{$tsBack.admin}" /></dd> </dl> <!-- PARA ALTERNATIVA --> <dl> <dt><label for="alternativa">Fondo para lo demás</label><br /><span>Introduce la URL de fondo que quieres!.</span></dt> <dd><input type="text" id="alternativa" name="alternativa" value="{$tsBack.alternativa}" /></dd> </dl> <p><input type="submit" name="save" value="Guardar Cambios" class="btn_g"/></p> </fieldset> </form> </div> 8) Luego buscamos en el mismo directorio m.admin_sidemenu.tpl y buscamos
      <h4>General</h4> y debajo pegamos
      <h4>Control nuevos</h4> <ul class="cat-list"> <li id="a_configs"><span class="cat-title"><a href="{$tsConfig.url}/admin/fondos">Control background</a></span></li> </ul> <hr> 9) Luego buscamos en templates/sections/main_header.tpl y buscamos <body> y reemplazamos por
       
      <body style="background-image: url({if $tsPage == 'home' || $tsPage == 'posts'}{$tsBack.posts}{elseif $tsPage == 'fotos'}{$tsBack.fotos}{elseif $tsPage == 'admin'}{$tsBack.admin}{else}{$tsBack.alternativa}{/if}); background-repeat:no-repeat; background-size:cover; background-color: #000; background-attachment: fixed;">  
      background-repeat:no-repeat;  ---> Para que la imagen no se repita para ningun lado
      background-size:cover; ---> Esto abarcará toda la pantalla tambien se puede usar  background-size: 100% 50%;
      background-color: #000;  ---> El fondo tambien es de color negro
      background-attachment: fixed; ----> El fondo no se moverá
       
      y si quieren van a estilos.css buscan body { y lo agregan alli }
       
      igual ya se que la mayoría que conoce esto en html pero hay otros que tal vez no lo conocé
       
      Espero que sea esto lo que estabas buscando y también se puede aplicar al LOGO si quieren que sea diferente en cada página...
      Lamento no haber puesto Caps!
       
      Cambios 24/03/2018
      * Se agregó "alternativa" en el caso que no sea Administración, Home, Posts o Fotos
      * Se modificó la línea mal escrita
      * Se realizo mini-cambios algo el código existente
       
      Agregar esta consulta
      ALTER TABLE `w_background` ADD `alternativa` TEXT NOT NULL AFTER `admin`;  
    • By rodolfo23
      Hola amigos alguien podría ayudarme a adaptar este mod para que solo puedan utilizarlo usuarios de determinados rangos? el mod es el siguiente:
      Lo que quería es que en la creación de un rango esté la opción de si los usuarios de ese rango pueden publicar un vídeo en su perfil, el mod que siga siendo el mismo solo que tenga esa opción  alguien podría? espero sus respuestas!!
       
    • Guest
      By Guest
      http://www.vellenger.com/posts/complementos/33/Fuente-de-Informacion-Multiple-V5.html
       
       
      Bueno vengo a comentarles del siguiente fix, lo que pasa es que si tenes activada la opcion para revisar los posts despues de su publicacion el MOD tira error en la consulta, lo que deben modificar es lo siguiente:
       
      if(db_exec(array(__FILE__, __LINE__), '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, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = db_exec('insert_id'); En esta linea que esta mas o menos en la 143, 144 por ahi ahahah
       
      (post_user, post_category, post_title, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status, post_fuenteon, post_fuente1, post_fuente2, post_fuente3, post_fuente4, post_fuente5) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\', \''.(int)$postData['fuenteon'].'\', \''.$postData['fuente1'].'\', \''.$postData['fuente2'].'\', \''.$postData['fuente3'].'\', \''.$postData['fuente4'].'\', \''.$postData['fuente5'].'\'').')')) { $postID = mysql_insert_id(); No lo reemplazen por esto!
       
      ----------------------------------------------------
       
      Agregar despues de post_visitantes,
       
      post_fuenteon, post_fuente1, post_fuente2, post_fuente3, post_fuente4, post_fuente5,  
      ----------------------------------------------------
       
      Luego de:
      , \''.(int)$postData['visitantes'].'\', Agregar:
       
      \''.(int)$postData['fuenteon'].'\', \''.$postData['fuente1'].'\', \''.$postData['fuente2'].'\', \''.$postData['fuente3'].'\', \''.$postData['fuente4'].'\', \''.$postData['fuente5'].'\',  
      Eso seria todo!
      Gracias a @Vellenger por el aporte de este grande MOD, todavia estoy viendo para obtener el titulo de la URL y que lo muestre en el post, y no mostrarme la URL como link porque queda medio feo... Si alguien sabe como implementarlo y me pudiera ayudar seria genial!  En el foro esta, pero para implementarlo solo para una URL y lo quiero para las 5 fuentes, no solo para 1.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×