Example #1
0
 /**
  * Para el tipo de gráfico 'otro' hay que especificar todo lo referente a
  * jpgraph. Desde la inclusión de los archivos necesarios hasta la instanciación
  * de todas las componentes que esta necesita para generar un gráfico.
  * Lo único que hay que hacer es 'avisarle' al gráfico de toba cuál es el
  * canvas que se tiene que dibujar. Todo el resto es legal y bonito
  *
  * @param toba_ei_grafico $grafico
  */
 function conf__grafico(toba_ei_grafico $grafico)
 {
     require_once toba_dir() . '/php/3ros/jpgraph/jpgraph.php';
     require_once toba_dir() . '/php/3ros/jpgraph/jpgraph_contour.php';
     $data = array(array(0.5, 1.1, 1.5, 1, 2.0, 3, 3, 2, 1, 0.1), array(1.0, 1.5, 3.0, 5, 6.0, 2, 1, 1.2, 1, 4), array(0.9, 2.0, 2.1, 3, 6.0, 7, 3, 2, 1, 1.4), array(1.0, 1.5, 3.0, 4, 6.0, 5, 2, 1.5, 1, 2), array(0.8, 2.0, 3.0, 3, 4.0, 4, 3, 2.4, 2, 3), array(0.6, 1.1, 1.5, 1, 4.0, 3.5, 3, 2, 3, 4), array(9.0, 1.5, 3.0, 5, 6.0, 2, 1, 1.2, 2.7, 4), array(9.800000000000001, 9.0, 3.0, 3, 5.5, 6, 3, 2, 1, 1.4), array(9.0, 1.5, 3.0, 4, 6.0, 5, 2, 1, 0.5, 0.2));
     // Setup a basic graph context with some generous margins to be able
     // to fit the legend
     $canvas = new Graph(650, 300);
     $canvas->SetMargin(40, 140, 60, 40);
     $canvas->title->Set('Uso avanzado de la librería');
     $canvas->title->SetFont(FF_ARIAL, FS_BOLD, 14);
     // For contour plots it is custom to use a box style ofr the axis
     $canvas->legend->SetPos(0.05, 0.5, 'right', 'center');
     $canvas->SetScale('intint');
     $canvas->SetAxisStyle(AXSTYLE_BOXOUT);
     $canvas->xgrid->Show();
     $canvas->ygrid->Show();
     // A simple contour plot with default arguments (e.g. 10 isobar lines)
     $cp = new ContourPlot($data);
     // Display the legend
     $cp->ShowLegend();
     // Make the isobar lines slightly thicker
     $cp->SetLineWeight(2);
     $canvas->Add($cp);
     // Con esta llamada informamos al gráfico cuál es el gráfico que se tiene
     // que dibujar
     $grafico->conf()->canvas__set($canvas);
 }
 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');
     }
 }
Example #3
0
 function show()
 {
     $this->comp['edit_archivo']->set_title('Seleccione un archivo SQL a ejecutar');
     $this->comp['edit_archivo']->set_current_folder(toba_dir());
     $this->comp['dlg_ejecutar_sql']->run();
     return $this->datos;
 }
 function conf__grafico(toba_ei_grafico $grafico)
 {
     if (isset($this->datos)) {
         $datos = array();
         $leyendas = array();
         foreach ($this->datos as $value) {
             $datos[] = $value['resultado'];
             $leyendas[] = $value['codc_uacad'];
         }
     }
     require_once toba_dir() . '/php/3ros/jpgraph/jpgraph.php';
     require_once toba_dir() . '/php/3ros/jpgraph/jpgraph_bar.php';
     // Setup a basic graph context with some generous margins to be able
     // to fit the legend
     $canvas = new Graph(900, 300);
     $canvas->SetMargin(100, 140, 60, 40);
     $canvas->title->Set('Cr�dito Disponible');
     //$canvas->title->SetFont(FF_ARIAL,FS_BOLD,14);
     // For contour plots it is custom to use a box style ofr the axis
     $canvas->legend->SetPos(0.05, 0.5, 'right', 'center');
     $canvas->SetScale('intint');
     //$canvas->SetAxisStyle(AXSTYLE_BOXOUT);
     //$canvas->xgrid->Show();
     $canvas->ygrid->Show();
     $canvas->xaxis->SetTickLabels($leyendas);
     // A simple contour plot with default arguments (e.g. 10 isobar lines)
     $cp = new BarPlot($datos);
     $cp->SetColor("#B0C4DE");
     $cp->SetFillColor("#B0C4DE");
     $cp->SetLegend("Resultado");
     $canvas->Add($cp);
     // Con esta llamada informamos al gr�fico cu�l es el gr�fico que se tiene
     // que dibujar
     $grafico->conf()->canvas__set($canvas);
 }
 /**
  * Este método existe debido a que la definición de la constante TTF_DIR debe
  * ser hecha antes de incluir la librería jpgraph. Por tanto todas las clases
  * que extiendan de esta deben redefinir este método con una llamada
  * parent::set_up_jpgraph() y luego incluir las líbrerías utilizadas en esa
  * clase específica
  */
 protected function set_up_jpgraph()
 {
     if (!defined("TTF_DIR")) {
         $path = toba::instalacion()->get_fonts_path();
         if ($path !== false) {
             define("TTF_DIR", $path);
         }
     }
     require_once toba_dir() . '/php/3ros/jpgraph/jpgraph.php';
 }
