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

Problemita con comentarios de invitados de Aperpen

Question

Estoy usando una versión "adaptada" a Risus 1.2 del mod de Aperpen:

 

 

El problema con este mod, es que la función de "ordenar comentarios" hace todo bien, pero duplica los comentarios! Salen dos veces! No entiendo el por qué de esto, pero sin eso el mod no funciona, así que no es tan fácil como sacar ese trozo de código y ya.

 

Código cambiado (c.posts.php) - hehe, es una ""adaptación"" hecha por un completo newbie en php, pero funciona!

/*
		getComentarios()
	*/
	function getComentarios($post_id){
		global $tsCore, $tsUser;
		//
		$start = $tsCore->setPageLimit($tsCore->settings['c_max_com']);
		$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_name, u.user_activo, u.user_baneado, c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod ? '' : 'AND c.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY c.cid LIMIT '.$start);
		$comments = result_array($query);
		$queryanon = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM  p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' && c_user = \'0\' '.($tsUser->is_admod ? '' : 'AND c_status = \'0\'').' ORDER BY cid');
		$comanon = result_array($queryanon);
		$i = 0;
		foreach($comanon as $coma){
			$anon_datos = unserialize($coma['c_anon']);
			$comanon[$i]['anon'] = 1;
			$comanon[$i]['user_activo'] = 1;
			$comanon[$i]['user_name'] = $anon_datos['name'];
			$comanon[$i]['user_email'] = $anon_datos['email'];
			$i++;
		}
		
		// COMENTARIOS TOTALES
		$return['num'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cid FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod ? '' : 'AND c_status = \'0\'').''));
		//
		$com = array_merge((array)$comments, (array)$comanon);
		// ORDENAR COMENTARIOS
		foreach ($com as $key => $row) {
    	$aux[$key] = $row['cid'];
		}
		array_multisort($aux, SORT_ASC, $com);
		//COMO NO NOS VALIA LA FUNCION DEL SCRIPT, CREAMOS UN PROPIO SISTEMA
	$page = $_GET['page'] == 1 ? 0 : (int)$_GET['page'];

	$limits[0] = empty($page) ? 0 : (int) ((($page - 1) * $tsCore->settings['c_max_com']));
	$limits[1] = $limits[0]+$tsCore->settings['c_max_com']-1;


	
			//LOS GUARDAMOS ORDENADITOS
			while($limits[0] <= $limits[1]){
			if(!empty($com[$limits[0]]))
			$comments[] = $com[$limits[0]];
		
			$limits[0]++;
			}
					
		// PARSEAR EL BBCODE
		$i = 0;
		foreach($comments as $comment){
			// CON ESTE IF NOS AHORRAMOS CONSULTAS :)
			if($comment['c_votos'] != 0){
			    $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT voto_id FROM p_votos WHERE tid = \''.(int)$comment['cid'].'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'2\' LIMIT 1');
				$votado = db_exec('num_rows', $query);
				
			} else $votado = 0;
			
			// BLOQUEADO
		    $return['block'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid, b_user, b_auser FROM `u_bloqueos` WHERE b_user = \''.(int)$comment['c_user'].'\' AND b_auser = \''.$tsUser->uid.'\' LIMIT 1'));

		    //
			$return['data'][$i] = $comment;
			$return['data'][$i]['votado'] = $votado;
			$return['data'][$i]['c_html'] = $tsCore->parseBadWords($tsCore->parseBBCode($return['data'][$i]['c_body']), true);
			$i++;
		}
		//
		return $return;
	}
	/*
		newComentario()
	*/
	function newComentario(){
		global $tsCore, $tsUser, $tsActividad;
		
		// NO MAS DE 5000 CARACTERES PUES NADIE COMENTA TANTO
		$comentario = substr($_POST['comentario'],0,5000);
		$post_id = ($_POST['postid']);
		$anon = $tsUser->uid > 0 ? NULL : 1;
		if($anon){
			$anon = serialize(array('name' => $tsCore->setSecure($_POST['na'])));
			if(empty($_POST['na']))
			return '0: Rellene todos los campos';
		}
		/* DE QUIEN ES EL POST */
		$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_user, post_block_comments FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');
		$data = db_exec('fetch_assoc', $query);
		
        /* COMPROBACIONES */
        $tsText = preg_replace('# +#',"",$comentario);
        $tsText = str_replace("\n","",$tsText);
        if($tsText == '') return '0: El campo <b>Comentario</b> es requerido para esta operación';
		/*        ------       */
		$most_resp = $_POST['mostrar_resp'];
		$fecha = time();
		//
        if($data['post_user']){
            if($data['post_block_comments'] != 1 || $data['post_user'] == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos['mocepc']){
                if(empty($tsUser->is_admod) && $tsUser->permisos['gopcp'] == false && $anon == NULL) return '0: No deberías hacer estas pruebas.';
				// ANTI FLOOD
                $tsCore->antiFlood();
				$_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
                if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); }
				if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`, `c_anon`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.$anon.'\')')) {
        		  	$cid = db_exec('insert_id');
                    //SUMAMOS A LAS ESTADÍSTICAS
                    db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE w_stats SET stats_comments = stats_comments + 1 WHERE stats_no = \'1\'');
                    db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE p_posts SET post_comments = post_comments +  1 WHERE post_id = \''.(int)$post_id.'\'');
                    db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_comentarios = user_comentarios + 1 WHERE user_id = \''.$tsUser->uid.'\'');
                    // NOTIFICAR SI FUE CITADO Y A LOS QUE SIGUEN ESTE POST, DUEÑO
                    $this->quoteNoti($post_id, $data['post_user'], $cid, $comentario);
                    // ACTIVIDAD
                    $tsActividad->setActividad(5, $post_id);
        		  	// array(comid, comhtml, combbc, fecha, autor_del_post)
        			if(!empty($most_resp)) return array($cid, $tsCore->parseBadWords($tsCore->parseBBCode($comentario), true),$comentario, $fecha, $_POST['auser'], '', $_SERVER['REMOTE_ADDR'], $tsCore->setSecure($_POST['na']));
		 	       else return '1: Tu comentario fue agregado satisfactoriamente.';
        		} else return '0: Ocurrió un error inténtalo más tarde.';
            } else return '0: El crap se encuentra cerrado y no se permiten comentarios.';
        } else return '0: El crap no existe.';
	}

Código que genera el problema:

// COMENTARIOS TOTALES
		$return['num'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cid FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod ? '' : 'AND c_status = \'0\'').''));
		//
		$com = array_merge((array)$comments, (array)$comanon);
		// ORDENAR COMENTARIOS
		foreach ($com as $key => $row) {
    	$aux[$key] = $row['cid'];
		}
		array_multisort($aux, SORT_ASC, $com);
		//COMO NO NOS VALIA LA FUNCION DEL SCRIPT, CREAMOS UN PROPIO SISTEMA
	$page = $_GET['page'] == 1 ? 0 : (int)$_GET['page'];

	$limits[0] = empty($page) ? 0 : (int) ((($page - 1) * $tsCore->settings['c_max_com']));
	$limits[1] = $limits[0]+$tsCore->settings['c_max_com']-1;


	
			//LOS GUARDAMOS ORDENADITOS
			while($limits[0] <= $limits[1]){
			if(!empty($com[$limits[0]]))
			$comments[] = $com[$limits[0]];
		
			$limits[0]++;
			}

¿Alguien sabe algo sobre este tema? Necesito ayuda, por favor.

 

Algunas fotos:

ylZaVO7.png

 

 

Mi web: https://craper.es/

 

Edited by GordoSatiro

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×