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.

Trackback URL for this post:

http://www.documentados.com/trackback/174

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

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <strike> <code> <ul> <ol> <li> <dl> <dt> <dd><img><p><div><blockquote>
  • Saltos automáticos de líneas y de párrafos.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

Más información sobre opciones de formato

CAPTCHA
Esto es para evitar spam, y ver que eres humano :)
Image CAPTCHA
Enter the characters shown in the image.