Ejemplo n.º 1
0
 protected function cargar_jasper()
 {
     if (!defined("JAVA_HOSTS")) {
         define("JAVA_HOSTS", "127.0.0.1:8081");
     }
     //Incluimos la libreria JavaBridge
     require_once "3ros/JavaBridge/java/Java.inc";
     //Creamos una variable que va a contener todas las librerías java presentes
     $path_libs = toba_dir() . '/php/3ros/JasperReports';
     $classpath = '';
     try {
         $archivos = toba_manejador_archivos::get_archivos_directorio($path_libs, '|.*\\.jar$|', true);
         foreach ($archivos as $archivo) {
             $classpath .= "file:{$archivo};";
         }
     } catch (toba_error $et) {
         toba::logger()->error($et->getMessage());
         //No se encontro el directorio, asi que no agrega nada al path y sigue el comportamiento que tenia con opendir
     }
     try {
         //Añadimos las librerías
         java_require($classpath);
         //Creamos el objeto JasperReport que permite obtener el reporte
         $this->jasper = new JavaClass("net.sf.jasperreports.engine.JasperFillManager");
     } catch (JavaException $ex) {
         $trace = new Java("java.io.ByteArrayOutputStream");
         $ex->printStackTrace(new Java("java.io.PrintStream", $trace));
         print "java stack trace: {$trace}\n";
     } catch (java_ConnectException $e) {
         toba::logger()->error($e->getMessage());
         throw new toba_error_usuario('No es posible generar el reporte, el servlet Jasper no se encuentra corriendo');
     }
 }
Ejemplo n.º 2
0
 /**
  * Cambia los extends de las clases que extienden de las componentes de $de
  * a extends de las componentes de $a.
  * Combinaciones válidas:
  *	$de = toba		| $a = proyecto
  *	$de = toba		| $a = personalizacion
  *	$de = proyecto	| $a = personalizacion
  * @param toba_modelo_proyecto $proyecto
  * @param string $de valores posibles: toba | proyecto
  * @param string $a valores posibles: proyecto | personalizacion
  */
 static function revincular_componentes(toba_modelo_proyecto $proyecto, $de = 'toba', $a = 'proyecto')
 {
     if (!self::chequear_combinaciones($de, $a)) {
         throw new toba_error("No se puede revincular de {$de} a {$a}");
     }
     if ($de == 'toba' && $a == 'personalizacion') {
         self::revincular_componentes($proyecto, $de, 'proyecto');
         self::revincular_componentes($proyecto, 'proyecto', $a);
         return;
     }
     $id_proyecto = $proyecto->get_id();
     $clases_de = array();
     $clases_a = array();
     self::get_clases($proyecto, $de, $a, $clases_de, $clases_a);
     $editor = new toba_editor_archivos();
     foreach ($clases_de as $key => $clase) {
         $clase_nueva = $clases_a[$key];
         $texto_buscado = "|(?:[\t\r\n ]+extends[\t\r\n ]+{$clase})|i";
         $texto_reemplazo = " extends {$clase_nueva}";
         $editor->agregar_sustitucion($texto_buscado, $texto_reemplazo);
     }
     $path = $proyecto->get_dir() . '/php';
     $dirs_excluidos = array($path . '/extension_toba/componentes');
     $archivos = toba_manejador_archivos::get_archivos_directorio($path, '|.php|', true, $dirs_excluidos);
     $editor->procesar_archivos($archivos);
 }
Ejemplo n.º 3
0
 function conf__cuadro(toba_ei_cuadro $cuadro)
 {
     $path = toba::proyecto()->get_path() . '/exportaciones/jasper';
     $archivos = toba_manejador_archivos::get_archivos_directorio($path, '/.jasper$/', true);
     $datos = array();
     $i = 0;
     foreach ($archivos as $archivo) {
         $this->s__paths[$i] = $archivo;
         $datos[$i]['path'] = $i;
         $datos[$i]['reporte'] = ucwords(str_replace('_', ' ', basename($archivo, '.jasper')));
         $i++;
     }
     $cuadro->set_datos($datos);
 }