Example #6
0
 function proyecto__agregar_config_rest()
 {
     $proyecto = $this->elemento->get_id();
     $dir_proyecto = $this->elemento->get_dir();
     $destino = $dir_proyecto . '/www/rest.php';
     copy(toba_dir() . '/php/modelo/template_proyecto/www/rest.php', $destino);
     $editor = new toba_editor_archivos();
     $editor->agregar_sustitucion('|__proyecto__|', $proyecto);
     $editor->procesar_archivo($destino);
 }
Example #7
0
 function generar_layout()
 {
     //--- Barra SVN
     echo "<div class='editor-vista-previa'>" . $this->controlador()->get_info_archivo();
     echo '<div>';
     $this->generar_botones_eventos(true);
     echo '</div></div>';
     //--- Barra de convenciones
     $mensajes_linea = array();
     $modelo = toba_editor::get_modelo_proyecto();
     $estandar = $modelo->get_estandar_convenciones();
     $path = $this->controlador()->get_path_archivo();
     if (file_exists($path)) {
         $resultado = $estandar->validar(array($path));
         $titulo = '<strong>Convenciones</strong>';
         $cant_errores = $resultado['totals']['errors'];
         $cant_warnings = $resultado['totals']['warnings'];
         $extra = '';
         if ($cant_errores === 0 && $cant_warnings === 0) {
             $nivel = 'info';
             $salida = 'Ok!';
         } else {
             $nivel = $cant_errores !== 0 ? 'error' : 'warning';
             $salida = "{$cant_errores} ";
             $salida .= $cant_errores !== 1 ? 'errores' : 'error';
             $salida .= " / {$cant_warnings} ";
             $salida .= $cant_warnings !== 1 ? 'avisos' : 'aviso';
             foreach ($resultado['files'][$path]['messages'] as $linea => $columnas) {
                 $textos = array();
                 foreach ($columnas as $column => $mensajes) {
                     foreach ($mensajes as $mensaje) {
                         //$extra .= "<strong>$linea</strong>:{$mensaje['message']}";
                         $imagen = $mensaje['type'] == 'ERROR' ? 'error.gif' : 'warning.gif';
                         $textos[] = $estandar->parsear_mensaje($mensaje['message']);
                         //Cambia el id de la convencion por una url
                     }
                 }
                 $ayuda = implode('<br><br>', $textos);
                 $ayuda = str_replace("'", "`", $ayuda);
                 $mensajes_linea[$linea] = toba_recurso::imagen_toba($imagen, true, null, null, $ayuda);
             }
         }
         $this->generar_html_descripcion("{$titulo}: {$salida} {$extra}", $nivel);
     }
     //-- Vista previa
     echo "<div class='editor-vista-previa-codigo'>";
     $codigo = $this->controlador()->get_previsualizacion();
     require_once toba_dir() . '/php/3ros/PHP_Highlight.php';
     $h = new PHP_Highlight(false);
     $h->loadString($codigo);
     $formato_linea = "<span class='editor-linea-codigo'>%02d</span>&nbsp;&nbsp;";
     echo @$h->toHtml(true, true, $formato_linea, true, $mensajes_linea);
     echo '</div>';
 }
