]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/schema.php
.inc.php please ...
[quix0rs-gnu-social.git] / lib / schema.php
index 0ac2255f16a09bb1806111e06659b1b35fd75448..f536f01645366a911ec95e78e24a16e37e60a88f 100644 (file)
@@ -345,10 +345,12 @@ class Schema
 
     public function dropTable($name)
     {
+        global $_PEAR;
+
         $res = $this->conn->query("DROP TABLE $name");
 
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         return true;
@@ -372,6 +374,8 @@ class Schema
 
     public function createIndex($table, $columnNames, $name=null)
     {
+        global $_PEAR;
+
         if (!is_array($columnNames)) {
             $columnNames = array($columnNames);
         }
@@ -384,8 +388,8 @@ class Schema
                                    "ADD INDEX $name (".
                                    implode(",", $columnNames).")");
 
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         return true;
@@ -402,10 +406,12 @@ class Schema
 
     public function dropIndex($table, $name)
     {
+        global $_PEAR;
+
         $res = $this->conn->query("ALTER TABLE $table DROP INDEX $name");
 
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         return true;
@@ -423,12 +429,14 @@ class Schema
 
     public function addColumn($table, $columndef)
     {
+        global $_PEAR;
+
         $sql = "ALTER TABLE $table ADD COLUMN " . $this->_columnSql($columndef);
 
         $res = $this->conn->query($sql);
 
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         return true;
@@ -447,13 +455,15 @@ class Schema
 
     public function modifyColumn($table, $columndef)
     {
+        global $_PEAR;
+
         $sql = "ALTER TABLE $table MODIFY COLUMN " .
           $this->_columnSql($columndef);
 
         $res = $this->conn->query($sql);
 
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         return true;
@@ -472,12 +482,14 @@ class Schema
 
     public function dropColumn($table, $columnName)
     {
+        global $_PEAR;
+
         $sql = "ALTER TABLE $table DROP COLUMN $columnName";
 
         $res = $this->conn->query($sql);
 
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         return true;
@@ -513,6 +525,8 @@ class Schema
      */
     function runSqlSet(array $statements)
     {
+        global $_PEAR;
+
         $ok = true;
         foreach ($statements as $sql) {
             if (defined('DEBUG_INSTALLER')) {
@@ -520,8 +534,9 @@ class Schema
             }
             $res = $this->conn->query($sql);
 
-            if (PEAR::isError($res)) {
-                throw new Exception($res->getMessage());
+            if ($_PEAR->isError($res)) {
+                common_debug('PEAR exception on query: '.$sql);
+                PEAR_ErrorToPEAR_Exception($res);
             }
         }
         return $ok;
@@ -562,12 +577,18 @@ class Schema
         $uniques = $this->diffArrays($old, $def, 'unique keys');
         $indexes = $this->diffArrays($old, $def, 'indexes');
         $foreign = $this->diffArrays($old, $def, 'foreign keys');
+        $fulltext = $this->diffArrays($old, $def, 'fulltext indexes');
 
         // Drop any obsolete or modified indexes ahead...
         foreach ($indexes['del'] + $indexes['mod'] as $indexName) {
             $this->appendDropIndex($statements, $tableName, $indexName);
         }
 
+        // Drop any obsolete or modified fulltext indexes ahead...
+        foreach ($fulltext['del'] + $fulltext['mod'] as $indexName) {
+            $this->appendDropIndex($statements, $tableName, $indexName);
+        }
+
         // For efficiency, we want this all in one
         // query, instead of using our methods.
 
@@ -624,6 +645,11 @@ class Schema
             $this->appendCreateIndex($statements, $tableName, $indexName, $def['indexes'][$indexName]);
         }
 
+        foreach ($fulltext['mod'] + $fulltext['add'] as $indexName) {
+            $colDef = $def['fulltext indexes'][$indexName];
+            $this->appendCreateFulltextIndex($statements, $tableName, $indexName, $colDef);
+        }
+
         return $statements;
     }
 
@@ -1016,9 +1042,11 @@ class Schema
      */
     protected function fetchQueryData($sql)
     {
+        global $_PEAR;
+
         $res = $this->conn->query($sql);
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
+        if ($_PEAR->isError($res)) {
+            PEAR_ErrorToPEAR_Exception($res);
         }
 
         $out = array();