Ejemplo n.º 4
0
 static function generar_html_listado()
 {
     toba::memoria()->desactivar_reciclado();
     $src = toba::memoria()->get_parametro('imagen');
     $recursivo = toba::memoria()->get_parametro('recursivo');
     $origen = toba::memoria()->get_parametro('imagen_recurso_origen');
     $url = admin_util::url_imagen_de_origen('', $origen);
     $dir = admin_util::dir_imagen_de_origen('', $origen);
     echo "<div id='editor_imagen_opciones'>";
     echo "Filtro: <input id='editor_imagen_filtro' onkeyup='filtrar_imagenes(this.value)' type='text' /> ";
     $checkeado = $recursivo ? 'checked' : '';
     echo "<label><input type='checkbox'  onclick='recargar(this.checked ? 1 : 0)' {$checkeado} /> Recursivo</label>";
     echo '</div><hr />';
     echo "<div id='editor_imagen_listado'>";
     echo '<table>';
     $temp = toba_manejador_archivos::get_archivos_directorio($dir, '/(.)png|(.)gif|(.)jpg|(.)jpeg/', $recursivo);
     $archivos = array();
     foreach ($temp as $archivo) {
         if (strpos($archivo, '/tabs/') === false) {
             $archivos[] = $archivo;
         }
     }
     sort($archivos);
     $columnas = 3;
     $cant = 1;
     $total = count($archivos);
     foreach ($archivos as $archivo) {
         if ($cant % $columnas == 1) {
             echo '<tr>';
         }
         $relativo = substr($archivo, strlen($dir) + 1);
         $archivo = basename($relativo);
         echo "<td title='Seleccionar imagen' imagen='{$relativo}' onclick='seleccionar_imagen(this.getAttribute(\"imagen\"))'>\n\t\t\t\t\t<img nohack='1' src='" . $url . '/' . $relativo . "' />\n\t\t\t\t\t<div>{$archivo}</div>\n\t\t\t\t</td>\n";
         if ($cant % $columnas == 0) {
             echo "</tr>\n";
         }
         $cant++;
     }
     if ($cant % $columnas != 0) {
         echo "</tr>\n";
     }
     echo '</table></div>';
 }
Ejemplo n.º 5
0
 function conf__cuadro(toba_ei_cuadro $cuadro)
 {
     if (!isset($this->s__datos) || $this->filtrar) {
         $carpeta = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . '/php';
         $carpeta = toba_manejador_archivos::path_a_plataforma($carpeta);
         $extra = '';
         if (isset($this->s__filtro['nombre'])) {
             $extra = "{$this->s__filtro['nombre']}.*";
         }
         $archivos = toba_manejador_archivos::get_archivos_directorio($carpeta, "/{$extra}\\.php\$/", true);
         $modelo = toba_editor::get_modelo_proyecto();
         $estandar = $modelo->get_estandar_convenciones();
         $datos = array();
         foreach ($archivos as $archivo) {
             $path_relativo = substr($archivo, strlen($carpeta) + 1);
             $nombre = basename($archivo);
             if (strlen($nombre) > 30) {
                 $nombre = substr($nombre, 0, 30) . '...';
             }
             $info = array('archivo' => $nombre, 'path' => $path_relativo);
             if (isset($this->s__filtro['convenciones']) && $this->s__filtro['convenciones']) {
                 $errores = $estandar->validar(array($archivo));
                 $info['errores'] = $errores['totals']['errors'];
                 $info['warnings'] = $errores['totals']['warnings'];
             }
             $datos[] = $info;
         }
         $this->s__datos = rs_ordenar_por_columna($datos, 'archivo');
     }
     if (isset($this->s__filtro['convenciones']) && $this->s__filtro['convenciones']) {
         $columnas = array();
         $columnas[0]['clave'] = 'errores';
         $columnas[0]['titulo'] = toba_recurso::imagen_toba('error.gif', true);
         $columnas[0]['estilo'] = 'col-num-p1';
         $columnas[1]['clave'] = 'warnings';
         $columnas[1]['titulo'] = toba_recurso::imagen_toba('warning.gif', true);
         $columnas[1]['estilo'] = 'col-num-p1';
         $cuadro->agregar_columnas($columnas);
     }
     $cuadro->desactivar_modo_clave_segura();
     $cuadro->set_datos($this->s__datos);
 }
