/** * Renders the summary of a single package * * @param interface_packagemanager_packagemanager $objHandler * @param bool $bitIncludeRequiredBy * * @return string */ public function renderPackageDetails(interface_packagemanager_packagemanager $objHandler, $bitIncludeRequiredBy = false) { $objManager = new class_module_packagemanager_manager(); $strReturn = $this->objToolkit->formHeadline($objHandler->getObjMetadata()->getStrTitle()); $strReturn .= $this->objToolkit->getTextRow($objHandler->getObjMetadata()->getStrDescription()); $arrRows = array(); $arrRows[] = array($this->getLang("package_type"), $this->getLang("type_" . $objHandler->getObjMetadata()->getStrType())); $arrRows[] = array($this->getLang("package_version"), $objHandler->getObjMetadata()->getStrVersion()); if ($objHandler->getVersionInstalled() != null) { $arrRows[] = array($this->getLang("package_version_installed"), $objHandler->getVersionInstalled()); } $arrRows[] = array($this->getLang("package_author"), $objHandler->getObjMetadata()->getStrAuthor()); $arrRequiredRows = array(); foreach ($objHandler->getObjMetadata()->getArrRequiredModules() as $strOneModule => $strVersion) { $strStatus = ""; //validate the status $objRequired = $objManager->getPackage($strOneModule); if ($objRequired == null) { $strStatus = "<span class=\"label label-important\">" . $this->getLang("package_missing") . "</span>"; } else { if (version_compare($objRequired->getStrVersion(), $strVersion, ">=")) { $strStatus = "<span class=\"label label-success\">" . $this->getLang("package_version_available") . "</span>"; } else { $strStatus = "<span class=\"label label-important\">" . $this->getLang("package_version_low") . "</span>"; } } $arrRequiredRows[] = array($strOneModule, " >= " . $strVersion, $strStatus); } $arrRows[] = array($this->getLang("package_modules"), $this->objToolkit->dataTable(null, $arrRequiredRows)); if ($bitIncludeRequiredBy) { $arrRequiredBy = $objManager->getArrRequiredBy($objHandler->getObjMetadata()); array_walk($arrRequiredBy, function (&$strOneModule) { $strOneModule = array($strOneModule); }); $arrRows[] = array($this->getLang("package_required_by"), $this->objToolkit->dataTable(null, $arrRequiredBy)); } $strImages = ""; foreach ($objHandler->getObjMetadata()->getArrScreenshots() as $strOneScreenshot) { $strImage = ""; if (uniSubstr($objHandler->getObjMetadata()->getStrPath(), 0, -4) == ".zip") { $objZip = new class_zip(); $objImage = $objZip->getFileFromArchive($objHandler->getObjMetadata()->getStrPath(), $strOneScreenshot); if ($objImage !== false) { $strImage = _images_cachepath_ . "/" . generateSystemid() . uniSubstr($strOneScreenshot, -4); file_put_contents(_realpath_ . $strImage, $objImage); } } else { $strImage = $objHandler->getObjMetadata()->getStrPath() . "/" . $strOneScreenshot; } if ($strImage != "") { $strImages .= "<img src='" . _webpath_ . "/image.php?image=" . urlencode($strImage) . "&maxWidth=300&maxHeight=200' alt='" . $strOneScreenshot . "' /> "; } } $arrRows[] = array($this->getLang("package_screenshots"), $strImages); $strReturn .= $this->objToolkit->dataTable(null, $arrRows); return $strReturn; }
/** * Triggers the update of the passed package. * It is evaluated, if a new version is available. * The provider itself is called via initPackageUpdate, so it's to providers choice * to decide what action to take. * * @param interface_packagemanager_packagemanager $objPackage * * @throws class_exception * @return mixed */ public function updatePackage(interface_packagemanager_packagemanager $objPackage) { $arrProvider = $this->getContentproviders(); foreach ($arrProvider as $objOneProvider) { $arrModule = $objOneProvider->searchPackage($objPackage->getObjMetadata()->getStrTitle()); if (count($arrModule) == 1) { $arrModule = $arrModule[0]; } if ($arrModule != null && isset($arrModule["title"]) && $arrModule["title"] == $objPackage->getObjMetadata()->getStrTitle()) { $objOneProvider->initPackageUpdate($arrModule["title"]); break; } } return "Error loading metainformation for package " . $objPackage->getObjMetadata()->getStrTitle(); }