ba60ba049f771d260900bd3c0501f64b463a6d98
[moodle.git] / enrol / category / lib.php
1 <?php
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * Category enrolment plugin.
20  *
21  * @package    enrol
22  * @subpackage category
23  * @copyright  2010 Petr Skoda {@link http://skodak.org}
24  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25  */
27 defined('MOODLE_INTERNAL') || die();
29 /**
30  * category enrolment plugin implementation.
31  * @author Petr Skoda
32  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
33  */
34 class enrol_category_plugin extends enrol_plugin {
36    /**
37      * Is it possible to delete enrol instance via standard UI?
38      *
39      * @param object $instance
40      * @return bool
41      */
42     public function instance_deleteable($instance) {
43         global $DB;
45         if (!enrol_is_enabled('category')) {
46             return true;
47         }
48         // allow delete only when no synced users here
49         return !$DB->record_exists('user_enrolments', array('enrolid'=>$instance->id));
50     }
52     /**
53      * Returns link to page which may be used to add new instance of enrolment plugin in course.
54      * @param int $courseid
55      * @return moodle_url page url
56      */
57     public function get_newinstance_link($courseid) {
58         // instances are added automatically as necessary
59         return NULL;
60     }
62     /**
63      * Called for all enabled enrol plugins that returned true from is_cron_required().
64      * @return void
65      */
66     public function cron() {
67         global $CFG;
69         if (!enrol_is_enabled('category')) {
70             return;
71         }
73         require_once("$CFG->dirroot/enrol/category/locallib.php");
74         enrol_category_sync_full();
75     }
77     /**
78      * Called after updating/inserting course.
79      *
80      * @param bool $inserted true if course just inserted
81      * @param object $course
82      * @param object $data form data
83      * @return void
84      */
85     public function course_updated($inserted, $course, $data) {
86         global $CFG;
88         if (!enrol_is_enabled('category')) {
89             return;
90         }
92         // sync category enrols
93         require_once("$CFG->dirroot/enrol/category/locallib.php");
94         enrol_category_sync_course($course);
95     }
96 }