Exemplo n.º 1
0
 /**
  * Given one XMLDBTable and one XMLDBKey, return the SQL statements needded to rename the key in the table
  * Experimental! Shouldn't be used at all!
  */
 function getRenameKeySQL($xmldb_table, $xmldb_key, $newname)
 {
     $results = array();
     /// Get the real key name
     $dbkeyname = find_key_name($xmldb_table, $xmldb_key);
     /// Check we are really generating this type of keys
     if ($xmldb_key->getType() == XMLDB_KEY_PRIMARY && !$this->primary_keys || $xmldb_key->getType() == XMLDB_KEY_UNIQUE && !$this->unique_keys || $xmldb_key->getType() == XMLDB_KEY_FOREIGN && !$this->foreign_keys || $xmldb_key->getType() == XMLDB_KEY_FOREIGN_UNIQUE && !$this->unique_keys && !$this->foreign_keys) {
         /// We aren't generating this type of keys, delegate to child indexes
         $xmldb_index = new XMLDBIndex($xmldb_key->getName());
         $xmldb_index->setFields($xmldb_key->getFields());
         return $this->getRenameIndexSQL($xmldb_table, $xmldb_index, $newname);
     }
     /// Arrived here so we are working with keys, lets rename them
     /// Replace TABLENAME and KEYNAME as needed
     $renamesql = str_replace('TABLENAME', $this->getTableName($xmldb_table), $this->rename_key_sql);
     $renamesql = str_replace('OLDKEYNAME', $dbkeyname, $renamesql);
     $renamesql = str_replace('NEWKEYNAME', $newname, $renamesql);
     /// Some DB doesn't support key renaming so this can be empty
     if ($renamesql) {
         $results[] = $renamesql;
     }
     return $results;
 }
Exemplo n.º 2
0
/**
 * Given an XMLDBKey, check if it exists in the database (true/false).
 * NOTE: I wanted to call this key_exists() to keep the pattern of index_exists() et al,
 * but key_exists() is a PHP core alias for array_key_exists()
 * @param XMLDBTable $table
 * @param XMLDBKey $key
 */
function db_key_exists(XMLDBTable $table, XMLDBKey $key)
{
    global $CFG, $db;
    // If find_key_name returns boolean false, the key doesn't exist. Otherwise, it does exist.
    return false !== find_key_name($table, $key);
}