function cargar($opciones, $id_item_inicial = null, $incluidos_forzados = array()) { if (!isset($id_item_inicial)) { $id_item_inicial = toba_info_editores::get_item_raiz($this->proyecto); } $en_profundidad = $this->debe_cargar_en_profundidad($id_item_inicial, $opciones); $filtro_items = ""; if (!$this->debe_cargar_todo($opciones) || $en_profundidad) { //--- Se dejan solo los items del primer nivel, excepto que este en las excepciones if (isset($id_item_inicial)) { $id_item_sano = toba_contexto_info::get_db()->quote($id_item_inicial); $filtro_padre = "(i.padre = {$id_item_sano} OR i.item= {$id_item_sano})"; //OR i.padre IN (SELECT item FROM apex_item WHERE padre='$id_item_inicial'))"; } if (!empty($incluidos_forzados) && !$en_profundidad) { $forzados = implode("', '", $incluidos_forzados); $filtro_incluidos = "( i.padre IN ('" . $forzados . "')"; $filtro_incluidos .= " OR i.item IN ('" . $forzados . "') )"; } if (isset($filtro_padre) && isset($filtro_incluidos)) { $filtro_items = "\tAND ({$filtro_padre} \n\t\t\t\t\t\t\t\t\t\tOR \n\t\t\t\t\t\t\t\t\t{$filtro_incluidos})\n\t\t\t\t\t"; } elseif (isset($filtro_padre)) { $filtro_items = "\tAND {$filtro_padre} "; } elseif (isset($filtro_incluidos)) { $filtro_items = "\tAND {$filtro_incluidos} "; } } if (isset($opciones['solo_carpetas']) && $opciones['solo_carpetas'] == 1) { $filtro_items .= "\tAND i.carpeta = 1"; } //-- Se utiliza como sql básica aquella que brinda la definición de un componente toba_item_def::set_db(toba_contexto_info::get_db()); $sql_base = toba_item_def::get_vista_extendida($this->proyecto); $sql = sql_concatenar_where($sql_base['basica']['sql'], array(" (i.solicitud_tipo IS NULL OR i.solicitud_tipo <> 'fantasma')" . $filtro_items)); $sql = sql_agregar_ordenamiento($sql, array(array('i.carpeta', 'asc'), array('i.orden', 'asc'), array('i.nombre', 'asc'))); $rs = toba_contexto_info::get_db()->consultar($sql); $this->items = array(); if (!empty($rs)) { foreach ($rs as $fila) { $id = array(); $id['componente'] = $fila['item']; $id['proyecto'] = $fila['item_proyecto']; $datos = array('basica' => $fila); if ($en_profundidad) { $info = toba_constructor::get_info($id, 'toba_item', true, null, true, true); } else { $info = toba_constructor::get_info($id, 'toba_item', false, $datos); } $this->items[$fila['item']] = $info; } $this->carpeta_inicial = $id_item_inicial; $this->mensaje = ""; $this->ordenar(); $this->filtrar($opciones); } }
function cargar($opciones, $id_item_inicial = null, $incluidos_forzados = array()) { $nodos = array(); $items = $this->get_lista_items(); foreach ($items as $item) { if ($item['carpeta']) { $obj = new toba_rf_carpeta($this->restriccion, $item['proyecto'], $item['item'], $item['padre']); } else { $obj = new toba_rf_item($this->restriccion, $item['proyecto'], $item['item'], $item['padre'], $this->expande_dependencias_sueltas); } $this->items[$item['item']] = $obj; } $this->carpeta_inicial = 'item_' . toba_info_editores::get_item_raiz($this->proyecto); $this->mensaje = ""; $this->ordenar(); //filtrar??? }
function cargar_todo($opciones = array()) { $this->carpeta_inicial = toba_info_editores::get_item_raiz($this->proyecto); $grupo = ''; $proyecto = toba_contexto_info::get_db()->quote($this->proyecto); $sql = "\tSELECT \ti.item as item,\n\t\t\t\t\t\t\ti.proyecto as proyecto,\n\t\t\t\t\t\t\ti.imagen_recurso_origen,\n\t\t\t\t\t\t\ti.imagen,\n\t\t\t\t\t\t\tnombre,\n\t\t\t\t\t\t\tcarpeta,\n\t\t\t\t\t\t\tpadre,\n\t\t\t\t\t\t\tdescripcion,\n\t\t\t\t\t\t\tia.usuario_grupo_acc as acceso\n\t\t\t\t\tFROM apex_item i\n\t\t\t\t\t\tLEFT OUTER JOIN apex_usuario_grupo_acc_item ia\n\t\t\t\t\t\t\tON i.item = ia.item AND i.proyecto = ia.proyecto\n\t\t\t\t\tWHERE \t\n\t\t\t\t\t\t\ti.proyecto = {$proyecto}\n\t\t\t\t\t\tAND\ti.menu = 1\n\t\t\t\t\t\tAND\t(publico IS NULL OR publico = 0)\n\t\t\t\t\t\tOR i.item =" . quote($this->carpeta_inicial) . "\n\t\t\t\t\tORDER BY i.carpeta, i.orden, i.nombre"; toba::logger()->debug($sql); $rs = toba_contexto_info::get_db()->consultar($sql); $this->items = array(); if (!empty($rs)) { foreach ($rs as $fila) { if ($fila['carpeta']) { $obj = new toba_carpeta_menu($fila['nombre'], null, $fila['item'], $fila['padre']); } else { $obj = new toba_item_menu($fila['nombre'], null, $fila['item'], $fila['padre']); } $this->items[$fila['item']] = $obj; } $this->carpeta_inicial = toba_info_editores::get_item_raiz($this->proyecto); $this->mensaje = ""; $this->ordenar(); } }
function cargar($opciones, $id_item_inicial = null, $incluidos_forzados = array()) { $grupo = toba_contexto_info::get_db()->quote($this->grupo_acceso); $proyecto = toba_contexto_info::get_db()->quote($this->proyecto); $sql = "\tSELECT \ti.item as item,\n\t\t\t\t\t\t\ti.proyecto as proyecto,\n\t\t\t\t\t\t\ti.imagen_recurso_origen,\n\t\t\t\t\t\t\ti.imagen,\n\t\t\t\t\t\t\tnombre,\n\t\t\t\t\t\t\tcarpeta,\n\t\t\t\t\t\t\tpadre,\n\t\t\t\t\t\t\tdescripcion,\n\t\t\t\t\t\t\tia.usuario_grupo_acc as acceso\n\t\t\t\t\tFROM apex_item i\n\t\t\t\t\t\tLEFT OUTER JOIN apex_usuario_grupo_acc_item ia\n\t\t\t\t\t\t\tON i.item = ia.item AND i.proyecto = ia.proyecto\n\t\t\t\t\t\t\tAND ia.usuario_grupo_acc = {$grupo}\n\t\t\t\t\tWHERE \t\n\t\t\t\t\t\t\ti.proyecto = {$proyecto}\n\t\t\t\t\t\tAND\t(publico IS NULL OR publico = 0)\t\t\t\t\n\t\t\t\t\tORDER BY i.carpeta, i.orden, i.nombre"; $rs = toba_contexto_info::get_db()->consultar($sql); $this->items = array(); if (!empty($rs)) { foreach ($rs as $fila) { if ($fila['carpeta']) { $obj = new toba_carpeta_perfil($fila, $this->grupo_acceso); } else { $obj = new toba_item_perfil($fila, $this->grupo_acceso); } $this->items[$fila['item']] = $obj; } $this->carpeta_inicial = toba_info_editores::get_item_raiz($this->proyecto); $this->mensaje = ""; $this->ordenar(); /* Deberia mostrar nodos abiertos para aquellas carpetas en las que se aplica una restriccion*/ //$this->filtrar(); } }
/** * @todo Cuando los toba_info_editores se puedan usar desde consola, cambiar la consulta manual */ function actualizar_login($pisar_anterior = false) { //--- ¿Existe el proyecto editor? if (!$this->instancia->existen_metadatos_proyecto(toba_editor::get_id())) { $msg = "No se crea la operación de login porque el proyecto editor no está cargado en la instancia"; toba_logger::instancia()->info($msg); $this->manejador_interface->error($msg); return; } // Contextualizo al nucleo en el proyecto "toba_editor" toba_nucleo::instancia()->iniciar_contexto_desde_consola($this->instancia->get_id(), toba_editor::get_id()); //--- Averiguo la fuente destino $sql = "SELECT fuente_datos, pm_contexto FROM apex_proyecto WHERE proyecto = " . quote($this->identificador); $defecto = toba::db()->consultar_fila($sql); if (empty($defecto['fuente_datos'])) { throw new toba_error("El proyecto no tiene definida una fuente de datos."); } if (empty($defecto['pm_contexto'])) { throw new toba_error("El proyecto no tiene definida un punto de montaje para el contexto."); } //--- Clonando $id = array('proyecto' => toba_editor::get_id(), 'componente' => 1000042); $info_item = toba_constructor::get_info($id, 'toba_item'); $nuevos_datos = array(); $nuevos_datos['proyecto'] = $this->identificador; $nuevos_datos['padre_proyecto'] = $this->identificador; $nuevos_datos['padre'] = toba_info_editores::get_item_raiz($this->identificador); $nuevos_datos['fuente_datos'] = $defecto['fuente_datos']; $nuevos_datos['fuente_datos_proyecto'] = $this->identificador; $nuevos_datos['punto_montaje'] = $defecto['pm_contexto']; $directorio = 'login'; $clave = $info_item->clonar($nuevos_datos, $directorio); $this->manejador_interface->progreso_fin(); //--- Actualizar el item de login $this->manejador_interface->mensaje("Actualizando el proyecto...", false); $sql = "UPDATE apex_proyecto SET item_pre_sesion='{$clave['componente']}'\n\t\t\t\tWHERE proyecto='{$this->identificador}'"; $this->get_db()->ejecutar($sql); $this->manejador_interface->progreso_fin(); //--- Borrar el item viejo if ($pisar_anterior) { $this->manejador_interface->mensaje("Aun no está implementada la eliminación desde consola"); } }
protected function get_arbol_completo() { return $this->get_arbol(toba_info_editores::get_item_raiz($this->proyecto)); }