Пример #1
0
 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???
 }
Пример #3
0
 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();
     }
 }
Пример #4
0
 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();
     }
 }
Пример #5
0
 /**
  * @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");
     }
 }
Пример #6
0
 protected function get_arbol_completo()
 {
     return $this->get_arbol(toba_info_editores::get_item_raiz($this->proyecto));
 }