Ejemplo n.º 6
0
 /**
  * Extrae los attachments PDFs de un documento. Requiere tener instalado en el path el ejecutable 'pdftk'. Si falla lanza una excepcion toba_error
  * @param string $archivo_pdf Path completo al archivo PDF de entrada que contiene attachments 
  * @param string $patron Patrón a extraer (formato preg_match), se asumen todas 
  * @return array Paths completo a archivos extraidos. Es responsabilidad del que llama borrar la carpeta contenedora posterior a su uso
  */
 static function pdf_get_attachments($archivo_pdf, $patron = null)
 {
     $carpeta_temp = toba::proyecto()->get_path_temp() . '/' . md5(uniqid(time()));
     if (!file_exists($carpeta_temp)) {
         if (!mkdir($carpeta_temp)) {
             throw new toba_error("No fue posible extraer los XML del pdf", "Error al intentar crear carpeta temporal {$carpeta_temp} . Verifique permisos");
         }
     }
     $stdout = null;
     $stderr = null;
     $comando = "pdftk {$archivo_pdf} unpack_files output {$carpeta_temp}";
     if (toba_manejador_archivos::ejecutar($comando, $stdout, $stderr) !== 0) {
         throw new toba_error("No fue posible extraer los XML del pdf", "Error al ejecutar comando '{$comando}': {$stdout}\n" . $stderr);
     }
     $archivos = toba_manejador_archivos::get_archivos_directorio($carpeta_temp, $patron);
     if (empty($archivos)) {
         toba_manejador_archivos::eliminar_directorio($carpeta_temp);
     }
     return $archivos;
 }
Ejemplo n.º 7
0
 function proyecto__cambio_memoria_por_hilo()
 {
     $editor = new toba_editor_archivos();
     $editor->agregar_sustitucion('/toba::hilo/', 'toba::memoria');
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '/.php$/', true);
     $editor->procesar_archivos($archivos);
 }
Ejemplo n.º 8
0
 protected function convertir_codificacion_dir($destino, $desde = "UTF-8", $hasta = "ISO-8859-1")
 {
     //Se buscan los archivos .html del arbol de directorios
     $archivos = toba_manejador_archivos::get_archivos_directorio($destino, "/\\.html/", true);
     $cant = count($archivos);
     $this->consola->mensaje("Convirtiendo {$cant} archivos de codificacion {$desde} a {$hasta}:");
     foreach ($archivos as $archivo) {
         $this->convertir_codificacion($archivo, $desde, $hasta);
     }
     $this->consola->mensaje("Fin conversión");
 }
Ejemplo n.º 9
0
 /**
  * Retorna todas las migraciones disponibles desde la actual hasta la versión parametro
  *
  * @param toba_version $hasta
  * @param string $path_migraciones Path opcional de donde se ubican las migraciones (solo para tests)
  */
 function get_secuencia_migraciones($hasta, $path_migraciones = null)
 {
     if (!isset($path_migraciones)) {
         $dir = $this->path_migraciones();
     } else {
         $dir = $path_migraciones;
     }
     $exp = "/migracion_(.+)\\.php/";
     $archivos = toba_manejador_archivos::get_archivos_directorio($dir, $exp, false);
     $versiones = array();
     foreach ($archivos as $archivo) {
         $partes = array();
         preg_match($exp, $archivo, $partes);
         $numero = str_replace('_', '.', $partes[1]);
         $version = new toba_version($numero);
         if ($this->es_menor($version) && $hasta->es_mayor_igual($version)) {
             $versiones[] = $version;
         }
     }
     usort($versiones, array('toba_version', 'comparar_versiones'));
     return $versiones;
 }