Example #8
0
 function __construct($numero)
 {
     if ($numero == 'trunk') {
         $this->build = 'trunk';
         return;
     }
     $this->path_migraciones = toba_dir() . '/php/modelo/migraciones';
     $formato = 'El formato debe ser x.y.z (inestable-build). Donde (inestable-build) es opcional';
     $numero = trim($numero);
     $this->build = null;
     $this->partes = explode('.', $numero);
     //Validando el numero
     if (count($this->partes) < 3) {
         throw new toba_error("El número de versión {$numero} es incorrecto. Se requiere al menos 3 partes. " . $formato);
     }
     if (!is_numeric($this->partes[2])) {
         $digito = intval($this->partes[2]);
         if (!is_numeric($digito)) {
             throw new toba_error("El número de versión {$numero} es incorrecto. Las partes deben ser numéricas. " . $formato);
         }
         $extra = trim(str_replace(array('(', ')'), '', substr($this->partes[2], strlen($digito))));
         $this->partes[2] = $digito;
         $extra = explode('-', $extra);
         $build = '';
         if (count($extra) == 2) {
             $inestable = $extra[0];
             $build = $extra[1];
         } else {
             if (is_numeric($extra[0])) {
                 $build = $extra[0];
             } else {
                 $inestable = $extra[0];
             }
         }
         if (isset($inestable)) {
             if (!in_array($inestable, $this->inestables)) {
                 throw new toba_error("El número de versión {$numero} es incorrecto. El codigo de inestable '{$inestable}' no es válido. " . $formato);
             }
             $this->inestable = $inestable;
         }
         if ($build != '') {
             $this->build = $build;
             if (!is_numeric($build)) {
                 throw new toba_error("El número de versión {$numero} es incorrecto. El codigo de build '{$build}' no es válido. " . $formato);
             }
         }
     }
     foreach ($this->partes as $parte) {
         if (!is_numeric($parte) || !is_int(intval($parte))) {
             throw new toba_error("El número de versión {$numero} es incorrecto. Las partes deben ser numéricas " . $formato);
         }
     }
 }
 function __construct($toba_instalador, $param_comando)
 {
     $this->param_comando = $param_comando;
     $this->toba_instalador = $toba_instalador;
     $archivo = dirname(__FILE__) . '/toba.glade';
     $glade = new GladeXML($archivo, 'dlg_importar_instancia');
     foreach (self::$comp_req as $comp) {
         $this->comp[$comp] = $glade->get_widget($comp);
     }
     $glade->signal_autoconnect_instance($this);
     $this->comp['edit_toba']->set_text(toba_dir());
     $this->evt__cambio_directorio();
 }
 function __construct($estandar = 'Toba', $warnings = true)
 {
     $this->warnings = $warnings;
     if ($estandar == 'Toba') {
         $this->estandar = toba_dir() . '/php/convenciones/Toba';
         $this->estandar = toba_manejador_archivos::path_a_plataforma($this->estandar);
     } else {
         $this->estandar = $estandar;
     }
     $this->sniffer = new PHP_CodeSniffer(0);
     if (!$this->sniffer->isInstalledStandard($this->estandar)) {
         throw new toba_error("El estandar '{$this->estandar}' no esta instalado");
     }
 }
Example #11
0
 function proyecto__copiar_punto_acceso()
 {
     $dir_destino = $this->elemento->get_dir() . '/www/';
     $destino_final = toba_manejador_archivos::path_a_plataforma($dir_destino . 'servicios.php');
     $origen = toba_dir() . '/php/modelo/template_proyecto/www/servicios.php';
     if (!toba_manejador_archivos::existe_archivo_en_path($destino_final)) {
         $template = file_get_contents($origen);
         //Leo el template original
         $editor = new toba_editor_texto();
         $editor->agregar_sustitucion('|__proyecto__|', $this->elemento->get_id());
         $salida = $editor->procesar($template);
         file_put_contents($destino_final, $salida, FILE_APPEND);
     }
 }
Example #12
0
 static function ejecutar($cmd, &$stdout, &$stderr)
 {
     $outfile = tempnam(toba_dir() . '/temp', "cmd");
     $errfile = tempnam(toba_dir() . '/temp', "cmd");
     $descriptorspec = array(0 => array("pipe", "r"), 1 => array("file", $outfile, "w"), 2 => array("file", $errfile, "w"));
     $proc = proc_open($cmd, $descriptorspec, $pipes);
     if (!is_resource($proc)) {
         return 255;
     }
     fclose($pipes[0]);
     $exit = proc_close($proc);
     $stdout = file_get_contents($outfile);
     $stderr = file_get_contents($errfile);
     unlink($outfile);
     unlink($errfile);
     return $exit;
 }
Example #13
0
 function generar_pdf()
 {
     require_once toba_dir() . '/php/3ros/ezpdf/class.ezpdf.php';
     $pdf = new Cezpdf();
     $pdf->selectFont(toba_dir() . '/php/3ros/ezpdf/fonts/Helvetica.afm');
     $pdf->ezText('Ejemplo Firma Digital. Tiene dos attachments XML', 14);
     //-- Cuadro con datos
     $opciones = array('splitRows' => 0, 'rowGap' => 1, 'showHeadings' => true, 'titleFontSize' => 9, 'fontSize' => 10, 'shadeCol' => array(0.9, 0.9, 0.9), 'outerLineThickness' => 0.7, 'innerLineThickness' => 0.7, 'xOrientation' => 'center', 'width' => 500);
     $this->s__datos_juegos = toba::db()->consultar("SELECT * from ref_juegos");
     $pdf->ezTable($this->s__datos_juegos, '', 'Juegos', $opciones);
     $this->s__datos_deportes = toba::db()->consultar("SELECT * from ref_deportes");
     $pdf->ezTable($this->s__datos_deportes, '', 'Deportes', $opciones);
     $tmp = $pdf->ezOutput(0);
     $this->s__pdf = array();
     $sesion = get_firmador()->generar_sesion();
     $this->s__pdf['path'] = toba::proyecto()->get_path_temp() . "/doc{$sesion}_sinfirma.pdf";
     if (!file_put_contents($this->s__pdf['path'], $tmp)) {
         throw new toba_error("Imposible escribir en '{$this->s__pdf['path']}'. Chequee permisos");
     }
 }
Example #14
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);
 }
