Ayuda con la configuración en el ACP de mi MOD

Foro de debate para los escritores de MOD, sobre MOD en Desarrollo.

Moderador: Personalizaciones de Extensiones

Avatar de Usuario
Saske
Ex Miembro del Equipo
Mensajes: 258
Registrado: Sab Feb 05, 2011 9:30 am
Ubicación: España
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Saske » Lun Sep 05, 2011 3:27 am

Patrocinador

Leviatan21 escribió:en la plantilla estas utilizando poll_results cuando deberías utilizar poll_option según donde agregaste el condicional
Alorse escribió: Estabas usando poll_results en vez de poll_option y como la variable POLL_OPTION_RESULT_PERMISSION ya esta verificando so el MOD esta habilitado
Lo cambie y ya funciona, muchas gracias por esta "explicación" :)
Bueno, cito la 3 duda :ugeek:
Bueno, pues me gustaría añadir un "orden de voto" (en phpBB.com me sugerieron/pidieron que añadirá esta función)
Me explico:
Con el MOD Advanced Show Poll Voters, las encuestas saldrían así:
Opción 1 Porcentaje
Nombre de Usuario que voto esta opción (4)
Opción 2 Porcentaje
Nombre de Usuario que voto esta opción (3)
Opción 3 Porcentaje
Nombre de Usuario que voto esta opción (2)
Opción 4 Porcentaje
Nombre de Usuario que voto esta opción (1)
El número entre parentesis, representa cual fue el primer, segundo, tercero y cuarto en este caso, en votar.
Viendo las tablas que crea phpBB3 por defecto para las encuestas (phpbb_poll_options y phpbb_poll_votes) me fije en que debía de crear un campo/columna en una de las 2 tablas para poder realizar esta función.
Crearlo, sería facil, pero luego, como le establezco el valor, para que funcione como puse en el ejemplo ?
Me imagino que estoy preguntando la parte mas dificil de esto, pero no se si ya hay alguna funcion que puedo usar o tomar como base para phpBB 3, o alguna cosa similar :roll:
Hay alguna posibilidad de hacer eso ?

Avatar de Usuario
Leviatan21
Lider phpBB Argentina
Lider phpBB Argentina
Mensajes: 1993
Registrado: Mié Nov 25, 2009 4:43 pm
Ubicación: Buenos Aires, Argentina
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Leviatan21 » Lun Sep 05, 2011 12:28 pm

Lo único que se me ocurre es que agregues una columna a la tabla phpbb_poll_votes que almacene la fecha/hora y que también agregues un índice para esa columna :
Lo haría basándome ( por ejemplo ) en la tabla de mensajes phpbb_posts, donde el campo es post_time y en ese campo se guarda la hora actual ( time() )
El ejemplo de usar la tabla de mensajes, es para que tomes esa columna como referencia para crear tu nueva columna, mira bien como está creada y sus valores : tipo de datos y valor por omisión

En el archivo raíz/viewtopic.php es donde se agregan los votos en este código :

Código: Seleccionar todo

			if ($user->data['is_registered'])
			{
				$sql_ary = array(
					'topic_id'			=> (int) $topic_id,
					'poll_option_id'	=> (int) $option,
					'vote_user_id'		=> (int) $user->data['user_id'],
					'vote_user_ip'		=> (string) $user->ip,
				);

				$sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
				$db->sql_query($sql);
			}
Yo le agregaría esto :

Código: Seleccionar todo

					'vote_time'			=> time(),
De manera que quedase así :

Código: Seleccionar todo

			if ($user->data['is_registered'])
			{
				$sql_ary = array(
					'topic_id'			=> (int) $topic_id,
					'poll_option_id'	=> (int) $option,
					'vote_user_id'		=> (int) $user->data['user_id'],
					'vote_user_ip'		=> (string) $user->ip,
					'vote_time'			=> time(),
				);

				$sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
				$db->sql_query($sql);
			}
Luego en donde tu recolectas los votos, tu tienes esta SQL :

Código: Seleccionar todo

// By Saske Start
// some codes here taken from evaarties' show poll voters for phpbb3
		$sql_voters = '
			SELECT u.username, u.user_colour, pv.vote_user_id
			FROM ' . POLL_VOTES_TABLE . ' pv, ' . USERS_TABLE . ' u
			WHERE pv.topic_id = ' . $topic_id . '
				AND poll_option_id = ' . $poll_info[$i]['poll_option_id'] . '
				AND pv.vote_user_id = u.user_id
			ORDER BY u.username_clean ASC, pv.vote_user_id ASC';