Ejemplo n.º 10
0
 function instancia__migracion_variables_entorno()
 {
     //Busco los archivos ya sean PHP o de lotes
     $dir_base = toba_dir() . '/bin';
     $archivos_php = toba_manejador_archivos::get_archivos_directorio($dir_base, '|.php|', true);
     $archivos_sh = toba_manejador_archivos::get_archivos_directorio($dir_base, '|.sh|', true);
     $archivos_bat = toba_manejador_archivos::get_archivos_directorio($dir_base, '|.bat|', true);
     //Proceso los cambios de asignacion de variables
     $editor = new toba_editor_archivos();
     $editor->agregar_sustitucion('|\\stoba_instancia\\s*=|', ' TOBA_INSTANCIA=');
     $editor->agregar_sustitucion('|\\stoba_proyecto\\s*=|', ' TOBA_PROYECTO=');
     $editor->agregar_sustitucion('|\\stoba_dir\\s*=|', ' TOBA_DIR=');
     $editor->agregar_sustitucion('|\\$toba_dir|', '$TOBA_DIR');
     $editor->procesar_archivos($archivos_php);
     $editor->procesar_archivos($archivos_sh);
     $editor->procesar_archivos($archivos_bat);
     //Proceso las lecturas de variables en $_SERVER
     $editor2 = new toba_editor_archivos();
     $editor2->agregar_sustitucion('|$_SERVER[\'toba_proyecto\']|', '$_SERVER[\'TOBA_PROYECTO\']');
     $editor2->agregar_sustitucion('|$_SERVER[\'toba_instancia\']|', '$_SERVER[\'TOBA_INSTANCIA\']');
     $editor2->procesar_archivos($archivos_php);
 }
Ejemplo n.º 11
0
 function get_archivos_js_propios($patron_incl = null, $patron_excl = null)
 {
     $dir_js = toba_dir() . '/www/js';
     $archivos = array();
     if (!isset($patron_incl)) {
         //--- Algunos archivos se ponen por adelantado porque requieren un orden de inclusión
         $archivos[] = $dir_js . "/basicos/basico.js";
         $archivos[] = $dir_js . "/basicos/toba.js";
         $archivos[] = $dir_js . "/componentes/ei.js";
         $archivos[] = $dir_js . "/componentes/ei_formulario.js";
         $archivos[] = $dir_js . "/componentes/ei_formulario_ml.js";
         $archivos[] = $dir_js . "/efs/ef.js";
         $patron = '/.\\.js/';
     }
     $dirs = array($dir_js . '/basicos', $dir_js . '/componentes', $dir_js . '/efs');
     foreach ($dirs as $directorio) {
         $nuevos = toba_manejador_archivos::get_archivos_directorio($directorio, $patron_incl);
         $archivos = array_merge($archivos, $nuevos);
     }
     if (isset($patron_excl)) {
         $nuevos = array();
         foreach ($archivos as $archivo) {
             if (!preg_match($patron_excl, $archivo)) {
                 $nuevos[] = $archivo;
             }
         }
         $archivos = $nuevos;
     }
     $archivos = array_unique($archivos);
     return $archivos;
 }
Ejemplo n.º 12
0
 private function cargar_archivos_originales()
 {
     $this->archivos_originales = toba_manejador_archivos::get_archivos_directorio($this->dir, $this->patron_archivos, true);
 }
Ejemplo n.º 13
0
 function proyecto__namespace_toba()
 {
     $editor = new toba_editor_archivos();
     $editor->agregar_sustitucion('/separar_texto_lineas\\(/', 'toba_texto::separar_texto_lineas(');
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '/.php$/', true);
     $editor->procesar_archivos($archivos);
 }
Ejemplo n.º 14
0
 /**
  * Borra físicamente todos los archivos de log del proyecto actual
  */
 function borrar_archivos_logs()
 {
     $patron = "/sistema.log/";
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->directorio_logs(), $patron);
     foreach ($archivos as $archivo) {
         unlink($archivo);
     }
 }
