Esempio n. 1
0
 /**
  * Rename a table column
  * Use this only on aleady "abstracted" tables.
  *
  * @param	string		table name
  * @param	string		old column name
  * @param	string		new column name
  */
 function renameTableColumn($a_table, $a_column, $a_new_column)
 {
     // check table name
     if (!$this->checkColumnName($a_new_column)) {
         $this->raisePearError("ilDB Error: renameTableColumn(" . $a_table . "," . $a_column . "," . $a_new_column . ")<br />" . $this->error_str);
     }
     $manager = $this->db->loadModule('Manager');
     $reverse = $this->db->loadModule('Reverse');
     $def = $reverse->getTableFieldDefinition($a_table, $a_column);
     $this->handleError($def, "renameTableColumn(" . $a_table . "," . $a_column . "," . $a_new_column . ")");
     if (is_file("./Services/Database/classes/class.ilDBAnalyzer.php")) {
         include_once "./Services/Database/classes/class.ilDBAnalyzer.php";
     } else {
         include_once "../Services/Database/classes/class.ilDBAnalyzer.php";
     }
     $analyzer = new ilDBAnalyzer();
     $best_alt = $analyzer->getBestDefinitionAlternative($def);
     $def = $def[$best_alt];
     unset($def["nativetype"]);
     unset($def["mdb2type"]);
     $f["definition"] = $def;
     $f["name"] = $a_new_column;
     $changes = array("rename" => array($a_column => $f));
     $r = $manager->alterTable($a_table, $changes, false);
     return $this->handleError($r, "renameTableColumn(" . $a_table . "," . $a_column . "," . $a_new_column . ")");
 }