SHARE
TWEET

Untitled

a guest Mar 13th, 2013 24 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. function random_asesor_field_info() {
  4.     return array(
  5.         'random_asesor' => array(
  6.             'label' => t('Asesor Aleatorio'),
  7.             'description' => t('Escoger asesor aleatorio'),
  8.             'default_widget' => 'random_asesor',
  9.             'default_formatter' => 'random_asesor',
  10.         ),
  11.     );
  12. }
  13.  
  14. function random_asesor_field_widget_info() {
  15.     return array(
  16.         'random_asesor' => array(
  17.             'label' => t('Default'),
  18.             'field types' => array('random_asesor'),
  19.         ),
  20.     );
  21. }
  22.  
  23. function random_asesor_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  24.  
  25.    
  26.     switch ($instance['widget']['type']) {
  27.         case 'random_asesor':
  28.  
  29.             $selected = isset($form_state['values']['proyecto']) ? $form_state['values']['proyecto'] : key(_random_asesor_generaListaProyectoAssoc());
  30.  
  31.  
  32.             $element['proyecto'] = array(
  33.                 '#type' => 'select',
  34.                 '#title' => t('Proyecto'),
  35.                 '#options' => _random_asesor_generaListaProyectoAssoc(),
  36.                 '#default_value' => $selected,
  37.                 '#ajax' => array(
  38.                     'callback' => 'random_asesor_proyectos_callback',
  39.                     'wrapper' => 'random_asesor_proyectos_replace',
  40.                 )
  41.             );
  42.  
  43.             $element['asesor'] = array(
  44.                 '#type' => 'select',
  45.                 '#title' => t('Asesor'),
  46.                 '#options' => _random_asesor_generaListaAsesorAssoc($selected),
  47.                 '#default_value' => isset($form_state['values']['asesor']) ? $form_state['values']['asesor'] : '',
  48.                 '#prefix' => '<div id="random_asesor_proyectos_replace">',
  49.                 '#suffix' => '</div>',
  50.             );
  51.  
  52.             dpm($form_state);
  53.             break;
  54.  
  55.      
  56.     }
  57.     return $element;
  58. }
  59.  
  60. function _random_asesor_generaListaAsesor($proyecto = '') {
  61.  
  62.     $node = array();
  63.    
  64.     srand(time());
  65.  
  66.     $query = db_query("
  67.        SELECT node.nid AS nid, node.title AS node_title, 'node' AS field_data_field_plan_nombre_node_entity_type
  68.        FROM {node} node
  69. LEFT JOIN {field_data_field_plan_proyecto} field_data_field_plan_proyecto ON node.nid = field_data_field_plan_proyecto.entity_id AND (field_data_field_plan_proyecto.entity_type = 'node' AND field_data_field_plan_proyecto.deleted = '0')
  70. LEFT JOIN {field_data_field_plan_puesto} field_data_field_plan_puesto ON node.nid = field_data_field_plan_puesto.entity_id AND (field_data_field_plan_puesto.entity_type = 'node' AND field_data_field_plan_puesto.deleted = '0')
  71. WHERE (( (node.status = '1') AND (node.type IN  ('bd_planilla')) AND (field_data_field_plan_proyecto.field_plan_proyecto_value LIKE :proyecto ESCAPE :escape) AND (field_data_field_plan_puesto.field_plan_puesto_value LIKE 'ASESOR' ESCAPE :escape) ))
  72. ORDER BY field_data_field_plan_nombre_node_entity_type ASC", array(':proyecto' => '%' . $proyecto . '%', ':escape' => '\\'));
  73.  
  74.  
  75.     foreach ($query as $value) {
  76.         $node[] = (node_load($value->nid)->field_plan_nombre['und'][0]['value']);
  77.     }
  78.    
  79.     $numero_aleatorio = rand(0, count($node));
  80.    
  81.     return $node;
  82. }
  83.  
  84. function _random_asesor_generaListaProyecto() {
  85.     $node = array();
  86.  
  87.     $query = db_query("SELECT node.nid AS nid, field_data_field_plan_proyecto.field_plan_proyecto_value AS field_data_field_plan_proyecto_field_plan_proyecto_value, 'node' AS field_data_field_plan_proyecto_node_entity_type
  88. FROM
  89. {node} node
  90. LEFT JOIN {field_data_field_plan_puesto} field_data_field_plan_puesto ON node.nid = field_data_field_plan_puesto.entity_id AND (field_data_field_plan_puesto.entity_type = 'node' AND field_data_field_plan_puesto.deleted = '0')
  91. LEFT JOIN {field_data_field_plan_proyecto} field_data_field_plan_proyecto ON node.nid = field_data_field_plan_proyecto.entity_id AND (field_data_field_plan_proyecto.entity_type = 'node' AND field_data_field_plan_proyecto.deleted = '0')
  92. WHERE (( (node.status = '1') AND (node.type IN  ('bd_planilla')) AND (field_data_field_plan_puesto.field_plan_puesto_value LIKE 'ASESOR' ESCAPE :escape) ))
  93. ORDER BY field_data_field_plan_proyecto_field_plan_proyecto_value ASC", array(':escape' => '\\'));
  94.  
  95.     foreach ($query as $value) {
  96.         $node[] = $value->field_data_field_plan_proyecto_field_plan_proyecto_value;
  97.     }
  98.  
  99.     $node = array_values(array_unique($node));
  100.  
  101.  
  102.     return $node;
  103. }
  104.  
  105. function _random_asesor_generaListaProyectoAssoc(){
  106.     return drupal_map_assoc(_random_asesor_generaListaProyecto());
  107. }
  108.  
  109. function random_asesor_proyectos_callback($form, &$form_state) {
  110.  
  111. //    dpm($form['field_test']);
  112.    
  113.     return $form['field_test'];
  114.    
  115. }
  116.  
  117. function _random_asesor_generaListaAsesorAssoc($key = '') {
  118.     $options = array();
  119.     $temp = _random_asesor_generaListaProyecto();
  120.    
  121.     for($i = 0; $i < count($temp); $i++){
  122.         $options[] = array($temp[$i] => drupal_map_assoc(_random_asesor_generaListaAsesor($temp[$i])));  
  123.     }
  124.      
  125.     for($x = 0; $x < count($options); $x++){
  126.        
  127.         $aux = $options[$x][$key];
  128.         if(array_key_exists($key, $options[$x])){
  129.             return $options[$x][$key];
  130.         }    
  131.     }
  132.    
  133.     return $options;
  134.  
  135. }
  136.  
  137.  
  138. function random_asesor_field_is_empty($item, $field) {
  139.     return FALSE;
  140. }
  141.  
  142. function random_asesor_field_formatter_info() {
  143.     return array(
  144.         'random_asesor' => array(
  145.             'label' => t('Fields values'),
  146.             'field types' => array('random_asesor'),
  147.         ),
  148.     );
  149. }
RAW Paste Data
Top