本文整理汇总了PHP中progress_bar::update方法的典型用法代码示例。如果您正苦于以下问题:PHP progress_bar::update方法的具体用法?PHP progress_bar::update怎么用?PHP progress_bar::update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类progress_bar
的用法示例。
在下文中一共展示了progress_bar::update方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: print_progress
/**
* Called before starting to upgrade all the attempts at a particular quiz.
* @param int $done the number of quizzes processed so far.
* @param int $outof the total number of quizzes to process.
* @param int $quizid the id of the quiz that is about to be processed.
*/
protected function print_progress($done, $outof, $quizid) {
if (is_null($this->progressbar)) {
$this->progressbar = new progress_bar('qe2upgrade');
$this->progressbar->create();
}
gc_collect_cycles(); // This was really helpful in PHP 5.2. Perhaps remove.
$a = new stdClass();
$a->done = $done;
$a->outof = $outof;
$a->info = $quizid;
$this->progressbar->update($done, $outof, get_string('upgradingquizattempts', 'quiz', $a));
}
示例2: xmldb_qtype_ddmarker_install
/**
* Installation code for the ddmarker question type. It converts all existing imagetarget questions to ddmarker
*/
function xmldb_qtype_ddmarker_install()
{
global $DB, $OUTPUT;
$from = 'FROM {question_categories} cat, {question} q';
$where = ' WHERE q.qtype = \'imagetarget\' AND q.category = cat.id ';
$sql = 'SELECT q.*, cat.contextid ' . $from . $where . 'ORDER BY cat.id, q.name';
$questions = $DB->get_records_sql($sql);
if (!empty($questions)) {
require_once dirname(__FILE__) . '/../lib.php';
$dragssql = 'SELECT drag.* ' . $from . ', {qtype_ddmarker_drags} drag' . $where . ' AND drag.questionid = q.id';
$drags = xmldb_qtype_ddmarker_index_array_of_records_by_key('questionid', $DB->get_records_sql($dragssql));
$dropssql = 'SELECT drp.* ' . $from . ', {qtype_ddmarker_drops} drp' . $where . ' AND drp.questionid = q.id';
$drops = xmldb_qtype_ddmarker_index_array_of_records_by_key('questionid', $DB->get_records_sql($dropssql));
$answerssql = 'SELECT answer.* ' . $from . ', {question_answers} answer' . $where . ' AND answer.question = q.id';
$answers = xmldb_qtype_ddmarker_index_array_of_records_by_key('question', $DB->get_records_sql($answerssql));
$imgfiles = $DB->get_records_sql_menu('SELECT question, qimage FROM {question_imagetarget}');
$progressbar = new progress_bar('qtype_ddmarker_convert_from_imagetarget');
$progressbar->create();
$done = 0;
foreach ($questions as $question) {
qtype_ddmarker_convert_image_target_question($question, $imgfiles[$question->id], $answers[$question->id]);
$done++;
$progressbar->update($done, count($questions), get_string('convertingimagetargetquestion', 'qtype_ddmarker', $question));
}
list($qsql, $qparams) = $DB->get_in_or_equal(array_keys($questions));
$DB->delete_records_select('question_answers', 'question ' . $qsql, $qparams);
$dbman = $DB->get_manager();
$dbman->drop_table(new xmldb_table('question_imagetarget'));
}
}
示例3: xmldb_assignment_upgrade
function xmldb_assignment_upgrade($oldversion) {
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager();
// Moodle v2.2.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.3.0 release upgrade line
// Put any upgrade step following this
if ($oldversion < 2012061701) {
// Fixed/updated numfiles field in assignment_submissions table to count the actual
// number of files has been uploaded when sendformarking is disabled
upgrade_set_timeout(600); // increase excution time for in large sites
$fs = get_file_storage();
// Fetch the moduleid for use in the course_modules table
$moduleid = $DB->get_field('modules', 'id', array('name' => 'assignment'), MUST_EXIST);
$selectcount = 'SELECT COUNT(s.id) ';
$select = 'SELECT s.id, cm.id AS cmid ';
$query = 'FROM {assignment_submissions} s
JOIN {assignment} a ON a.id = s.assignment
JOIN {course_modules} cm ON a.id = cm.instance AND cm.module = :moduleid
WHERE assignmenttype = :assignmenttype';
$params = array('moduleid' => $moduleid, 'assignmenttype' => 'upload');
$countsubmissions = $DB->count_records_sql($selectcount.$query, $params);
$submissions = $DB->get_recordset_sql($select.$query, $params);
$pbar = new progress_bar('assignmentupgradenumfiles', 500, true);
$i = 0;
foreach ($submissions as $sub) {
$i++;
if ($context = context_module::instance($sub->cmid)) {
$sub->numfiles = count($fs->get_area_files($context->id, 'mod_assignment', 'submission', $sub->id, 'sortorder', false));
$DB->update_record('assignment_submissions', $sub);
}
$pbar->update($i, $countsubmissions, "Counting files of submissions ($i/$countsubmissions)");
}
$submissions->close();
// assignment savepoint reached
upgrade_mod_savepoint(true, 2012061701, 'assignment');
}
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.5.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
示例4: xmldb_qtype_essay_upgrade
/**
* Upgrade code for the essay question type.
* @param int $oldversion the version we are upgrading from.
*/
function xmldb_qtype_essay_upgrade($oldversion)
{
global $CFG, $DB;
$dbman = $DB->get_manager();
// Moodle v2.2.0 release upgrade line
// Put any upgrade step following this
if ($oldversion < 2011102701) {
$sql = "\n FROM {question} q\n JOIN {question_answers} qa ON qa.question = q.id\n\n WHERE q.qtype = 'essay'\n AND " . $DB->sql_isnotempty('question_answers', 'feedback', false, true);
// In Moodle <= 2.0 essay had both question.generalfeedback and question_answers.feedback.
// This was silly, and in Moodel >= 2.1 only question.generalfeedback. To avoid
// dataloss, we concatenate question_answers.feedback onto the end of question.generalfeedback.
$count = $DB->count_records_sql("\n SELECT COUNT(1) {$sql}");
if ($count) {
$progressbar = new progress_bar('essay23', 500, true);
$done = 0;
$toupdate = $DB->get_recordset_sql("\n SELECT q.id,\n q.generalfeedback,\n q.generalfeedbackformat,\n qa.feedback,\n qa.feedbackformat\n {$sql}");
foreach ($toupdate as $data) {
$progressbar->update($done, $count, "Updating essay feedback ({$done}/{$count}).");
upgrade_set_timeout(60);
if ($data->generalfeedbackformat == $data->feedbackformat) {
$DB->set_field('question', 'generalfeedback', $data->generalfeedback . $data->feedback, array('id' => $data->id));
} else {
$newdata = new stdClass();
$newdata->id = $data->id;
$newdata->generalfeedback = qtype_essay_convert_to_html($data->generalfeedback, $data->generalfeedbackformat) . qtype_essay_convert_to_html($data->feedback, $data->feedbackformat);
$newdata->generalfeedbackformat = FORMAT_HTML;
$DB->update_record('question', $newdata);
}
}
$progressbar->update($count, $count, "Updating essay feedback complete!");
$toupdate->close();
}
// Essay savepoint reached.
upgrade_plugin_savepoint(true, 2011102701, 'qtype', 'essay');
}
if ($oldversion < 2011102702) {
// Then we delete the old question_answers rows for essay questions.
$DB->delete_records_select('question_answers', "question IN (SELECT id FROM {question} WHERE qtype = 'essay')");
// Essay savepoint reached.
upgrade_plugin_savepoint(true, 2011102702, 'qtype', 'essay');
}
// Moodle v2.3.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
return true;
}
示例5: geogebra_migrate_files
/**
* Migrate geogebra package to new area if found
*
* @return
*/
function geogebra_migrate_files()
{
global $CFG, $DB;
$fs = get_file_storage();
$sqlfrom = "FROM {geogebra} j\n JOIN {modules} m ON m.name = 'geogebra'\n JOIN {course_modules} cm ON (cm.module = m.id AND cm.instance = j.id)";
$count = $DB->count_records_sql("SELECT COUNT('x') {$sqlfrom}");
$rs = $DB->get_recordset_sql("SELECT j.id, j.url, j.course, cm.id AS cmid {$sqlfrom} ORDER BY j.course, j.id");
if ($rs->valid()) {
$pbar = new progress_bar('migrategeogebrafiles', 500, true);
$i = 0;
foreach ($rs as $geogebra) {
$i++;
upgrade_set_timeout(180);
// set up timeout, may also abort execution
$pbar->update($i, $count, "Migrating geogebra files - {$i}/{$count}.");
$context = context_module::instance($geogebra->cmid);
$coursecontext = context_course::instance($geogebra->course);
if (!geogebra_is_valid_external_url($geogebra->url)) {
// first copy local files if found - do not delete in case they are shared ;-)
$geogebrafile = clean_param($geogebra->url, PARAM_PATH);
$pathnamehash = sha1("/{$coursecontext->id}/course/legacy/0/{$geogebrafile}");
if ($file = $fs->get_file_by_hash($pathnamehash)) {
$file_record = array('contextid' => $context->id, 'component' => 'mod_geogebra', 'filearea' => 'content', 'itemid' => 0, 'filepath' => '/');
try {
$fs->create_file_from_storedfile($file_record, $file);
} catch (Exception $x) {
// ignore any errors, we can not do much anyway
}
$geogebra->url = $pathnamehash;
} else {
$geogebra->url = '';
}
$DB->update_record('geogebra', $geogebra);
}
}
}
$rs->close();
}
示例6: upgrade_mysql_fix_lob_columns
/**
* Migrate all text and binary columns to big size - mysql only.
*/
function upgrade_mysql_fix_lob_columns()
{
// we are not using standard API for changes of column intentionally
global $DB;
if ($DB->get_dbfamily() !== 'mysql') {
return;
}
$pbar = new progress_bar('mysqlconvertlobs', 500, true);
$prefix = $DB->get_prefix();
$tables = $DB->get_tables();
asort($tables);
$tablecount = count($tables);
$i = 0;
foreach ($tables as $table) {
$i++;
// set appropriate timeout - 1 minute per thousand of records should be enough, min 60 minutes just in case
$count = $DB->count_records($table, array());
$timeout = $count / 1000 * 60;
$timeout = $timeout < 60 * 60 ? 60 * 60 : (int) $timeout;
$sql = "SHOW COLUMNS FROM `{{$table}}`";
$rs = $DB->get_recordset_sql($sql);
foreach ($rs as $column) {
upgrade_set_timeout($timeout);
$column = (object) array_change_key_case((array) $column, CASE_LOWER);
if ($column->type === 'tinytext' or $column->type === 'mediumtext' or $column->type === 'text') {
$notnull = $column->null === 'NO' ? 'NOT NULL' : 'NULL';
$default = (!is_null($column->default) and $column->default !== '') ? "DEFAULT '{$column->default}'" : '';
// primary, unique and inc are not supported for texts
$sql = "ALTER TABLE `{$prefix}{$table}` MODIFY COLUMN `{$column->field}` LONGTEXT {$notnull} {$default}";
$DB->change_database_structure($sql);
}
if ($column->type === 'tinyblob' or $column->type === 'mediumblob' or $column->type === 'blob') {
$notnull = $column->null === 'NO' ? 'NOT NULL' : 'NULL';
$default = (!is_null($column->default) and $column->default !== '') ? "DEFAULT '{$column->default}'" : '';
// primary, unique and inc are not supported for blobs
$sql = "ALTER TABLE `{$prefix}{$table}` MODIFY COLUMN `{$column->field}` LONGBLOB {$notnull} {$default}";
$DB->change_database_structure($sql);
}
}
$rs->close();
$pbar->update($i, $tablecount, "Converted LOB columns in MySQL database - {$i}/{$tablecount}.");
}
}
示例7: xmldb_book_upgrade
/**
* Book module upgrade task
*
* @param int $oldversion the version we are upgrading from
* @return bool always true
*/
function xmldb_book_upgrade($oldversion) {
global $CFG, $DB;
$dbman = $DB->get_manager();
// Moodle v2.2.0 release upgrade line
// Put any upgrade step following this
// Moodle v2.3.0 release upgrade line
// Put any upgrade step following this
// Note: The next steps (up to 2012090408 included, are a "replay" of old upgrade steps,
// because some sites updated to Moodle 2.3 didn't have the latest contrib mod_book
// installed, so some required changes were missing.
//
// All the steps are run conditionally so sites upgraded from latest contrib mod_book or
// new (2.3 and upwards) sites won't get affected.
//
// Warn: It will be safe to delete these steps once Moodle 2.5 (not 2.4!) is declared as minimum
// requirement (environment.xml) in some future Moodle 2.x version. Never, never, before!
//
// See MDL-35297 and commit msg for more information.
if ($oldversion < 2012090401) {
// Rename field summary on table book to intro
$table = new xmldb_table('book');
$field = new xmldb_field('summary', XMLDB_TYPE_TEXT, null, null, null, null, null, 'name');
// Launch rename field summary
if ($dbman->field_exists($table, $field)) {
$dbman->rename_field($table, $field, 'intro');
}
// book savepoint reached
upgrade_mod_savepoint(true, 2012090401, 'book');
}
if ($oldversion < 2012090402) {
// Define field introformat to be added to book
$table = new xmldb_table('book');
$field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, '0', 'intro');
// Launch add field introformat
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
// Conditionally migrate to html format in intro
// Si está activo el htmleditor!!!!!
if ($CFG->texteditors !== 'textarea') {
$rs = $DB->get_recordset('book', array('introformat'=>FORMAT_MOODLE), '', 'id,intro,introformat');
foreach ($rs as $b) {
$b->intro = text_to_html($b->intro, false, false, true);
$b->introformat = FORMAT_HTML;
$DB->update_record('book', $b);
upgrade_set_timeout();
}
unset($b);
$rs->close();
}
}
// book savepoint reached
upgrade_mod_savepoint(true, 2012090402, 'book');
}
if ($oldversion < 2012090403) {
// Define field introformat to be added to book
$table = new xmldb_table('book_chapters');
$field = new xmldb_field('contentformat', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, '0', 'content');
// Launch add field introformat
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
$DB->set_field('book_chapters', 'contentformat', FORMAT_HTML, array());
}
// book savepoint reached
upgrade_mod_savepoint(true, 2012090403, 'book');
}
if ($oldversion < 2012090404) {
require_once("$CFG->dirroot/mod/book/db/upgradelib.php");
$sqlfrom = "FROM {book} b
JOIN {modules} m ON m.name = 'book'
JOIN {course_modules} cm ON (cm.module = m.id AND cm.instance = b.id)";
$count = $DB->count_records_sql("SELECT COUNT('x') $sqlfrom");
if ($rs = $DB->get_recordset_sql("SELECT b.id, b.course, cm.id AS cmid $sqlfrom ORDER BY b.course, b.id")) {
$pbar = new progress_bar('migratebookfiles', 500, true);
$i = 0;
//.........这里部分代码省略.........
示例8: xmldb_main_upgrade
//.........这里部分代码省略.........
if (!$dbman->index_exists($table, $index)) {
$dbman->add_index($table, $index);
}
// Main savepoint reached.
upgrade_main_savepoint(true, 2014080801.0);
}
if ($oldversion < 2014082900.01) {
// Fixing possible wrong MIME type for 7-zip and Rar files.
$filetypes = array('%.7z' => 'application/x-7z-compressed', '%.rar' => 'application/x-rar-compressed');
upgrade_mimetypes($filetypes);
upgrade_main_savepoint(true, 2014082900.01);
}
if ($oldversion < 2014082900.02) {
// Replace groupmembersonly usage with new availability system.
$transaction = $DB->start_delegated_transaction();
if ($CFG->enablegroupmembersonly) {
// If it isn't already enabled, we need to enable availability.
if (!$CFG->enableavailability) {
set_config('enableavailability', 1);
}
// Count all course-modules with groupmembersonly set (for progress
// bar).
$total = $DB->count_records('course_modules', array('groupmembersonly' => 1));
$pbar = new progress_bar('upgradegroupmembersonly', 500, true);
// Get all these course-modules, one at a time.
$rs = $DB->get_recordset('course_modules', array('groupmembersonly' => 1), 'course, id');
$i = 0;
foreach ($rs as $cm) {
// Calculate and set new availability value.
$availability = upgrade_group_members_only($cm->groupingid, $cm->availability);
$DB->set_field('course_modules', 'availability', $availability, array('id' => $cm->id));
// Update progress.
$i++;
$pbar->update($i, $total, "Upgrading groupmembersonly settings - {$i}/{$total}.");
}
$rs->close();
}
// Define field groupmembersonly to be dropped from course_modules.
$table = new xmldb_table('course_modules');
$field = new xmldb_field('groupmembersonly');
// Conditionally launch drop field groupmembersonly.
if ($dbman->field_exists($table, $field)) {
$dbman->drop_field($table, $field);
}
// Unset old config variable.
unset_config('enablegroupmembersonly');
$transaction->allow_commit();
upgrade_main_savepoint(true, 2014082900.02);
}
if ($oldversion < 2014100100.0) {
// Define table messageinbound_handlers to be created.
$table = new xmldb_table('messageinbound_handlers');
// Adding fields to table messageinbound_handlers.
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('component', XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null);
$table->add_field('classname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
$table->add_field('defaultexpiration', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '86400');
$table->add_field('validateaddress', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '1');
$table->add_field('enabled', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0');
// Adding keys to table messageinbound_handlers.
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
$table->add_key('classname', XMLDB_KEY_UNIQUE, array('classname'));
// Conditionally launch create table for messageinbound_handlers.
if (!$dbman->table_exists($table)) {
$dbman->create_table($table);
}
示例9: xmldb_data_upgrade
function xmldb_data_upgrade($oldversion) {
global $CFG, $DB, $OUTPUT;
$dbman = $DB->get_manager();
//===== 1.9.0 upgrade line ======//
if ($oldversion < 2007101512) {
/// Launch add field asearchtemplate again if does not exists yet - reported on several sites
$table = new xmldb_table('data');
$field = new xmldb_field('asearchtemplate', XMLDB_TYPE_TEXT, 'small', null, null, null, null, 'jstemplate');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
upgrade_mod_savepoint(true, 2007101512, 'data');
}
if ($oldversion < 2007101513) {
// Upgrade all the data->notification currently being
// NULL to 0
$sql = "UPDATE {data} SET notification=0 WHERE notification IS NULL";
$DB->execute($sql);
$table = new xmldb_table('data');
$field = new xmldb_field('notification', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'editany');
// First step, Set NOT NULL
$dbman->change_field_notnull($table, $field);
// Second step, Set default to 0
$dbman->change_field_default($table, $field);
upgrade_mod_savepoint(true, 2007101513, 'data');
}
if ($oldversion < 2008081400) {
$pattern = '/\#\#delete\#\#(\s+)\#\#approve\#\#/';
$replacement = '##delete##$1##approve##$1##export##';
$rs = $DB->get_recordset('data');
foreach ($rs as $data) {
$data->listtemplate = preg_replace($pattern, $replacement, $data->listtemplate);
$data->singletemplate = preg_replace($pattern, $replacement, $data->singletemplate);
$DB->update_record('data', $data);
}
$rs->close();
upgrade_mod_savepoint(true, 2008081400, 'data');
}
if ($oldversion < 2008091400) {
/////////////////////////////////////
/// new file storage upgrade code ///
/////////////////////////////////////
$fs = get_file_storage();
$empty = $DB->sql_empty(); // silly oracle empty string handling workaround
$sqlfrom = "FROM {data_content} c
JOIN {data_fields} f ON f.id = c.fieldid
JOIN {data_records} r ON r.id = c.recordid
JOIN {data} d ON d.id = r.dataid
JOIN {modules} m ON m.name = 'data'
JOIN {course_modules} cm ON (cm.module = m.id AND cm.instance = d.id)
WHERE ".$DB->sql_compare_text('c.content', 2)." <> '$empty' AND c.content IS NOT NULL
AND (f.type = 'file' OR f.type = 'picture')";
$count = $DB->count_records_sql("SELECT COUNT('x') $sqlfrom");
$rs = $DB->get_recordset_sql("SELECT c.id, f.type, r.dataid, c.recordid, f.id AS fieldid, r.userid, c.content, c.content1, d.course, r.userid, cm.id AS cmid $sqlfrom ORDER BY d.course, d.id");
if ($rs->valid()) {
$pbar = new progress_bar('migratedatafiles', 500, true);
$i = 0;
foreach ($rs as $content) {
$i++;
upgrade_set_timeout(60); // set up timeout, may also abort execution
$pbar->update($i, $count, "Migrating data entries - $i/$count.");
$filepath = "$CFG->dataroot/$content->course/$CFG->moddata/data/$content->dataid/$content->fieldid/$content->recordid/$content->content";
$context = get_context_instance(CONTEXT_MODULE, $content->cmid);
if (!file_exists($filepath)) {
continue;
}
$filearea = 'content';
$oldfilename = $content->content;
$filename = clean_param($oldfilename, PARAM_FILE);
if ($filename === '') {
continue;
}
if (!$fs->file_exists($context->id, 'mod_data', $filearea, $content->id, '/', $filename)) {
$file_record = array('contextid'=>$context->id, 'component'=>'mod_data', 'filearea'=>$filearea, 'itemid'=>$content->id, 'filepath'=>'/', 'filename'=>$filename, 'userid'=>$content->userid);
if ($fs->create_file_from_pathname($file_record, $filepath)) {
unlink($filepath);
if ($oldfilename !== $filename) {
// update filename if needed
$DB->set_field('data_content', 'content', $filename, array('id'=>$content->id));
//.........这里部分代码省略.........
示例10: upgrade_migrate_files_blog
/**
* Moves all block attachments
*
* Unfortunately this function uses core file related functions - it might be necessary to tweak it if something changes there :-(
*/
function upgrade_migrate_files_blog()
{
global $DB, $CFG;
$fs = get_file_storage();
$count = $DB->count_records_select('post', "module='blog' AND attachment IS NOT NULL AND attachment <> '1'");
if ($rs = $DB->get_recordset_select('post', "module='blog' AND attachment IS NOT NULL AND attachment <> '1'")) {
upgrade_set_timeout(60 * 20);
// set up timeout, may also abort execution
$pbar = new progress_bar('migrateblogfiles', 500, true);
$i = 0;
foreach ($rs as $entry) {
$i++;
$pathname = "{$CFG->dataroot}/blog/attachments/{$entry->id}/{$entry->attachment}";
if (!file_exists($pathname)) {
$entry->attachment = NULL;
$DB->update_record('post', $entry);
continue;
}
$filename = clean_param($entry->attachment, PARAM_FILE);
if ($filename === '') {
// weird file name, ignore it
$entry->attachment = NULL;
$DB->update_record('post', $entry);
continue;
}
if (!is_readable($pathname)) {
notify(" File not readable, skipping: " . $pathname);
continue;
}
if (!$fs->file_exists(SYSCONTEXTID, 'blog', $entry->id, '/', $filename)) {
$file_record = array('contextid' => SYSCONTEXTID, 'filearea' => 'blog', 'itemid' => $entry->id, 'filepath' => '/', 'filename' => $filename, 'timecreated' => filectime($pathname), 'timemodified' => filemtime($pathname), 'userid' => $entry->userid);
$fs->create_file_from_pathname($file_record, $pathname);
}
@unlink($pathname);
@rmdir("{$CFG->dataroot}/blog/attachments/{$entry->id}/");
$entry->attachment = 1;
// file name not needed there anymore
$DB->update_record('post', $entry);
$pbar->update($i, $count, "Migrated blog attachments - {$i}/{$count}.");
}
$rs->close();
}
@rmdir("{$CFG->dataroot}/blog/attachments/");
@rmdir("{$CFG->dataroot}/blog/");
}
示例11: xmldb_main_upgrade
//.........这里部分代码省略.........
if ($coursecount) {
$pbar = new progress_bar('allowedmods', 500, true);
$transaction = $DB->start_delegated_transaction();
}
$i = 0;
foreach ($courses as $courseid => $notused) {
$i += 1;
upgrade_set_timeout(60);
// 1 minute per course should be fine.
$allowedmoduleids = $DB->get_records_menu('course_allowed_modules', array('course' => $courseid), 'module', 'module, 1');
if (empty($allowedmoduleids)) {
// This seems to be the best match for backwards compatibility,
// not necessarily with the old code in course_allowed_module function,
// but with the code that used to be in the coures settings form.
$allowedmoduleids = explode(',', $CFG->defaultallowedmodules);
$allowedmoduleids = array_combine($allowedmoduleids, $allowedmoduleids);
}
$context = context_course::instance($courseid);
list($roleids) = get_roles_with_cap_in_context($context, 'moodle/course:manageactivities');
list($managerroleids) = get_roles_with_cap_in_context($context, 'moodle/site:config');
foreach ($managerroleids as $roleid) {
unset($roleids[$roleid]);
}
foreach ($modidtoname as $modid => $modname) {
if (isset($allowedmoduleids[$modid])) {
// Module is allowed, no worries.
continue;
}
$capability = 'mod/' . $modname . ':addinstance';
foreach ($roleids as $roleid) {
assign_capability($capability, CAP_PREVENT, $roleid, $context);
}
}
$pbar->update($i, $coursecount, "Upgrading legacy course_allowed_modules data - {$i}/{$coursecount}.");
}
if ($coursecount) {
$transaction->allow_commit();
}
upgrade_main_savepoint(true, 2012031500.01);
}
if ($oldversion < 2012031500.02) {
// Define field retrictmodules to be dropped from course
$table = new xmldb_table('course');
$field = new xmldb_field('restrictmodules');
// Conditionally launch drop field requested
if ($dbman->field_exists($table, $field)) {
$dbman->drop_field($table, $field);
}
upgrade_main_savepoint(true, 2012031500.02);
}
if ($oldversion < 2012031500.03) {
// Define table course_allowed_modules to be dropped
$table = new xmldb_table('course_allowed_modules');
// Conditionally launch drop table for course_allowed_modules
if ($dbman->table_exists($table)) {
$dbman->drop_table($table);
}
upgrade_main_savepoint(true, 2012031500.03);
}
if ($oldversion < 2012031500.04) {
// Clean up the old admin settings.
unset_config('restrictmodulesfor');
unset_config('restrictbydefault');
unset_config('defaultallowedmodules');
upgrade_main_savepoint(true, 2012031500.04);
}
示例12: xmldb_main_upgrade
//.........这里部分代码省略.........
if ($coursecount) {
$pbar = new progress_bar('allowedmods', 500, true);
$transaction = $DB->start_delegated_transaction();
}
$i = 0;
foreach ($courses as $courseid => $notused) {
$i += 1;
upgrade_set_timeout(60);
// 1 minute per course should be fine.
$allowedmoduleids = $DB->get_records_menu('course_allowed_modules', array('course' => $courseid), 'module', 'module, 1');
if (empty($allowedmoduleids)) {
// This seems to be the best match for backwards compatibility,
// not necessarily with the old code in course_allowed_module function,
// but with the code that used to be in the coures settings form.
$allowedmoduleids = explode(',', $CFG->defaultallowedmodules);
$allowedmoduleids = array_combine($allowedmoduleids, $allowedmoduleids);
}
$context = context_course::instance($courseid);
list($roleids) = get_roles_with_cap_in_context($context, 'moodle/course:manageactivities');
list($managerroleids) = get_roles_with_cap_in_context($context, 'moodle/site:config');
foreach ($managerroleids as $roleid) {
unset($roleids[$roleid]);
}
foreach ($modidtoname as $modid => $modname) {
if (isset($allowedmoduleids[$modid])) {
// Module is allowed, no worries.
continue;
}
$capability = 'mod/' . $modname . ':addinstance';
foreach ($roleids as $roleid) {
assign_capability($capability, CAP_PREVENT, $roleid, $context);
}
}
$pbar->update($i, $coursecount, "Upgrading legacy course_allowed_modules data - {$i}/{$coursecount}.");
}
if ($coursecount) {
$transaction->allow_commit();
}
upgrade_main_savepoint(true, 2012031500.01);
}
if ($oldversion < 2012031500.02) {
// Define field restrictmodules to be dropped from course
$table = new xmldb_table('course');
$field = new xmldb_field('restrictmodules');
// Conditionally launch drop field requested
if ($dbman->field_exists($table, $field)) {
$dbman->drop_field($table, $field);
}
// Since structure of 'course' table has changed we need to re-read $SITE from DB.
$SITE = $DB->get_record('course', array('id' => $SITE->id));
$COURSE = clone $SITE;
upgrade_main_savepoint(true, 2012031500.02);
}
if ($oldversion < 2012031500.03) {
// Define table course_allowed_modules to be dropped
$table = new xmldb_table('course_allowed_modules');
// Conditionally launch drop table for course_allowed_modules
if ($dbman->table_exists($table)) {
$dbman->drop_table($table);
}
upgrade_main_savepoint(true, 2012031500.03);
}
if ($oldversion < 2012031500.04) {
// Clean up the old admin settings.
unset_config('restrictmodulesfor');
unset_config('restrictbydefault');
示例13: redirect
redirect($returnurl);
break;
case 'restore':
if ($clist) {
list($usql, $params) = $DB->get_in_or_equal($clist);
$DB->set_field_select('cohort', 'component', '', 'id ' . $usql, $params);
}
redirect($returnurl);
break;
case 'delete':
if ($clist) {
set_time_limit(0);
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('auth_cohorttoolmcae', 'auth_mcae'));
$progress = new progress_bar('delcohort');
$progress->create();
$delcount = count($clist);
$delcurrent = 1;
foreach ($clist as $cid) {
$cohort = $DB->get_record('cohort', array('contextid' => $context->id, 'id' => $cid));
cohort_delete_cohort($cohort);
$progress->update($delcurrent, $delcount, "{$delcurrent} / {$delcount}");
$delcurrent++;
}
}
echo $OUTPUT->continue_button($returnurl);
echo $OUTPUT->footer();
die;
break;
}
echo $OUTPUT->footer();
示例14: lesson_upgrade_grades
/**
* Update all grades in gradebook.
*
* @global object
*/
function lesson_upgrade_grades()
{
global $DB;
$sql = "SELECT COUNT('x')\n FROM {lesson} l, {course_modules} cm, {modules} m\n WHERE m.name='lesson' AND m.id=cm.module AND cm.instance=l.id";
$count = $DB->count_records_sql($sql);
$sql = "SELECT l.*, cm.idnumber AS cmidnumber, l.course AS courseid\n FROM {lesson} l, {course_modules} cm, {modules} m\n WHERE m.name='lesson' AND m.id=cm.module AND cm.instance=l.id";
$rs = $DB->get_recordset_sql($sql);
if ($rs->valid()) {
$pbar = new progress_bar('lessonupgradegrades', 500, true);
$i = 0;
foreach ($rs as $lesson) {
$i++;
upgrade_set_timeout(60 * 5);
// set up timeout, may also abort execution
lesson_update_grades($lesson, 0, false);
$pbar->update($i, $count, "Updating Lesson grades ({$i}/{$count}).");
}
}
$rs->close();
}
示例15: list
function regrade_all_needed($quiz, $groupstudents) {
global $DB, $OUTPUT;
if (!has_capability('mod/quiz:regrade', $this->context)) {
echo $OUTPUT->notification(get_string('regradenotallowed', 'quiz'));
return;
}
// Fetch all attempts that need regrading
if ($groupstudents) {
list($usql, $params) = $DB->get_in_or_equal($groupstudents);
$where = "qa.userid $usql AND ";
} else {
$where = '';
$params = array();
}
$where .= "qa.quiz = ? AND qa.preview = 0 AND qa.uniqueid = qqr.attemptid AND qqr.regraded = 0";
$params[] = $quiz->id;
if (!$attempts = $DB->get_records_sql('SELECT qa.*, qqr.questionid FROM {quiz_attempts} qa, {quiz_question_regrade} qqr WHERE '. $where, $params)) {
echo $OUTPUT->heading(get_string('noattemptstoregrade', 'quiz_overview'));
return true;
}
$this->clear_regrade_table($quiz, $groupstudents);
// Fetch all questions
$questions = question_load_questions(explode(',',quiz_questions_in_quiz($quiz->questions)), 'qqi.grade AS maxgrade, qqi.id AS instance',
'{quiz_question_instances} qqi ON qqi.quiz = ' . $quiz->id . ' AND q.id = qqi.question');
// Print heading
echo $OUTPUT->heading(get_string('regradingquiz', 'quiz', format_string($quiz->name)));
$apb = new progress_bar('aregradingbar', 500, true);
// Loop through all questions and all attempts and regrade while printing progress info
$attemptstodo = count($attempts);
$attemptsdone = 0;
@flush();@ob_flush();
$attemptschanged = array();
foreach ($attempts as $attempt) {
$question = $questions[$attempt->questionid];
$changed = regrade_question_in_attempt($question, $attempt, $quiz, true);
if ($changed) {
$attemptschanged[] = $attempt->uniqueid;
$usersschanged[] = $attempt->userid;
}
if (!empty($apb)) {
$attemptsdone++;
$a = new stdClass();
$a->done = $attemptsdone;
$a->todo = $attemptstodo;
$apb->update($attemptsdone, $attemptstodo, get_string('attemptprogress', 'quiz_overview', $a));
}
}
$this->check_overall_grades($quiz, array(), $attemptschanged);
}