Exemplo n.º 1
0
 /**
  * Given one xmldb_table, check if it exists in DB (true/false)
  *
  * @param mixed the table to be searched (string name or xmldb_table instance)
  * @param bool temp table (might need different checks)
  * @return boolean true/false
  */
 public function table_exists($table, $temptable = false)
 {
     global $CFG;
     if (!$temptable) {
         return parent::table_exists($table, $temptable);
     }
     if (is_string($table)) {
         $tablename = $table;
     } else {
         /// Calculate the name of the table
         $tablename = $table->getName();
     }
     /// Do this function silenty (to avoid output in install/upgrade process)
     $olddbdebug = $this->mdb->get_debug();
     $this->mdb->set_debug(false);
     $oldcfgdebug = $CFG->debug;
     $CFG->debug = 0;
     // ugly hack - mysql does not list temporary tables :-(
     // this polutes the db log with errors :-(
     // TODO: is there a better way?
     try {
         $result = $this->mdb->execute("DESCRIBE {" . $tablename . "}");
     } catch (Exception $e) {
         $result = false;
     }
     if ($result === false) {
         $exists = false;
     } else {
         $exists = true;
     }
     /// Re-set original debug
     $this->mdb->set_debug($olddbdebug);
     $CFG->debug = $oldcfgdebug;
     return $exists;
 }