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 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; }
/** * 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; }