Ejemplo n.º 1
0
 protected function setUp()
 {
     MockManager::activateWebsiteMock();
     MockManager::activatePageMock();
     parent::setUp();
     FS::createDirIfNotExists($this->getWorkingDirectory());
     ConfigHelper::disableDefaultPageType();
 }
Ejemplo n.º 2
0
 /**
  * @param string|null $baseUri
  */
 public function __construct($baseUri = null)
 {
     $davConfig = Registry::getConfig()->dav;
     $this->baseUri = $baseUri;
     $this->rootDirectory = $davConfig->directory;
     $tmpDirectory = $davConfig->temp_dir;
     FS::createDirIfNotExists($tmpDirectory);
     $this->lockFilePath = FS::joinPath($tmpDirectory, 'davlocks');
     $this->initServer();
 }
Ejemplo n.º 3
0
 /**
  * @param string $fromWebsiteId
  * @param string $toWebsiteId
  */
 public function copyToNewWebsite($fromWebsiteId, $toWebsiteId)
 {
     $moduleConfig = Registry::getConfig()->item->data;
     $dataDirectory = $moduleConfig->directory;
     $sourceDirectory = FS::joinPath($dataDirectory, $fromWebsiteId, self::SUBDIR_LOCAL);
     $destinationDirectory = FS::joinPath($dataDirectory, $toWebsiteId, self::SUBDIR_LOCAL);
     FS::createDirIfNotExists($destinationDirectory, true);
     if (is_dir($sourceDirectory)) {
         FS::copyDir($sourceDirectory, $destinationDirectory);
     }
     $this->getDao()->resetCache();
 }
Ejemplo n.º 4
0
 /**
  * Haendelt den Import einer Datei
  *
  * @param  string $uploadFilename
  * @param  string $websiteId
  * @param  string $allowedType
  *
  * @return array
  * @throws \Cms\Exception
  */
 public function importUploadFile($uploadFilename, $websiteId, $allowedType)
 {
     $config = Registry::getConfig();
     $importDirectory = $config->import->directory;
     FS::createDirIfNotExists($importDirectory);
     $import = TransferFactory::getAdapter();
     $imports = $import->getFileInfo();
     if (isset($config->import->uploadFile) && isset($config->import->uploadFile->doNotRename)) {
         $renameUploadFile = new Boolean($config->import->uploadFile->doNotRename);
         $renameUploadFile = !$renameUploadFile->getValue();
     } else {
         $renameUploadFile = true;
     }
     if ($renameUploadFile) {
         $uploadFilename = basename($uploadFilename, '.zip') . '.P' . time() . '_' . rand(100000, 999999) . '.zip';
     }
     $import->addFilter('Rename', $uploadFilename);
     $import->setDestination($importDirectory);
     $import->receive();
     $importFile = $importDirectory . DIRECTORY_SEPARATOR . $uploadFilename;
     return $this->importFile($importFile, $websiteId, $allowedType);
 }
Ejemplo n.º 5
0
 /**
  * @param $importFilename
  *
  * @return string
  */
 protected function createImportFile($importFilename)
 {
     $config = Registry::getConfig();
     $importFilePath = FS::joinPath($config->test->files->directory, 'test_exports', $importFilename);
     $fakedImportFile = FS::joinPath($config->import->directory, $importFilename);
     $unzipDirectory = str_replace('.zip', '', $fakedImportFile);
     $assertionMessage = sprintf("Test import file '%s' not exists", $importFilePath);
     $this->assertFileExists($importFilePath, $assertionMessage);
     // Add fake upload file and unzip directory to delete lists
     $this->filesToDeleteAtTearDown[] = $fakedImportFile;
     $this->directoriesToDeleteAtTearDown[] = $unzipDirectory;
     FS::copyFile($importFilePath, $fakedImportFile);
     FS::createDirIfNotExists($unzipDirectory, true);
     return $importFilePath;
 }
