Commit | Line | Data |
---|---|---|
b980c56e | 1 | <?php |
b980c56e PS |
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/>. | |
16 | ||
b980c56e PS |
17 | /** |
18 | * Cohort related management functions, this file needs to be included manually. | |
19 | * | |
6eb8bf7f | 20 | * @package core_cohort |
707f4136 | 21 | * @copyright 2010 Petr Skoda {@link http://skodak.org} |
b980c56e PS |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
23 | */ | |
24 | ||
25 | require('../config.php'); | |
6b6fd4b0 LC |
26 | require_once($CFG->dirroot.'/course/lib.php'); |
27 | require_once($CFG->dirroot.'/cohort/lib.php'); | |
28 | require_once($CFG->dirroot.'/cohort/edit_form.php'); | |
b980c56e PS |
29 | |
30 | $id = optional_param('id', 0, PARAM_INT); | |
31 | $contextid = optional_param('contextid', 0, PARAM_INT); | |
32 | $delete = optional_param('delete', 0, PARAM_BOOL); | |
80f98467 MG |
33 | $show = optional_param('show', 0, PARAM_BOOL); |
34 | $hide = optional_param('hide', 0, PARAM_BOOL); | |
b980c56e | 35 | $confirm = optional_param('confirm', 0, PARAM_BOOL); |
274dc068 | 36 | $returnurl = optional_param('returnurl', '', PARAM_LOCALURL); |
b980c56e PS |
37 | |
38 | require_login(); | |
39 | ||
40 | $category = null; | |
41 | if ($id) { | |
42 | $cohort = $DB->get_record('cohort', array('id'=>$id), '*', MUST_EXIST); | |
d197ea43 | 43 | $context = context::instance_by_id($cohort->contextid, MUST_EXIST); |
b980c56e | 44 | } else { |
d197ea43 | 45 | $context = context::instance_by_id($contextid, MUST_EXIST); |
b980c56e | 46 | if ($context->contextlevel != CONTEXT_COURSECAT and $context->contextlevel != CONTEXT_SYSTEM) { |
73d60436 | 47 | throw new \moodle_exception('invalidcontext'); |
b980c56e | 48 | } |
fbaea88f | 49 | $cohort = new stdClass(); |
b980c56e PS |
50 | $cohort->id = 0; |
51 | $cohort->contextid = $context->id; | |
52 | $cohort->name = ''; | |
53 | $cohort->description = ''; | |
54 | } | |
55 | ||
c7d5ed1c | 56 | require_capability('moodle/cohort:manage', $context); |
b980c56e | 57 | |
274dc068 MG |
58 | if ($returnurl) { |
59 | $returnurl = new moodle_url($returnurl); | |
60 | } else { | |
61 | $returnurl = new moodle_url('/cohort/index.php', array('contextid'=>$context->id)); | |
62 | } | |
b980c56e | 63 | |
4a0ef03e | 64 | if (!empty($cohort->component)) { |
6eb8bf7f | 65 | // We can not manually edit cohorts that were created by external systems, sorry. |
4a0ef03e PS |
66 | redirect($returnurl); |
67 | } | |
68 | ||
b980c56e | 69 | $PAGE->set_context($context); |
274dc068 MG |
70 | $baseurl = new moodle_url('/cohort/edit.php', array('contextid' => $context->id, 'id' => $cohort->id)); |
71 | $PAGE->set_url($baseurl); | |
b980c56e | 72 | $PAGE->set_context($context); |
d5814f4e | 73 | $PAGE->set_pagelayout('admin'); |
b980c56e | 74 | |
b980c56e | 75 | if ($context->contextlevel == CONTEXT_COURSECAT) { |
0cbe8704 MG |
76 | core_course_category::page_setup(); |
77 | // Set the cohorts node active in the settings navigation block. | |
78 | if ($cohortsnode = $PAGE->settingsnav->find('cohort', navigation_node::TYPE_SETTING)) { | |
79 | $cohortsnode->make_active(); | |
80 | } | |
81 | ||
82 | $PAGE->set_secondary_active_tab('cohort'); | |
21c8d60d PS |
83 | |
84 | } else { | |
85 | navigation_node::override_active_url(new moodle_url('/cohort/index.php', array())); | |
0cbe8704 | 86 | $PAGE->set_heading($COURSE->fullname); |
b980c56e | 87 | } |
b980c56e PS |
88 | |
89 | if ($delete and $cohort->id) { | |
90 | $PAGE->url->param('delete', 1); | |
91 | if ($confirm and confirm_sesskey()) { | |
92 | cohort_delete_cohort($cohort); | |
93 | redirect($returnurl); | |
94 | } | |
95 | $strheading = get_string('delcohort', 'cohort'); | |
96 | $PAGE->navbar->add($strheading); | |
97 | $PAGE->set_title($strheading); | |
98 | echo $OUTPUT->header(); | |
99 | echo $OUTPUT->heading($strheading); | |
274dc068 MG |
100 | $yesurl = new moodle_url('/cohort/edit.php', array('id' => $cohort->id, 'delete' => 1, |
101 | 'confirm' => 1, 'sesskey' => sesskey(), 'returnurl' => $returnurl->out_as_local_url())); | |
b980c56e PS |
102 | $message = get_string('delconfirm', 'cohort', format_string($cohort->name)); |
103 | echo $OUTPUT->confirm($message, $yesurl, $returnurl); | |
104 | echo $OUTPUT->footer(); | |
105 | die; | |
106 | } | |
107 | ||
80f98467 MG |
108 | if ($show && $cohort->id && confirm_sesskey()) { |
109 | if (!$cohort->visible) { | |
110 | $record = (object)array('id' => $cohort->id, 'visible' => 1, 'contextid' => $cohort->contextid); | |
111 | cohort_update_cohort($record); | |
112 | } | |
113 | redirect($returnurl); | |
114 | } | |
115 | ||
116 | if ($hide && $cohort->id && confirm_sesskey()) { | |
117 | if ($cohort->visible) { | |
118 | $record = (object)array('id' => $cohort->id, 'visible' => 0, 'contextid' => $cohort->contextid); | |
119 | cohort_update_cohort($record); | |
120 | } | |
121 | redirect($returnurl); | |
122 | } | |
123 | ||
62184733 MG |
124 | $editoroptions = array('maxfiles' => EDITOR_UNLIMITED_FILES, |
125 | 'maxbytes' => $SITE->maxbytes, 'context' => $context); | |
b980c56e | 126 | if ($cohort->id) { |
6eb8bf7f | 127 | // Edit existing. |
62184733 MG |
128 | $cohort = file_prepare_standard_editor($cohort, 'description', $editoroptions, |
129 | $context, 'cohort', 'description', $cohort->id); | |
b980c56e PS |
130 | $strheading = get_string('editcohort', 'cohort'); |
131 | ||
132 | } else { | |
6eb8bf7f | 133 | // Add new. |
62184733 MG |
134 | $cohort = file_prepare_standard_editor($cohort, 'description', $editoroptions, |
135 | $context, 'cohort', 'description', null); | |
b980c56e PS |
136 | $strheading = get_string('addcohort', 'cohort'); |
137 | } | |
138 | ||
139 | $PAGE->set_title($strheading); | |
140 | $PAGE->navbar->add($strheading); | |
141 | ||
274dc068 | 142 | $editform = new cohort_edit_form(null, array('editoroptions'=>$editoroptions, 'data'=>$cohort, 'returnurl'=>$returnurl)); |
b980c56e PS |
143 | |
144 | if ($editform->is_cancelled()) { | |
145 | redirect($returnurl); | |
146 | ||
147 | } else if ($data = $editform->get_data()) { | |
62184733 MG |
148 | $oldcontextid = $context->id; |
149 | $editoroptions['context'] = $context = context::instance_by_id($data->contextid); | |
b980c56e PS |
150 | |
151 | if ($data->id) { | |
62184733 MG |
152 | if ($data->contextid != $oldcontextid) { |
153 | // Cohort was moved to another context. | |
154 | get_file_storage()->move_area_files_to_new_context($oldcontextid, $context->id, | |
155 | 'cohort', 'description', $data->id); | |
156 | } | |
157 | $data = file_postupdate_standard_editor($data, 'description', $editoroptions, | |
158 | $context, 'cohort', 'description', $data->id); | |
b980c56e PS |
159 | cohort_update_cohort($data); |
160 | } else { | |
62184733 MG |
161 | $data->descriptionformat = $data->description_editor['format']; |
162 | $data->description = $description = $data->description_editor['text']; | |
163 | $data->id = cohort_add_cohort($data); | |
164 | $editoroptions['context'] = $context = context::instance_by_id($data->contextid); | |
165 | $data = file_postupdate_standard_editor($data, 'description', $editoroptions, | |
166 | $context, 'cohort', 'description', $data->id); | |
167 | if ($description != $data->description) { | |
168 | $updatedata = (object)array('id' => $data->id, | |
169 | 'description' => $data->description, 'contextid' => $context->id); | |
170 | cohort_update_cohort($updatedata); | |
171 | } | |
b980c56e PS |
172 | } |
173 | ||
274dc068 MG |
174 | if ($returnurl->get_param('showall') || $returnurl->get_param('contextid') == $data->contextid) { |
175 | // Redirect to where we were before. | |
176 | redirect($returnurl); | |
177 | } else { | |
178 | // Use new context id, it has been changed. | |
179 | redirect(new moodle_url('/cohort/index.php', array('contextid' => $data->contextid))); | |
180 | } | |
b980c56e PS |
181 | } |
182 | ||
183 | echo $OUTPUT->header(); | |
184 | echo $OUTPUT->heading($strheading); | |
274dc068 MG |
185 | |
186 | if (!$id && ($editcontrols = cohort_edit_controls($context, $baseurl))) { | |
187 | echo $OUTPUT->render($editcontrols); | |
188 | } | |
189 | ||
b980c56e PS |
190 | echo $editform->display(); |
191 | echo $OUTPUT->footer(); | |
192 |