32f25b2bcd88afda42e78186fb5b7709564aaf25
[moodle.git] / admin / tool / lp / classes / course_competency_settings.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Class for course_competency_settings persistence.
19  *
20  * @package    tool_lp
21  * @copyright  2016 Damyon Wiese
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
24 namespace tool_lp;
26 use lang_string;
27 use context_course;
29 defined('MOODLE_INTERNAL') || die();
31 /**
32  * Class for course_competency_settings persistence.
33  *
34  * @copyright  2016 Damyon Wiese
35  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36  */
37 class course_competency_settings extends persistent {
39     /** Table name for plan_competency persistency */
40     const TABLE = 'tool_lp_coursecompsettings';
42     /**
43      * Return the definition of the properties of this model.
44      *
45      * @return array
46      */
47     protected static function define_properties() {
48         return array(
49             'courseid' => array(
50                 'type' => PARAM_INT,
51             ),
52             'pushratingstouserplans' => array(
53                 'type' => PARAM_BOOL,
54                 'default' => get_config('tool_lp', 'pushcourseratingstouserplans')
55             ),
56         );
57     }
59     /**
60      * Get a the course settings for a single course.
61      *
62      * @param int $courseid The course id
63      * @return course_competency_settings
64      */
65     public static function get_by_courseid($courseid) {
66         global $DB;
68         $params = array(
69             'courseid' => $courseid
70         );
72         $settings = new static(null, (object) $params);
73         if ($record = $DB->get_record(self::TABLE, $params)) {
74             $settings->from_record($record);
75         }
77         return $settings;
78     }
80     /**
81      * Can the current user view competency settings for this course.
82      *
83      * @param int $data The course ID.
84      * @return bool
85      */
86     public static function can_read($courseid) {
87         $context = context_course::instance($courseid);
89         $capabilities = array('tool/lp:coursecompetencyview');
91         return has_any_capability($capabilities, $context);
92     }
94     /**
95      * Can the current user change competency settings for this course.
96      *
97      * @param int $data The course ID.
98      * @return bool
99      */
100     public static function can_manage_course($courseid) {
101         $context = context_course::instance($courseid);
103         $capabilities = array('tool/lp:coursecompetencyconfigure');
105         return has_any_capability($capabilities, $context);
106     }
108     /**
109      * Can the current user change competency settings for this course.
110      *
111      * @return bool
112      */
113     public function can_manage() {
114         return static::can_manage_course($this->get_courseid());
115     }
117     /**
118      * Validate course ID.
119      *
120      * @param int $data The course ID.
121      * @return true|lang_string
122      */
123     protected function validate_courseid($data) {
124         global $DB;
125         if (!$DB->record_exists('course', array('id' => $data))) {
126             return new lang_string('invalidcourseid', 'error');
127         }
128         return true;
129     }
131     /**
132      * Get the context.
133      *
134      * @return context The context
135      */
136     public function get_context() {
137         return context_course::instance($this->get_courseid());
138     }