Jun
29
2010
0

Obtener el “parent item” del menú de la página actual (Drupal)

Si estamos usando Drupal y queremos obtener en una variable el nombre del item u opción de menú inmediatamente superior ("padre") del nodo o página actual que está visitando el usuario (o sea, si quieres el parent item dentro de nuestra jerarquía del menú al que pertenece dicha página), utilizaremos el siguiente código:

  1. $menuParent = menu_get_active_trail();
  2. $pos = count($menuParent) - 2;
  3. $menuParent = $menuParent[$pos]['link_title'];
No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Apr
29
2010
0

Subir archivo al servidor desde formulario y enviar email a usuario con enlace (Drupal)

El archivo se llama a sí mismo para procesar el archivo enviado por el usuario desde el formulario y enviar un email con un enlace al mismo. Con algunas modificaciones se podrá usar en cualquier entorno, no necesariamente en Drupal.

  1. <?php if ( !empty($_POST) ) {
  2. if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/sites/default/files/user_form_uploads/".$_FILES['uploadedfile']['name'])) {
  3. echo "The file has been uploaded";
  4. }
  5. echo "Thank you for sending your file.";
  6. $emailadd = 'Recipient.org <recipient@recipient.org>';
  7. $text = "Alguien envió un archivo desde la web.";
  8. $space = '';
  9. $line = '
  10. ';
  11. foreach ($_POST as $key => $value){
  12. if ( !empty($value) ) {
  13. if ($key!='submit' ) {
  14. $key = str_replace("_", " ", $key);
  15. $text .= "<strong>".$key . ":</strong> " . $value . "";
  16. $space = ' ';
  17. }
  18. if ($key=='Email') {
  19. $emailapplicant=$value;
  20. }
  21. }
  22. }
  23. $text .= $line."You can download the file uploaded by the user <a href='http://www.ejemplo.com/sites/default/files/user_form_uploads/".$_FILES['uploadedfile']['name']."'>clicking here</a>.";
  24. mail($emailadd, "Someone sent a file", $text, "From: ".$emailadd."\r\nContent-type: text/html\r\nContent-type: text/html\r\n");
  25. } ?>
  26. <form id="apply_aff_form" method="post" action="thispage.php" class="formular" enctype="multipart/form-data">
  27. <fieldset>
  28. <input name="uploadedfile" id="uploadedfile" type="file" size="46" />
  29. <input id="submit" type="submit" name="submit" value="Submit" class="submit" />
  30. </fieldset>
  31. </form>
  32.  
No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Post de cabezaBomba en la(s) categoría(s): Desarrollo Web,Drupal,PHP,formularios | Tags: , , , , , , , , , , , , ,
Apr
29
2010
0

Crear usuarios Drupal 6.x dinámicamente

La siguiente función para generar usuarios "on the fly" puede servir, por ejemplo, para crear usuarios en Drupal 6.x a partir de datos dados en una URL, aunque tiene muchos posibles usos. Yo lo utilizo para la creación de usuarios desde procedencias externas. El código se puede extender de modo que una de esas variables indique la procedencia y se almacene en el perfil del usuario, por ejemplo, para calcular distintos descuentos o permisos. Visto en Jayboodhun

  1. <?php
  2. /**
  3.  * Date dd/mm/yyyy
  4.  * Creates a user with profile values.
  5.  *
  6.  * @param $data
  7.  * $_POST data for example.
  8.  *
  9.  * @return
  10.  * $user Object.
  11.  */
  12. function my_module_create_user($data) {
  13. // Drupal User module function that generates MD5 hash password
  14. $pass = user_password();
  15. $newuser = array(
  16. 'name' => $data['name'],
  17. 'mail' => $data['mail'],
  18. 'status' => 1, // Sets user as Active
  19. 'pass' => $pass
  20. );
  21. $auto_user = user_save('', $newuser);
  22. $rid = 4; // Assign Role ID
  23. $uid = $auto_user->uid;
  24. db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $uid, $rid);
  25. // Populates profile values
  26. $profile = array(
  27. 'firstname' => $data['firstname'],
  28. 'lastname' => $data['lastname'],
  29. 'company' => $data['company'],
  30. 'address' => $data['address'],
  31. 'city' => $data['city'],
  32. 'state' => $data['state'],
  33. 'country' => $data['country'],
  34. 'phone' => $data['phone'],
  35. );
  36. // Adds details under Personal Information Category set in Profile
  37. profile_save_profile($profile, $auto_user, 'Personal Information');
  38. // Load the new user Object
  39. $account = user_load(array('uid' => $auto_user->uid, 'status' => 1));
  40. global $user;
  41. $user = $account;
  42. drupal_set_message(t('You have been authenticated'));
  43. db_query("UPDATE {users} SET login = %d WHERE uid = %d", time(), $user->uid);
  44. sess_regenerate();
  45. // Finally send an Email
  46. /*
  47. * Mail templates available:
  48. * register_no_approval_required
  49. * register_admin_created
  50. * register_pending_approval - Need to set Status above as 0 if this option is required
  51. */
  52. drupal_mail('user', 'register_no_approval_required', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
  53. // Set the redirection to where you want
  54. drupal_goto('home');
  55. }
  56. ?>
No me interesaNo está malBienÚtilMuy bien, muy útil (2 votes, average: 3.50 out of 5)
Loading ... Loading ...
Apr
29
2010
0

Subir archivo .txt para actualizar base de datos MySQL con PHP

La idea es actualizar nuestra base de datos con un Excel con el que estemos trabajando. El proceso es copiar las celdas (CTRL+C) que deseemos actualizar, y pegar el resultado en un archivo de texto (.txt), de modo que aparecerán en él los datos separados por tabulaciones (TAB).

