protected function _buildPackage($manifest, $date = null) { if (null === $date) { $date = time(); } // Get manifest data if (is_string($manifest)) { $manifestData = (require $manifest); if (empty($manifestData['package'])) { throw new Exception(sprintf('Missing package data for package in path: %s', $manifestPath)); } $manifestData = $manifestData['package']; } else { if (is_array($manifest)) { $manifestData = $manifest; } else { throw new Exception('Invalid manifest data type'); } } // Override date (for now at least) $manifestData['date'] = $date; // Build package file $package = new Engine_Package_Manifest($manifestData); // Build archive $archiveFile = Engine_Package_Archive::deflate($package, $this->_outputPath); // Verify archive for integrity $extractedPath = Engine_Package_Archive::inflate($archiveFile, $this->_outputPath); $loaded = new Engine_Package_Manifest($extractedPath); // Remove verified archive Engine_Package_Utilities::fsRmdirRecursive($extractedPath, true); return $archiveFile; }