Página 1 de 1

Permisos para responder solo Moderadores y usuario creador

Publicado: 29 Oct 2005, 19:16
por ThE KuKa
Hola a todos.

Estamos creando un foro para una empresa.
Este foro va a ser de caracter privado y con algunas particularidades. Casi todas las tengo solucionadas menos una:

En el foro solo podrán responder a los mensajes que plantean los usuarios los moderadores, pero tambien necesitamos que el creador del mensaje pueda seguir respondiendo.

He puesto (en los permisos del foro) que los mensajes solo los puedan responder los moderadores, pero así no pueden responder los que han creado el post.

¿Hay alguna forma de hacer lo que quiero desde el panel de administracion de phpbb o se ha de programar algo?
Si hay que programar algo (que será lo más seguro), ¿alguién sabe donde y que se ha de programar?

Muchas gracias por su tiempo.[/quoteicy]
Respuesta de yoseman ante dicha duda...
Bien, para hacer eso hay que retocar un pelín el script posting.php

Abrir el archivo posting.php

Localizar el siguiente código, más o menos en la línea 185:

Código: Seleccionar todo

	case 'reply':
	case 'vote':
		if ( empty( $topic_id) )
		{
			message_die(GENERAL_MESSAGE, $lang['No_topic_id']);
		}

		$sql = "SELECT f.*, t.topic_status, t.topic_title  
			FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t
			WHERE t.topic_id = $topic_id
				AND f.forum_id = t.forum_id";
		break;

	case 'quote':
Y remplazar por esto (seleccionas TODO el código anterior y lo reemplazas por todo lo que pongo a continuación)

Código: Seleccionar todo

	case 'reply':
	case 'vote':
		if ( empty( $topic_id) )
		{
			message_die(GENERAL_MESSAGE, $lang['No_topic_id']);
		}
		
		$sql ="SELECT topic_poster FROM ".TOPICS_TABLE." WHERE topic_id=".$topic_id;
		if ( $result = $db->sql_query($sql) )
		{
			$post_info = $db->sql_fetchrow($result);
			$db->sql_freeresult($result);
		}
		
		if ( $userdata['user_id'] != $post_info['topic_poster'] )
		{
			if ( $userdata['user_level'] != MOD && $userdata['user_level'] != ADMIN ) 
			message_die(GENERAL_MESSAGE, "Lo sentimos pero sólo el usuario que abrió la consulta o moderadores pueden responder");
		}

		$sql = "SELECT f.*, t.topic_status, t.topic_title  
			FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t
			WHERE t.topic_id = $topic_id
				AND f.forum_id = t.forum_id";
		break;

	case 'quote':
		if ( empty($post_id) )
		{
			message_die(GENERAL_MESSAGE, $lang['No_post_id']);
		}
		$sql ="SELECT topic_id FROM ".POSTS_TABLE." WHERE post_id=".$post_id;
		if ( $result = $db->sql_query($sql) )
		{
			$post_info = $db->sql_fetchrow($result);
			$db->sql_freeresult($result);
			$topic_id = $post_info['topic_id'];
		}
		$sql ="SELECT topic_poster FROM ".TOPICS_TABLE." WHERE topic_id=".$topic_id;
		if ( $result = $db->sql_query($sql) )
		{
			$post_info = $db->sql_fetchrow($result);
			$db->sql_freeresult($result);
			
		}
		
		if ( $userdata['user_id'] != $post_info['topic_poster'] )
		{
			if ( $userdata['user_level'] != MOD && $userdata['user_level'] != ADMIN ) 
			message_die(GENERAL_MESSAGE, "Lo sentimos pero sólo el usuario que abrió la consulta o moderadores pueden responder");
		}
No lo he testeado al 100%, pero las pruebas que hecho no parece que se me haya escapado ningún error. Aviso que esas modificaciones las he hecho yo, no son de ningún MOD, pero bueno supongo que no te importará :)

Salu2