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