/** * Leer la cabecera del archivo XML y obtener patrones de aplicaciones conocidas. * * @return bool */ protected function parseFileHeader() { $handle = @fopen($this->_file->getTmpFile(), "r"); $headersRegex = '/(KEEPASSX_DATABASE|revelationdata)/i'; if ($handle) { // No. de líneas a leer como máximo $maxLines = 5; $count = 0; while (($buffer = fgets($handle, 4096)) !== false && $count <= $maxLines) { if (preg_match($headersRegex, $buffer, $app)) { fclose($handle); return strtolower($app[0]); } $count++; } fclose($handle); } return false; }
/** * Iniciar la importación de cuentas. * * @param array $fileData Los datos del archivo * @return array resultado del proceso */ public static function doImport(&$fileData) { try { $file = new FileImport($fileData); switch ($file->getFileType()) { case 'text/csv': case 'application/vnd.ms-excel': $import = new CsvImport($file); $import->setFieldDelimiter(self::$csvDelimiter); break; case 'text/xml': $import = new XmlImport($file); $import->setImportPass(self::$importPwd); break; default: throw new SPException(SPException::SP_WARNING, _('Tipo mime no soportado'), _('Compruebe el formato del archivo')); } $import->setUserId(self::$defUser); $import->setUserGroupId(self::$defGroup); $import->doImport(); } catch (SPException $e) { Log::writeNewLog(_('Importar Cuentas'), $e->getMessage() . ';;' . $e->getHint()); $result['error'] = array('description' => $e->getMessage(), 'hint' => $e->getHint()); return $result; } Log::writeNewLog(_('Importar Cuentas'), _('Importación finalizada')); $result['ok'] = array(_('Importación finalizada'), _('Revise el registro de eventos para más detalles')); return $result; }