public function testRequiredBy() { $objManager = new class_module_packagemanager_manager(); $objSystem = $objManager->getPackage("system"); $arrRequiredBy = $objManager->getArrRequiredBy($objSystem); $this->assertTrue(in_array("packagemanager", $arrRequiredBy)); $this->assertFalse(in_array("system", $arrRequiredBy)); }
/** * Triggers the removal of a single package * * @permissions edit,delete * @throws class_exception * @return string */ protected function actionDeletePackage() { $strReturn = ""; //fetch the package $objManager = new class_module_packagemanager_manager(); $objPackage = $objManager->getPackage($this->getParam("package")); if ($objPackage == null) { throw new class_exception("package not found", class_exception::$level_ERROR); } $strLog = $objManager->removePackage($objPackage); if ($strLog == "") { $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"), "list")); return ""; } $strReturn .= $this->objToolkit->formHeadline($this->getLang("package_removal_header")); $strReturn .= $this->objToolkit->getPreformatted(array($strLog)); $strReturn .= $this->objToolkit->formHeader(class_link::getLinkAdminHref($this->getArrModule("modul"), "list"), "", ""); $strReturn .= $this->objToolkit->formInputSubmit($this->getLang("commons_ok")); $strReturn .= $this->objToolkit->formClose(); return $strReturn; }
private function update_451_452() { $strReturn = ""; $objPackageManager = new class_module_packagemanager_manager(); if ($objPackageManager->getPackage("pages") !== null) { $strReturn .= "Updating search_element tables...\n"; $strQuery = "ALTER TABLE " . $this->objDB->encloseTableName(_dbprefix_ . "element_search") . "\n ADD " . $this->objDB->encloseColumnName("search_query_id") . " " . $this->objDB->getDatatype("char20") . " NULL"; if (!$this->objDB->_pQuery($strQuery, array())) { $strReturn .= "An error occurred! ...\n"; } } $strReturn .= "Updating module-versions...\n"; $this->updateModuleVersion("search", "4.5.2"); $this->updateElementVersion("search", "4.5.2"); return $strReturn; }
private function update_43_431() { $strReturn = "Updating 4.3 to 4.3.1...\n"; $strReturn .= "This update removes the flot chart module and replaces it with the jqplot chart module...\n\n"; //1. install module jqplot $strReturn .= "Installing module jqplot if not exist...\n"; $objManager = new class_module_packagemanager_manager(); $objExistingJqPlotPackage = $objManager->getPackage("jqplot"); //if jqplot is not installed, install it if ($objExistingJqPlotPackage === null) { $objContentProvider = new class_module_packagemanager_contentprovider_kajona(); $arrPackageMetaData = $objContentProvider->searchPackage("jqplot"); //if a package was found if ($arrPackageMetaData !== null && count($arrPackageMetaData) == 1) { //upload the package to projects/temp class_carrier::getInstance()->setParam("systemid", $arrPackageMetaData[0]["systemid"]); $strFile = $objContentProvider->processPackageUpload(); if ($objManager->validatePackage($strFile)) { if (uniSubstr($strFile, -4) == ".zip") { //now extract the zip file and...... $objHandler = $objManager->extractPackage($strFile); $objFilesystem = new class_filesystem(); $objFilesystem->fileDelete($strFile); //move the created folder to /core $objHandler->move2Filesystem(); } } else { $strReturn .= "Package file is not valid...\n"; $strReturn .= "Update to version 4.3.1 cancelled...\n"; return $strReturn; } } else { $strReturn = "Module jqplot was not found via the packagemanager...\n"; $strReturn .= "Update to version 4.3.1 cancelled...\n"; return $strReturn; } } //2. uninstall module flot $strReturn .= "Removing module flotchart if exists...\n"; $objFlotPackage = $objManager->getPackage("flotchart"); if ($objFlotPackage !== null) { //uninstall flot $class_filesystem = new class_filesystem(); $class_filesystem->folderDeleteRecursive($objFlotPackage->getStrPath()); } //3. set jqplot as standard chart library $strReturn .= "Set jqplot as standard chart library if flot was selected standard chart library...\n"; $objSetting = class_module_system_setting::getConfigByName("_system_graph_type_"); if ($objSetting->getStrValue() == "flot") { $objSetting->setStrValue("jqplot"); $objSetting->updateObjectToDb(); } //4. update version to 4.3.1 $strReturn .= "Updating module-versions...\n"; $this->updateModuleVersion("", "4.3.1"); //5. reload classloader etc. class_resourceloader::getInstance()->flushCache(); class_classloader::getInstance()->flushCache(); class_reflection::flushCache(); return $strReturn; }
/** * Renders the list of changes for the passed systemrecord. * May be called from other modules in order to get the rendered list for a single record. * In most cases rendered as a overlay, so in folderview mode * * @param string $strSystemid sytemid to filter * @param string $strSourceModule source-module, required for a working pageview * @param string $strSourceAction source-action, required for a working pageview * @param bool $bitBlockFolderview * * @return string * @since 3.4.0 * @autoTestable * @permissions changelog */ public function actionGenericChangelog($strSystemid = "", $strSourceModule = "system", $strSourceAction = "genericChangelog", $bitBlockFolderview = false) { if (!$bitBlockFolderview && $this->getParam("bitBlockFolderview") == "") { $this->setArrModuleEntry("template", "/folderview.tpl"); } if ($strSystemid == "") { $strSystemid = $this->getSystemid(); } if (!validateSystemid($strSystemid) && $this->getObjModule()->rightChangelog()) { $strReturn = $this->objToolkit->warningBox($this->getLang("generic_changelog_no_systemid")); $strReturn .= $this->objToolkit->formHeader(getLinkAdminHref("system", "genericChangeLog", "bitBlockFolderview=1")); $strReturn .= $this->objToolkit->formInputText("systemid", "systemid"); $strReturn .= $this->objToolkit->formInputSubmit(); $strReturn .= $this->objToolkit->formClose(); return $strReturn; // return "asd"; } $strReturn = ""; // check needed rights - done twice since public and callable by not only the controller // if(!class_carrier::getInstance()->getObjRights()->validatePermissionString(class_rights::$STR_RIGHT_CHANGELOG, $this->getObjModule())) // return $this->getLang("commons_error_permissions"); //showing a list using the pageview $objArraySectionIterator = new class_array_section_iterator(class_module_system_changelog::getLogEntriesCount($strSystemid)); $objArraySectionIterator->setPageNumber((int) ($this->getParam("pv") != "" ? $this->getParam("pv") : 1)); $objArraySectionIterator->setArraySection(class_module_system_changelog::getLogEntries($strSystemid, $objArraySectionIterator->calculateStartPos(), $objArraySectionIterator->calculateEndPos())); $arrData = array(); $arrHeader = array(); $arrHeader[] = $this->getLang("commons_date"); $arrHeader[] = $this->getLang("change_user"); if ($strSystemid == "") { $arrHeader[] = $this->getLang("change_module"); } if ($strSystemid == "") { $arrHeader[] = $this->getLang("change_record"); } $arrHeader[] = $this->getLang("change_action"); $arrHeader[] = $this->getLang("change_property"); $arrHeader[] = $this->getLang("change_oldvalue"); $arrHeader[] = $this->getLang("change_newvalue"); /** @var $objOneEntry class_changelog_container */ foreach ($objArraySectionIterator as $objOneEntry) { $arrRowData = array(); /** @var interface_versionable|class_model $objTarget */ $objTarget = $objOneEntry->getObjTarget(); $strOldValue = $objOneEntry->getStrOldValue(); $strNewValue = $objOneEntry->getStrNewValue(); if ($objTarget != null) { $strOldValue = $objTarget->renderVersionValue($objOneEntry->getStrProperty(), $strOldValue); $strNewValue = $objTarget->renderVersionValue($objOneEntry->getStrProperty(), $strNewValue); } $strOldValue = htmlStripTags($strOldValue); $strNewValue = htmlStripTags($strNewValue); $arrRowData[] = dateToString($objOneEntry->getObjDate()); $arrRowData[] = $this->objToolkit->getTooltipText(uniStrTrim($objOneEntry->getStrUsername(), 15), $objOneEntry->getStrUsername()); if ($strSystemid == "") { $arrRowData[] = $objTarget != null ? $objTarget->getArrModule("modul") : ""; } if ($strSystemid == "") { $arrRowData[] = $objTarget != null ? $this->objToolkit->getTooltipText(uniStrTrim($objTarget->getVersionRecordName(), 20), $objTarget->getVersionRecordName() . " " . $objOneEntry->getStrSystemid()) : ""; } $arrRowData[] = $objTarget != null ? $this->objToolkit->getTooltipText(uniStrTrim($objTarget->getVersionActionName($objOneEntry->getStrAction()), 15), $objTarget->getVersionActionName($objOneEntry->getStrAction())) : ""; $arrRowData[] = $objTarget != null ? $this->objToolkit->getTooltipText(uniStrTrim($objTarget->getVersionPropertyName($objOneEntry->getStrProperty()), 20), $objTarget->getVersionPropertyName($objOneEntry->getStrProperty())) : ""; $arrRowData[] = $this->objToolkit->getTooltipText(uniStrTrim($strOldValue, 20), $strOldValue); $arrRowData[] = $this->objToolkit->getTooltipText(uniStrTrim($strNewValue, 20), $strNewValue); $arrData[] = $arrRowData; } $objManager = new class_module_packagemanager_manager(); if ($objManager->getPackage("phpexcel") != null) { $strReturn .= $this->objToolkit->getContentToolbar(array(class_link::getLinkAdmin($this->getArrModule("modul"), "genericChangelogExportExcel", "&systemid=" . $strSystemid, class_adminskin_helper::getAdminImage("icon_excel") . " " . $this->getLang("change_export_excel"), "", "", false))); } $strReturn .= $this->objToolkit->dataTable($arrHeader, $arrData); $strReturn .= $this->objToolkit->getPageview($objArraySectionIterator, $strSourceModule, $strSourceAction, "&systemid=" . $strSystemid . "&bitBlockFolderview=" . $this->getParam("bitBlockFolderview")); return $strReturn; }
/** * Renders the list of available packages or any other kind of gui-representation * of the packageprovider. * * Whenever the provider is capable of uploading new packages, the copy & and upload process * should be triggered by the admin-class again. * So make sure links or forms point to * module = packagemanager * action = uploadPackage * provider = class_name * The provider will be called using the processPackageUpload method. * * @throws class_exception * @return string */ public function renderPackageList() { $objUser = new class_module_user_user(class_session::getInstance()->getUserID()); $intStart = ($this->getPageNumber() - 1) * $objUser->getIntItemsPerPage(); $intEnd = $intStart + $objUser->getIntItemsPerPage() - 1; $objToolkit = class_carrier::getInstance()->getObjToolkit("admin"); $objLang = class_carrier::getInstance()->getObjLang(); $objManager = new class_module_packagemanager_manager(); $objRemoteloader = $this->getRemoteloader(); $objRemoteloader->setStrQueryParams($this->buildQueryParams($intStart, $intEnd)); $strResponse = ""; try { $strResponse = $objRemoteloader->getRemoteContent(); } catch (class_exception $objEx) { return $objLang->getLang("package_remote_errorloading", self::$STR_MODULE_NAME); } $arrResponse = json_decode($strResponse, true); if ($arrResponse === null) { throw new class_exception("Error loading the remote package list. Got: <br />" . htmlToString($strResponse, true), class_exception::$level_ERROR); } $objRemoteParser = class_module_packagemanager_remoteparser_factory::getRemoteParser($arrResponse, $this->getPageNumber(), $intStart, $intEnd, get_class($this), "&name=" . urlencode($this->getParam("name")) . "&type=" . $this->getParam("type")); $arrPackages = $objRemoteParser->getArrPackages(); $strReturn = $this->createFilterCriteria(); $strReturn .= $objToolkit->listHeader(); if (!$this->containsItems($arrPackages)) { $strReturn .= $objToolkit->getTextRow($objLang->getLang("commons_list_empty", null)); } else { $intI = 0; foreach ($arrPackages as $arrOnePackage) { //check if already installed locally if ($objManager->getPackage($arrOnePackage["title"]) !== null) { $strAction = $objToolkit->listButton(getImageAdmin("icon_installDisabled", $objLang->getLang("package_noinstall_installed", self::$STR_MODULE_NAME))); } else { $strAction = $objToolkit->listButton(getLinkAdmin(self::$STR_MODULE_NAME, "uploadPackage", "provider=" . get_class($this) . "&systemid=" . $arrOnePackage["systemid"], $objLang->getLang("package_install", self::$STR_MODULE_NAME), $objLang->getLang("package_install", self::$STR_MODULE_NAME), "icon_install")); } $strIcon = "icon_module"; if ($arrOnePackage["type"] == "TEMPLATE") { $strIcon = "icon_dot"; } $arrOnePackage["version"] = $objLang->getLang("type_" . $arrOnePackage["type"], self::$STR_MODULE_NAME) . ", V " . $arrOnePackage["version"]; $strReturn .= $objToolkit->genericAdminList($arrOnePackage["systemid"], $arrOnePackage["title"], getImageAdmin($strIcon), $strAction, $intI++, $arrOnePackage["version"], $arrOnePackage["description"]); } } $strReturn .= $objToolkit->listFooter(); $strReturn .= $objRemoteParser->paginationFooter(); return $strReturn; }
/** * Scans all packages available and tries to load the latest version available. * All packages found are returned in a list like * array(packagename => version) * In addition, the update-available messages are triggered internally. * * @return array */ public function scanForUpdates() { $objManager = new class_module_packagemanager_manager(); $arrVersions = $objManager->getArrLatestVersion(); foreach ($arrVersions as $strOneModule => $strOneVersion) { $objMetadata = $objManager->getPackage($strOneModule); if ($objMetadata != null) { $objManager->updateAvailable($objManager->getPackageManagerForPath($objMetadata->getStrPath()), $strOneVersion); } } return $arrVersions; }
/** * Loads all installers and requests a install / update link, if available */ public function createModuleInstalls() { $strReturn = ""; $strInstallLog = ""; $objManager = new class_module_packagemanager_manager(); //module-installs to loop? if (isset($_POST["moduleInstallBox"]) && is_array($_POST["moduleInstallBox"])) { $arrModulesToInstall = $_POST["moduleInstallBox"]; foreach ($arrModulesToInstall as $strOneModule => $strValue) { //search the matching modules foreach ($this->arrMetadata as $objOneMetadata) { if ($strOneModule == "installer_" . $objOneMetadata->getStrTitle()) { $objHandler = $objManager->getPackageManagerForPath($objOneMetadata->getStrPath()); $strInstallLog .= $objHandler->installOrUpdate(); } } } } class_carrier::getInstance()->flushCache(class_carrier::INT_CACHE_TYPE_DBQUERIES | class_carrier::INT_CACHE_TYPE_ORMCACHE | class_carrier::INT_CACHE_TYPE_OBJECTFACTORY | class_carrier::INT_CACHE_TYPE_MODULES); $this->loadInstaller(); $this->strLogfile = $strInstallLog; $strReturn .= $this->getLang("installer_modules_found"); $strRows = ""; $strTemplateID = $this->objTemplates->readTemplate(class_resourceloader::getInstance()->getCorePathForModule("module_installer") . "/module_installer/installer.tpl", "installer_modules_row", true); $strTemplateIDInstallable = $this->objTemplates->readTemplate(class_resourceloader::getInstance()->getCorePathForModule("module_installer") . "/module_installer/installer.tpl", "installer_modules_row_installable", true); //Loading each installer foreach ($this->arrMetadata as $objOneMetadata) { //skip samplecontent if ($objOneMetadata->getStrTitle() == "samplecontent") { continue; } $objHandler = $objManager->getPackageManagerForPath($objOneMetadata->getStrPath()); $arrTemplate = array(); $arrTemplate["module_name"] = $objHandler->getObjMetadata()->getStrTitle(); $arrTemplate["module_nameShort"] = $objHandler->getObjMetadata()->getStrTitle(); $arrTemplate["module_version"] = $objHandler->getObjMetadata()->getStrVersion(); //generate the hint $arrTemplate["module_hint"] = ""; if ($objHandler->getVersionInstalled() !== null) { $arrTemplate["module_hint"] .= $this->getLang("installer_versioninstalled") . $objHandler->getVersionInstalled() . "<br />"; } //check missing modules $arrModules = $objHandler->getObjMetadata()->getArrRequiredModules(); foreach ($arrModules as $strOneModule => $strVersion) { if (trim($strOneModule) != "" && class_module_system_module::getModuleByName(trim($strOneModule)) === null) { //check if a corresponding module is available $objPackagemanager = new class_module_packagemanager_manager(); $objPackage = $objPackagemanager->getPackage($strOneModule); if ($objPackage === null || $objPackage->getBitProvidesInstaller() || version_compare($strVersion, $objPackage->getStrVersion(), ">")) { $arrTemplate["module_hint"] .= $this->getLang("installer_systemversion_needed") . $strOneModule . " >= " . $strVersion . "<br />"; } } else { if (version_compare($strVersion, class_module_system_module::getModuleByName(trim($strOneModule))->getStrVersion(), ">")) { $arrTemplate["module_hint"] .= $this->getLang("installer_systemversion_needed") . $strOneModule . " >= " . $strVersion . "<br />"; } } } if ($objHandler->isInstallable()) { $strRows .= $this->objTemplates->fillTemplate($arrTemplate, $strTemplateIDInstallable); } else { $strRows .= $this->objTemplates->fillTemplate($arrTemplate, $strTemplateID); } } //wrap in form $strTemplateID = $this->objTemplates->readTemplate(class_resourceloader::getInstance()->getCorePathForModule("module_installer") . "/module_installer/installer.tpl", "installer_modules_form", true); $strReturn .= $this->objTemplates->fillTemplate(array("module_rows" => $strRows), $strTemplateID); $this->strOutput .= $strReturn; if ($this->isInstalled()) { $this->strBackwardLink = $this->getBackwardLink(_webpath_ . "/installer.php?step=loginData"); } else { $this->strBackwardLink = $this->getBackwardLink(_webpath_ . "/installer.php?step=modeSelect"); } $this->strForwardLink = $this->getForwardLink(_webpath_ . "/installer.php?step=samplecontent"); }