Example #1
0
 /**
  * Validate the object.
  * @return boolean
  */
 public function isValid()
 {
     # File exists
     if (!file_exists($this->zippedContent->getFilename())) {
         return false;
     }
     # Can open zip file
     $zip = new \ZipArchive();
     if ($zip->open($this->zippedContent->getFilename()) !== true) {
         return false;
     }
     # Check if an XML and XSD file are present
     $xmlFile = false;
     $xsdFile = false;
     for ($i = 0; $i < $zip->numFiles; $i++) {
         $filename = $zip->getNameIndex($i);
         $file = new File($filename);
         $extension = strtolower($file->getExtension());
         if ($extension === 'xml') {
             $xmlFile = true;
         } elseif ($extension === 'xsd') {
             $xsdFile = true;
         }
     }
     $zip->close();
     return $xmlFile && $xsdFile;
 }
Example #2
0
 /**
  * ZippedContent constructor.
  * Checks if the ZIP extension is installed.
  * @param string $filename
  * @throws ZipExtensionRequired
  */
 public function __construct($filename)
 {
     if (!extension_loaded('zip')) {
         throw new ZipExtensionRequired('The ZIP extension is required but not found on this system.');
     }
     parent::__construct($filename);
 }
Example #3
0
 /**
  * Unpack the zip file.
  * @return array of Realworks\File\File objects
  * @throws CanNotOpenZipFile
  */
 public function unpack()
 {
     $result = [];
     $zip = new \ZipArchive();
     if ($zip->open($this->zippedContent->getFilename()) !== true) {
         throw new CanNotOpenZipFile("Can not open zip file: {$this->zippedContent->getFilename()}");
     }
     $zip->extractTo($this->directory);
     $zip->close();
     foreach (scandir($this->directory) as $extractedFileName) {
         $fullFilename = $this->directory . $extractedFileName;
         if (!is_dir($fullFilename)) {
             $file = new File($fullFilename);
             $extension = strtolower($file->getExtension());
             switch ($extension) {
                 case 'xml':
                     $result[] = new XMLFile($fullFilename);
                     break;
                 case 'xsd':
                     $result[] = new XSDFile($fullFilename);
                     break;
                 default:
                     $result[] = $file;
             }
         }
     }
     return $result;
 }