Ejemplo n.º 15
0
 /**
  * Importa la información perteneciente a la instancia desde otra instalacion/instancia
  *
  */
 function importar_informacion_instancia($instancia_origen, $path_origen, $reemplazar_actuales)
 {
     if (!isset($path_origen)) {
         $path_origen = toba_dir();
     }
     $nombres_carp = array();
     try {
         $path = $path_origen . '/instalacion/' . self::dir_prefijo . $instancia_origen;
         if (!file_exists($path)) {
             throw new toba_error("No existe la carpeta {$path}");
         }
         $subdirs = toba_manejador_archivos::get_subdirectorios($path);
         $proyectos = $this->get_lista_proyectos_vinculados();
         foreach ($proyectos as $proy) {
             $nombres_carp[] = self::prefijo_dir_proyecto . $proy;
         }
         $this->get_db()->abrir_transaccion();
         $this->get_db()->retrazar_constraints();
         if ($reemplazar_actuales) {
             $this->eliminar_informacion_instancia();
         }
         //De la carpeta global unicamente obtengo los usuarios, no el resto de los archivos que pueden traer inconvenientes con las tablas apex_revision y apex_instancia.
         $archivo = $path . '/global/usuarios.sql';
         if (file_exists($archivo)) {
             $cant = $this->get_db()->ejecutar_archivo($archivo);
             toba_logger::instancia()->debug($archivo . ". ({$cant})");
             $this->manejador_interface->progreso_avanzar();
         }
         //Sigo con los directorios de los proyectos
         foreach ($nombres_carp as $carp) {
             $dir = $path . "/" . $carp;
             if (file_exists($dir)) {
                 $archivos = toba_manejador_archivos::get_archivos_directorio($dir, '|.*\\.sql|');
                 foreach ($archivos as $archivo) {
                     if (stripos($archivo, 'logs_') === FALSE) {
                         //Evito los archivos de logs, van en un schema aparte.
                         $cant = $this->get_db()->ejecutar_archivo($archivo);
                         toba_logger::instancia()->debug($archivo . ". ({$cant})");
                         $this->manejador_interface->progreso_avanzar();
                     }
                 }
             }
         }
         $this->manejador_interface->progreso_avanzar();
         $this->get_db()->cerrar_transaccion();
         $this->manejador_interface->progreso_fin();
     } catch (toba_error_db $error) {
         $this->get_db()->abortar_transaccion();
         throw $error;
     }
 }
Ejemplo n.º 16
0
 protected function obtener_archivos($path, $excluidos = array())
 {
     $excluidos = $this->preparar_excluidos($path, $excluidos);
     $archivos = toba_manejador_archivos::get_archivos_directorio($path, '/.*\\.php$/', true, $excluidos);
     sort($archivos, SORT_STRING);
     return $archivos;
 }
Ejemplo n.º 17
0
 /**
  * Se cambia:
  *	evt__limpieza_memoria por limpiar_memoria
  */
 function proyecto__cambio_api_cn()
 {
     $editor = new toba_editor_archivos();
     $editor->agregar_sustitucion("|evt__limpieza_memoria|", "limpiar_memoria");
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '|.php|', true);
     $editor->procesar_archivos($archivos);
 }