La cambiaría por :

Código: Seleccionar todo

// By Saske Start
// some codes here taken from evaarties' show poll voters for phpbb3
		$sql_voters = 'SELECT u.username, u.user_colour, pv.vote_user_id
			FROM ' . POLL_VOTES_TABLE . ' pv, ' . USERS_TABLE . ' u
			WHERE pv.topic_id = ' . $topic_id . '
				AND poll_option_id = ' . $poll_info[$i]['poll_option_id'] . '
				AND pv.vote_user_id = u.user_id
			ORDER BY pv.vote_time ASC';
Lea las reglas | Nosotros | Acerca de phpBB | Descargas | Soporte | Blog
Ex Miembro del Equipo QA en phpbb.com
No se brindará soporte por Mensaje Privado, por favor pregunte en un tema público, tenga en cuenta que su problema puede ser también un problema para otros ;)

Avatar de Usuario
Saske
Ex Miembro del Equipo
Mensajes: 258
Registrado: Sab Feb 05, 2011 9:30 am
Ubicación: España
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Saske » Lun Sep 05, 2011 2:06 pm

Antes de nada, muchas gracias ;)
Leviatan21 escribió:Lo único que se me ocurre es que agregues una columna a la tabla phpbb_poll_votes que almacene la fecha/hora y que también agregues un índice para esa columna :
Lo haría basándome ( por ejemplo ) en la tabla de mensajes phpbb_posts, donde el campo es post_time y en ese campo se guarda la hora actual ( time() )
Según vi, esa columna es "Tipo" INT (11) y tiene de atributo Unsigned
Así que ejecuto esta consulta SQL

Código: Seleccionar todo

ALTER TABLE `phpbb_poll_votes` ADD `vote_time` INT( 11 ) UNSIGNED NOT NULL 
Se añade la columna correctamente (o eso veo yo desde phpmyadmin)
Respecto a los otros 2 cambios, ya los hice, sin embargo, creo que falta algo, si no me equivoco es el pasarlo a la plantilla
He estado viendo en mi viewtopic.php como se hace con el post_time y me fijé en estas 2 lineas

Código: Seleccionar todo

		'POST_DATE'			=> $user->format_date($row['post_time'], false, ($view == 'print') ? true : false),

Código: Seleccionar todo

		'post_time'			=> $row['post_time'],
Lo que quiero decir, es que con tu cambio, se ordenan los votantes como votaron, mi pregunta ahora es, se podría llevar esto mas allá, y colocar "el número", tal y como pongo en el ejemplo
Opción 1 Porcentaje
Nombre de Usuario que voto esta opción (4)
Opción 2 Porcentaje
Nombre de Usuario que voto esta opción (3)
Opción 3 Porcentaje
Nombre de Usuario que voto esta opción (2)
Opción 4 Porcentaje
Nombre de Usuario que voto esta opción (1)
Para esto, creo que ya no tenemos que seguir usando el post_time :?:

Avatar de Usuario
Leviatan21
Lider phpBB Argentina
Lider phpBB Argentina
Mensajes: 1993
Registrado: Mié Nov 25, 2009 4:43 pm
Ubicación: Buenos Aires, Argentina
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Leviatan21 » Lun Sep 05, 2011 2:44 pm

Saske escribió:Según vi, esa columna es "Tipo" INT (11) y tiene de atributo Unsigned
Así que ejecuto esta consulta SQL

Código: Seleccionar todo

ALTER TABLE `phpbb_poll_votes` ADD `vote_time` INT( 11 ) UNSIGNED NOT NULL 
Se añade la columna correctamente (o eso veo yo desde phpmyadmin)
Ojo, la columna es

Código: Seleccionar todo

post_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
tiene un default que es muy importante, pero ese tipo de consulta que tu ahces es solo válida para mysql, lo debes hacer vía UMIL para que sea válido al 100% con otros tipos de bases de datos.
Y también recuerda que debes agregar el índice correcto, para evitar problemas.
Los índices son muy importante a la hora de hacer un ORDER BY
El índice también debes crearlo vía UMIL
Saske escribió:Para esto, creo que ya no tenemos que seguir usando el post_time :?:
Creo que debes agregarlo a tu lista de usuarios votantes :

Código: Seleccionar todo

			$vote_time = $user->format_date($poll_option['vote_time'], false, ($view == 'print') ? true : false);
