static function es_copia_trabajo($path) { $salida = null; $hubo_error = null; $cmd = "svn info \"{$path}\" --xml"; toba_manejador_archivos::ejecutar($cmd, $salida, $hubo_error); if (trim($hubo_error) != '' || trim($salida) == '') { //Hubo algun tipo de error, puede ser que no se encontro el cliente, no WC, etc. return false; } elseif (!is_null($salida)) { $xml = simplexml_load_string($salida); return isset($xml->entry); //Me fijo si el xml corresponde a una WC } }
/** * 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; }
/** * Genera los archivos para los certificados del proyecto * @param toba_modelo_proyecto $proyecto * @param string $directorio * @throws toba_error_usuario */ static function generar_certificados(toba_modelo_proyecto $proyecto, $directorio = null) { //Si no se pasa directorio de salida, asigno por defecto el de instalacion del proyecto if (is_null($directorio)) { $directorio = $proyecto->get_dir_instalacion_proyecto(); } //Busco en el directorio de la instalacion de Toba el archivo de configuracion para openssl $dir_inst = $proyecto->get_instalacion()->get_dir(); if (!file_exists($dir_inst . '/openssl.ini')) { throw new toba_error_usuario("No existe el archivo '{$dir_inst}/openssl.ini'. Necesita copiarlo de la carpeta toba/php/modelo/var"); } $cmd = "openssl req -x509 -nodes -days 20000 -newkey rsa:1024 -keyout {$directorio}/privada.key.sign -config {$dir_inst}/openssl.ini -out {$directorio}/publica.crt"; $exito = toba_manejador_archivos::ejecutar($cmd, $stdout, $stderr); if ($exito != '0') { throw new toba_error_usuario($stderr . "\n Asegurese tener instalados los binarios de OpenSSL y disponibles en el path. Para comprobar ejecute 'openssl version'"); } $cmd = "openssl rsa -in {$directorio}/privada.key.sign -out {$directorio}/privada.key"; $exito = toba_manejador_archivos::ejecutar($cmd, $stdout, $stderr); if ($exito != '0') { throw new toba_error_usuario($stderr); } unlink("{$directorio}/privada.key.sign"); }