Ejemplo n.º 1
0
 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 . "' />&nbsp;";
         }
     }
     $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;
 }