Ejemplo n.º 6
0
 /**
  * Creates the writeable data folders
  */
 protected function createDataFileFolders()
 {
     // create dirs
     $fileDirs = array('data', FS::joinPath('data', 'theme'), FS::joinPath('data', 'live'), 'builds', 'screens_cache', 'screens', 'publishing', 'websites', 'media', 'media_cache', 'var', FS::joinPath('var', 'logs'), FS::joinPath('var', 'import'), FS::joinPath('var', 'export'), FS::joinPath('var', 'creator'), FS::joinPath('var', 'fts_index'), FS::joinPath('var', 'import-latch'), FS::joinPath('var', 'session'), FS::joinPath('var', 'screenshot'), FS::joinPath('var', 'publish'));
     foreach ($fileDirs as $d) {
         FS::createDirIfNotExists(FS::joinPath(CMS_PATH, $d), true, 0750);
     }
 }
Ejemplo n.º 7
0
 /**
  * Creates the target directory for the theming files
  */
 protected function createTargetDirectory()
 {
     FS::createDirIfNotExists($this->targetPath, true);
 }
Ejemplo n.º 8
0
 /**
  * @param string $srcDirectory
  * @param string $destDirectory
  */
 protected function copyModuleFiles($srcDirectory, $destDirectory)
 {
     FS::createDirIfNotExists($destDirectory, true);
     if (!is_dir($srcDirectory)) {
         return;
     }
     foreach (new \DirectoryIterator($srcDirectory) as $fileInfo) {
         if ($fileInfo->isDot()) {
             continue;
         }
         $this->copyModuleFile($srcDirectory, $destDirectory, $fileInfo->getFilename());
     }
 }
Ejemplo n.º 9
0
 /**
  * @param string $websiteId
  * @param bool   $checkConflict
  * @param array  $overwriteIds
  *
  * @return array
  */
 protected function importPackages($websiteId, $checkConflict = false, array $overwriteIds = array())
 {
     $importedPackages = array();
     $conflictingPackageIds = array();
     $packageService = $this->getPackageService();
     if ($checkConflict && isset($this->currentConflictItems['packages'])) {
         $conflictingPackageIds = array_keys($this->currentConflictItems['packages']);
     }
     foreach ($this->currentImportPackageInfo as $packageId => $packageInfo) {
         // check if import of the package is allowed
         if (!$this->itemImportAllowed($packageId, $conflictingPackageIds, $overwriteIds)) {
             continue;
         }
         $localDirectory = $packageService->getDirectoryFormImportingLocalPackages($websiteId);
         $localPackageDirectory = FS::joinPath($localDirectory, $packageId);
         if (file_exists($localPackageDirectory)) {
             FS::rmdir($localPackageDirectory);
         }
         FS::createDirIfNotExists($localPackageDirectory, true);
         FS::copyDir($packageInfo['directory'], $localPackageDirectory);
         $importedPackages[] = array('id' => $packageId, 'name' => $packageInfo['name']);
     }
     // ensure that the imported packages will be (re)loaded
     $packageService->resetCache();
     return $importedPackages;
 }
Ejemplo n.º 10
0
 /**
  * @param string $id
  */
 private function createWebsiteDirectories($id)
 {
     $baseDataDirectory = realpath(Registry::getConfig()->item->data->directory);
     if (empty($baseDataDirectory)) {
         Registry::getLogger()->log(__METHOD__, __LINE__, 'failed to calculate base data directory: ' . $baseDataDirectory, SbLog::ERR);
         return;
     }
     $itemDataDirectory = FS::joinPath($baseDataDirectory, $id);
     if (empty($itemDataDirectory) || is_dir($itemDataDirectory)) {
         return;
     }
     try {
         FS::createDirIfNotExists($itemDataDirectory, true);
     } catch (\Exception $logOnly) {
         Registry::getLogger()->log(__METHOD__, __LINE__, $logOnly->getMessage(), SbLog::ERR);
     }
 }
