Example #1
0
 function evt__generar()
 {
     //Genero PDF
     $this->generar_pdf();
     //Genero XMLs
     $xml_juegos = toba::proyecto()->get_path_temp() . '/entrada_juegos.xml';
     $xml = new toba_xml_tablas();
     $xml->set_tablas($this->s__datos_juegos, "juegos");
     $xml->guardar($xml_juegos);
     $xml_deportes = toba::proyecto()->get_path_temp() . '/entrada_deportes.xml';
     $xml = new toba_xml_tablas();
     $xml->set_tablas($this->s__datos_deportes, "deportes");
     $xml->guardar($xml_deportes);
     //Agrego XMLs a PDF
     toba_firma_digital::pdf_add_attachments($this->s__pdf['path'], array($xml_juegos, $xml_deportes));
     $this->set_pantalla("pant_firma");
 }
Example #2
0
function xml_decode($valor)
{
    return toba_xml_tablas::decode($valor);
}
Example #3
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 #4
0
 private function cargar_perfiles_produccion()
 {
     $this->manejador_interface->mensaje("Cargando perfiles propios", false);
     $todos_errores = array();
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->get_dir_permisos_produccion(), '|.*\\.xml$|');
     //-- Quito el archivo de las restricciones si es que existe
     $hay_restricciones = false;
     while (!$hay_restricciones && FALSE !== current($archivos)) {
         $actual = current($archivos);
         $perfil = basename($actual, '.xml');
         if ($perfil == 'restricciones_funcionales') {
             $restricciones = array($actual);
             unset($archivos[key($archivos)]);
             $hay_restricciones = true;
         }
         next($archivos);
     }
     //--Reordeno los archivos restantes para que los grupos queden al final
     if (!rsort($archivos, SORT_LOCALE_STRING)) {
         $msg = "ATENCION! Se produjo un error al recuperar los archivos pertenecientes a los perfiles de '{$this->identificador}'.";
         $this->manejador_interface->separador();
         $this->manejador_interface->error($msg);
     }
     //-- Si hay restricciones las agrego al ppio.
     if ($hay_restricciones) {
         $archivos = array_merge($restricciones, $archivos);
     }
     foreach ($archivos as $archivo) {
         $perfil = basename($archivo, '.xml');
         $xml = new toba_xml_tablas($archivo);
         $errores = $xml->insertar_db($this->db, $this->get_dir_instalacion_proyecto());
         if (!empty($errores)) {
             //-- Trata de encontrar los nombres de las operaciones que no se le pudieron asignar a los perfiles
             $dir_items = $this->get_dir_instalacion_proyecto() . '/items.xml';
             if (file_exists($dir_items)) {
                 $xml = new toba_xml_tablas($dir_items);
                 $items = $this->get_descripciones_items($xml->get_tablas());
                 foreach (array_keys($errores) as $clave) {
                     $id_item = isset($errores[$clave]['datos']['item']) ? $errores[$clave]['datos']['item'] : null;
                     if ($errores[$clave]['tabla'] == 'apex_usuario_grupo_acc_item' && array_key_exists($id_item, $items)) {
                         if (!is_null($id_item) && isset($items[$id_item])) {
                             $errores[$clave]['extras'] = $items[$id_item];
                         } else {
                             $errores[$clave]['extras'] = '';
                         }
                     }
                 }
             }
             $msg = "ATENCION! No fue posible cargar por completo el '{$perfil}', posiblemente a causa de que al menos una operación, restricción o derecho ha dejado de existir en '{$this->identificador}'.";
             $msg .= " A continuación el detalle:";
             $this->manejador_interface->separador();
             $this->manejador_interface->error($msg);
             foreach ($errores as $error) {
                 $this->manejador_interface->error($error['msg_motor']);
             }
             $this->manejador_interface->error('De todas formas se continúa la carga, se recomienda revisar la definición de este perfil.');
             $this->manejador_interface->separador();
             $todos_errores = array_merge($todos_errores, $errores);
         }
         toba_logger::instancia()->debug($archivo);
         $this->manejador_interface->progreso_avanzar();
     }
     $this->manejador_interface->progreso_fin();
     return $todos_errores;
 }
 static function array_a_payload($array, $nivel = 0, $clave_padre = '')
 {
     $salida = '';
     $tab = str_repeat("\t", $nivel);
     foreach ($array as $clave => $valor) {
         $empieza_con_numero = strlen($clave) > 0 && ctype_digit(substr($clave, 0, 1));
         if ($empieza_con_numero && is_string($clave)) {
             throw new toba_error_def("El arreglo contiene una clave asociativa ({$clave}) que comienza con un número, XML no acepta tags que comienzen con numeros");
         }
         if ($empieza_con_numero) {
             $clave = self::id_fila_generica . $clave_padre;
             //El xml no puede tener claves numericas, se define una clave unica para los posicionales
         }
         $clave = toba_xml_tablas::encode($clave);
         $salida .= "{$tab}<{$clave}>";
         if (is_array($valor)) {
             $salida .= "\n" . self::array_a_payload($valor, $nivel + 1, $clave);
             $salida .= "{$tab}</{$clave}>\n";
         } else {
             $valor = toba_xml_tablas::encode($valor);
             $salida .= $valor;
             $salida .= "</{$clave}>\n";
         }
     }
     return $salida;
 }