Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/09/2012, 02:48
Avatar de TheScript
TheScript
 
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Me falta algo para crear modulo? revisar por favor

Hola a todos, ya he conseguido movilizar un poco el tema. Pongo lo que llevo hasta ahora hecho. Ya que en todas las páginas que he buscado información no he encontrado ejemplos concretos. Alomejor le puede valer a alguien con tantas dudas como yo! jejeje Y así también si tengo errores se quede aqui reflejado.

Primer paso: Creo mi modulo, y lo activo en drupal: solicitud.info y solicitud.module en carpeta 'solicitud'

Código PHP:
<?php
/**
 * Implements hook_nodeapi()
 */
function solicitud_nodeapi(&$node$op$a3$a4) {

    if (
$node->type == 'solicitud') {
     
    if (
$op == 'insert') {
    
$mail $node->field_email[0]['email'];
      
     
$key $node->nid.'_'.$mail.'_'.time();
     
$body "Se registró la solicitud del curso de forma satisfactoria. Se le notificará luego si fue aceptado. Gracias por preferirnos.";
     
$headers['From'] = $headers['Sender'] = $headers['Return-Path'] = $headers['Errors-To'] = $mail;
     
$message = array(
         
'id'=> 'cf_custom_mail',
         
'to' => $mail,
         
'subject' =>t('Notificación de solicitud'),
         
'body' => $body,
         
'headers'=> $headers);
     
drupal_mail_send($message);
      
drupal_set_message('Se registró la solicidud satisfactoriamente.'); 
    
    
    
    }
   }
}
Esto me guarda los datos rellenados en el form, y entonces me muestra un mensaje de 'ok' y me envia un email.

Ahora modifico el archivo setting.php para poder conectarme a una BD que no sea la de drupal:

Código PHP:
$db_url['default'] = 'mysql://user:passw@localhost/drupal _bd';

$db_url['db2'] = 'mysql://otheruser:passw2@localhost/other _bd' 

AHORA MODIFICO EL MODULO PARA CONECTAR A LA BD EXTERNA Y HACER UN INSERT DE LOS DATOS QUE SE ACABAN DE CREAR E INSERTAR EN LA BD DE DRUPAL.

solicitud.module:

Código PHP:
<?php
/**
 * Implements hook_nodeapi()
 */
function solicitud_nodeapi(&$node$op$a3$a4) {

    if (
$node->type == 'solicitud') {
     
    if (
$op == 'insert') {
    
$mail $node->field_email[0]['email'];
      
     
$key $node->nid.'_'.$mail.'_'.time();
     
$body "Se registró la solicitud del curso de forma satisfactoria. Se le notificará luego si fue aceptado. Gracias por preferirnos.";
     
$headers['From'] = $headers['Sender'] = $headers['Return-Path'] = $headers['Errors-To'] = $mail;
     
$message = array(
         
'id'=> 'cf_custom_mail',
         
'to' => $mail,
         
'subject' =>t('Notificación de solicitud'),
         
'body' => $body,
         
'headers'=> $headers);
     
drupal_mail_send($message);
      
drupal_set_message('Se registró la solicidud satisfactoriamente.');     

//base de datos externa y guardar datos de la nueva solicitud

// Conectarse a otra BD
db_set_active('db2');
// Enviar la consulta
$result=db_query('insert into solicitud VALUES('')');



// ¡OJO ! Volver a conectarse a la BD por defecto de Drupal

db_set_active('default');



    }
   }
}
Lo que me falta para poder probarlo es recorrer el formulario que han rellenado y guardado en la bd de drupal, y meterlo en los values del insert de mi tabla, que aún no tengo ni idea ahora mismo.