Ejemplo n.º 11
0
 /**
  * @param  string $websiteId
  * @param  string $publishingId
  * @param  string $buildFilePath
  * @return string path to publishing file
  */
 private function copyBuildToPublishingDirectory($websiteId, $publishingId, $buildFilePath)
 {
     $config = Registry::getConfig();
     $publishingDirectory = FS::joinPath($config->publisher->data->directory, $websiteId);
     FS::createDirIfNotExists($publishingDirectory, true);
     $publishingFilePath = FS::joinPath($publishingDirectory, $publishingId . '.zip');
     FS::copyFile($buildFilePath, $publishingFilePath);
     return $publishingFilePath;
 }
Ejemplo n.º 12
0
 /**
  * @param  string $websiteId
  */
 private function createWebsiteBuildsDirectory($websiteId)
 {
     $websiteBuildsDirectory = $this->getWebsiteBuildsDirectory($websiteId);
     FS::createDirIfNotExists($websiteBuildsDirectory, true);
 }
Ejemplo n.º 13
0
 /**
  * @param string   $exportName
  * @return boolean
  */
 private function createExportDirectory($exportName)
 {
     $this->currentExportName = md5($exportName);
     $this->currentExportDirectory = FS::joinPath($this->exportDirectory, $this->currentExportName);
     if (is_dir($this->currentExportDirectory)) {
         $this->deleteLeftoverExport();
     }
     return FS::createDirIfNotExists($this->currentExportDirectory, true, 0750);
 }
Ejemplo n.º 14
0
 /**
  * @param $websiteId
  * @param $pageOrTemplateId
  *
  * @return FileBasedJsonCache
  */
 protected function createCache($websiteId, $pageOrTemplateId)
 {
     $config = Registry::getConfig();
     $dataPath = $config->item->data->directory;
     $cachePath = FS::joinPath($dataPath, $websiteId, 'cache', $pageOrTemplateId);
     FS::createDirIfNotExists($cachePath, true);
     return new FileBasedJsonCache($cachePath);
 }
Ejemplo n.º 15
0
 /**
  * @param string $liveDirectory
  * @param string $srcDirectory
  * @param array  $writeableDirectories
  * @param array  $cacheDirectories
  * @param string $subDirectory
  *
  * @throws CmsException
  */
 protected function updateLive($liveDirectory, $srcDirectory, $writeableDirectories, $cacheDirectories, $subDirectory = '')
 {
     if (!is_dir($srcDirectory)) {
         throw new CmsException(902, __METHOD__, __LINE__, array('msg' => sprintf('source directory %s not exists', $srcDirectory)));
     }
     // create live directory
     if (!is_dir($liveDirectory)) {
         FS::createDirIfNotExists($liveDirectory, true, 0755);
     }
     // set directory rights
     if (!empty($subDirectory) && $this->isInsideDirectory($subDirectory, $writeableDirectories)) {
         // writeable
         FS::chmod($liveDirectory, 0777);
     } else {
         FS::chmod($liveDirectory, 0755);
     }
     // get info of the directories
     $liveDirInfo = $this->getDirectoryAsArray($liveDirectory);
     $srcDirInfo = $this->getDirectoryAsArray($srcDirectory);
     // delete live directories
     foreach ($liveDirInfo['directories'] as $liveSubDirectoryName => $liveSubDirectory) {
         if ($this->isInsideDirectory($subDirectory . $liveSubDirectoryName, $writeableDirectories)) {
             FS::chmod($liveSubDirectory, 0777);
             continue;
         }
         if (!isset($srcDirInfo['directories'][$liveSubDirectoryName])) {
             FS::rmdir($liveDirectory);
         }
     }
     // delete live files
     foreach ($liveDirInfo['files'] as $liveFileName => $liveFilePathName) {
         if ($this->isInsideDirectory($subDirectory . $liveFileName, $writeableDirectories)) {
             FS::chmod($liveFilePathName, 0777);
             continue;
         }
         if (!isset($srcDirInfo['files'][$liveFileName])) {
             FS::rmFile($liveFilePathName);
         }
     }
     // copy source directories
     foreach ($srcDirInfo['directories'] as $srcSubDirectoryName => $srcSubDirectory) {
         $subDirPathName = $subDirectory . $srcSubDirectoryName . DIRECTORY_SEPARATOR;
         $newLiveDirectory = FS::joinPath($liveDirectory, $srcSubDirectoryName);
         $this->updateLive($newLiveDirectory, $srcSubDirectory, $writeableDirectories, $cacheDirectories, $subDirPathName);
     }
     // copy source files
     foreach ($srcDirInfo['files'] as $srcFileName => $srcFilePathName) {
         $newLiveFilePathName = FS::joinPath($liveDirectory, $srcFileName);
         FS::copyFile($srcFilePathName, $newLiveFilePathName);
         if ($this->isInsideDirectory($subDirectory . $srcFileName, $writeableDirectories)) {
             FS::chmod($newLiveFilePathName, 0777);
         } else {
             FS::chmod($newLiveFilePathName, 0755);
         }
     }
 }