Y anidar ese resultado a : $voters_string
Lea las reglas | Nosotros | Acerca de phpBB | Descargas | Soporte | Blog
Ex Miembro del Equipo QA en phpbb.com
No se brindará soporte por Mensaje Privado, por favor pregunte en un tema público, tenga en cuenta que su problema puede ser también un problema para otros ;)

Avatar de Usuario
Saske
Ex Miembro del Equipo
Mensajes: 258
Registrado: Sab Feb 05, 2011 9:30 am
Ubicación: España
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Saske » Lun Sep 05, 2011 3:34 pm

Leviatan21 escribió: Ojo, la columna es

Código: Seleccionar todo

post_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
tiene un default que es muy importante,
Cierto, se me paso el default :oops:
Leviatan21 escribió: pero ese tipo de consulta que tu haces es solo válida para mysql, lo debes hacer vía UMIL para que sea válido al 100% con otros tipos de bases de datos.
Y también recuerda que debes agregar el índice correcto, para evitar problemas.
Los índices son muy importante a la hora de hacer un ORDER BY
El índice también debes crearlo vía UMIL
El Problema, que yo tengo al menos, es que normalmente, me baso en otro instalador de umil, en vez de crearlo online, por que si lo hago online, siempre me dejo alguna cosa, o completo algo mal, o pongo algo en lugar equivocado ... :roll:
Leviatan21 escribió: Creo que debes agregarlo a tu lista de usuarios votantes :
Dos cosas, lo añado despues de:

Código: Seleccionar todo

		$results_voters = $db->sql_query($sql_voters);
		$voters_total = 0;
		$voters_string = "";,
O:

Código: Seleccionar todo

			$voters_total = $voters_total + 1;
			$voters_string = $voters_string . ", " . get_username_string('full', $row_voters['vote_user_id'], $row_voters['username'], $row_voters['user_colour'], $row_voters['username']);
Y la otra, cuando dices añadir ese resultado a $voters_string te refieres a cambiar esta linea

Código: Seleccionar todo

			$voters_string = $voters_string . ", " . get_username_string('full', $row_voters['vote_user_id'], $row_voters['username'], $row_voters['user_colour'], $row_voters['username']);
por

Código: Seleccionar todo

			$voters_string = $voters_string . ", " . get_username_string('full', $row_voters['vote_user_id'], $row_voters['username'], $row_voters['user_colour'], $row_voters['username'], $row_voters['vote_time']);
Dudo que sea eso, basicamente por que los "rows" creo que se sacan de esta linea

Código: Seleccionar todo

		$sql_voters = 'SELECT u.username, u.user_colour, pv.vote_user_id
Y ahi no hay nada relacionado :oops: :roll:

Avatar de Usuario
Leviatan21
Lider phpBB Argentina
Lider phpBB Argentina
Mensajes: 1993
Registrado: Mié Nov 25, 2009 4:43 pm
Ubicación: Buenos Aires, Argentina
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Leviatan21 » Lun Sep 05, 2011 3:52 pm

Sin probarlo, algo mas o menos así en el viewtopic.php

Código: Seleccionar todo

// By Saske Start
// some codes here taken from evaarties' show poll voters for phpbb3
		$sql_voters = '
			SELECT u.username, u.user_colour, pv.vote_user_id, pv.vote_time 
			FROM ' . POLL_VOTES_TABLE . ' pv, ' . USERS_TABLE . ' u
			WHERE pv.topic_id = ' . $topic_id . '
				AND poll_option_id = ' . $poll_info[$i]['poll_option_id'] . '
				AND pv.vote_user_id = u.user_id
			ORDER BY u.username_clean ASC, pv.vote_user_id ASC';

		$results_voters = $db->sql_query($sql_voters);
		$voters_total = 0;
		$voters_string = "";

// Add all voters to a string.
		while ($row_voters = $db->sql_fetchrow($results_voters))
		{
			$voters_total = $voters_total + 1;
			$vote_time = $user->format_date($row_voters['vote_time']);
			$voters_string .= ", " . get_username_string('full', $row_voters['vote_user_id'], $row_voters['username'], $row_voters['user_colour'], $row_voters['username']) . ' (' .  $user->lang['POSTED_ON_DATE'] . ' ' . $vote_time . ') ';
		}

		$voters_string = ltrim($voters_string, ", ");

// Add the string to the list.
		$poll_info[$i]['poll_option_voters'] = $voters_string;
		$db->sql_freeresult($results_voters);

// By Saske Finish
Lea las reglas | Nosotros | Acerca de phpBB | Descargas | Soporte | Blog
Ex Miembro del Equipo QA en phpbb.com
No se brindará soporte por Mensaje Privado, por favor pregunte en un tema público, tenga en cuenta que su problema puede ser también un problema para otros ;)

