. */ namespace SP\Import; use SP\Core\Messages\LogMessage; defined('APP_ROOT') || die(); /** * Clase XmlImport para usarla como envoltorio para llamar a la clase que corresponda * según el tipo de archivo XML detectado. * * @package SP */ class XmlImport implements ImportInterface { /** * @var FileImport */ protected $File; /** * @var ImportParams */ protected $ImportParams; /** * @var LogMessage */ protected $LogMessage; /** * @var ImportBase */ protected $Import; /** * XmlImport constructor. * * @param FileImport $File * @param ImportParams $ImportParams * @param LogMessage $LogMessage */ public function __construct(FileImport $File, ImportParams $ImportParams, LogMessage $LogMessage) { $this->File = $File; $this->ImportParams = $ImportParams; $this->LogMessage = $LogMessage; } /** * Iniciar la importación desde XML. * * @throws \SP\Core\Exceptions\SPException */ public function doImport() { $XmlFileImport = new XmlFileImport($this->File); $format = $XmlFileImport->detectXMLFormat(); switch ($format) { case 'syspass': $this->Import = new SyspassImport(); break; case 'keepass': $this->Import = new KeepassImport(); break; case 'keepassx': $this->Import = new KeepassXImport(); break; default: return; } $this->Import->setImportParams($this->ImportParams); $this->Import->setXmlDOM($XmlFileImport->getXmlDOM()); $this->Import->setLogMessage($this->LogMessage); $this->LogMessage->addDescription(sprintf(__('Formato detectado: %s'), strtoupper($format))); $this->Import->doImport(); } /** * Devolver el contador de objetos importados * * @return int */ public function getCounter() { return $this->Import->getCounter(); } }