Example #1
0
 /**
  * @param $websiteId
  */
 public function deleteByWebsiteId($websiteId)
 {
     $sources = $this->getLocalSources($websiteId);
     foreach ($sources as $sourceItem) {
         $sourceItemDirectory = $sourceItem->getDirectory();
         if (!empty($sourceItemDirectory) && file_exists($sourceItemDirectory)) {
             FS::rmdir($sourceItemDirectory);
         }
     }
     $this->getDao()->resetCache();
 }
 /**
  * @test
  * @group library
  */
 public function test_createStorageForWebsite_success()
 {
     // ARRANGE
     $dao = $this->createModuleDao(true);
     $websiteId = $this->newWebsiteId;
     $expectedModuleDataDirectory = FS::joinPath(Registry::getConfig()->item->data->directory, $websiteId, $dao::SUBDIR_MODULES);
     FS::rmdir($expectedModuleDataDirectory);
     $this->assertFileNotExists($expectedModuleDataDirectory);
     // ACT
     $dao->createStorageForWebsite($this->newWebsiteId);
     // ASSERT
     $this->assertFileExists($expectedModuleDataDirectory);
 }
Example #3
0
 /**
  * @param string $websiteId
  */
 public function deleteByWebsiteId($websiteId)
 {
     $websiteModulesDataDir = $this->getWebsiteModulesDataDirectory($websiteId);
     if (!empty($websiteModulesDataDir) && is_dir($websiteModulesDataDir) && strpos($websiteModulesDataDir, $this->dataDirectory) === 0) {
         FS::rmdir($websiteModulesDataDir);
     }
     $this->resetCache();
 }
Example #4
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;
 }
Example #5
0
 /**
  * @param string $id
  */
 private function deleteWebsiteDirectories($id)
 {
     $itemDataDirectory = realpath(FS::joinPath(Registry::getConfig()->item->data->directory, $id));
     if (!empty($itemDataDirectory) && is_dir($itemDataDirectory)) {
         try {
             FS::rmdir($itemDataDirectory);
         } catch (\Exception $logOnly) {
             Registry::getLogger()->log(__METHOD__, __LINE__, $logOnly->getMessage(), SbLog::ERR);
         }
     }
 }
Example #6
0
 /**
  * @param  string $websiteId
  *
  * @return boolean
  */
 private function removeCreatedWebsiteDirectory($websiteId)
 {
     try {
         $websiteCreatorDirectory = $this->getLastCreatorDirectory();
         if (realpath($websiteCreatorDirectory)) {
             FS::rmdir($websiteCreatorDirectory);
         }
     } catch (\Exception $e) {
         $errorMessage = sprintf("Unable to remove last creator directory '%s' (%s)", $websiteCreatorDirectory, $e->getMessage());
         Registry::getLogger()->log(__METHOD__, __LINE__, $errorMessage, Log::ERR);
     }
 }
Example #7
0
 protected function deleteExportDirectories()
 {
     if (!$this->checkCurrentExportDirectory()) {
         return;
     }
     $iterator = new \DirectoryIterator($this->currentExportDirectory);
     foreach ($iterator as $fileInfo) {
         if ($fileInfo->isDot()) {
             continue;
         }
         if ($fileInfo->getExtension() == self::EXPORT_FILE_EXTENSION) {
             continue;
         }
         $pathName = $fileInfo->getPathName();
         if (!strstr($pathName, $this->currentExportDirectory)) {
             continue;
         }
         FS::rmdir($pathName);
     }
 }
Example #8
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);
         }
     }
 }