La primera página tendrá un código parecido a ésto, y servirá para permitir al usuario subir ese archivo .txt:

  1. <script language="JavaScript">
  2. function validarDatos() {
  3. var frm = document.formulario;
  4. var err = "";
  5. if (!(frm.fileMuestrario.value)) {
  6. err= err + "Por favor, indique un archivo para subir.";
  7. }
  8. if (err=="") {
  9. return true;
  10. }
  11. else {
  12. alert(err);
  13. return false;
  14. }
  15. }
  16. function enviar() {
  17. var frm = document.formulario;
  18. if (validarDatos()) {
  19. var mensaje = "";
  20. mensaje = "Se va a actualizar la valoración de las empresas conforme a los datos del fichero especificado. ¿Confirma la operación?";
  21. if (confirm(mensaje)) {
  22. frm.submit();
  23. }
  24. }
  25. }
  26. </script>
  27. <form name="formulario" method="post" action="paso2.php" enctype="multipart/form-data">
  28.  
  29. Especifique la ruta donde se encuentra el fichero con los valores a actualizar
  30. <input type="file" name="fileMuestrario" size="55" class="campotexto">
  31. <a href="#" onClick="enviar(); return false;">ENVIAR</a>
  32. </form>
  33.  

La segunda página "desmenuza" este archivo y actualiza los valores en nuestra base de datos. Por supuesto, las columnas del archivo de texto deben corresponderse con las columnas de nuestra tabla, para no hacer un desbarajuste con los datos. La primera sería la [0], la segunda es [1], etc.
NOTA: El código utiliza db_query para las consultas a la base de datos porque este código lo hice para Drupal. Sin embargo, puede ser usado en cualquier parte, sólo con sustituir db_query con mysql_connect() y mysql_query.

  1. <?php
  2.  
  3. $registroResultados = "";
  4.  
  5. $subidaFichero = true;
  6. $archivo_temp = $_FILES['fileMuestrario']['tmp_name'];
  7. $archivo = $_FILES['fileMuestrario']['name'];
  8. if ($archivo != '') {
  9. if (!copy($_FILES['fileMuestrario']['tmp_name'], ficheroBackupRUTA)) {
  10. $subidaFichero = false;
  11. }
  12. else {
  13. $subidaFichero = false;
  14. }
  15. }
  16.  
  17. $row = 1;
  18. $ficheroMuestras = ficheroBackupRUTA;
  19. $fSalida = fopen ($ficheroMuestras, "r");
  20.  
  21. $table = 'nombre_tabla';
  22. // Se puede truncar (borrar) la tabla previo a actualizar, o no:
  23. db_query("TRUNCATE TABLE {%s}", $table); //OPCIONAL
  24.  
  25.  
  26. <strong>Actualización exitosa. Estos son los valores actualizados.</strong>
  27. <table>
  28. <tr>
  29. <td>sector1_id</td>
  30. <td>sector2_id</td>
  31. <td>parametro1</td>
  32. <td>parametro2</td>
  33. <td>parametro3</td>
  34. <td>parametro4</td>
  35. </tr>
  36.  
  37. ";
  38.  
  39. while ($data = fgetcsv ($fSalida, 2000, " ")) {
  40. $parametro1 = str_replace(',', '.', $data[0]);
  41. $parametro2 = str_replace(',', '.', $data[1]);
  42. $parametro3 = str_replace(',', '.', $data[2]);
  43. $parametro4 = str_replace(',', '.', $data[3]);
  44.  
  45. $sql = "INSERT INTO nombre_tabla (campo1, campo2, campo3, campo4) VALUES (".$parametro1.", ".$parametro2.", ".$parametro3.", ".$parametro4.")";
  46. db_query($sql);
  47.  
  48. <tr>
  49. <td>".$parametro1."</td>
  50. <td>".$parametro2."</td>
  51. <td>".$parametro3."</td>
  52. <td>".$parametro4."</td>
  53. </tr>
  54.  
  55. ";
  56.  
  57. }
  58. print "</table>
  59.  
  60. ";
  61. fclose ($fSalida);
  62. ?>
No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Post de cabezaBomba en la(s) categoría(s): Desarrollo Web,MySQL,PHP | Tags: , , , , , , , , , , , , , , , , , ,
Apr
26
2010
0

Snippet jQuery para mostrar u ocultar las descripciones de campos de un formulario en Drupal

Con este pequeño snippet de jQuery tipo "show/hide" podréis añadir efectos a las descripciones de los inputs de formularios creados en Drupal. Al entrar (focus) en el campo de texto, la descripción del mismo se despliega. Al salir (blur), vuelve a esconderse o replegarse.

Es interesante para no "manchar" los formularios con mucho texto explicativo entre los campos, ya que sólo aparece aquél donde el usuario se encuentra. Se debe usar con cuidado para no afectar la usabilidad, de modo que quizá requiera que juguéis un poco con él o lo hagáis más específico (por ejemplo, según el id del formulario, etc).

// Toggle description of forms when focus on input
$(document).ready(function(){
$padre = $('input.form-text').parent();
$padre.find('div.description').hide(200);
$('input.form-text').focus(function() {
$padre = $(this).parent();
$padre.find('div.description').show(200);
});
$('input.form-text').blur(function() {
$padre = $(this).parent();
$padre.find('div.description').hide(200);
});
});

No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Post de cabezaBomba en la(s) categoría(s): Drupal,Usabilidad,jquery | Tags: , , , , , , , , , , , , , , ,

Creative Commons License
Webcidentes by Alejandro Garcia is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.
Based on a work at www.cabezabomba.com.