Modificar las funciones de comentarios, parte III con solución correcta

Por fin hemos dado con la solución correcta, sin hackear el core del módulo de Drupal

Gracias develCuy. :)

<?php

/**
* Implementation of hook_form_alter().
*/
function mimodulo_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']['mimodulo_comment_submit'] = array();
  }

}

/**
* Enmascara el handler que guarda los comentarios.
*/
function mimodulo_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 == 'forum') {
     
// 1 unpublished, 0 published
     
$form_values['status'] = COMMENT_PUBLISHED;
    }
  }
 
// Ahora que cambiamos la data, reencien la enviamos al handler del
core
 
return comment_form_submit($form_id, $form_values);

}

?>

Para que funcione en otros sitios sustituimos:
mimodulo por el nombre del módulo que se ha desarrollado

'forum' por el nombre del tipo de contenido que queremos que se apruebe automáticamente.

Un saludo y a disfrutar esto.

Oskar

Trackback URL for this post:

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

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.