/**
  * 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 "";
 }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 8
0
 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;
 }
Exemplo n.º 10
0
 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;
 }
Exemplo n.º 13
0
 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;
 }