Ejemplo n.º 1
0
 /**
  * Show install package.
  */
 public function showInstall()
 {
     $packageName = $_GET['name'];
     $package = Curry_PackageManager::getPackage($packageName);
     if (!$package) {
         $this->addMessage('Unable to find package', self::MSG_ERROR);
         return;
     }
     if (Curry_PackageManager::isInstalled($packageName, $package['version'])) {
         $this->addMessage('This package is already installed and is the latest version or newer.', self::MSG_ERROR);
         return;
     }
     $upgrade = array();
     $install = array();
     $dependencies = Curry_PackageManager::getPackageDependencies($packageName);
     $dependencies[$packageName] = $package['version'];
     foreach ($dependencies as $depName => $depVersion) {
         if (in_array($depName, array('currycms', 'php'))) {
             if ($depName == 'php' && version_compare($depVersion, PHP_VERSION, '>')) {
                 throw new Exception('Package requires php ' . $depVersion);
             }
             if ($depName == 'currycms' && version_compare($depVersion, Curry_Core::VERSION, '>')) {
                 throw new Exception('Package requires currycms ' . $depVersion);
             }
         } else {
             if (!Curry_PackageManager::isInstalled($depName)) {
                 $install[] = $depName;
             } else {
                 if (!Curry_PackageManager::isInstalled($depName, $depVersion)) {
                     $upgrade[] = $depName;
                 }
             }
         }
     }
     $form = new Curry_Form(array('action' => url('', $_GET), 'method' => 'post', 'elements' => array('simulate' => array('checkbox', array('label' => 'Simulate', 'description' => 'Run simulation, will not make any modifications to the system.')), 'submit' => array('submit', array('label' => 'Continue')))));
     if (isPost() && $form->isValid($_POST)) {
         $simulate = $form->simulate->isChecked();
         foreach ($upgrade as $packageName) {
             $status = Curry_PackageManager::upgradePackage($packageName, $simulate);
             if ($status) {
                 $this->addMessage($packageName . ' successfully upgraded!', self::MSG_SUCCESS);
             } else {
                 $this->addMessage('There was an error when upgrading ' . $packageName, self::MSG_ERROR);
             }
         }
         foreach ($install as $packageName) {
             $status = Curry_PackageManager::installPackage($packageName, $simulate);
             if ($status) {
                 $this->addMessage($packageName . ' successfully installed!', self::MSG_SUCCESS);
             } else {
                 $this->addMessage('There was an error when installing ' . $packageName, self::MSG_ERROR);
             }
         }
     } else {
         if (count($upgrade)) {
             $this->addMessage('The following packages will be upgraded:');
             foreach ($upgrade as $packageName) {
                 $this->addMessage($packageName);
             }
         }
         if (count($install)) {
             $this->addMessage('The following packages will be installed:');
             foreach ($install as $packageName) {
                 $this->addMessage($packageName);
             }
         }
         $this->addMainContent($form);
     }
 }