/** * Esta funcion hace un query consultando segun el modulo y la vista que se esta viendo * actualmente, la cantidad de pestañas, formularios, paneles y campos para luego * armar el formulario HTML. * * @param string * @return array */ public function cargar_formulario($valores = array()) { $module_config_path = empty(self::$module) ? "" : self::$module_path . self::$module . "/config/"; include $module_config_path . "/config.php"; $clause = array("v.id_modulo" => CRM_Controller::$id_modulo, "v.vista" => self::$modulo_vista, "uc.estado" => "activo", "p.estado" => "activo"); /** * Se realiza este querpara verificar sin errores * cuando se esta cargando una vista completa * o cuando se esta cargando una vista parcial */ $moduloINFO = self::$ci->db->select()->distinct()->from('modulos')->where("nombre", $config['modulo_config']['nombre'])->get()->result_array(); if (!empty($moduloINFO)) { $clause["v.id_modulo"] = $moduloINFO[0]["id"]; } $tabla_campos = $config['modulo_config']['prefijo'] == '' ? self::$controller . '_campos' : $config['modulo_config']['prefijo'] . '_' . self::$controller . '_campos'; //Destruir variable unset($config); self::$values_from_DB = array(); //Si $valores viene con data //inicializar variable global if (!empty($valores)) { self::$values_from_DB = $valores; } self::$modulo_campos = array(); //Query $fields = array("v.id_vista", "v.id_modulo", "v.vista", "p.id_pestana", "p.pestana", "f.id_formulario", "f.nombre_formulario", "pa.id_panel", "pa.panel", "pc.id_panel_campo", "pc.id_campo", "uc.nombre_campo", "uc.etiqueta", "uc.longitud", "tc.nombre AS tipo", "uc.estado", "uc.atributos", "uc.agrupador_campo", "uc.tabla_relacional", "uc.contenedor", "uc.requerido", "uc.link_url", "uc.fecha_cracion", "uc.posicion"); $results = self::$ci->db->select($fields)->from('mod_vistas v')->join('mod_pestanas p', 'p.id_vista = v.id_vista', 'LEFT OUTER')->join('mod_formularios f', 'f.id_pestana = p.id_pestana', 'LEFT OUTER')->join('mod_paneles pa', 'pa.id_formulario = f.id_formulario', 'LEFT OUTER')->join('mod_panel_campos pc', 'pc.id_panel=pa.id_panel', 'LEFT OUTER')->join($tabla_campos . " uc", "uc.id_campo = pc.id_campo", 'LEFT OUTER')->join('mod_tipo_campos tc', 'tc.id_tipo_campo = uc.id_tipo_campo', 'LEFT OUTER')->where($clause)->order_by('uc.posicion', 'ASC')->get()->result_array(); //echo self::$ci->db->last_query(); if (!empty($results)) { $i = 0; foreach ($results as $result) { if (!empty($result["contenedor"]) && $result["contenedor"] == "tabla-dinamica" || !empty($result["contenedor"]) && $result["contenedor"] == "tabla-dinamica-sumativa") { $existing_key = Util::array_search_key(self::$modulo_campos, $result["agrupador_campo"]); if (!empty(self::$modulo_campos[$existing_key])) { self::$modulo_campos[$existing_key][$result["agrupador_campo"]][] = $result; } else { self::$modulo_campos[$i]["tipo"] = $result["contenedor"]; self::$modulo_campos[$i][$result["agrupador_campo"]][] = $result; } } else { self::$modulo_campos[$i] = $result; } $i++; } } /*if(!empty($result)){ if($moduloINFO[0]["nombre"] == "Contactos") { echo "<pre>"; print_r($results); echo "</pre>"; } }*/ /*echo "<pre>"; print_r(self::$modulo_campos); echo "</pre>"; die();*/ echo self::armar_html(); }