/** * Copies the extracted(!) package from the temp-folder * to the target-folder. * In most cases, this is either located at /core or at /templates. * The original should be deleted afterwards. * * @throws class_exception * @return void */ public function move2Filesystem() { $strSource = $this->objMetadata->getStrPath(); if (!is_dir(_realpath_ . $strSource)) { throw new class_exception("current package " . $strSource . " is not a folder.", class_exception::$level_ERROR); } $objFilesystem = new class_filesystem(); $objFilesystem->chmod($this->getStrTargetPath(), 0777); class_logger::getInstance(class_logger::PACKAGEMANAGEMENT)->addLogRow("moving " . $strSource . " to " . $this->getStrTargetPath(), class_logger::$levelInfo); $objFilesystem->folderCopyRecursive($strSource, $this->getStrTargetPath(), true); $this->objMetadata->setStrPath($this->getStrTargetPath()); $objFilesystem->chmod($this->getStrTargetPath()); $objFilesystem->folderDeleteRecursive($strSource); //shift the cache buster $objSetting = class_module_system_setting::getConfigByName("_system_browser_cachebuster_"); if ($objSetting != null) { $objSetting->setStrValue((int) $objSetting->getStrValue() + 1); $objSetting->updateObjectToDb(); } }
/** * Internal helper, fetches all installers located within the passed package * * @param class_module_packagemanager_metadata $objMetadata * * @return interface_installer[] */ private function getInstaller(class_module_packagemanager_metadata $objMetadata) { $objFilesystem = new class_filesystem(); $arrInstaller = $objFilesystem->getFilelist($objMetadata->getStrPath() . "/installer/", array(".php")); if ($arrInstaller === false) { return array(); } $arrReturn = array(); //start with modules foreach ($arrInstaller as $strOneInstaller) { //skip samplecontent files if (uniStrpos($strOneInstaller, "class_") === false || uniStrpos($strOneInstaller, "installer") === false || uniStrpos($strOneInstaller, "_sc_") !== false) { continue; } $strName = uniSubstr($strOneInstaller, 0, -4); /** @var $objInstaller interface_installer */ $objInstaller = new $strName(); $arrReturn[] = $objInstaller; } return $arrReturn; }
/** * @param class_module_packagemanager_metadata $objMetadata * * @throws class_exception * @return string */ public function removePackage(class_module_packagemanager_metadata $objMetadata) { $strLog = ""; class_orm_base::setObjHandleLogicalDeletedGlobal(class_orm_deletedhandling_enum::INCLUDED()); $objHandler = $this->getPackageManagerForPath($objMetadata->getStrPath()); if ($objHandler->isRemovable()) { $objHandler->remove($strLog); } class_orm_base::setObjHandleLogicalDeletedGlobal(class_orm_deletedhandling_enum::EXCLUDED()); class_resourceloader::getInstance()->flushCache(); return $strLog; }