if (!during_initial_install()) {
$temp->add(new admin_setting_configselect('creatornewroleid', get_string('creatornewroleid', 'admin'),
- get_string('configcreatornewroleid', 'admin'), $defaultteacherid, $creatornewroles));
+ get_string('creatornewroleid_help', 'admin'), $defaultteacherid, $creatornewroles));
}
$temp->add(new admin_setting_configcheckbox('autologinguests', get_string('autologinguests', 'admin'), get_string('configautologinguests', 'admin'), 0));
function get_content() {
global $CFG, $OUTPUT;
+ require_once($CFG->libdir . '/filelib.php');
+
if($this->content !== NULL) {
return $this->content;
}
}
function get_content() {
+ global $CFG;
+
+ require_once($CFG->libdir . '/filelib.php');
+
if ($this->content !== NULL) {
return $this->content;
}
$groupmembers = "";
$groupselect = "";
- $rafrom = "";
- $rawhere = "";
$params = array();
//Add this to the SQL to show only group users
$params = array_merge($params, $eparams);
$sql = "SELECT $userfields, MAX(ul.timeaccess) AS lastaccess
- FROM {user_lastaccess} ul, {user} u $groupmembers $rafrom
+ FROM {user_lastaccess} ul $groupmembers, {user} u
JOIN ($esqljoin) euj ON euj.id = u.id
WHERE ul.timeaccess > $timefrom
AND u.id = ul.userid
AND ul.courseid = :courseid
- $groupselect $rawhere
+ $groupselect
GROUP BY $userfields
ORDER BY lastaccess DESC";
$csql = "SELECT u.id
- FROM {user_lastaccess} ul, {user} u $groupmembers $rafrom
+ FROM {user_lastaccess} ul $groupmembers, {user} u
JOIN ($esqljoin) euj ON euj.id = u.id
WHERE ul.timeaccess > $timefrom
AND u.id = ul.userid
AND ul.courseid = :courseid
- $groupselect $rawhere
+ $groupselect
GROUP BY u.id";
$params['courseid'] = $this->page->course->id;
defined('MOODLE_INTERNAL') || die();
+require_once($CFG->libdir . '/filelib.php');
+
/**
* Blog_entry class. Represents an entry in a user's blog. Contains all methods for managing this entry.
* This class does not contain any HTML-generating code. See blog_listing sub-classes for such code.
* @return string
*/
protected function get_description() {
- global $USER;
+ global $USER, $CFG;
+
+ require_once($CFG->libdir . '/filelib.php');
+
if ($this->_description === null) {
// Check if we have already resolved the context for this event
if ($this->editorcontext === null) {
$modules = array();
foreach ($allmodules as $key=>$module) {
$modname = $module->name;
+ if ($modname === 'label') {
+ continue;
+ }
$libfile = "$CFG->dirroot/mod/$modname/lib.php";
if (!file_exists($libfile)) {
continue;
$plugin->delete_instance($instance);
}
}
+ return;
}
list($roleids, $params) = $DB->get_in_or_equal(array_keys($roles), SQL_PARAMS_NAMED, 'r000');
$localrolefield = $this->get_config('localrolefield');
$localuserfield = $this->get_config('localuserfield');
- $localcoursefiled = $this->get_config('localcoursefield');
+ $localcoursefield = $this->get_config('localcoursefield');
$unenrolaction = $this->get_config('unenrolaction');
$defaultrole = $this->get_config('defaultrole');
// missing course info
continue;
}
- if (!$course = $DB->get_record('course', array($localcoursefiled=>$fields[$coursefield]), 'id,visible')) {
+ if (!$course = $DB->get_record('course', array($localcoursefield=>$fields[$coursefield]), 'id,visible')) {
continue;
}
if (!$course->visible and $ignorehidden) {
$localrolefield = $this->get_config('localrolefield');
$localuserfield = $this->get_config('localuserfield');
- $localcoursefiled = $this->get_config('localcoursefield');
+ $localcoursefield = $this->get_config('localcoursefield');
$unenrolaction = $this->get_config('unenrolaction');
$defaultrole = $this->get_config('defaultrole');
// first find all existing courses with enrol instance
$existing = array();
- $sql = "SELECT c.id, c.visible, c.$localcoursefiled AS mapping, e.id AS enrolid
+ $sql = "SELECT c.id, c.visible, c.$localcoursefield AS mapping, e.id AS enrolid
FROM {course} c
JOIN {enrol} e ON (e.courseid = c.id AND e.enrol = 'database')";
$rs = $DB->get_recordset_sql($sql); // watch out for idnumber duplicates
$rs->close();
// add necessary enrol instances that are not present yet
- $sql = "SELECT c.id, c.visible, c.$localcoursefiled AS mapping
+ $params = array();
+ $localnotempty = "";
+ if ($localcoursefield !== 'id') {
+ $localnotempty = "AND c.$localcoursefield <> :lcfe";
+ $params['lcfe'] = $DB->sql_empty();
+ }
+ $sql = "SELECT c.id, c.visible, c.$localcoursefield AS mapping
FROM {course} c
LEFT JOIN {enrol} e ON (e.courseid = c.id AND e.enrol = 'database')
- WHERE e.id IS NULL AND c.$localcoursefiled <> ?";
- $rs = $DB->get_recordset_sql($sql, array($DB->sql_empty()));
+ WHERE e.id IS NULL $localnotempty";
+ $rs = $DB->get_recordset_sql($sql, $params);
foreach ($rs as $course) {
if (empty($course->mapping)) {
continue;
require_once(dirname(__FILE__) . '/lib.php');
require_once($CFG->dirroot . '/user/selector/lib.php');
require_once($CFG->dirroot . '/course/lib.php');
+require_once($CFG->libdir . '/filelib.php');
$groupid = required_param('group', PARAM_INT);
$cancel = optional_param('cancel', false, PARAM_BOOL);
*/
require_once('../config.php');
+require_once($CFG->libdir . '/filelib.php');
$courseid = required_param('id', PARAM_INT);
$groupid = optional_param('group', 0, PARAM_INT);
$string['configcourserequestnotify'] = 'Type username of user to be notified when new course requested.';
$string['configcourserequestnotify2'] = 'Users who will be notified when a course is requested. Only users who can approve course requests are listed here.';
$string['configcoursesperpage'] = 'Enter the number of courses to be display per page in a course listing.';
-$string['configcreatornewroleid'] = 'This role is automatically assigned to creators in new courses they created. This role is not assigned if creator already has needed capabilities in parent context.';
$string['configcronclionly'] = 'If this is set, then the cron script can only be run from the command line instead of via the web. This overrides the cron password setting below.';
$string['configcronremotepassword'] = 'This means that the cron.php script cannot be run from a web browser without supplying the password using the following form of URL:<pre>
http://site.example.com/admin/cron.php?password=opensesame
$string['courses'] = 'Courses';
$string['coursesperpage'] = 'Courses per page';
$string['creatornewroleid'] = 'Creators\' role in new courses';
+$string['creatornewroleid_help'] = 'If the user does not already have the permission to manage the new course, the user is automatically enrolled using this role.';
$string['cron'] = 'Cron';
$string['cron_help'] = 'The cron.php maintenance script assists some of Moodle\'s modules to perform tasks on a scheduled basis, such as mailing out copies of new forum posts. A mechanism is required to run the script regularly e.g. every 5 minutes.';
$string['cron_link'] = 'admin/cron';
* @return string
*/
public function get_description() {
+ global $CFG;
+ require_once($CFG->libdir . '/filelib.php');
+
$options = new stdClass;
$options->noclean = true;
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
* @return string
*/
public function get_description() {
+ global $CFG;
+ require_once($CFG->libdir . '/filelib.php');
+
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
$options = new stdClass;
$options->noclean = true;
die();
}
+$roamingusers = get_users_by_capability(get_system_context(), 'moodle/site:mnetlogintoremote', 'u.id');
+if (empty($roamingusers)) {
+ $capname = get_string('site:mnetlogintoremote', 'role');
+ $url = new moodle_url('/admin/roles/manage.php');
+ echo notice(get_string('noroamingusers', 'mnetservice_enrol', $capname), $url);
+}
+unset($roamingusers);
+
// remote hosts that may publish remote enrolment service and we are subscribed to it
$hosts = $service->get_remote_publishers();
$string['hostname'] = 'Host name';
$string['hosturl'] = 'Remote host URL';
$string['nopublishers'] = 'No remote peers available.';
+$string['noroamingusers'] = 'Users require the capability \'{$a}\' in the system context to be enrolled to remote courses, however there are currently no users with this capability. Click the continue button to assign the required capability to one or more roles on your site.';
$string['otherenrolledusers'] = 'Other enrolled users';
$string['pluginname'] = 'Remote enrolment service';
$string['refetch'] = 'Re-fetch up to date state from remote hosts';
$systemcontext = get_system_context();
$userids = get_users_by_capability($systemcontext, 'moodle/site:mnetlogintoremote', 'u.id');
+ if (empty($userids)) {
+ return array();
+ }
+
list($usql, $uparams) = $DB->get_in_or_equal(array_keys($userids), SQL_PARAMS_NAMED, 'uid0000');
list($wherecondition, $params) = $this->search_sql($search, 'u');
require_once($CFG->libdir.'/formslib.php');
require_once($CFG->libdir . '/portfoliolib.php');
require_once($CFG->dirroot . '/mod/assignment/lib.php');
+require_once($CFG->libdir . '/filelib.php');
+
/**
* Extend the base assignment class for assignments where you upload a single file
*
}
function print_item($item){
- global $DB;
+ global $DB, $CFG;
+
+ require_once($CFG->libdir . '/filelib.php');
//is the item a template?
if(!$item->feedback AND $item->template) {
$footer="", $highlight="", $postisread=null, $dummyifcantsee=true, $istracked=null, $return=false) {
global $USER, $CFG, $OUTPUT;
+ require_once($CFG->libdir . '/filelib.php');
+
// String cache
static $str;
* @return void Output is echo'd
*/
function glossary_print_entry_default ($entry, $glossary, $cm) {
+ global $CFG;
+
+ require_once($CFG->libdir . '/filelib.php');
+
echo '<h3>'. strip_tags($entry->concept) . ': </h3>';
$definition = $entry->definition;
require_once('../../config.php');
require_once('lib.php');
+require_once($CFG->libdir . '/filelib.php');
$concept = optional_param('concept', '', PARAM_CLEAN);
$courseid = optional_param('courseid', 0, PARAM_INT);
$options = new stdClass();
$options->para = false;
$options->trusted = $entry->definitiontrust;
- $options->context = $context;
+ $options->context = $context;
$entries[$key]->definition = format_text($definition, $entry->definitionformat, $options);
$entries[$key]->footer = "<p style=\"text-align:right\">» <a href=\"$CFG->wwwroot/mod/glossary/view.php?g=$entry->glossaryid\">".format_string($entry->glossaryname,true)."</a></p>";
*
* @return array
*/
-function lable_get_extra_capabilities() {
+function label_get_extra_capabilities() {
return array('moodle/site:accessallgroups');
}
/** Include the files that are required by this module */
require_once($CFG->dirroot.'/course/moodleform_mod.php');
require_once($CFG->dirroot . '/mod/lesson/lib.php');
+require_once($CFG->libdir . '/filelib.php');
/** This page */
define('LESSON_THISPAGE', 0);
SELECT qg.quiz, qg.grade
FROM {quiz_grades} qg
JOIN {quiz} q ON q.id = qg.quiz
- WHERE q.course = ?',
- $course->id);
+ WHERE q.course = ? AND qg.userid = ?',
+ array($course->id, $USER->id));
}
$table = new html_table();
require_once($CFG->dirroot . '/mod/quiz/attemptlib.php');
require_once($CFG->dirroot . '/question/editlib.php');
require_once($CFG->libdir . '/eventslib.php');
+require_once($CFG->libdir . '/filelib.php');
/// Constants ///////////////////////////////////////////////////////////////////
$eventdata->smallmessage = get_string('emailconfirmsmall', 'quiz', $a);
$eventdata->contexturl = $a->quizurl;
$eventdata->contexturlname = $a->quizname;
-
+
return message_send($eventdata);
}
* @return string the comment that corresponds to this grade (empty string if there is not one.
*/
function quiz_report_feedback_for_grade($grade, $quizid, $context) {
- global $DB;
+ global $DB, $CFG;
+
+ require_once($CFG->libdir . '/filelib.php');
+
static $feedbackcache = array();
if (!isset($feedbackcache[$quizid])){
$feedbackcache[$quizid] = $DB->get_records('quiz_feedback', array('quizid' => $quizid));
}
} else {
// all users who can attempt scoes and who are in the currently selected group
- if (!$groupstudents = get_users_by_capability($context, 'mod/scorm:savetrack','','','','',$currentgroup,'',false)){
+ if (!$groupstudents = get_users_by_capability($contextmodule, 'mod/scorm:savetrack','','','','',$currentgroup,'',false)){
echo $OUTPUT->notification(get_string('nostudentsingroup'));
$nostudents = true;
$groupstudents = array();
require_once($CFG->dirroot . '/mod/wiki/lib.php');
require_once($CFG->dirroot . '/mod/wiki/parser/parser.php');
+require_once($CFG->libdir . '/filelib.php');
define('WIKI_REFRESH_CACHE_TIME', 30); // @TODO: To be deleted.
define('FORMAT_CREOLE', '37');
require_once(dirname(__FILE__).'/lib.php'); // we extend this library here
require_once($CFG->libdir . '/gradelib.php'); // we use some rounding and comparing routines here
+require_once($CFG->libdir . '/filelib.php');
/**
* Full-featured workshop API
list($answer, $wrongfeedback, $rightfeedback) =
$this->split_truefalse_comment($answertext, $question->questiontextformat);
- if ($answer == "T" OR $answer == "TRUE") {
+ if ($answer['text'] == "T" OR $answer['text'] == "TRUE") {
$question->correctanswer = 1;
$question->feedbacktrue = $rightfeedback;
$question->feedbackfalse = $wrongfeedback;
$this->assert(new CheckSpecifiedFieldsExpectation($expectedq), $q);
}
+ public function test_import_truefalse_true_answer1() {
+ $gift = "// name 0-11
+::2-08 TSL::TSL is blablabla.{T}";
+ $lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
+
+ $importer = new qformat_gift();
+ $q = $importer->readquestion($lines);
+
+ $expectedq = (object) array(
+ 'name' => '2-08 TSL',
+ 'questiontext' => "TSL is blablabla.",
+ 'questiontextformat' => FORMAT_MOODLE,
+ 'generalfeedback' => '',
+ 'generalfeedbackformat' => FORMAT_MOODLE,
+ 'qtype' => 'truefalse',
+ 'defaultgrade' => 1,
+ 'penalty' => 1,
+ 'length' => 1,
+ 'correctanswer' => 1,
+ 'feedbacktrue' => array(
+ 'text' => '',
+ 'format' => FORMAT_MOODLE,
+ 'files' => array(),
+ ),
+ 'feedbackfalse' => array(
+ 'text' => '',
+ 'format' => FORMAT_MOODLE,
+ 'files' => array(),
+ ),
+ );
+
+ $this->assert(new CheckSpecifiedFieldsExpectation($expectedq), $q);
+ }
+
+ public function test_import_truefalse_true_answer2() {
+ $gift = "// name 0-11
+::2-08 TSL::TSL is blablabla.{TRUE}";
+ $lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
+
+ $importer = new qformat_gift();
+ $q = $importer->readquestion($lines);
+
+ $expectedq = (object) array(
+ 'name' => '2-08 TSL',
+ 'questiontext' => "TSL is blablabla.",
+ 'questiontextformat' => FORMAT_MOODLE,
+ 'generalfeedback' => '',
+ 'generalfeedbackformat' => FORMAT_MOODLE,
+ 'qtype' => 'truefalse',
+ 'defaultgrade' => 1,
+ 'penalty' => 1,
+ 'length' => 1,
+ 'correctanswer' => 1,
+ 'feedbacktrue' => array(
+ 'text' => '',
+ 'format' => FORMAT_MOODLE,
+ 'files' => array(),
+ ),
+ 'feedbackfalse' => array(
+ 'text' => '',
+ 'format' => FORMAT_MOODLE,
+ 'files' => array(),
+ ),
+ );
+
+ $this->assert(new CheckSpecifiedFieldsExpectation($expectedq), $q);
+ }
+
public function test_export_truefalse() {
$qdata = (object) array(
'id' => 666 ,
function print_question_formulation_and_controls(&$question, &$state, $cmoptions, $options) {
global $QTYPES, $CFG, $USER, $OUTPUT, $PAGE;
- static $overlibdivoutput = false;
- if (!$overlibdivoutput) {
- echo '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>'; // for overlib
- $overlibdivoutput = true;
- }
-
$readonly = empty($options->readonly) ? '' : 'readonly="readonly"';
$disabled = empty($options->readonly) ? '' : 'disabled="disabled"';
$formatoptions = new stdClass;
require_once('../config.php');
require_once($CFG->libdir.'/tablelib.php');
+ require_once($CFG->libdir.'/filelib.php');
define('USER_SMALL_CLASS', 20); // Below this is considered small
define('USER_LARGE_CLASS', 200); // Above this is considered large
require_once("../config.php");
require_once($CFG->dirroot.'/user/profile/lib.php');
require_once($CFG->dirroot.'/tag/lib.php');
+require_once($CFG->libdir . '/filelib.php');
$id = optional_param('id', 0, PARAM_INT); // user id
$courseid = optional_param('course', SITEID, PARAM_INT); // course id (defaults to Site)