/** * Returns a list of all packages available. * By default a json-encoded array-like structure. * * @return string|json * @permissions view * @xml */ protected function actionList() { $arrPackages = array(); $intNrOfFiles = 0; $intStart = $this->ensureNumericValue($this->getParam("start"), null); $intEnd = $this->ensureNumericValue($this->getParam("end"), null); $strTypeFilter = $this->isValidCategoryFilter($this->getParam("type")) ? $this->getParam("type") : false; $strNameFilter = trim($this->getParam("title")) != "" ? trim($this->getParam("title")) : false; if ($this->isValidPagingParameter($intStart) && $this->isValidPagingParameter($intEnd)) { if ($intEnd >= $intStart) { $intNrOfFiles = $this->getAllPackagesCount(class_module_system_setting::getConfigValue("_packageserver_repo_id_"), $strTypeFilter, $strNameFilter); $arrDBFiles = $this->getAllPackages(class_module_system_setting::getConfigValue("_packageserver_repo_id_"), $strTypeFilter, $intStart, $intEnd, $strNameFilter); //error-handling: a new filter and a offset is passed. but maybe the passed offset is no longer valid for the new filter criteria if (count($arrDBFiles) == 0 && $intNrOfFiles > 0) { $arrDBFiles = $this->getAllPackages(class_module_system_setting::getConfigValue("_packageserver_repo_id_"), $strTypeFilter, 0, $intNrOfFiles, $strNameFilter); } $objManager = new class_module_packagemanager_manager(); foreach ($arrDBFiles as $objOneFile) { try { $objMetadata = $objManager->getPackageManagerForPath($objOneFile->getStrFilename()); $arrPackages[] = array("systemid" => $objOneFile->getSystemid(), "title" => $objMetadata->getObjMetadata()->getStrTitle(), "version" => $objMetadata->getObjMetadata()->getStrVersion(), "description" => $objMetadata->getObjMetadata()->getStrDescription(), "type" => $objMetadata->getObjMetadata()->getStrType()); } catch (class_exception $objEx) { } } class_module_packageserver_log::generateDlLog($strNameFilter !== false ? $strNameFilter : "", isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : "::1", urldecode($this->getParam("domain"))); class_response_object::getInstance()->setStrResponseType(class_http_responsetypes::STR_TYPE_JSON); } } $result = array(); $result['numberOfTotalItems'] = $intNrOfFiles; $result['items'] = $arrPackages; $result['protocolVersion'] = self::PROTOCOL_VERSION; $strReturn = json_encode($result); return $strReturn; }
/** * This method is called, when the widget should generate it's content. * Return the complete content using the methods provided by the base class. * Do NOT use the toolkit right here! * * @return string */ public function getWidgetOutput() { $strReturn = ""; if (!class_module_system_module::getModuleByName("packagemanager")->rightEdit()) { return $this->getLang("commons_error_permissions"); } $objManager = new class_module_packagemanager_manager(); $arrRemotePackages = $objManager->scanForUpdates(); $strSystemVersion = "n.a."; if (isset($arrRemotePackages["system"])) { $strSystemVersion = $arrRemotePackages["system"]; } $arrUpdates = array(); $arrLocalPackages = $objManager->getAvailablePackages(); foreach ($arrLocalPackages as $objOneMetadata) { if (isset($arrRemotePackages[$objOneMetadata->getStrTitle()])) { if ($arrRemotePackages[$objOneMetadata->getStrTitle()] != null && version_compare($arrRemotePackages[$objOneMetadata->getStrTitle()], $objOneMetadata->getStrVersion(), ">")) { $arrUpdates[$objOneMetadata->getStrTitle()] = $arrRemotePackages[$objOneMetadata->getStrTitle()]; } } } $strReturn .= $this->widgetText($this->getLang("sysinfo_kajona_version") . " " . class_module_system_module::getModuleByName("system")->getStrVersion()); $strReturn .= $this->widgetText($this->getLang("sysinfo_kajona_versionAvail") . " " . $strSystemVersion); $strReturn .= $this->widgetSeparator(); if (count($arrUpdates) > 0) { $strReturn .= $this->widgetText($this->getLang("updatecheck_versionAvail")); } foreach ($arrUpdates as $strPackage => $intVersion) { $strReturn .= $this->widgetText(class_link::getLinkAdmin("packagemanager", "list", "&packagelist_filter=" . $strPackage . "&doFilter=1", $strPackage . " (" . $intVersion . ")")); } return $strReturn; }
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)); }
/** * 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; }
/** * @permissions edit * @return string */ protected function actionUploadPackage() { $this->setArrModuleEntry("template", "/folderview.tpl"); $objManager = new class_module_packagemanager_manager(); $arrContentProvider = $objManager->getContentproviders(); $strProvider = $this->getParam("provider"); $objProvider = null; foreach ($arrContentProvider as $objOneProvider) { if (get_class($objOneProvider) == $strProvider) { $objProvider = $objOneProvider; } } if ($objProvider == null) { return $this->getLang("commons_error_permissions"); } $strFile = $objProvider->processPackageUpload(); if ($strFile == null) { return $this->renderError("provider_error_transfer", "packagemanager"); } if (!$objManager->validatePackage($strFile)) { $objFilesystem = new class_filesystem(); $objFilesystem->fileDelete($strFile); return $this->getLang("provider_error_package", "packagemanager"); } $this->adminReload(class_link::getLinkAdminHref($this->getArrModule("modul"), "processPackage", "&package=" . $strFile)); return ""; }
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; }
/** * Validates if the current package is removable or not. * * @return bool */ public function isRemovable() { $objManager = new class_module_packagemanager_manager(); if (count($objManager->getArrRequiredBy($this->getObjMetadata())) > 0) { return false; } if (!$this->getObjMetadata()->getBitProvidesInstaller()) { return true; } //scan installers in order to query them on their removable status $bitIsRemovable = true; foreach ($this->getInstaller($this->getObjMetadata()) as $objOneInstaller) { if (!$objOneInstaller instanceof interface_installer_removable) { $bitIsRemovable = false; break; } if (!$objOneInstaller->isRemovable()) { $bitIsRemovable = false; break; } } return $bitIsRemovable; }
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; }
public function main() { echo "\n\n"; echo "Kajona Build Project Helper\n"; echo " Params:\n"; echo " projectPath: " . $this->strProjectPath . "\n"; echo " configFile: " . $this->strConfigFile . "\n"; echo " onlySetup: " . ($this->bitOnlyProjectsetup ? "true" : "false") . "\n"; echo "\n\n"; $arrCores = array(); foreach (scandir(__DIR__ . "/" . $this->strProjectPath) as $strRootFolder) { if (strpos($strRootFolder, "core") === false) { continue; } $arrCores[] = $strRootFolder; } //trigger the setup script, try to get the matching one foreach (array_reverse($arrCores) as $strOneCore) { if (file_exists(__DIR__ . "/" . $this->strProjectPath . "/" . $strOneCore . "/setupproject.php")) { require __DIR__ . "/" . $this->strProjectPath . "/" . $strOneCore . "/setupproject.php"; break; } } echo "calling cleanCore script: php -f '" . __DIR__ . "/cleanCore.php' '" . $this->strProjectPath . "'\n"; $arrReturn = array(); exec("php -f \"" . __DIR__ . "/cleanCore.php\" \"" . $this->strProjectPath . "\"", $arrReturn); echo implode("\n", $arrReturn) . "\n"; if ($this->bitOnlyProjectsetup) { return; } //include config echo "include config.php -> " . __DIR__ . "/config.php\n"; require __DIR__ . "/" . $this->strConfigFile; echo "creating modified config.php...\n"; echo "using db-driver " . DB_DRIVER . "...\n"; $strConfigfile = file_get_contents(__DIR__ . "/" . $this->strProjectPath . "/core/module_system/system/config/config.php"); $strConfigfile = str_replace(array("%%defaulthost%%", "%%defaultusername%%", "%%defaultpassword%%", "%%defaultdbname%%", "%%defaultprefix%%", "%%defaultdriver%%", "%%defaultport%%"), array(DB_HOST, DB_USER, DB_PASS, DB_DB, "autotest_", DB_DRIVER, ""), $strConfigfile); $strSearch = "/\\[\\'debuglevel\\'\\]\\s* = 0/"; $strReplace = "['debuglevel'] = 1"; $strConfigfile = preg_replace($strSearch, $strReplace, $strConfigfile); $strSearch = "/\\[\\'debuglogging\\'\\]\\s* = 1/"; $strReplace = "['debuglogging'] = 3"; $strConfigfile = preg_replace($strSearch, $strReplace, $strConfigfile); file_put_contents(__DIR__ . "/" . $this->strProjectPath . "/project/system/config/config.php", $strConfigfile); echo "starting up system-kernel...\n"; include __DIR__ . "/" . $this->strProjectPath . "/core/module_system/bootstrap.php"; $objCarrier = class_carrier::getInstance(); echo "dropping old tables...\n"; $objDB = $objCarrier->getObjDB(); $arrTables = $objDB->getTables(); foreach ($arrTables as $strOneTable) { echo " ... drop table " . $strOneTable . "\n"; $objDB->_pQuery("DROP TABLE " . $strOneTable, array()); } class_carrier::getInstance()->flushCache(class_carrier::INT_CACHE_TYPE_DBQUERIES | class_carrier::INT_CACHE_TYPE_DBTABLES | class_carrier::INT_CACHE_TYPE_MODULES | class_carrier::INT_CACHE_TYPE_OBJECTFACTORY | class_carrier::INT_CACHE_TYPE_ORMCACHE); echo "\n\n"; echo "Blocking browscap update\n"; touch(__DIR__ . "/" . $this->strProjectPath . "/project/temp/cache.lock"); echo "\n\n\n"; echo "Searching for packages to be installed..."; $objManager = new class_module_packagemanager_manager(); $arrPackageMetadata = $objManager->getAvailablePackages(); $arrPackagesToInstall = array(); foreach ($arrPackageMetadata as $objOneMetadata) { if (!in_array($objOneMetadata->getStrTitle(), array("samplecontent"))) { $arrPackagesToInstall[] = $objOneMetadata; } } echo "nr of packages found to install: " . count($arrPackagesToInstall) . "\n"; echo "\n\n"; $intMaxLoops = 0; echo "starting installations...\n"; while (count($arrPackagesToInstall) > 0 && ++$intMaxLoops < 100) { /** @var class_module_packagemanager_metadata $objOneMetadata */ foreach ($arrPackagesToInstall as $intKey => $objOneMetadata) { echo "---------------------------------------------------------------\n"; if (!$objOneMetadata->getBitProvidesInstaller()) { echo "skipping " . $objOneMetadata->getStrTitle() . ", no installer provided...\n\n"; unset($arrPackagesToInstall[$intKey]); continue; } echo "Installing " . $objOneMetadata->getStrTitle() . "...\n\n"; $objHandler = $objManager->getPackageManagerForPath($objOneMetadata->getStrPath()); if (!$objHandler->isInstallable()) { echo "skipping " . $objOneMetadata->getStrTitle() . " due to unresolved requirements\n"; continue; } echo $objHandler->installOrUpdate(); unset($arrPackagesToInstall[$intKey]); echo "\n\n"; } } echo "Installing samplecontent...\n\n"; try { $objHandler = $objManager->getPackageManagerForPath(class_resourceloader::getInstance()->getCorePathForModule("module_samplecontent") . "/module_samplecontent"); } catch (class_exception $objEx) { $objHandler = null; } if ($objHandler !== null) { echo $objHandler->installOrUpdate(); } }
/** * Creates a small print-view of the current package, rendering all relevant key-value-pairs * @permissions view * @return string */ protected function actionShowInfo() { $strReturn = ""; $this->setArrModuleEntry("template", "/folderview.tpl"); /** @var $objPackage class_module_mediamanager_file */ $objPackage = class_objectfactory::getInstance()->getObject($this->getSystemid()); if ($objPackage instanceof class_module_mediamanager_file && $objPackage->rightView()) { $objManager = new class_module_packagemanager_manager(); $objHandler = $objManager->getPackageManagerForPath($objPackage->getStrFilename()); /** @var class_module_packagemanager_admin $objAdmin */ $objAdmin = class_module_system_module::getModuleByName("packagemanager")->getAdminInstanceOfConcreteModule(); $strReturn .= $objAdmin->renderPackageDetails($objHandler); } 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; }
public function processAutoInstall() { $strReturn = ""; $strReturn .= "Searching for packages to be installed...\n"; $objManager = new class_module_packagemanager_manager(); $arrPackageMetadata = $objManager->getAvailablePackages(); $arrPackagesToInstall = array(); foreach ($arrPackageMetadata as $objOneMetadata) { if (!in_array($objOneMetadata->getStrTitle(), array("samplecontent"))) { $arrPackagesToInstall[] = $objOneMetadata; } } $strReturn .= "Number of packages found: " . count($arrPackagesToInstall) . "\n"; $strReturn .= "\n\n"; $intMaxLoops = 0; $strReturn .= "starting installations...\n"; while (count($arrPackagesToInstall) > 0 && ++$intMaxLoops < 100) { foreach ($arrPackagesToInstall as $intKey => $objOneMetadata) { $strReturn .= "------------------------------\n"; if (!$objOneMetadata->getBitProvidesInstaller()) { $strReturn .= "skipping " . $objOneMetadata->getStrTitle() . ", no installer provided...\n"; unset($arrPackagesToInstall[$intKey]); continue; } $strReturn .= "Installing " . $objOneMetadata->getStrTitle() . "...\n"; $objHandler = $objManager->getPackageManagerForPath($objOneMetadata->getStrPath()); if (!$objHandler->isInstallable()) { $strReturn .= "skipping " . $objOneMetadata->getStrTitle() . " due to unresolved requirements\n"; continue; } $strReturn .= $objHandler->installOrUpdate(); unset($arrPackagesToInstall[$intKey]); $strReturn .= "\n"; } } $strReturn .= "Installing samplecontent...\n"; try { $objHandler = $objManager->getPackageManagerForPath(class_resourceloader::getInstance()->getCorePathForModule("module_samplecontent") . "/module_samplecontent"); } catch (class_exception $objEx) { $objHandler = null; } if ($objHandler != null && $objHandler->isInstallable()) { $strReturn .= $objHandler->installOrUpdate(); } return $strReturn; }