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