本文整理汇总了PHP中moodle_database类的典型用法代码示例。如果您正苦于以下问题:PHP moodle_database类的具体用法?PHP moodle_database怎么用?PHP moodle_database使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了moodle_database类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* Object constructor.
*
* @param moodle_database $mdb Connection to the target database (a
* @see moodle_database object). Use null to use the current $DB connection.
* @param boolean $check_schema - whether or not to check that XML database
* schema matches the RDBMS database schema before importing (inside
* @see begin_database_import).
*/
public function __construct(moodle_database $mdb, $check_schema = true)
{
$this->mdb = $mdb;
$this->manager = $mdb->get_manager();
$this->schema = $this->manager->get_install_xml_schema();
$this->check_schema = $check_schema;
}
示例2: test_concurrent_temp_tables
public function test_concurrent_temp_tables()
{
$DB = $this->tdb;
// do not use global $DB!
$dbman = $this->tdb->get_manager();
// Define 2 records
$record1 = (object) array('course' => 1, 'secondname' => '11 important', 'intro' => '111 important');
$record2 = (object) array('course' => 2, 'secondname' => '22 important', 'intro' => '222 important');
// Create temp table1 and insert 1 record (in DB)
$table = $this->tables['test_table1'];
$dbman->create_temp_table($table);
$this->assertTrue($dbman->table_exists('test_table1'));
$inserted = $DB->insert_record('test_table1', $record1);
// Switch to new connection
$cfg = $DB->export_dbconfig();
if (!isset($cfg->dboptions)) {
$cfg->dboptions = array();
}
$DB2 = moodle_database::get_driver_instance($cfg->dbtype, $cfg->dblibrary);
$DB2->connect($cfg->dbhost, $cfg->dbuser, $cfg->dbpass, $cfg->dbname, $cfg->prefix, $cfg->dboptions);
$dbman2 = $DB2->get_manager();
$this->assertFalse($dbman2->table_exists('test_table1'));
// Temp table not exists in DB2
// Create temp table1 and insert 1 record (in DB2)
$table = $this->tables['test_table1'];
$dbman2->create_temp_table($table);
$this->assertTrue($dbman2->table_exists('test_table1'));
$inserted = $DB2->insert_record('test_table1', $record2);
$dbman2->drop_temp_table($table);
// Drop temp table before closing DB2
$this->assertFalse($dbman2->table_exists('test_table1'));
$DB2->dispose();
// Close DB2
$this->assertTrue($dbman->table_exists('test_table1'));
// Check table continues existing for DB
$dbman->drop_temp_table($table);
// Drop temp table
$this->assertFalse($dbman->table_exists('test_table1'));
}
示例3: test_concurent_transactions
function test_concurent_transactions()
{
// Notes about this test:
// 1- MySQL needs to use one engine with transactions support (InnoDB).
// 2- MSSQL needs to have enabled versioning for read committed
// transactions (ALTER DATABASE xxx SET READ_COMMITTED_SNAPSHOT ON)
$DB = $this->tdb;
$dbman = $DB->get_manager();
$table = $this->get_test_table();
$tablename = $table->getName();
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('course', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0');
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
$dbman->create_table($table);
$transaction = $DB->start_delegated_transaction();
$data = (object) array('course' => 1);
$this->assertEqual(0, $DB->count_records($tablename));
$DB->insert_record($tablename, $data);
$this->assertEqual(1, $DB->count_records($tablename));
//open second connection
$cfg = $DB->export_dbconfig();
if (!isset($cfg->dboptions)) {
$cfg->dboptions = array();
}
$DB2 = moodle_database::get_driver_instance($cfg->dbtype, $cfg->dblibrary);
$DB2->connect($cfg->dbhost, $cfg->dbuser, $cfg->dbpass, $cfg->dbname, $cfg->prefix, $cfg->dboptions);
// second instance should not see pending inserts
$this->assertEqual(0, $DB2->count_records($tablename));
$data = (object) array('course' => 2);
$DB2->insert_record($tablename, $data);
$this->assertEqual(1, $DB2->count_records($tablename));
// first should see the changes done from second
$this->assertEqual(2, $DB->count_records($tablename));
// now commit and we should see it finally in second connections
$transaction->allow_commit();
$this->assertEqual(2, $DB2->count_records($tablename));
$DB2->dispose();
}
示例4: spl_autoload_register
} else {
spl_autoload_register('core_component::classloader');
}
require $CFG->dirroot . '/version.php';
$CFG->target_release = $release;
\core\session\manager::init_empty_session();
global $SESSION;
global $USER;
global $COURSE;
$COURSE = new stdClass();
$COURSE->id = 1;
global $SITE;
$SITE = $COURSE;
define('SITEID', 1);
//Database types
$databases = array('mysqli' => moodle_database::get_driver_instance('mysqli', 'native'), 'mariadb' => moodle_database::get_driver_instance('mariadb', 'native'), 'pgsql' => moodle_database::get_driver_instance('pgsql', 'native'), 'oci' => moodle_database::get_driver_instance('oci', 'native'), 'sqlsrv' => moodle_database::get_driver_instance('sqlsrv', 'native'), 'mssql' => moodle_database::get_driver_instance('mssql', 'native'));
foreach ($databases as $type => $database) {
if ($database->driver_installed() !== true) {
unset($databases[$type]);
}
}
if (empty($databases)) {
$defaultdb = '';
} else {
reset($databases);
$defaultdb = key($databases);
}
// now get cli options
list($options, $unrecognized) = cli_get_params(array('chmod' => isset($distro->directorypermissions) ? sprintf('%04o', $distro->directorypermissions) : '2777', 'lang' => $CFG->lang, 'wwwroot' => '', 'dataroot' => empty($distro->dataroot) ? str_replace('\\', '/', dirname(dirname(dirname(dirname(__FILE__)))) . '/moodledata') : $distro->dataroot, 'dbtype' => empty($distro->dbtype) ? $defaultdb : $distro->dbtype, 'dbhost' => empty($distro->dbhost) ? 'localhost' : $distro->dbhost, 'dbname' => 'moodle', 'dbuser' => empty($distro->dbuser) ? 'root' : $distro->dbuser, 'dbpass' => '', 'dbport' => '', 'dbsocket' => '', 'prefix' => 'mdl_', 'fullname' => '', 'shortname' => '', 'summary' => '', 'adminuser' => 'admin', 'adminpass' => '', 'adminemail' => '', 'non-interactive' => false, 'agree-license' => false, 'allow-unstable' => false, 'help' => false), array('h' => 'help'));
$interactive = empty($options['non-interactive']);
// set up language
示例5: test_session_locks
public function test_session_locks()
{
$DB = $this->tdb;
$dbman = $DB->get_manager();
// Open second connection.
$cfg = $DB->export_dbconfig();
if (!isset($cfg->dboptions)) {
$cfg->dboptions = array();
}
$DB2 = moodle_database::get_driver_instance($cfg->dbtype, $cfg->dblibrary);
$DB2->connect($cfg->dbhost, $cfg->dbuser, $cfg->dbpass, $cfg->dbname, $cfg->prefix, $cfg->dboptions);
// Testing that acquiring a lock effectively locks.
// Get a session lock on connection1.
$rowid = rand(100, 200);
$timeout = 1;
$DB->get_session_lock($rowid, $timeout);
// Try to get the same session lock on connection2.
try {
$DB2->get_session_lock($rowid, $timeout);
$DB2->release_session_lock($rowid);
// Should not be executed, but here for safety.
$this->fail('An Exception is missing, expected due to session lock acquired.');
} catch (moodle_exception $e) {
$this->assertInstanceOf('dml_sessionwait_exception', $e);
$DB->release_session_lock($rowid);
// Release lock on connection1.
}
// Testing that releasing a lock effectively frees.
// Get a session lock on connection1.
$rowid = rand(100, 200);
$timeout = 1;
$DB->get_session_lock($rowid, $timeout);
// Release the lock on connection1.
$DB->release_session_lock($rowid);
// Get the just released lock on connection2.
$DB2->get_session_lock($rowid, $timeout);
// Release the lock on connection2.
$DB2->release_session_lock($rowid);
$DB2->dispose();
}
示例6: instantiate
/**
* Call this statically to connect to the DB using the unittest prefix, instantiate
* the unit test db, store it as a member variable, instantiate $this and use it as the new global $DB.
*/
public static function instantiate()
{
global $CFG, $DB;
UnitTestDB::$real_db = clone $DB;
if (empty($CFG->unittestprefix)) {
print_error("prefixnotset", 'tool_unittest');
}
if (empty(UnitTestDB::$DB)) {
UnitTestDB::$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
UnitTestDB::$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->unittestprefix);
}
$manager = UnitTestDB::$DB->get_manager();
if (!$manager->table_exists('user')) {
print_error('tablesnotsetup', 'tool_unittest');
}
$DB = new UnitTestDB();
}
示例7: get_drivers
/**
* Returns list of fully working database drivers present in system.
* @return array
*/
public static function get_drivers()
{
return array('' => get_string('choosedots'), 'native/mysqli' => \moodle_database::get_driver_instance('mysqli', 'native')->get_name(), 'native/mariadb' => \moodle_database::get_driver_instance('mariadb', 'native')->get_name(), 'native/pgsql' => \moodle_database::get_driver_instance('pgsql', 'native')->get_name(), 'native/oci' => \moodle_database::get_driver_instance('oci', 'native')->get_name(), 'native/sqlsrv' => \moodle_database::get_driver_instance('sqlsrv', 'native')->get_name(), 'native/mssql' => \moodle_database::get_driver_instance('mssql', 'native')->get_name());
}
示例8: install_print_header
if ($config->stage == INSTALL_DATABASETYPE) {
$CFG->early_install_lang = false;
// Finally ask for DB type
install_print_header($config, get_string('database', 'install'),
get_string('databasetypehead', 'install'),
get_string('databasetypesub', 'install'));
$databases = array('mysqli' => moodle_database::get_driver_instance('mysqli', 'native'),
'mariadb'=> moodle_database::get_driver_instance('mariadb', 'native'),
'pgsql' => moodle_database::get_driver_instance('pgsql', 'native'),
'oci' => moodle_database::get_driver_instance('oci', 'native'),
'sqlsrv' => moodle_database::get_driver_instance('sqlsrv', 'native'), // MS SQL*Server PHP driver
'mssql' => moodle_database::get_driver_instance('mssql', 'native'), // FreeTDS driver
);
echo '<div class="userinput">';
echo '<div class="formrow"><label class="formlabel" for="dbtype">'.get_string('dbtype', 'install').'</label>';
echo '<select id="dbtype" name="dbtype" class="forminput">';
$disabled = array();
$options = array();
foreach ($databases as $type=>$database) {
if ($database->driver_installed() !== true) {
$disabled[$type] = $database;
continue;
}
echo '<option value="'.s($type).'">'.$database->get_name().'</option>';
}
if ($disabled) {
示例9: tool_dbtransfer_get_drivers
/**
* Returns list of fully working database drivers present in system.
* @return array
*/
function tool_dbtransfer_get_drivers()
{
global $CFG;
$files = new RegexIterator(new DirectoryIterator("{$CFG->libdir}/dml"), '|^.*_moodle_database\\.php$|');
$drivers = array();
foreach ($files as $file) {
$matches = null;
preg_match('|^([a-z0-9]+)_([a-z]+)_moodle_database\\.php$|', $file->getFilename(), $matches);
if (!$matches) {
continue;
}
$dbtype = $matches[1];
$dblibrary = $matches[2];
if ($dbtype === 'sqlite3') {
// Blacklist unfinished drivers.
continue;
}
$targetdb = moodle_database::get_driver_instance($dbtype, $dblibrary, false);
if ($targetdb->driver_installed() !== true) {
continue;
}
$driver = $dbtype . '/' . $dblibrary;
$drivers[$driver] = $targetdb->get_name();
}
return $drivers;
}
示例10: dispose
/**
* Dispose off database connection after pushing any buffered events to the database.
*/
public function dispose()
{
$this->helper_dispose();
if ($this->extdb) {
$this->extdb->dispose();
}
$this->extdb = null;
}
示例11: save_discussion
/**
* Save the discussion to the DB
*
* @param object $discussion
* @param upload_file $uploader
*/
public function save_discussion($discussion, upload_file $uploader)
{
$message = '';
$discussion->id = hsuforum_add_discussion($discussion, null, $message);
$file = $uploader->process_file_upload($discussion->firstpost);
if (!is_null($file)) {
$this->db->set_field('hsuforum_posts', 'attachment', 1, array('id' => $discussion->firstpost));
}
}
示例12: handler_gc
/**
* GC session handler.
*
* {@see http://php.net/manual/en/function.session-set-save-handler.php}
*
* @param int $ignored_maxlifetime moodle uses special timeout rules
* @return bool success
*/
public function handler_gc($ignored_maxlifetime)
{
// This should do something only if cron is not running properly...
if (!($stalelifetime = ini_get('session.gc_maxlifetime'))) {
return true;
}
$params = array('purgebefore' => time() - $stalelifetime);
$this->database->delete_records_select('sessions', 'userid = 0 AND timemodified < :purgebefore', $params);
return true;
}
示例13: release_lock
/**
* Release a lock that was previously obtained with @lock.
* @param lock $lock - a lock obtained from this factory.
* @return boolean - true if the lock is no longer held (including if it was never held).
*/
public function release_lock(lock $lock)
{
$params = array('locktype' => $this->dblockid, 'token' => $lock->get_key());
$result = $this->db->get_record_sql('SELECT pg_advisory_unlock(:locktype, :token) AS unlocked', $params);
$result = $result->unlocked === 't';
if ($result) {
unset($this->openlocks[$lock->get_key()]);
}
return $result;
}
示例14: commit
/**
* Commit new records.
*
* @return void
*/
public function commit()
{
$request = (object) array('pid' => getmypid(), 'threadid' => ZEND_THREAD_SAFE ? zend_thread_id() : null, 'uid' => getmyuid(), 'url' => $this->url->out_as_local_url(false), 'hostname' => gethostname(), 'memory' => memory_get_usage(), 'peakmemory' => memory_get_peak_usage());
// Not supported on Windows until PHP 7
if (function_exists('getrusage')) {
$resourceusage = getrusage();
$request->numswaps = $resourceusage['ru_nswap'];
$request->numpagefaults = $resourceusage['ru_majflt'];
$request->usertime = $resourceusage['ru_utime.tv_usec'];
}
$request->id = $this->db->insert_record('telemetry_request', $request);
foreach ($this->additionalstate as $collector) {
$table = $collector->get_table();
$records = $collector->get_records();
foreach ($records as $record) {
$record->requestid = $request->id;
}
$this->db->insert_records($table, $records);
}
}
示例15: extend_lock
/**
* Extend a lock that was previously obtained with @lock.
* @param lock $lock - a lock obtained from this factory.
* @param int $maxlifetime - the new lifetime for the lock (in seconds).
* @return boolean - true if the lock was extended.
*/
public function extend_lock(lock $lock, $maxlifetime = 86400)
{
$now = time();
$expires = $now + $maxlifetime;
$params = array('expires' => $expires, 'token' => $lock->get_key());
$sql = 'UPDATE {lock_db}
SET
expires = :expires,
WHERE
owner = :token';
$this->db->execute($sql, $params);
$countparams = array('owner' => $lock->get_key());
$result = $this->count_records('lock_db', $countparams);
return $result === 0;
}