/** * View to execute task in seperate request. */ protected function showExecTask() { // TODO: make this a POST request $task = $_GET['task']; $defaultReturnValue = unserialize($_GET['default']); $variables = unserialize($_GET['variables']); $package = Curry_PackageManager::getPackage($_GET['package'], $_GET['version']); $returnValue = $package ? Curry_PackageManager::execTask($package, $task, $defaultReturnValue, $variables) : $defaultReturnValue; Curry_Application::returnPartial(serialize($returnValue)); }
/** * Remove package. * * @param string $name * @param bool $simulate * @return bool */ public static function removePackage($name, $simulate = false) { $installedPackage = PackageQuery::create()->findPk($name); if (!$installedPackage) { return false; } $package = Curry_PackageManager::getPackage($installedPackage->getName(), $installedPackage->getVersion()); if (!$package) { return false; } if (!$simulate && !self::execTask($package, 'preRemove', true)) { return false; } foreach ($installedPackage->getPackageFiles() as $file) { $filename = $file->getRealpath(); if (!file_exists($filename)) { self::log('Skipping non-existent file: ' . $file->getFilename(), Curry_Backend::MSG_WARNING); if (!$simulate) { $file->delete(); } continue; } self::log('Removing: ' . $file->getFilename(), Curry_Backend::MSG_SUCCESS); if (!$simulate) { if ($file->fileIsModified()) { $file->backup(); } else { unlink($filename); } $file->delete(); } } if (!$simulate) { $installedPackage->delete(); self::execTaskWithReload($package, 'postRemove'); } self::$installed = null; return true; }