Ejemplo n.º 18
0
 /**
  *	Compilacion de GRUPOS de ACCESO
  */
 function compilar_metadatos_generales_grupos_acceso($limpiar_existentes = false)
 {
     toba_proyecto_db::set_db($this->db);
     if ($limpiar_existentes) {
         $archivos = toba_manejador_archivos::get_archivos_directorio($this->get_dir_generales_compilados(), '/toba_mc_gene__grupo/');
         foreach ($archivos as $archivo) {
             unlink($archivo);
         }
     }
     $this->manejador_interface->mensaje('Perfiles funcionales', false);
     foreach ($this->get_indice_grupos_acceso() as $grupo_acceso) {
         $nombre_clase = 'toba_mc_gene__grupo_' . $grupo_acceso;
         $archivo = $this->get_dir_generales_compilados() . '/' . $nombre_clase . '.php';
         $clase = new toba_clase_datos($nombre_clase);
         //-- Menu -------------------------------
         $datos = toba_proyecto_db::get_items_menu($this->get_id(), array($grupo_acceso));
         $temp = array();
         foreach ($datos as $dato) {
             $temp[$dato['proyecto'] . '-' . $dato['item']] = $dato;
         }
         $clase->agregar_metodo_datos('get_items_menu', $temp);
         //-- Control acceso ---------------------
         $datos = toba_proyecto_db::get_items_accesibles($this->get_id(), array($grupo_acceso));
         $temp = array();
         foreach ($datos as $dato) {
             $temp[$dato['proyecto'] . '-' . $dato['item']] = $dato;
         }
         $clase->agregar_metodo_datos('get_items_accesibles', $temp);
         //-- Permisos ---------------------------
         $datos = toba_proyecto_db::get_lista_permisos($this->get_id(), array($grupo_acceso));
         $temp = array();
         foreach ($datos as $dato) {
             $temp[$dato['nombre'] . '-'] = $dato;
             //Se concatena un string porque asi el merge unifica si o si aunque el nombre sea un numero
         }
         $clase->agregar_metodo_datos('get_lista_permisos', $temp);
         //-- Acceso items zonas -----------------
         foreach ($this->get_indice_zonas() as $zona) {
             $datos = toba_proyecto_db::get_items_zona($this->get_id(), array($grupo_acceso), $zona);
             $temp = array();
             foreach ($datos as $dato) {
                 $temp[$dato['item_proyecto'] . '-' . $dato['item']] = $dato;
             }
             $clase->agregar_metodo_datos('get_items_zona__' . $zona, $temp);
         }
         //-- Membresía -------------------
         $miembros = toba_proyecto_db::get_perfiles_funcionales_asociados($this->get_id(), $grupo_acceso);
         $clase->agregar_metodo_datos('get_membresia', $miembros);
         //Guardo el archivo
         $clase->guardar($archivo);
         $this->manejador_interface->progreso_avanzar();
     }
     //-- Agrego los items publicos en un archivo aparte, para que el usuario no autentificado pueda navegarlos
     $nombre_clase = 'toba_mc_gene__items_publicos';
     $archivo = $this->get_dir_generales_compilados() . '/' . $nombre_clase . '.php';
     $clase = new toba_clase_datos($nombre_clase);
     $datos = toba_proyecto_db::get_items_accesibles($this->get_id(), array());
     $temp = array();
     foreach ($datos as $dato) {
         $temp[$dato['proyecto'] . '-' . $dato['item']] = $dato;
     }
     $clase->agregar_metodo_datos('get_items_accesibles', $temp);
     $clase->guardar($archivo);
     $this->manejador_interface->progreso_avanzar();
     $this->manejador_interface->progreso_fin();
 }
Ejemplo n.º 19
0
 /**
  * El ei_filtro pasa a ser un formulario con un par de campos seteados
  */
 function proyecto__migrar_filtro_viejo()
 {
     //-- Todos los actuales filtros, se les pone un par de flags en el form.
     $sql = "\n\t\t\tUPDATE apex_objeto_ut_formulario SET no_imprimir_efs_sin_estado = 1, resaltar_efs_con_estado = 1\n\t\t\tFROM  apex_objeto\n\t\t\tWHERE \n\t\t\t\t\tapex_objeto_ut_formulario.objeto_ut_formulario\t\t\t= apex_objeto.objeto\n\t\t\t\tAND apex_objeto_ut_formulario.objeto_ut_formulario_proyecto = apex_objeto.proyecto\n\t\t\t\tAND apex_objeto.clase='toba_ei_filtro' \n\t\t\t\tAND apex_objeto_ut_formulario.objeto_ut_formulario_proyecto = '{$this->elemento->get_id()}'\n\t\t";
     $cant = $this->elemento->get_db()->ejecutar($sql);
     //-- Se cambia la clase
     $sql = "UPDATE apex_objeto SET clase='toba_ei_formulario' WHERE clase='toba_ei_filtro' AND proyecto = '{$this->elemento->get_id()}'";
     $cant += $this->elemento->get_db()->ejecutar($sql);
     //-- Se cambian las extensiones de código y los hint de tipos
     $editor = new toba_editor_archivos();
     $editor->agregar_sustitucion("|toba_ei_filtro|", "toba_ei_formulario");
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '|.php|', true);
     $editor->procesar_archivos($archivos);
     return $cant;
 }