* adjust extension.

This commit is contained in:
wyd621
2014-03-21 09:10:56 +00:00
parent bf552c1fa9
commit cd349cf78a
5 changed files with 21 additions and 8 deletions

View File

@@ -116,6 +116,8 @@ class extension extends control
*/
public function install($extension, $downLink = '', $md5 = '', $type = '', $overridePackage = 'no', $ignoreCompatible = 'no', $overrideFile = 'no', $agreeLicense = 'no', $upgrade = 'no')
{
set_time_limit(0);
$this->view->error = '';
$installTitle = $upgrade == 'no' ? $this->lang->extension->install : $this->lang->extension->upgrade;
$installType = $upgrade == 'no' ? $this->lang->extension->installExt : $this->lang->extension->upgradeExt;
@@ -341,9 +343,11 @@ class extension extends control
*/
public function uninstall($extension, $confirm = 'no')
{
/* Determine whether need to back up. */
$dbFile = $this->extension->getDBFile($extension, 'uninstall');
if($confirm == 'no' and file_exists($dbFile))
{
$this->view->title = $this->lang->extension->waring;
$this->view->confirm = 'no';
$this->view->code = $extension;
die($this->display());
@@ -358,7 +362,7 @@ class extension extends control
if($preUninstallHook = $this->extension->getHookFile($extension, 'preuninstall')) include $preUninstallHook;
if(file_exists($dbFile)) $this->view->backDBName = $this->extension->backupDB($extension);
if(file_exists($dbFile)) $this->view->backupFile = $this->extension->backupDB($extension);
$this->extension->executeDB($extension, 'uninstall');
$this->extension->updateExtension($extension, array('status' => 'available'));

View File

@@ -65,6 +65,7 @@ $lang->extension->byCategory = 'By Category';
$lang->extension->installFailed = '%s failed, the reason is:';
$lang->extension->uninstallFailed = 'Uninstall failed, the reason is:';
$lang->extension->confirmUninstall = 'Uninstall will delete or modify database, whether to uninstall?';
$lang->extension->noticeBackupDB = 'Before uninstalling, we recommend backing up the database.';
$lang->extension->installFinished = 'Good, the extension has been %s successfully.';
$lang->extension->refreshPage = 'Refresh';
$lang->extension->uninstallFinished = 'Extension has been successfully uninstalled.';
@@ -85,6 +86,8 @@ $lang->extension->upgradeExt = 'Upgrade';
$lang->extension->installExt = 'Install';
$lang->extension->upgradeVersion = '(Upgrade from %s to %s)';
$lang->extension->waring = 'Waring';
$lang->extension->errorOccurs = 'Error:';
$lang->extension->errorGetModules = "Get extensions' categories data from the www.zentao.net failed. ";
$lang->extension->errorGetExtensions = 'Get extensions from www.zentao.net failed. You can visit <a href="http://www.zentao.net/extension/" target="_blank">www.zentao.net</a> to find your extensions, download it manually and then upload to zentaopms to install it.';

View File

@@ -65,6 +65,7 @@ $lang->extension->byCategory = '分类浏览';
$lang->extension->installFailed = '%s失败错误原因如下:';
$lang->extension->uninstallFailed = '卸载失败,错误原因如下:';
$lang->extension->confirmUninstall = '卸载插件会删除或修改相关的数据库,是否继续卸载?';
$lang->extension->noticeBackupDB = '卸载前,建议备份数据库。';
$lang->extension->installFinished = '恭喜您,插件顺利的%s成功';
$lang->extension->refreshPage = '刷新页面';
$lang->extension->uninstallFinished = '插件已经成功卸载';
@@ -85,6 +86,8 @@ $lang->extension->upgradeExt = '升级';
$lang->extension->installExt = '安装';
$lang->extension->upgradeVersion = '(从%s升级到%s';
$lang->extension->waring = '警告';
$lang->extension->errorOccurs = '错误:';
$lang->extension->errorGetModules = '从www.zentao.net获得插件分类失败。可能是因为网络方面的原因请检查后重新刷新页面。';
$lang->extension->errorGetExtensions = '从www.zentao.net获得插件失败。可能是因为网络方面的原因您可以到<a href="http://www.zentao.net/extension/" target="_blank">www.zentao.net</a>手工下载插件,然后上传安装。';

View File

@@ -747,21 +747,23 @@ class extensionModel extends model
$sqls = file_get_contents($this->getDBFile($extension, 'uninstall'));
$sqls = explode(';', $sqls);
/* Get tables for backup. */
$backupTables = array();
foreach($sqls as $sql)
{
$sql = trim($sql);
if(preg_match('/^DROP TABLE `?([^` ]*)`?|^ALTER TABLE `?([^` ]*)`? .*DROP .+/i', $sql, $out))
if(preg_match('/TABLE +`?([^` ]*)`?/i', $sql, $out))
{
if(!empty($out[1])) $backupTables[] = $out[1];
if(!empty($out[2])) $backupTables[] = $out[2];
if(!empty($out[1])) $backupTables[$out[1]] = $out[1];
}
}
/* Back up database. */
if($backupTables)
{
$backDBName = $this->app->getTmpRoot() . $extension . date('Ymd') . '.sql';
if($zdb->backupDB($backDBName, $backupTables) == 0) return $backDBName;
$backupFile = $this->app->getTmpRoot() . $extension . '.' . date('Ymd') . '.sql';
$result = $zdb->dump($backupFile, $backupTables);
if($result->result) return $backupFile;
return false;
}
return false;

View File

@@ -18,8 +18,9 @@
<?php if(isset($confirm) and $confirm == 'no'):?>
<?php
echo "<p class='waring'>{$lang->extension->confirmUninstall}";
echo html::a(inlink('uninstall', "extension=$code&confirm=yes"), $lang->extension->uninstall);
echo html::a(inlink('uninstall', "extension=$code&confirm=yes"), $lang->extension->uninstall, '', "class='btn'");
echo "</p>";
echo "<p>{$lang->extension->noticeBackupDB}</p>"
?>
<?php elseif(!empty($error)):?>
<?php
@@ -29,7 +30,7 @@
<?php else:?>
<?php
echo "<h3 class='a-center success'>{$title}</h3>";
if(!empty($backDBName)) echo '<p>' . sprintf($lang->extension->backDBFile, $backDBName) . '</p>';
if(!empty($backupFile)) echo '<p>' . sprintf($lang->extension->backDBFile, $backupFile) . '</p>';
if($removeCommands)
{
echo "<p class='strong'>{$lang->extension->unremovedFiles}</p>";