Browse Source

Update UpdateController.class.php

star7th 7 years ago
parent
commit
b56e10f821
1 changed files with 50 additions and 119 deletions
  1. 50 119
      server/Application/Home/Controller/UpdateController.class.php

+ 50 - 119
server/Application/Home/Controller/UpdateController.class.php

@@ -3,63 +3,38 @@ namespace Home\Controller;
 use Think\Controller;
 class UpdateController extends BaseController {
     
- 	//升级数据库
+    //升级数据库
     public function db(){
         $this->_clear_runtime();
-    	if (strtolower(C("DB_TYPE")) == 'mysql' ) {
-    		//$this->mysql();
+        if (strtolower(C("DB_TYPE")) == 'mysql' ) {
+            //$this->mysql();
             echo 'ShowDoc does not support mysql any more . https://www.showdoc.cc/help?page_id=31990 ';
-    	}
+        }
         elseif (strtolower(C("DB_TYPE")) == 'sqlite' ) {
             $this->sqlite();
         }
-    	$this->_clear_runtime();
+        $this->_clear_runtime();
     }
     public function sqlite(){
         //catalog表增加parent_cat_id字段
-        $columns = M("catalog")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'parent_cat_id') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD parent_cat_id INT( 10 ) NOT NULL DEFAULT '0' ;";
-                D("catalog")->execute($sql);
-            }
+        if (!$this->_is_column_exist("catalog","parent_cat_id")) {
+            $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD parent_cat_id INT( 10 ) NOT NULL DEFAULT '0' ;";
+            D("catalog")->execute($sql);
         }
 
         //catalog表增加level字段
-        $columns = M("catalog")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'level') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD level INT( 10 ) NOT NULL DEFAULT '2'  ;";
-                D("catalog")->execute($sql);
-            }
+        if (!$this->_is_column_exist("catalog","level")) {
+            $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD level INT( 10 ) NOT NULL DEFAULT '2'  ;";
+            D("catalog")->execute($sql);
         }
 
+
         //item表增加item_domain字段
-        $columns = M("item")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'item_domain') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."item ADD item_domain text NOT NULL DEFAULT '';";
-                D("item")->execute($sql);
-            }
+        if (!$this->_is_column_exist("item","item_domain")) {
+            $sql = "ALTER TABLE ".C('DB_PREFIX')."item ADD item_domain text NOT NULL DEFAULT '';";
+            D("catalog")->execute($sql);
         }
+
         //创建user_token表
         $sql = "CREATE TABLE IF NOT EXISTS `user_token` (
         `id`  INTEGER PRIMARY KEY ,
@@ -83,63 +58,30 @@ class UpdateController extends BaseController {
         D("UserToken")->execute($sql);
 
         //page表增加page_comments字段
-        $columns = D("Page")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'page_comments') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."page ADD page_comments text NOT NULL DEFAULT ''  ;";
-                D("Page")->execute($sql);
-            }
+        if (!$this->_is_column_exist("page","page_comments")) {
+            $sql = "ALTER TABLE ".C('DB_PREFIX')."page ADD page_comments text NOT NULL DEFAULT ''  ;";
+            D("catalog")->execute($sql);
         }
 
+
         //page_history 表增加page_comments字段
-        $columns = D("PageHistory")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'page_comments') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."page_history ADD page_comments text NOT NULL DEFAULT '';";
-                D("PageHistory")->execute($sql);
-            }
+        if (!$this->_is_column_exist("PageHistory","page_comments")) {
+            $sql = "ALTER TABLE ".C('DB_PREFIX')."page_history ADD page_comments text NOT NULL DEFAULT '';";
+            D("catalog")->execute($sql);
         }
 
+
         //item_member表增加member_group_id字段
-        $columns = M("ItemMember")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'member_group_id') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
+        if (!$this->_is_column_exist("ItemMember","member_group_id")) {
                 $sql = "ALTER TABLE ".C('DB_PREFIX')."item_member ADD member_group_id INT( 1 ) NOT NULL DEFAULT '1'  ;";
                 D("ItemMember")->execute($sql);
-            }
         }
 
+
         //item表增加item_type字段
-        $columns = M("Item")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'item_type') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
+        if (!$this->_is_column_exist("Item","item_type")) {
                 $sql = "ALTER TABLE ".C('DB_PREFIX')."item ADD item_type INT( 1 ) NOT NULL DEFAULT '1'  ;";
-                D("Item")->execute($sql);
-            }
+                D("ItemMember")->execute($sql);
         }
 
         //创建options表
@@ -171,20 +113,12 @@ class UpdateController extends BaseController {
         D("UserToken")->execute($sql);
 
         //item表增加is_archived字段
-        $columns = M("Item")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'is_archived') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."item ADD is_archived INT( 1 ) NOT NULL DEFAULT '0'  ;";
-                D("Item")->execute($sql);
-            }
+        if (!$this->_is_column_exist("Item","is_archived")) {
+                $sql = "ALTER TABLE ".C('DB_PREFIX')."item ADD item_type INT( 1 ) NOT NULL DEFAULT '1'  ;";
+                D("ItemMember")->execute($sql);
         }
 
+
         //管理员账户和权限
         if(D("User")->where("username = 'showdoc' ")->find()){
             D("User")->where("username = 'showdoc' ")->save(array("groupid"=> 1)) ;
@@ -193,38 +127,35 @@ class UpdateController extends BaseController {
         }
 
         //item表增加is_del字段
-        $columns = M("Item")->getDbFields();
-        if ($columns) {
-            $has_it = 0 ;//是否存在该字段
-            foreach ($columns as $key => $value) {
-                if ($value == 'is_del') {
-                    $has_it = 1 ;
-                }
-            }
-            if ($has_it === 0) {
+        if (!$this->_is_column_exist("Item","is_del")) {
                 $sql = "ALTER TABLE ".C('DB_PREFIX')."item ADD is_del INT( 1 ) NOT NULL DEFAULT '0'  ;";
-                D("Item")->execute($sql);
-            }
+                D("ItemMember")->execute($sql);
         }
 
         //page表增加is_del字段
-        $columns = M("Page")->getDbFields();
+        if (!$this->_is_column_exist("Page","is_del")) {
+                $sql = "ALTER TABLE ".C('DB_PREFIX')."page ADD is_del INT( 1 ) NOT NULL DEFAULT '0'  ;";
+                D("ItemMember")->execute($sql);
+        }
+
+
+        echo "OK!\n";
+    }
+
+    private function _is_column_exist($table , $column){
+        $has_it = false ;//是否存在该字段
+        $columns = M($table)->getDbFields();
         if ($columns) {
-            $has_it = 0 ;//是否存在该字段
             foreach ($columns as $key => $value) {
-                if ($value == 'is_del') {
-                    $has_it = 1 ;
+                if ($value == $column) {
+                    $has_it = true ;
                 }
             }
-            if ($has_it === 0) {
-                $sql = "ALTER TABLE ".C('DB_PREFIX')."page ADD is_del INT( 1 ) NOT NULL DEFAULT '0'  ;";
-                D("Page")->execute($sql);
-            }
         }
-
-        echo "OK!\n";
+        return $has_it ;
     }
 
+
     private function _clear_runtime($path = RUNTIME_PATH){  
         //给定的目录不是一个文件夹  
         if(!is_dir($path)){