Example #15
0
 function generar_html()
 {
     echo "\n<table class='ei-base ei-esquema-base'>\n";
     echo "<tr><td style='padding:0'>\n";
     echo $this->get_html_barra_editor();
     $this->generar_html_barra_sup(null, true, "ei-esquema-barra-sup");
     $colapsado = isset($this->_colapsado) && $this->_colapsado ? "style='display:none'" : "";
     echo "<div {$colapsado} id='cuerpo_{$this->objeto_js}'>";
     //Campo de sincronizacion con JS
     echo toba_form::hidden($this->_submit, '');
     $this->s__path = toba_dir() . '/temp/' . uniqid() . '.png';
     try {
         $this->_conf->imagen__generar($this->s__path);
     } catch (JpGraphException $e) {
         throw new toba_error("TOBA EI GRAFICO: Error en la librería jpgraph. \n\t\t\t\tEl error reportado fue el siguiente: '" . $e->getMessage() . "'. Si este\n\t\t\t\tes un error de fuentes intente definir el path de las fuentes en\n\t\t\t\tsu sistema a través de la entrada fonts_path en el archivo instancia.ini.\n\t\t\t\tEjemplo: 'fonts_path = /usr/share/fonts/truetype/msttcorefonts/'");
     }
     $destino = array($this->_id);
     $url = toba::vinculador()->get_url(null, null, array(), array('servicio' => 'mostrar_imagen', 'objetos_destino' => $destino));
     echo "<img src='{$url}' {$this->_ancho} {$this->_alto} border='0'>";
     //$this->generar_botones();
     echo "</div></td></tr>\n";
     echo "</table>\n";
 }
Example #16
0
 function evt__form_paleta__generar($datos)
 {
     $this->evt__form_paleta__modificacion($datos);
     $datos = $this->dep('datos')->get();
     $paleta = unserialize($datos['paleta']);
     $template = file_get_contents($this->template);
     if ($datos['proyecto'] == 'toba') {
         $dir_salida = toba_dir();
     } else {
         $dir_salida = toba::instancia()->get_path_proyecto($datos['proyecto']);
     }
     $dir_salida = $dir_salida . '/www/skins/' . $datos['estilo'];
     if (!file_exists($dir_salida)) {
         toba_manejador_archivos::crear_arbol_directorios($dir_salida);
     }
     $archivo_salida = $dir_salida . '/toba.css';
     foreach ($paleta as $clave => $valor) {
         $template = str_replace('{$' . $clave . '}', $valor, $template);
     }
     file_put_contents($archivo_salida, $template);
     $this->pantalla()->set_descripcion('Plantilla css generada. Recuerde generar una imagen <b>barra-sup.gif</b> (o copiarlo de un skin existente) ' . "y guardarla en <b>{$dir_salida}</b>", 'warning');
     $this->dep('datos')->sincronizar();
 }
Example #17
0
<?php