Ejemplo n.º 16
0
 /**
  * @param string $moduleDir
  */
 protected function createModuleDirectoriesIfNotExits($moduleDir)
 {
     FS::createDirIfNotExists($moduleDir, true);
     FS::createDirIfNotExists(FS::joinPath($moduleDir, self::SUBDIR_DATA));
     FS::createDirIfNotExists(FS::joinPath($moduleDir, self::SUBDIR_ASSETS));
 }
Ejemplo n.º 17
0
 /**
  * @param   string $websiteId
  * @param   string $id
  * @param   string $type
  * @param   string $originFile
  * @param   string $relativeDir
  * @param   array  $option
  * @return  string
  */
 protected function modifyScreenhot($websiteId, $id, $type, $originFile, $relativeDir, $options)
 {
     $width = (int) $options['width'];
     $height = (int) $options['height'];
     $cacheFilePath = FS::joinPath(Registry::getConfig()->screens->cache->directory, $relativeDir, $id);
     $cacheFile = FS::joinPath($cacheFilePath, sprintf("%dx%d.%s", $width, $height, Registry::getConfig()->screens->filetype));
     if (file_exists($cacheFile) && $this->isScreenshotFileValid($cacheFile, $type, $id, $websiteId)) {
         return $cacheFile;
     }
     FS::createDirIfNotExists($cacheFilePath, true);
     // Breite und Hoehe fuer crop berechnen
     list($originWidth, $originHeight) = getimagesize($originFile);
     $widthFaktor = $originWidth / $width;
     $heightFaktor = $originHeight / $height;
     if ($widthFaktor < $heightFaktor) {
         $cropWidth = (int) $originWidth;
         $cropHeight = (int) ($widthFaktor * $height);
     } else {
         $cropWidth = (int) ($heightFaktor * $width);
         $cropHeight = (int) $originHeight;
     }
     $bildBearbeitung = $this->getImageAdapter();
     $bildBearbeitung->setFile($originFile);
     $bildBearbeitung->crop(array('width' => $cropWidth, 'height' => $cropHeight, 'x' => 0, 'y' => 0));
     $bildBearbeitung->resize(array('width' => $width, 'height' => $height));
     $bildBearbeitung->quality(array('quality' => 100));
     if (!$bildBearbeitung->save($cacheFile)) {
         return;
     }
     return $cacheFile;
 }
Ejemplo n.º 18
0
 protected function copyLegacyClasses()
 {
     // copy legacy render files
     $serverDirectory = $this->getServerDirectory();
     FS::createDirIfNotExists($serverDirectory, true);
     $srcRenderDirectory = realpath(FS::joinPath(APPLICATION_PATH, '..', 'library', 'Dual'));
     $destRenderDirector = FS::joinPath($serverDirectory, 'library', 'Dual');
     try {
         FS::createDirIfNotExists($destRenderDirector, true);
         FS::copyDir($srcRenderDirectory, $destRenderDirector);
     } catch (\Exception $e) {
         $this->addError('Error at copy legacy render classes', $e);
     }
 }