private function createDatabase($mediawiki_path) { $schema = strtr('plugin_mediawiki_' . $this->project_id, '-', '_'); $table_file = $mediawiki_path . '/maintenance/tables.sql'; $main_db = ForgeConfig::get('sys_dbname'); db_query('START TRANSACTION;'); try { $this->logger->info('Creating schema ' . $schema); $create_db = db_query_params('CREATE SCHEMA ' . $schema, array()); if (!$create_db) { throw new Exception('Error: Schema Creation Failed: ' . db_error()); } $this->logger->info('Updating mediawiki database.'); if (!file_exists($table_file)) { throw new Exception('Error: Couldn\'t find Mediawiki Database Creation File ' . $table_file); } $this->logger->info('Using schema: ' . $schema); $use_new_schema = db_query('USE ' . $schema); if (!$use_new_schema) { throw new Exception('Error: DB Query Failed: ' . db_error()); } $this->logger->info('Running db_query_from_file(' . $table_file . ')'); $add_tables = db_query_from_file($table_file); if (!$add_tables) { throw new Exception('Error: Mediawiki Database Creation Failed: ' . db_error()); } $this->logger->info('Updating list of mediawiki databases (' . $schema . ')'); db_query('USE ' . $main_db); $update = $this->dao->addDatabase($schema, $this->project_id); if (!$update) { throw new Exception('Error: Mediawiki Database list update failed: ' . mysql_error()); } } catch (Exception $e) { db_query('ROLLBACK;'); $this->logger->error($e->getMessage()); } db_query('COMMIT;'); $this->logger->info('Using schema: ' . $main_db); db_query('USE ' . $main_db); }
$err = "Error: Couldn't find Mediawiki Database Creation File {$table_file}!"; cron_debug($err); cron_entry(23, $err); db_rollback(); exit; } $res = db_query_params("SET search_path={$schema}", array()); if (!$res) { $err = "Error: DB Query Failed: " . db_error(); cron_debug($err); cron_entry(23, $err); db_rollback(); exit; } $creation_query = file_get_contents($table_file); $res = db_query_from_file($table_file); if (!$res) { $err = "Error: Mediawiki Database Creation Failed: " . db_error(); cron_debug($err); cron_entry(23, $err); db_rollback(); exit; } $res = db_query_params("CREATE TEXT SEARCH CONFIGURATION {$schema}.default ( COPY = pg_catalog.english )", array()); if (!$res) { $err = "Error: DB Query Failed: " . db_error(); cron_debug($err); cron_entry(23, $err); db_rollback(); exit; }