require_once toba_dir() . '/php/3ros/simpletest/unit_tester.php';
require_once toba_dir() . '/php/3ros/simpletest/mock_objects.php';
//require_once('testing/mocks/hilo_version_test.php');
class toba_test extends UnitTestCase
{
    protected $separar_pruebas = false;
    function separar_pruebas($estado = false)
    {
        $this->separar_pruebas = $estado;
    }
    function tearDown()
    {
        $this->restaurar_estado($this->sentencias_restauracion());
    }
    protected function sentencias_restauracion()
    {
        return array();
    }
    protected function restaurar_estado($sentencias)
    {
        foreach ($sentencias as $sql) {
            $rs = toba_contexto_info::get_db()->ejecutar($sql);
            if (!$rs) {
                $this->Fail("Error restaurando estado:\n{$sql}\n" . toba_contexto_info::get_db()->ErrorMsg());
            }
        }
    }
    /*
     *	Crea un runner customizado por toba (agrega separaciones en el LOG por test)
Example #18
0
 /**
  * Ejecuta la batería de test automáticos de un proyecto
  * @consola_parametros Parámetros: -p Proyecto [-c Cat] [-t Caso] 
  */
 function opcion__automaticos()
 {
     $path_autoload_sel = '/php/testing/selenium/test_selenium_autoload.php';
     require_once 'modelo/lib/testing_unitario/toba_test_lista_casos.php';
     require_once toba_dir() . '/php/3ros/simpletest/unit_tester.php';
     require_once toba_dir() . '/php/3ros/simpletest/reporter.php';
     $param = $this->get_parametros();
     $proyecto = isset($param['-p']) ? $param['-p'] : $this->get_id_proyecto_actual(true);
     $instancia = isset($param['-i']) ? $param['-i'] : $this->get_id_instancia_actual(true);
     toba_nucleo::instancia()->iniciar_contexto_desde_consola($instancia, $proyecto);
     $path = $this->get_instancia()->get_path_proyecto($proyecto);
     if (file_exists($path . $path_autoload_sel)) {
         require_once $path . $path_autoload_sel;
         spl_autoload_register(array('test_selenium_autoload', 'cargar'));
     }
     toba_test_lista_casos::$proyecto = $proyecto;
     toba_test_lista_casos::$instancia = $instancia;
     //Selecciono una categoria
     if (isset($param['-c'])) {
         $seleccionados = toba_test_lista_casos::get_casos($param['-c']);
     }
     //Seleccion de un test particular
     if (isset($param['-t'])) {
         $seleccionados = toba_test_lista_casos::get_casos();
         $particular = false;
         foreach ($seleccionados as $caso) {
             if ($caso['id'] == $param["-t"]) {
                 $particular = $caso;
             }
         }
         if ($particular) {
             $seleccionados = array($particular);
         } else {
             $seleccionados = array();
         }
     } elseif (!isset($param['-c'])) {
         //Ni categoria ni test, elijo de una lista presentada
         $seleccionados = toba_test_lista_casos::get_casos();
         $lista = array();
         $klaves = array_keys($seleccionados);
         foreach ($seleccionados as $caso) {
             $lista[$caso['id']] = $caso['nombre'];
         }
         $elegidos = $this->consola->dialogo_lista_opciones($lista, 'Seleccione el caso de test', true, null, false);
         foreach ($klaves as $klave) {
             if (!in_array($seleccionados[$klave]['id'], $elegidos)) {
                 unset($seleccionados[$klave]);
             }
         }
     }
     $resultado = null;
     try {
         $separar_casos = isset($param["-l"]) ? true : false;
         $separar_pruebas = isset($param["-l"]) ? true : false;
         $test = new toba_test_grupo_casos('Casos de TEST', $separar_casos, $separar_pruebas);
         foreach ($seleccionados as $caso) {
             require_once $caso['archivo'];
             $test->addTestCase(new $caso['id']($caso['nombre']));
         }
         //Termina la ejecución con 0 o 1 para que pueda comunicarse con al consola
         $resultado = $test->run(new TextReporter());
     } catch (Exception $e) {
         if (method_exists($e, 'mensaje_consola')) {
             $this->consola->mensaje($e->mensaje_consola());
         } else {
             $this->consola->mensaje($e);
         }
         $resultado = 1;
     }
     //Guardar LOGS?
     if (isset($param["-l"])) {
         toba::logger()->debug('Tiempo utilizado: ' . toba::cronometro()->tiempo_acumulado() . ' seg.');
         toba::logger()->guardar();
     }
     exit(intval($resultado));
 }
Example #19
0
 /**
  * Cambia los permisos de los archivo para que el usuario Apache cree directorios y pueda crear y leer carpetas navegables 
  * @consola_parametros [-u usuario apache, se asume www-data] [-g grupo de usuarios, no se asume ninguno]
  * @gtk_icono  password.png
  */
 function opcion__cambiar_permisos()
 {
     //Si es produccion dar permisos solo a apache, sino a usuario y grupo
     $subject = $this->get_instalacion()->es_produccion() ? "u" : "ug";
     $param = $this->get_parametros();
     $grupo = isset($param['-g']) ? $param['-g'] : null;
     $usuario = isset($param['-u']) ? $param['-u'] : 'www-data';
     $toba_dir = toba_dir();
     $this->consola->subtitulo('Cambiando permisos de archivos navegables');
     $comandos = array(array("chown -R {$usuario} {$toba_dir}/www", "Archivos navegables comunes:\n"), array("chmod -R {$subject}+rw {$toba_dir}/www", ''), array("chown -R {$usuario} {$toba_dir}/instalacion", "Archivos de configuración:\n"), array("chmod -R {$subject}+rw {$toba_dir}/instalacion", ''), array("chown -R {$usuario} {$toba_dir}/temp", "Archivos temporales comunes:\n"), array("chmod {$subject}+rw {$toba_dir}/temp", ''));
     foreach (toba_modelo_instalacion::get_lista_proyectos() as $proyecto) {
         $id_proyecto = basename($proyecto);
         $comandos[] = array("chown -R {$usuario} {$proyecto}/www", "Archivos navegables de {$id_proyecto}:\n");
         $comandos[] = array("chmod -R {$subject}+rw {$proyecto}/www", '');
         $comandos[] = array("chown -R {$usuario} {$proyecto}/temp", "Archivos temporales de {$id_proyecto}:\n");
         $comandos[] = array("chmod -R {$subject}+rw {$proyecto}/temp", '');
     }
     foreach ($comandos as $comando) {
         $this->consola->mensaje($comando[1], false);
         $this->consola->mensaje("   " . $comando[0] . exec($comando[0]));
     }
     if (isset($grupo)) {
         $comando = "chgrp -R {$grupo} {$toba_dir}";
         $this->consola->subtitulo("\nCambiando permisos globales para el grupo {$grupo}");
         $this->consola->mensaje("   " . $comando . exec($comando));
         $comando = "chmod -R g+rw {$toba_dir}";
         $this->consola->mensaje("   " . $comando . exec($comando));
     }
 }
Example #20
0
 /**
  * Coloca el path de las fuentes apuntando al directorio correcto
  * @ignore
  */
 function set_path_fuentes()
 {
     $this->gd_font_file = toba_dir() . '/php/3ros/securimage/gdfonts/bubblebath.gdf';
     $this->ttf_file = toba_dir() . '/php/3ros/securimage/elephant.ttf';
 }
Example #21
0
 /**
  * Método que se utiliza en la respuesta del filtro del combo editable cuando se quiere validar un id seleccionado
  */
 function servicio__filtrado_ef_ce_validar()
 {
     require_once toba_dir() . '/php/3ros/JSON.php';
     if (!isset($_GET['filtrado-ce-ef']) || !isset($_GET['filtrado-ce-valor'])) {
         throw new toba_error_seguridad("Validación de combo editable: Invocación incorrecta");
     }
     $id_ef = trim(toba::memoria()->get_parametro('filtrado-ce-ef'));
     $valor = trim(toba::memoria()->get_parametro('filtrado-ce-valor'));
     //$fila_actual = trim(toba::memoria()->get_parametro('filtrado-ce-fila'));
     $descripcion = $this->_carga_opciones_ef->ejecutar_metodo_carga_descripcion_ef($id_ef, $valor);
     $estado = array($valor => $descripcion);
     //--- Se arma la respuesta en formato JSON
     $json = new Services_JSON();
     echo $json->encode($estado);
 }
Example #22
0
 function ejecutar_ventana_migracion_version($con_transaccion = true)
 {
     toba_logger::instancia()->debug('Ejecutando ventana de migracion de instancia');
     $path_migracion_instancia = toba_dir() . '/php/modelo/migraciones_instancia';
     //Armo la ubicacion en donde se hallan los pasos de migracion de la instancia
     $version_actual = new toba_version($this->get_version_actual());
     //Recupero la version de la instancia existente
     $actual_codigo = new toba_version(toba_modelo_instalacion::get_version_actual());
     //Recupero la version actual del codigo instalado
     $version_actual->set_path_migraciones($path_migracion_instancia);
     //Cambio el path a las migraciones por defecto
     $versiones = $version_actual->get_secuencia_migraciones($actual_codigo, $path_migracion_instancia);
     //Calculo cuales son los pasos a dar
     if (empty($versiones)) {
         return;
     }
     foreach (array_keys($versiones) as $version) {
         $versiones[$version]->set_path_migraciones($path_migracion_instancia);
         //Hago la migracion para cada version intermedia
         $this->migrar_version($versiones[$version], false, $con_transaccion);
     }
 }
Example #23
0
<?php

require_once toba_dir() . '/php/3ros/JSON.php';
/**
 * Clase que representa una respuesta AJAX (php => js)
 * Tiene dos metodos, uno pensado para comportamientos de alto nivel (set) en donde el framework interpreta el tipo de salida
 * y otro para bajo nivel (agregar) en donde el manejo de la información queda a cargo del consumidor
 * @package Componentes
 * @subpackage Eis 
 */
class toba_ajax_respuesta
{
    protected $modo;
    protected $contenido = null;
    /**
     * @ignore 
     */
    function __construct($modo)
    {
        $this->modo = $modo;
    }
    /**
     * Construye la respuesta en base al contenido pasado.
     * Cuando se comunica este contenido a JS se adecua el formato según como fue el pedido inicialmente (datos o html)
     * @param mixed $contenido
     */
    function set($contenido)
    {
        $this->contenido = $contenido;
    }
    /**
Example #24
0
 function generar_pdf()
 {
     $datos = $this->get_datos_persona();
     $temp = rand();
     $datos_persona = array();
     $datos_persona['id'] = $datos['id'];
     $datos_persona['nombre'] = $datos['nombre'];
     $datos_persona['fecha_nac'] = $datos['fecha_nac'];
     //Generar PDF
     require_once toba_dir() . '/php/3ros/ezpdf/class.ezpdf.php';
     $pdf = new Cezpdf();
     $pdf->selectFont(toba_dir() . '/php/3ros/ezpdf/fonts/Helvetica.afm');
     $pdf->ezText('Ejemplo Firma Digital. Tiene un attachment XML', 14);
     $pdf->ezText('');
     $pdf->ezText("ID: {$datos['id']}", 14);
     $pdf->ezText("Nombre: {$datos['nombre']}", 14);
     $pdf->ezText("Fecha Nacimiento: {$datos['fecha_nac']}", 14);
     //Guardarlo en un archivo temporal
     $pdf_persona = toba::proyecto()->get_path_temp() . "/{$temp}.pdf";
     file_put_contents($pdf_persona, $pdf->ezOutput(0));
     //Generar XML
     $xml_persona = toba::proyecto()->get_path_temp() . "/{$temp}.xml";
     $xml = new toba_xml_tablas();
     $xml->set_tablas($datos_persona, "persona");
     $xml->guardar($xml_persona);
     //Agrego XMLs a PDF
     toba_firma_digital::pdf_add_attachments($pdf_persona, array($xml_persona));
     //Actualizo tabla
     $this->guardar_pdf_en_tabla($pdf_persona, false);
     //Retorno PDF y borro temporales
     $retorno = file_get_contents($pdf_persona);
     unlink($pdf_persona);
     unlink($xml_persona);
     return $retorno;
 }
Example #25
0
 function evt__mostrar_opciones()
 {
     $objeto_cmd = $this->get_objeto_comando($this->seleccion);
     $this->opciones = $objeto_cmd->inspeccionar_opciones();
     $this->comp['label_info']->set_markup($objeto_cmd->get_info_extra());
     //------ Cambia algunas cosas de lugar
     if ($objeto_cmd instanceof comando_base) {
         $opciones_a_sacar = array('listar', 'registrar');
         $hay_que_sacar = $objeto_cmd->tiene_definido_base();
         foreach (array_keys($this->opciones) as $id) {
             $existe = in_array($id, $opciones_a_sacar);
             if ($existe && $hay_que_sacar) {
                 unset($this->opciones[$id]);
             }
             if (!$existe && !$hay_que_sacar) {
                 unset($this->opciones[$id]);
             }
         }
     }
     //-----------------------------------
     $i = 0;
     foreach ($this->opciones as $opcion => $atributos) {
         if (!isset($atributos['tags']['gtk_no_mostrar'])) {
             $nombre = ucwords(str_replace('_', ' ', $opcion));
             $boton = new GtkToolButton();
             $boton->set_label($nombre);
             if (isset($atributos['tags']['gtk_icono'])) {
                 $archivo = $atributos['tags']['gtk_icono'];
                 $img = GtkImage::new_from_file(toba_dir() . '/www/img/' . $archivo);
                 $boton->set_property('icon-widget', $img);
             }
             $boton->set_tooltip($this->tooltips, $atributos['ayuda']);
             $boton->connect('clicked', array($this, 'evt__ejecutar'), $opcion, $atributos);
             $this->comp['caja_opciones']->insert($boton, $i);
             //--- Desactivar algunos
             if ($objeto_cmd instanceof comando_instalacion && ($opcion == 'instalar' || $opcion == 'crear') && toba_modelo_instalacion::existe_info_basica()) {
                 $boton->set_sensitive(false);
             }
             //----
             $i++;
         }
         if (isset($atributos['tags']['gtk_separador'])) {
             $boton = new GtkSeparatorToolItem();
             $this->comp['caja_opciones']->insert($boton, $i);
             $i++;
         }
     }
     $this->comp['caja_opciones']->show_all();
 }
Example #26
0
<?php

require_once toba_dir() . '/php/3ros/cssparser.php';
//----------------------------------------------------------------
class ci_comparador extends toba_ci
{
    protected $estilos;
    protected $contenidos = array();
    protected $analisis;
    function mantener_estado_sesion()
    {
        $propiedades = parent::mantener_estado_sesion();
        $propiedades[] = 'estilos';
        return $propiedades;
    }
    function get_contenido($estilo)
    {
        if (!isset($this->contenidos[$estilo])) {
            $candidato = toba::instalacion()->get_path() . "/www/css/{$estilo}.css";
            if (file_exists($candidato)) {
                $archivo = $candidato;
            } else {
                //Si el archivo no esta en toba, esta en algun proyecto
                $proyectos = toba_info_instancia::get_proyectos_con_estilo($estilo);
                foreach ($proyectos as $proyecto) {
                    $pro = $proyecto['proyecto'];
                    $candidato = toba::instancia()->get_path_proyecto($pro) . "/www/css/{$estilo}.css";
                    if (file_exists($candidato)) {
                        $archivo = $candidato;
                    }
                }
Example #27
0
 /**
  * Cambia la fuente para futuras inserciones de texto
  * @param string $fuente Nombre del archivo de la fuente (estan en la carpeta fonts de la libreria ezpdf)
  */
 function set_pdf_fuente($fuente = 'Helvetica.afm')
 {
     $this->configuracion['fuente'] = $fuente;
     $this->pdf->selectFont(toba_dir() . '/php/3ros/ezpdf/fonts/' . $this->configuracion['fuente']);
 }
Example #28
0
<?php

require_once toba_dir() . '/php/contrib/lib/toba_nodo_basico.php';
class catalogo_general extends toba_nodo_basico
{
    function __construct()
    {
        parent::__construct('Configuracion General', null);
        $this->iconos[] = array('imagen' => toba_recurso::imagen_toba('configurar.png', false), 'ayuda' => 'Administrar usuarios de la instancia');
        //Construyo los HIJOS
        $opciones['menu'] = true;
        $opciones['celda_memoria'] = 'central';
        //----------------------------------------------------------------------
        $hijos[0] = new toba_nodo_basico('Propiedades', $this);
        $hijos[0]->agregar_icono(array('imagen' => toba_recurso::imagen_toba('nucleo/proyecto.gif', false), 'ayuda' => null));
        $hijos[0]->agregar_utileria(array('imagen' => toba_recurso::imagen_toba('objetos/editar.gif', false), 'ayuda' => 'Editar parametros basicos', 'vinculo' => toba::vinculador()->get_url(toba_editor::get_id(), 1000259, array(), $opciones), 'target' => apex_frame_centro));
        //----------------------------------------------------------------------
        $hijos[1] = new toba_nodo_basico('Previsualización', $this);
        $hijos[1]->agregar_icono(array('imagen' => toba_recurso::imagen_proyecto('config_previsualizacion.gif', false), 'ayuda' => null));
        $hijos[1]->agregar_utileria(array('imagen' => toba_recurso::imagen_toba('objetos/editar.gif', false), 'ayuda' => 'Configuración de la previsualización del proyecto', 'vinculo' => toba::vinculador()->get_url(toba_editor::get_id(), '3287', array(), $opciones), 'target' => apex_frame_centro));
        //----------------------------------------------------------------------
        $hijos[3] = new toba_nodo_basico('Tipo de Pagina', $this);
        $hijos[3]->agregar_icono(array('imagen' => toba_recurso::imagen_proyecto('tipo_pagina.gif', false), 'ayuda' => null));
        $hijos[3]->agregar_utileria(array('imagen' => toba_recurso::imagen_toba('objetos/editar.gif', false), 'ayuda' => 'Editar Tipos de página disponibles', 'vinculo' => toba::vinculador()->get_url(toba_editor::get_id(), 1000235, array(), $opciones), 'target' => apex_frame_centro));
        //----------------------------------------------------------------------
        $hijos[4] = new toba_nodo_basico('Skins', $this);
        $hijos[4]->agregar_icono(array('imagen' => toba_recurso::imagen_proyecto('css.gif', false), 'ayuda' => null));
        $hijos[4]->agregar_utileria(array('imagen' => toba_recurso::imagen_toba('objetos/editar.gif', false), 'ayuda' => 'Editar Skins propios del proyecto', 'vinculo' => toba::vinculador()->get_url(toba_editor::get_id(), '3419', array(), $opciones), 'target' => apex_frame_centro));
        //----------------------------------------------------------------------
        $hijos[5] = new toba_nodo_basico('Zona', $this);
        $hijos[5]->agregar_icono(array('imagen' => toba_recurso::imagen_proyecto('zona.gif', false), 'ayuda' => null));
Example #29
0
<?php

require_once 'lista_casos.php';
include_once 'nucleo/consola/emular_web.php';
require_once toba_dir() . '/php/3ros/simpletest/reporter.php';
$this->registrar_parametros();
$proyecto = $this->parametros['-p'];
lista_casos::$proyecto = $proyecto;
//Selecciono una categoria
if (isset($this->parametros['-c'])) {
    $seleccionados = lista_casos::get_casos($this->parametros['-c']);
} else {
    $seleccionados = lista_casos::get_casos();
}
if (isset($this->parametros['-t'])) {
    //Seleccion de un test particular
    if (isset($this->parametros['-t'])) {
        $particular = false;
        foreach ($seleccionados as $caso) {
            if ($caso['id'] == $this->parametros['-t']) {
                $particular = $caso;
            }
        }
        if ($particular) {
            $seleccionados = array($particular);
        } else {
            $seleccionados = array();
        }
    }
}
try {
 function procesar()
 {
     toba::logger_ws()->debug('Servicio Llamado: ' . $this->info['basica']['item']);
     toba::logger_ws()->set_checkpoint();
     set_error_handler('toba_logger_ws::manejador_errores_recuperables', E_ALL);
     $this->validar_componente();
     //-- Pide los datos para construir el componente, WSF no soporta entregar objetos creados
     $clave = array();
     $clave['proyecto'] = $this->info['objetos'][0]['objeto_proyecto'];
     $clave['componente'] = $this->info['objetos'][0]['objeto'];
     list($tipo, $clase, $datos) = toba_constructor::get_runtime_clase_y_datos($clave, $this->info['objetos'][0]['clase'], false);
     agregar_dir_include_path(toba_dir() . '/php/3ros/wsf');
     $opciones_extension = toba_servicio_web::_get_opciones($this->info['basica']['item'], $clase);
     $wsdl = strpos($_SERVER['REQUEST_URI'], "?wsdl") !== false;
     $sufijo = 'op__';
     $metodos = array();
     $reflexion = new ReflectionClass($clase);
     foreach ($reflexion->getMethods() as $metodo) {
         if (strpos($metodo->name, $sufijo) === 0) {
             $servicio = substr($metodo->name, strlen($sufijo));
             $prefijo = $wsdl ? '' : '_';
             $metodos[$servicio] = $prefijo . $metodo->name;
         }
     }
     $opciones = array();
     $opciones['serviceName'] = $this->info['basica']['item'];
     $opciones['classes'][$clase]['operations'] = $metodos;
     $opciones = array_merge($opciones, $opciones_extension);
     $this->log->debug("Opciones del servidor: " . var_export($opciones, true), 'toba');
     $opciones['classes'][$clase]['args'] = array($datos);
     toba::logger_ws()->set_checkpoint();
     $service = new WSService($opciones);
     $service->reply();
     $this->log->debug("Fin de servicio web", 'toba');
 }