#18859373 : module uninstall

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7399 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
haneul 2010-04-27 10:05:58 +00:00
parent 258159d0a3
commit 10a9cbf347
19 changed files with 480 additions and 75 deletions

View file

@ -9,6 +9,7 @@
class autoinstallAdminView extends autoinstall {
var $categories;
var $ftp_set = false;
function init() {
$template_path = sprintf("%stpl/",$this->module_path);
@ -18,6 +19,8 @@
$ftp_info = Context::getFTPInfo();
if(!$ftp_info->ftp_root_path) Context::set('show_ftp_note', true);
else $this->ftp_set = true;
$this->dispCategory();
$oModel = &getModel('autoinstall');
@ -39,7 +42,7 @@
{
if(!is_array($items)) $items = array($items);
$item_list = array();
$targets = array('category_srl', 'package_srl', 'item_screenshot_url', 'package_voted', 'package_voter', 'package_description', 'package_downloaded', 'item_regdate', 'title', 'item_version', 'package_star');
$targets = array('category_srl', 'package_srl', 'item_screenshot_url', 'package_voted', 'package_voter', 'package_description', 'package_downloaded', 'item_regdate', 'title', 'item_version', 'package_star', 'depfrom');
$targetpackages = array();
foreach($items as $item)
{
@ -48,7 +51,7 @@
$oModel = &getModel('autoinstall');
if($package == null)
$packages = $oModel->getInstalledPackages(array_keys($targetpackages));
$depto = array();
foreach($items as $item)
{
$v = $this->rearrange($item, $targets);
@ -56,10 +59,52 @@
{
$v->current_version = $packages[$v->package_srl]->current_version;
$v->need_update = $packages[$v->package_srl]->need_update;
$v->type = $oModel->getTypeFromPath($packages[$v->package_srl]->path);
if($this->ftp_set && $v->depfrom) {
$depfrom = explode("," , $v->depfrom);
foreach($depfrom as $package_srl)
{
$depto[$package_srl][] = $v->package_srl;
}
}
if($v->type == "core") $v->avail_remove = false;
else if($v->type == "module") {
$v->avail_remove = $oModel->checkRemovable($packages[$v->package_srl]->path);
}
else $v->avail_remove = true;
}
$item_list[$v->package_srl] = $v;
}
if(count($depto) > 0)
{
$installed = $oModel->getInstalledPackages(implode(",", array_keys($depto)));
foreach($installed as $key=>$val)
{
$path = $val->path;
$type = $oModel->getTypeFromPath($path);
if(!$type || $type == "core") continue;
$config_file = $oModel->getConfigFilePath($type);
if(!$config_file) continue;
$xml = new XmlParser();
$xmlDoc = $xml->loadXmlFile(FileHandler::getRealPath($path).$config_file);
if(!$xmlDoc) continue;
if($type == "drcomponent") $type = "component";
$title = $xmlDoc->{$type}->title->body;
$installed[$key]->title = $title;
}
Context::set('installed', $installed);
foreach($installed as $key=>$val)
{
foreach($depto[$key] as $package_srl)
{
$item_list[$package_srl]->avail_remove = false;
$item_list[$package_srl]->deps[] = $key;
}
}
}
return $item_list;
}
@ -235,5 +280,37 @@
$this->categories = &$oModel->getCategoryList();
Context::set('categories', $this->categories);
}
function dispAutoinstallAdminUninstall()
{
$package_srl = Context::get('package_srl');
if(!$package_srl) return $this->dispAutoinstallAdminIndex();
$oModel =& getModel('autoinstall');
$installedPackage = $oModel->getInstalledPackage($package_srl);
if(!$installedPackage) return $this->dispAutoinstallAdminInstalledPackages();
if(!$_SESSION['ftp_password'])
{
Context::set('need_password', true);
}
$installedPackage = $oModel->getPackage($package_srl);
$path = $installedPackage->path;
$type = $oModel->getTypeFromPath($path);
if(!$type || $type == "core") $this->stop("msg_invalid_request");
$config_file = $oModel->getConfigFilePath($type);
if(!$config_file) $this->stop("msg_invalid_request");
$xml = new XmlParser();
$xmlDoc = $xml->loadXmlFile(FileHandler::getRealPath($path).$config_file);
if(!$xmlDoc) $this->stop("msg_invalid_request");
if($type == "drcomponent") $type = "component";
$title = $xmlDoc->{$type}->title->body;
$installedPackage->title = $title;
$installedPackage->type = $type;
Context::set('package', $installedPackage);
$this->setTemplateFile('uninstall');
Context::addJsFilter($this->module_path.'tpl/filter', 'uninstall_package.xml');
}
}
?>