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"); }
function xml_decode($valor) { return toba_xml_tablas::decode($valor); }
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; }
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; }