'fieldset', '#title' => t('Coordinador de Ambito y Supervisor de Organismo Publicos'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); //rol enlace nivel 1 $form['coordinador_ambito_user']['ActorPlanificadorcoordinador1_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Enlace Revisor de Ambito'), '#default_value' => variable_get('ActorPlanificadorcoordinador1_text', t('Ente tipo 1 (Enlace Revisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser coordinador de ambito'), '#required' => TRUE, ); $form['coordinador_ambito_user']['ActorPlanificadorcoordinador1'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Enlace Revisor de Ambito'), '#default_value' => variable_get('ActorPlanificadorcoordinador1', 0), '#options' => $roles, ); //rol formulador nivel 1 $form['coordinador_ambito_user']['ActorPlanificadorcoordinador2_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Supervisor de Ambito'), '#default_value' => variable_get('ActorPlanificadorcoordinador2_text', t('Ente tipo 1 (Supervisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser coordinador de ambito'), '#required' => TRUE, '#prefix' => '
', ); $form['coordinador_ambito_user']['ActorPlanificadorcoordinador2'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Supervisor de Ambito'), '#default_value' => variable_get('ActorPlanificadorcoordinador2', 0), '#options' => $roles, ); //rol enlace nivel 2 $form['coordinador_ambito_user']['ActorPlanificadorevisor2_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Enlace Revisor de segundo nivel'), '#default_value' => variable_get('ActorPlanificadorevisor2_text', t('Ente tipo 2 (Enlace Revisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser revisor del segundo nivel'), '#required' => TRUE, '#prefix' => '
', ); $form['coordinador_ambito_user']['ActorPlanificadorevisor2'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Enlace Revisor del nivel 2'), '#default_value' => variable_get('ActorPlanificadorevisor2', 0), '#options' => $roles, ); //rol supervisor segundo nivel $form['coordinador_ambito_user']['ActorPlanificadorsupervisor2_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Supervisor de Organismos Publicos'), '#default_value' => variable_get('ActorPlanificadorsupervisor2_text', t('Ente tipo 2 (Supervisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser Supervisor de los Organismo Públicos.'), '#required' => TRUE, '#prefix' => '
', ); $form['coordinador_ambito_user']['ActorPlanificadorsupervisor2'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Supervisor de Organismo Públicos'), '#default_value' => variable_get('ActorPlanificadorsupervisor2', 0), '#options' => $roles, ); //rol supervisor tercer nivel $form['coordinador_ambito_user']['ActorPlanificadorsupervisor3_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Supervisor de los Entes adscritos'), '#default_value' => variable_get('ActorPlanificadorsupervisor3_text', t('Ente tipo 3 (Supervisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser Supervisor de los Entes Adscritos.'), '#required' => TRUE, '#prefix' => '
', ); $form['coordinador_ambito_user']['ActorPlanificadorsupervisor3'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Supervisor de los Entes Adscritos'), '#default_value' => variable_get('ActorPlanificadorsupervisor3', 0), '#options' => $roles, ); //revisor Tercer nivel $form['coordinador_ambito_user']['ActorPlanificadorevisor3'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Enlace Revisor del nivel 3'), '#default_value' => variable_get('ActorPlanificadorevisor3', 0), '#options' => $roles, ); //rol supervisor cuarto nivel $form['coordinador_ambito_user']['ActorPlanificadorsupervisor4_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Supervisor de los Entes adscritos a Otros Entes'), '#default_value' => variable_get('ActorPlanificadorsupervisor4_text', t('Ente tipo 4 (Supervisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser Supervisor de los Sub-Entes Adscritos.'), '#required' => TRUE, '#prefix' => '
', ); $form['coordinador_ambito_user']['ActorPlanificadorsupervisor4'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Supervisor de los Sub-Entes Adscritos'), '#default_value' => variable_get('ActorPlanificadorsupervisor4', 0), '#options' => $roles, ); //revisor segundo nivel $form['coordinador_ambito_user']['ActorPlanificadorevisor4'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Enlace Revisor del nivel 4'), '#default_value' => variable_get('ActorPlanificadorevisor4', 0), '#options' => $roles, ); //rol supervisor quinto nivel $form['coordinador_ambito_user']['ActorPlanificadorsupervisor5_text'] = array( '#type' => 'textfield', '#title' => t('Nombre del tipo de Rol para el Actor Supervisor de los Entes adscritos a Otros Entes'), '#default_value' => variable_get('ActorPlanificadorsupervisor5_text', t('Ente tipo 5 (Supervisor)')), '#size' => 60, '#maxlength' => 244, '#description' => t('Introduzca el nombre del tipo de rol que ha de tener el usuario para ser Supervisor de los Sub-Entes Adscritos.'), '#required' => TRUE, '#prefix' => '
', ); $form['coordinador_ambito_user']['ActorPlanificadorsupervisor5'] = array( '#type' => 'select', '#title' => t('Rol para el Actor Supervisor de los Sub-Entes Adscritos'), '#default_value' => variable_get('ActorPlanificadorsupervisor5', 0), '#options' => $roles, ); $form['buttons']['#weight'] = 10; } if (($form_id == 'user_register') || ($form_id == 'user_profile_form' && arg(2) != 'chgpwd' && user_access('administer users'))) { $ente_planificador = FALSE; //get ente planificador if (arg(4) && is_numeric(arg(4))) { $ente_planificador = node_load(arg(4)); } if (isset($form['_account']['#value']->entes) && count($form['_account']['#value']->entes)) { $ente_planificador = node_load($form['_account']['#value']->entes); } //ambito $tid = variable_get('ente_planificador_sector_Ambitos', 0); $terms = taxonomy_get_tree($tid); foreach ($terms as $term) { if ($term->depth == 0) { //si el termino es padre $ambito[$term->tid] = $term->name; } if ($term->depth == 1) { $organismo[$term->tid] = $term->name; } if ($term->depth == 2) { $ente_adscrito[$term->tid] = $term->name; } if ($term->depth == 3) { $sub_ente[$term->tid] = $term->name; } } $roles = user_roles(); if ($ente_planificador && ($ente_planificador->tipo == 1)) { // ente nivel 1 $coordinador1 = variable_get('ActorPlanificadorcoordinador1', 0); $coordinador2 = variable_get('ActorPlanificadorcoordinador2', 0); $count_coordinador1 = ente_planificador_sipp_mcti_count_user_by_role($coordinador1, $ente_planificador->nid); $count_coordinador2 = ente_planificador_sipp_mcti_count_user_by_role($coordinador2, $ente_planificador->nid); $text[$coordinador1] = variable_get('ActorPlanificadorcoordinador1_text',''); $text[$coordinador2] = variable_get('ActorPlanificadorcoordinador2_text',''); if ($coordinador1 && isset($roles[$coordinador1])) { $form['account']['roles']['#options'][$coordinador1] = $text[$coordinador1]; } if ($coordinador2 && isset($roles[$coordinador2])) { $form['account']['roles']['#options'][$coordinador2] = $text[$coordinador2]; } //solo se permite enlaces formuladores por el numero de ambitos existentes. if ($count_coordinador1 > count($ambito)) { unset($form['account']['roles']['#options'][$coordinador1]); } //solo se permite enlaces revisores por el numero de ambitos existentes. if ($count_coordinador2 > count($ambito)) { unset($form['account']['roles']['#options'][$coordinador2]); } global $user; $ambito[0] = t("Seleccione"); $ambito_user = db_result(db_query("SELECT ambito FROM {ente_user_planificador} WHERE usuario = %d", $user->uid)); $form['account']['roles']['#prefix'] = '
'; $form['account']['roles']['#suffix'] = '
'; $ambito[0] = t("Seleccione"); $form['usuario_planificacion']['ambito_user'] = array( '#title' => t('Ambito del Usuario'), '#type' =>'select', '#default_value' => $ambito_user, '#options' => $ambito, '#prefix' => '
', '#suffix' => '
', '#weight' => 3, ); } if ($ente_planificador && ($ente_planificador->tipo == 2)) { //solo se permite un supervisor por cada organismo $supervisor2 = variable_get('ActorPlanificadorsupervisor2', 0); $text[$supervisor2] = variable_get('ActorPlanificadorsupervisor2_text',''); $count_supervisor2 = ente_planificador_sipp_mcti_count_user_by_role($supervisor2, $ente_planificador->nid); if ($supervisor2 && isset($roles[$supervisor2])) { $form['account']['roles']['#options'][$supervisor2] = $text[$supervisor2]; } if ($count_supervisor2 > count($organismo)) { unset($form['account']['roles']['#options'][$supervisor2]); } } if ($ente_planificador && ($ente_planificador->tipo == 3)) { //solo se permite un supervisor por cada ente adscrito a un organismo $supervisor3 = variable_get('ActorPlanificadorsupervisor3', 0); $text[$supervisor3] = variable_get('ActorPlanificadorsupervisor3_text',''); $count_supervisor3 = ente_planificador_sipp_mcti_count_user_by_role($supervisor3, $ente_planificador->nid); if ($supervisor3 && isset($roles[$supervisor3])) { $form['account']['roles']['#options'][$supervisor3] = $text[$supervisor3]; } if ($count_supervisor3 > count($ente_adscrito)) { unset($form['account']['roles']['#options'][$supervisor3]); } } if ($ente_planificador && ($ente_planificador->tipo == 4)) { //solo se permite un supervisor por cada sub-ente adscrito $supervisor4 = variable_get('ActorPlanificadorsupervisor4', 0); $text[$supervisor4] = variable_get('ActorPlanificadorsupervisor4_text',''); $count_supervisor4 = ente_planificador_sipp_mcti_count_user_by_role($supervisor4, $ente_planificador->nid); if ($supervisor4 && isset($roles[$supervisor4])) { $form['account']['roles']['#options'][$supervisor4] = $text[$supervisor4]; } if ($count_supervisor4 > count($sub_ente)) { unset($form['account']['roles']['#options'][$supervisor4]); } } $path_module = drupal_get_path('module', 'ente_planificador_sipp_mcti'); drupal_add_js($path_module . '/js/ente_planificador_sipp_mcti.js'); $usuarios['roles_user'] = array($coordinador1, $coordinador2); drupal_add_js($usuarios, 'setting'); } } /** * Obtiene el numero de usuarios que poseen un determinado rol */ function ente_planificador_sipp_mcti_count_user_by_role($rol, $ente) { $result = 0; if ($rol && $ente){ $result = db_result(db_query("SELECT count(n.usuario) FROM {users_roles} as u INNER JOIN {ente_user_planificador} as n ON n.usuario = u.uid INNER JOIN {ente_planificador} as e ON e.nid = n.nid where u.rid = %d AND e.nid = %d", $rol, $ente)); } return $result; } /* * hook_user * Verificando que se inserte el Rol seleccionado en el Registro del usuario * Si el Rol es Enlace se elimina el Rol Supervisor(Micro) que viene por * defecto del modulo ente_planificador en la función: ente_planificador_user */ function ente_planificador_sipp_mcti_user($op, &$edit, &$user, $category = NULL) { switch ($op) { case 'update': if (isset($edit['ambito_user'])) { db_query("UPDATE {ente_user_planificador} SET ambito = %d WHERE usuario = %d", $edit['ambito_user'], $user->uid); } break; case 'insert': if (isset($edit['ambito_user'])) { db_query("UPDATE {ente_user_planificador} SET ambito = %d WHERE usuario = %d", $edit['ambito_user'], $user->uid); } if(array_key_exists('entes', $edit) && $edit['entes']) { $roles = user_roles(); $ente_planificador = node_load($edit['entes']); $rolenlace = variable_get('ActorPlanificadorEnlace', 2); $rolsupervisor = variable_get('ActorPlanificadorMicro', 2); //Si se han creado los roles if(isset($roles[$rolenlace]) && isset($roles[$rolsupervisor])){ if ($ente_planificador->tipo) { if($ente_planificador->tipo && $ente_planificador->tipo == 2) { $edit['roles'][2] = $roles[2]; // Si se selecciona el rol Enlace if(isset($edit['roles'][$rolenlace])){ //Elimina el rol supervisor unset($edit['roles'][$rolsupervisor]); } /* if(isset($edit['roles'][$rolsupervisor])){ unset($edit['roles'][$rolenlace]); */ } } } } break; } }