Avatar de Usuario
Saske
Ex Miembro del Equipo
Mensajes: 258
Registrado: Sab Feb 05, 2011 9:30 am
Ubicación: España
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Saske » Lun Sep 05, 2011 4:08 pm

Leviatan21 escribió:Sin probarlo, algo mas o menos así en el viewtopic.php
:shock:
No tengo palabras, probado, y el resultado es:
test (Opción)
0 (Porcentaje de Votos)
No hay votos

test1
2 (Opción)
100% (Número de Votos)
Robot MOD (el Lun, 05 Sep 2011, 19:05) , Saske (el Lun, 05 Sep 2011, 19:05)

test2 (Opción)
0 (Porcentaje de Votos)
No hay votos
Creo que puedes ver el resultado aquí
Sencillamente increïble, cuando hice el tema, jamás hubiera llagado a pensar que fuera así lo de permisos, ni mucho menos, que pudiera (con vuestra gran ayuda, por supuesto) terminar con el resultado 100% perfecto
Tras haberse terminado mis dudas, y antes de marcar el tema como solucionado, y cerrarlo, me pregunto, si desean (tanto tu, leviatan21, como alorse) que les incluya en el install.xml del MOD, o como "colaboradores" en los temas en los que este el MOD :?:
Una vez mas muchas gracias

Avatar de Usuario
nextgen
Lider Equipo de Personalizaciones
Lider Equipo de Personalizaciones
Mensajes: 554
Registrado: Jue Jun 17, 2010 12:36 am
Ubicación: Guatemala, Guatemala
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por nextgen » Lun Sep 05, 2011 4:14 pm

Offtopic= Si ellos no quieren ser incluidos, incluime a mi con mucho gusto :lol:
Recorda rellenar Imagen para cuálquier problema con tu foro.

Avatar de Usuario
Leviatan21
Lider phpBB Argentina
Lider phpBB Argentina
Mensajes: 1993
Registrado: Mié Nov 25, 2009 4:43 pm
Ubicación: Buenos Aires, Argentina
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Leviatan21 » Lun Sep 05, 2011 4:15 pm

Saske escribió:No tengo palabras, probado, y el resultado es:
Perfecto !
Saske escribió:me pregunto, si desean (tanto tu, leviatan21, como alorse) que les incluya en el install.xml del MOD, o como "colaboradores" en los temas en los que este el MOD
me conformo con un agradecimiento en el changelog, por mi no es necesarios ser citado como colaborador :ugeek:
Lea las reglas | Nosotros | Acerca de phpBB | Descargas | Soporte | Blog
Ex Miembro del Equipo QA en phpbb.com
No se brindará soporte por Mensaje Privado, por favor pregunte en un tema público, tenga en cuenta que su problema puede ser también un problema para otros ;)

Avatar de Usuario
Saske
Ex Miembro del Equipo
Mensajes: 258
Registrado: Sab Feb 05, 2011 9:30 am
Ubicación: España
Contactar:

Re: Ayuda con la configuración en el ACP de mi MOD

Mensaje sin leer por Saske » Mar Sep 06, 2011 1:42 pm

nextgen escribió:incluime a mi con mucho gusto :lol:
:lol:
Leviatan21 escribió: me conformo con un agradecimiento en el changelog, por mi no es necesarios ser citado como colaborador :ugeek:
Como quieras esperare haber que me dice Alorse
Sin embargo, me surgio un problema en el modulo en el ACP ...
En mi foro online (phpBBSaske) el MOD funciona perfecto, y no tiene errores, y tal ...
Sin embargo, esta mañana, he probado el MOD en localhost, para confirmar su funcionamiento, y todo funcionacorrectamente, exepto el modulo que añade en el ACP
Me explico mas, el MOD, usa el modulo del Abandonado MOD Poll Results, por lo que si el administrador así lo desea, no tiene que ir a la encuesta para ver quién ha votado en la encuesta ?, en mi foro esto funciona perfectamente, pero ... en el foro de localhost no sale esa parte, sin embargo, mas abajo, si sale la opción de habilitar/deshabilitar que añadimos en la primera parte de este tema
Dejo unas capturas:
1Advanced Show Poll Voters_1315327066992.png
2Advanced Show Poll Voters_1315327088139.png
Estoy usando los mismos archivos, por si acaso limpie la cache desde el ACP, pero nada ...
Pongo los archivos con todo su contenido ?
Hago un nuevo tema para esto ?

Cerrado