Modificar las funciones de comentarios, parte II
Las solución correcta debería ser implementar el hook_comment para poder modificar en el momento del submit el dato de 'status', que es lo que nos interesa. Pero si analizamos el array podemos comprobar que en el formulario este dato no se "pasa" a la función function comment_save ($edit)
«
Por lo tanto la solución de hook_comment no nos sirve. Lo publico por morbosa curiosidad
<?php
/**
* Implementation of hook_comment
*/
if (arg(0) == 'node' && is_numeric(arg(1))){
$nid=arg(1);
$nodo = node_load($nid);
if ($nodo->type == 'forum'){
function kiddiamodulo_comment(&$a1, $op) {
switch ($op) {
case 'insert':
$a1['status']= 'COMMENT_PUBLISHED';
break;
}
}
}
}
?>Hablando con develCuy de este problema me comento que había que plantear de otra forma la modificación y planteamos en la lista de drupal-peru (googlegroups) esta pregunta, su respuesta fue la siguiente:
<?php
/**
* Implementation of hook_form_alter().
*/
function modulo_form_alter($form_id, &$form) {
// Si estamos en el formulario de envío de comentarios
if ($form_id == 'comment_form') {
// Quitamos el handler del core
unset($form['#submit']['comment_form_submit']);
// Asignamos nuestro propio handler para guardar el comment
$form['#submit']['modulo_comment_submit'] = array();
}
}
/**
* Enmascara el handler que guarda los comentarios.
*/
function modulo_comment_submit($form_id, $form_values) {
// $form_values Llega como un formulario
if (is_array($form_values)) {
// Tomamos el ID del Nodo
$nid =& $form_values['nid'];
// Cargamos el nodo
$nodo = node_load($nid);
// Validamos el tipo de contenido
if ($nodo->type == 'event') {
// 1 unpublished, 0 published
$form_values['status'] = 1;
}
}
// Ahora que cambiamos la data, reencien la enviamos al handler del
core
return comment_form_submit($form_id, $form_values);
}
?>Pero tampoco ha dado sus frutos, yo veo que el problema es que $edit['status'], no lo recupera de ningún formulario ni de ningún array, sino que los consulta directamente a user_access('post comments without approval'), y luego añade el valor al inserte.
La solución planteada mientras seguimos investigando, o planteamos modificar el módulo y contribuirlo es:
sustituir
<?php
// Add the comment to database.
$edit['status'] = user_access('post comments without approval') ? COMMENT_PUBLISHED : COMMENT_NOT_PUBLISHED;
?>Por
<?php
// Add the comment to database.
//modificación para poder publicar automáticamente en el foro.
$node_com = node_load($edit['nid']);
if($node_com->type == 'forum')
$edit['status'] = COMMENT_PUBLISHED;
else
//fin de la modificación para y continuar con el módulo tal cual estaba.
$edit['status'] = user_access('post comments without approval') ? COMMENT_PUBLISHED : COMMENT_NOT_PUBLISHED;
?>Un saludo
Oskar
MI agradecimiento a Daniel 5 lineas por la solución final, que no es la correcta de la metodología de Drupal, pero como se ha dicho, el módulo no parece que permita otra cosa.
. Configuración y administración del sitio
mbt m.walk shoes
The mbt shoe moon always looks bigger when it is near the horizon, as compared with when its high in the mbt panda clearance sky. But the reasons for that are still a matter of debate among psychologists: One mbt m.walk shoes factor is that the moon proximity to the horizon leads the viewer to see it alongside tiny distant objects on the mbt chapa shoes horizon. Our primate brains are programmed to perceive the moon as being even farther away, and much bigger than those distant mbt shuguli gtx shoes objects. But when the moon is hanging in a big empty sky, our brains do not make that perceptual mbt sport shoes connection quite as easily. Some researchers say we perceive the heavens as a shallow mbt kisumu sandals inverted bowl. http://www.mbtshoessale.com/ 26 July CHF
Enviar un comentario nuevo