X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fschema.php;h=f536f01645366a911ec95e78e24a16e37e60a88f;hb=8d331b0f351cab61594991c339f44d5dca8096d5;hp=0ac2255f16a09bb1806111e06659b1b35fd75448;hpb=13e1fab919bff215808e7d4670dacb5eb0450f19;p=quix0rs-gnu-social.git diff --git a/lib/schema.php b/lib/schema.php index 0ac2255f16..f536f01645 100644 --- a/lib/schema.php +++ b/lib/schema.php @@ -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();