diff --git a/course/completion_form.php b/course/completion_form.php index 56071703028..d27c96b086b 100644 --- a/course/completion_form.php +++ b/course/completion_form.php @@ -28,6 +28,7 @@ if (!defined('MOODLE_INTERNAL')) { } require_once($CFG->libdir.'/formslib.php'); +require_once($CFG->libdir.'/completionlib.php'); class course_completion_form extends moodleform { diff --git a/course/edit_form.php b/course/edit_form.php index 3de0d339841..2adf59ee30f 100644 --- a/course/edit_form.php +++ b/course/edit_form.php @@ -3,6 +3,7 @@ defined('MOODLE_INTERNAL') || die; require_once($CFG->libdir.'/formslib.php'); +require_once($CFG->libdir.'/completionlib.php'); class course_edit_form extends moodleform { protected $course; @@ -234,8 +235,7 @@ class course_edit_form extends moodleform { $mform->setDefault('lang', $courseconfig->lang); //-------------------------------------------------------------------------------- - require_once($CFG->libdir.'/completionlib.php'); - if(completion_info::is_enabled_for_site()) { + if (completion_info::is_enabled_for_site()) { $mform->addElement('header','', get_string('progress','completion')); $mform->addElement('select', 'enablecompletion', get_string('completion','completion'), array(0=>get_string('completiondisabled','completion'), 1=>get_string('completionenabled','completion'))); diff --git a/course/format/topics/format.php b/course/format/topics/format.php index f324a99c4ff..12611df72ff 100644 --- a/course/format/topics/format.php +++ b/course/format/topics/format.php @@ -28,6 +28,7 @@ defined('MOODLE_INTERNAL') || die(); require_once($CFG->libdir.'/filelib.php'); +require_once($CFG->libdir.'/completionlib.php'); $topic = optional_param('topic', -1, PARAM_INT); diff --git a/course/format/weeks/format.php b/course/format/weeks/format.php index 090549a0977..9b9886ae3c1 100644 --- a/course/format/weeks/format.php +++ b/course/format/weeks/format.php @@ -27,6 +27,7 @@ defined('MOODLE_INTERNAL') || die(); require_once($CFG->libdir.'/filelib.php'); + require_once($CFG->libdir.'/completionlib.php'); $week = optional_param('week', -1, PARAM_INT); diff --git a/course/lib.php b/course/lib.php index 042a3adcee2..1c78e218731 100644 --- a/course/lib.php +++ b/course/lib.php @@ -3698,7 +3698,7 @@ function average_number_of_participants() { $sql = 'SELECT COUNT(*) FROM ( SELECT DISTINCT ue.userid, e.courseid FROM {user_enrolments} ue, {enrol} e, {course} c - WHERE ue.enrolid = e.id + WHERE ue.enrolid = e.id AND e.courseid <> :siteid AND c.id = e.courseid AND c.visible = 1) as total'; @@ -3731,7 +3731,7 @@ function average_number_of_courses_modules() { $sql = 'SELECT COUNT(*) FROM ( SELECT cm.course, cm.module FROM {course} c, {course_modules} cm - WHERE c.id = cm.course + WHERE c.id = cm.course AND c.id <> :siteid AND cm.visible = 1 AND c.visible = 1) as total'; diff --git a/course/moodleform_mod.php b/course/moodleform_mod.php index ffcc7fb2f0a..04821682c7a 100644 --- a/course/moodleform_mod.php +++ b/course/moodleform_mod.php @@ -1,8 +1,6 @@ libdir.'/formslib.php'); -if (!empty($CFG->enablecompletion) or !empty($CFG->enableavailability)) { - require_once($CFG->libdir.'/completionlib.php'); -} +require_once($CFG->libdir.'/completionlib.php'); /** * This class adds extra methods to form wrapper specific to be used for module diff --git a/course/report/completion/mod.php b/course/report/completion/mod.php index 12e47ca2230..38a1cfae001 100644 --- a/course/report/completion/mod.php +++ b/course/report/completion/mod.php @@ -4,6 +4,8 @@ die('Direct access to this script is forbidden.'); // It must be included from a Moodle page } + require_once($CFG->libdir.'/completionlib.php'); + if (has_capability('coursereport/completion:view', $context)) { $completion = new completion_info($course); if ($completion->is_enabled() && $completion->has_criteria()) { diff --git a/course/report/progress/mod.php b/course/report/progress/mod.php index 86d0e0b16df..db7ea0289f2 100644 --- a/course/report/progress/mod.php +++ b/course/report/progress/mod.php @@ -4,6 +4,8 @@ die('Direct access to this script is forbidden.'); // It must be included from a Moodle page } + require_once($CFG->libdir.'/completionlib.php'); + if (has_capability('coursereport/progress:view', $context)) { $completion = new completion_info($course); if ($completion->is_enabled()) { diff --git a/course/user.php b/course/user.php index 870169a4c19..15acd537080 100644 --- a/course/user.php +++ b/course/user.php @@ -25,6 +25,7 @@ require_once("../config.php"); require_once("lib.php"); +require_once($CFG->libdir.'/completionlib.php'); $id = required_param('id',PARAM_INT); // course id $user = required_param('user',PARAM_INT); // user id @@ -355,7 +356,6 @@ switch ($mode) { case "coursecompletions": // Display course completion user report - require_once $CFG->libdir.'/completionlib.php'; // Grab all courses the user is enrolled in and their completion status $sql = " diff --git a/course/view.php b/course/view.php index 89e7aad36ef..e21aada0109 100644 --- a/course/view.php +++ b/course/view.php @@ -5,6 +5,7 @@ require_once('../config.php'); require_once('lib.php'); require_once($CFG->dirroot.'/mod/forum/lib.php'); + require_once($CFG->libdir.'/completionlib.php'); $id = optional_param('id', 0, PARAM_INT); $name = optional_param('name', '', PARAM_RAW); diff --git a/lib/conditionlib.php b/lib/conditionlib.php index c99029a8eaa..6b862e8b82e 100644 --- a/lib/conditionlib.php +++ b/lib/conditionlib.php @@ -19,7 +19,7 @@ * to students ('conditional availability'). * * @package core - * @subpackage completion + * @subpackage condition * @copyright 1999 onwards Martin Dougiamas http://dougiamas.com * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -40,6 +40,8 @@ define('CONDITION_MISSING_EXTRATABLE',1); /** The $cm variable is expected to contain nothing except the ID */ define('CONDITION_MISSING_EVERYTHING',2); +require_once($CFG->libdir.'/completionlib.php'); + /** * @global stdClass $CONDITIONLIB_PRIVATE * @name $CONDITIONLIB_PRIVATE diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 329795dd412..53de0b0d3dc 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -4151,6 +4151,7 @@ function delete_course($courseorid, $showfeedback = true) { */ function remove_course_contents($courseid, $showfeedback = true) { global $CFG, $DB, $OUTPUT; + require_once($CFG->libdir.'/completionlib.php'); require_once($CFG->libdir.'/questionlib.php'); require_once($CFG->libdir.'/gradelib.php'); require_once($CFG->dirroot.'/group/lib.php'); @@ -4343,6 +4344,7 @@ function shift_course_mod_dates($modname, $fields, $timeshift, $courseid) { function reset_course_userdata($data) { global $CFG, $USER, $DB; require_once($CFG->libdir.'/gradelib.php'); + require_once($CFG->libdir.'/completionlib.php'); require_once($CFG->dirroot.'/group/lib.php'); $data->courseid = $data->id; diff --git a/mod/chat/view.php b/mod/chat/view.php index edd54afa5ba..d9dd33d51ea 100644 --- a/mod/chat/view.php +++ b/mod/chat/view.php @@ -19,6 +19,7 @@ require_once(dirname(__FILE__) . '/../../config.php'); require_once($CFG->dirroot . '/mod/chat/lib.php'); +require_once($CFG->libdir.'/completionlib.php'); $id = optional_param('id', 0, PARAM_INT); $c = optional_param('c', 0, PARAM_INT); diff --git a/mod/choice/lib.php b/mod/choice/lib.php index b3c8d9f3058..5b8ee555369 100644 --- a/mod/choice/lib.php +++ b/mod/choice/lib.php @@ -244,7 +244,9 @@ function choice_prepare_options($choice, $user, $coursemodule, $allresponses) { * @param object $cm */ function choice_user_submit_response($formanswer, $choice, $userid, $course, $cm) { - global $DB; + global $DB, $CFG; + require_once($CFG->libdir.'/completionlib.php'); + $current = $DB->get_record('choice_answers', array('choiceid' => $choice->id, 'userid' => $userid)); $context = get_context_instance(CONTEXT_MODULE, $cm->id); @@ -525,7 +527,9 @@ function prepare_choice_show_results($choice, $course, $cm, $allresponses, $forc * @return bool */ function choice_delete_responses($attemptids, $choice, $cm, $course) { - global $DB; + global $DB, $CFG; + require_once($CFG->libdir.'/completionlib.php'); + if(!is_array($attemptids) || empty($attemptids)) { return false; } @@ -841,7 +845,7 @@ function choice_get_completion_state($course, $cm, $userid, $type) { $choice = $DB->get_record('choice', array('id'=>$cm->instance), '*', MUST_EXIST); - // If completion option is enabled, evaluate it and return true/false + // If completion option is enabled, evaluate it and return true/false if($choice->completionsubmit) { return $DB->record_exists('choice_answers', array( 'choiceid'=>$choice->id, 'userid'=>$userid)); diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index 0a76beee04d..c325e13f289 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -28,9 +28,6 @@ require_once($CFG->libdir.'/eventslib.php'); /** Include calendar/lib.php */ require_once($CFG->dirroot.'/calendar/lib.php'); -/** Include completionlib.php */ -require_once($CFG->libdir . '/completionlib.php'); - define('FEEDBACK_ANONYMOUS_YES', 1); define('FEEDBACK_ANONYMOUS_NO', 2); @@ -438,7 +435,7 @@ function feedback_get_completion_state($course, $cm, $userid, $type) { // Get feedback details $feedback = $DB->get_record('feedback', array('id'=>$cm->instance), '*', MUST_EXIST); - // If completion option is enabled, evaluate it and return true/false + // If completion option is enabled, evaluate it and return true/false if($feedback->completionsubmit) { return $DB->record_exists('feedback_tracking', array('userid'=>$userid, 'feedback'=>$feedback->id)); } else { @@ -1054,7 +1051,10 @@ function feedback_delete_template($id) { * @param boolean $deleteold */ function feedback_items_from_template($feedback, $templateid, $deleteold = false) { - global $DB; + global $DB, $CFG; + + require_once($CFG->libdir.'/completionlib.php'); + $fs = get_file_storage(); //get all templateitems @@ -1079,7 +1079,7 @@ function feedback_items_from_template($feedback, $templateid, $deleteold = false } //delete tracking-data $DB->delete_records('feedback_tracking', array('feedback'=>$feedback->id)); - + if($completeds = $DB->get_records('feedback_completed', array('feedback'=>$feedback->id))) { $completion = new completion_info($course); foreach($completeds as $completed) { @@ -1368,20 +1368,21 @@ function feedback_delete_item($itemid, $renumber = true){ * @return void */ function feedback_delete_all_items($feedbackid){ - global $DB; + global $DB, $CFG; + require_once($CFG->libdir.'/completionlib.php'); if(!$feedback = $DB->get_record('feedback', array('id'=>$feedbackid))) { return false; } - + if (!$cm = get_coursemodule_from_instance('feedback', $feedback->id)) { return false; } - + if(!$course = $DB->get_record('course', array('id'=>$feedback->course))) { return false; } - + if(!$items = $DB->get_records('feedback_item', array('feedback'=>$feedbackid))) { return; } @@ -1399,9 +1400,9 @@ function feedback_delete_all_items($feedbackid){ $DB->delete_records('feedback_completed', array('id'=>$completed->id)); } } - + $DB->delete_records('feedback_completedtmp', array('feedback'=>$feedbackid)); - + } /** @@ -2333,20 +2334,21 @@ function feedback_delete_all_completeds($feedbackid) { * @return boolean */ function feedback_delete_completed($completedid) { - global $DB; + global $DB, $CFG; + require_once($CFG->libdir.'/completionlib.php'); if (!$completed = $DB->get_record('feedback_completed', array('id'=>$completedid))) { return false; } - + if (!$feedback = $DB->get_record('feedback', array('id'=>$completed->feedback))) { return false; } - + if (!$course = $DB->get_record('course', array('id'=>$feedback->course))) { return false; } - + if (!$cm = get_coursemodule_from_instance('feedback', $feedback->id)) { return false; } diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 8e3a349e5ba..cdddfba67a6 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -24,7 +24,6 @@ /** Include required files */ require_once($CFG->libdir.'/filelib.php'); require_once($CFG->libdir.'/eventslib.php'); -require_once($CFG->libdir . '/completionlib.php'); require_once($CFG->dirroot.'/user/selector/lib.php'); /// CONSTANTS /////////////////////////////////////////////////////////// @@ -4153,7 +4152,9 @@ function forum_add_discussion($discussion, $mform=null, &$message=null, $userid= * @return bool */ function forum_delete_discussion($discussion, $fulldelete, $course, $cm, $forum) { - global $DB; + global $DB, $CFG; + require_once($CFG->libdir.'/completionlib.php'); + $result = true; if ($posts = $DB->get_records("forum_posts", array("discussion" => $discussion->id))) { @@ -4205,6 +4206,7 @@ function forum_delete_discussion($discussion, $fulldelete, $course, $cm, $forum) */ function forum_delete_post($post, $children, $course, $cm, $forum, $skipcompletion=false) { global $DB, $CFG; + require_once($CFG->libdir.'/completionlib.php'); $context = get_context_instance(CONTEXT_MODULE, $cm->id); diff --git a/mod/forum/post.php b/mod/forum/post.php index f5c87463c05..c45aeb0e9fe 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -25,6 +25,7 @@ require_once('../../config.php'); require_once('lib.php'); +require_once($CFG->libdir.'/completionlib.php'); $reply = optional_param('reply', 0, PARAM_INT); $forum = optional_param('forum', 0, PARAM_INT); diff --git a/mod/forum/view.php b/mod/forum/view.php index 36ce2016b5d..90c5d4deb84 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -23,7 +23,7 @@ require_once('../../config.php'); require_once('lib.php'); - + require_once($CFG->libdir.'/completionlib.php'); $id = optional_param('id', 0, PARAM_INT); // Course Module ID $f = optional_param('f', 0, PARAM_INT); // Forum ID diff --git a/mod/page/view.php b/mod/page/view.php index 6cc4e2c10c8..f433a93ff00 100644 --- a/mod/page/view.php +++ b/mod/page/view.php @@ -26,6 +26,7 @@ require('../../config.php'); require_once($CFG->dirroot.'/mod/page/locallib.php'); +require_once($CFG->libdir.'/completionlib.php'); $id = optional_param('id', 0, PARAM_INT); // Course Module ID $p = optional_param('p', 0, PARAM_INT); // Page instance ID diff --git a/mod/resource/lib.php b/mod/resource/lib.php index a15b55f1e2e..3111a5183d0 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -231,6 +231,8 @@ function resource_get_coursemodule_info($coursemodule) { global $CFG, $DB; require_once("$CFG->libdir/filelib.php"); require_once("$CFG->dirroot/mod/resource/locallib.php"); + require_once($CFG->libdir.'/completionlib.php'); + $context = get_context_instance(CONTEXT_MODULE, $coursemodule->id); if (!$resource = $DB->get_record('resource', array('id'=>$coursemodule->instance), 'id, name, display, displayoptions, tobemigrated, revision')) { diff --git a/mod/resource/view.php b/mod/resource/view.php index 457da90e214..c534e35cc74 100644 --- a/mod/resource/view.php +++ b/mod/resource/view.php @@ -26,6 +26,7 @@ require('../../config.php'); require_once($CFG->dirroot.'/mod/resource/locallib.php'); +require_once($CFG->libdir.'/completionlib.php'); $id = optional_param('id', 0, PARAM_INT); // Course Module ID $r = optional_param('r', 0, PARAM_INT); // Resource instance ID @@ -55,7 +56,6 @@ require_capability('mod/resource:view', $context); add_to_log($course->id, 'resource', 'view', 'view.php?id='.$cm->id, $resource->id, $cm->id); // Update 'viewed' state if required by completion system -require_once($CFG->libdir . '/completionlib.php'); $completion = new completion_info($course); $completion->set_module_viewed($cm); diff --git a/mod/workshop/view.php b/mod/workshop/view.php index 12f73ba4fb3..a13f97fa4a6 100644 --- a/mod/workshop/view.php +++ b/mod/workshop/view.php @@ -29,6 +29,7 @@ require_once(dirname(dirname(dirname(__FILE__))).'/config.php'); require_once(dirname(__FILE__).'/locallib.php'); +require_once($CFG->libdir.'/completionlib.php'); $id = optional_param('id', 0, PARAM_INT); // course_module ID, or $w = optional_param('w', 0, PARAM_INT); // workshop instance ID