Beispiel #1
0
 /**
  * Install assets from all modules.
  *
  * @param string $themeDirectory Theme directory.
  *
  * @return void
  */
 public function installAssets($themeDirectory = '')
 {
     $location = $this->_getLocation();
     $less = Less::factory();
     $less->setVariables(['baseUrl' => "'" . $this->_config->application->baseUrl . "'"]);
     ///////////////////////////////////
     // Check generated directory.
     ///////////////////////////////////
     if (!is_dir($location . self::GENERATED_STORAGE_PATH)) {
         mkdir($location . self::GENERATED_STORAGE_PATH);
     }
     ///////////////////////////////////
     // Compile themes css.
     ///////////////////////////////////
     if ($this->_config->installed && !empty($themeDirectory)) {
         $themeFiles = glob($themeDirectory . '/*.less');
         FsUtilities::fsCheckLocation($location . 'css/');
         foreach ($themeFiles as $file) {
             $newFileName = $location . 'css/' . basename($file, '.less') . '.css';
             $less->checkedCompile($file, $newFileName);
         }
     }
     ///////////////////////////////////
     // Collect css/js/img from modules.
     ///////////////////////////////////
     $registry = $this->getDI()->get('registry');
     foreach ($registry->modules as $module) {
         // CSS
         $assetsPath = $registry->directories->modules . ucfirst($module) . '/Assets/';
         $path = $location . 'css/' . $module . '/';
         FsUtilities::fsCheckLocation($path);
         $cssFiles = FsUtilities::fsRecursiveGlob($assetsPath . 'css/*');
         $less->addImportDir($themeDirectory);
         foreach ($cssFiles as $file) {
             if (!is_file($file)) {
                 continue;
             }
             $fileName = basename($file);
             $fileNameWithoutExt = basename($file, '.less');
             $additionalPath = str_replace($fileName, '', str_replace($assetsPath . 'css/', '', $file));
             if (pathinfo($file, PATHINFO_EXTENSION) == 'less') {
                 FsUtilities::fsCheckLocation($path . $additionalPath);
                 $newFileName = $path . $additionalPath . $fileNameWithoutExt . '.css';
                 $less->checkedCompile($file, $newFileName);
             } else {
                 copy($file, $path . $additionalPath . $fileName);
             }
         }
         // JS
         $path = $location . 'js/' . $module . '/';
         FsUtilities::fsCheckLocation($path);
         FsUtilities::fsCopyRecursive($assetsPath . 'js', $path, true);
         // IMAGES
         $path = $location . 'img/' . $module . '/';
         FsUtilities::fsCheckLocation($path);
         FsUtilities::fsCopyRecursive($assetsPath . 'img', $path, true);
     }
 }
Beispiel #2
0
 /**
  * Export package with data.
  *
  * @param AbstractPackage $package Package object.
  * @param array           $params  Additional params.
  *
  * @return void
  */
 public function exportPackage(AbstractPackage $package, array $params = [])
 {
     $location = $this->getPackageLocation($package);
     $packageName = ucfirst($package->name);
     if ($package->type == self::PACKAGE_TYPE_THEME) {
         $location = $location . $package->name;
     } else {
         $location = $location . $packageName;
     }
     $temporaryDir = $this->getTempDirectory();
     $temporaryPackageDir = $temporaryDir . $package->name . DS;
     $temporaryPackageCopyDir = $temporaryPackageDir . 'package' . DS;
     if (is_dir($temporaryDir)) {
         Utilities::fsRmdirRecursive($temporaryDir);
     }
     mkdir($temporaryPackageCopyDir, 0755, true);
     if (is_dir($location)) {
         Utilities::fsCopyRecursive($location, $temporaryPackageCopyDir);
     } else {
         copy($location, $temporaryPackageCopyDir . basename($location));
     }
     $filename = $this->_getPackageFullName($package, true) . '.zip';
     $filepath = $temporaryDir . $filename;
     $this->_createManifest($temporaryPackageDir . self::PACKAGE_MANIFEST_NAME, $package->toJson($params));
     $this->_zip($temporaryPackageDir, $filepath);
     header('Content-type: application/zip');
     header('Content-Disposition: attachment; filename="' . $filename . '"');
     readfile($filepath);
 }