Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 13... Línea 13...
13
//
13
//
14
// You should have received a copy of the GNU General Public License
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/>.
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
Línea 16... Línea 16...
16
 
16
 
17
/**
17
/**
18
 * Editing badge details, criteria, messages
18
 * Editing badge details, criteria, messages.
19
 *
19
 *
20
 * @package    core
-
 
21
 * @subpackage badges
20
 * @package    core_badges
22
 * @copyright  2012 onwards Totara Learning Solutions Ltd {@link http://www.totaralms.com/}
21
 * @copyright  2012 onwards Totara Learning Solutions Ltd {@link http://www.totaralms.com/}
23
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24
 * @author     Yuliya Bozhko <yuliya.bozhko@totaralms.com>
23
 * @author     Yuliya Bozhko <yuliya.bozhko@totaralms.com>
Línea 25... Línea 24...
25
 */
24
 */
26
 
25
 
27
require_once(__DIR__ . '/../config.php');
26
require_once(__DIR__ . '/../config.php');
Línea -... Línea 27...
-
 
27
require_once($CFG->libdir . '/badgeslib.php');
-
 
28
require_once($CFG->libdir . '/filelib.php');
-
 
29
 
-
 
30
// Used only for creating new badge.
-
 
31
$courseid = optional_param('courseid', 0, PARAM_INT);
-
 
32
if ($courseid === 0 ) {
-
 
33
    $courseid = null;
28
require_once($CFG->libdir . '/badgeslib.php');
34
}
29
require_once($CFG->libdir . '/filelib.php');
35
 
Línea 30... Línea 36...
30
 
36
// Used for editing existing badge.
Línea 31... Línea 37...
31
$badgeid = required_param('id', PARAM_INT);
37
$badgeid = optional_param('id', null, PARAM_INT);
32
$action = optional_param('action', 'badge', PARAM_TEXT);
38
$action = optional_param('action', 'badge', PARAM_TEXT);
33
 
39
 
Línea -... Línea 40...
-
 
40
require_login();
-
 
41
 
34
require_login();
42
if (empty($CFG->enablebadges)) {
-
 
43
    throw new \moodle_exception('badgesdisabled', 'badges');
-
 
44
}
-
 
45
 
-
 
46
if (!empty($badgeid)) {
-
 
47
    // Existing badge.
-
 
48
    $badge = new badge($badgeid);
-
 
49
 
-
 
50
    if ($badge->courseid) {
35
 
51
        $course = get_course($badge->courseid);
-
 
52
    }
-
 
53
    $params = ['id' => $badgeid, 'action' => $action];
-
 
54
    $badgename = $badge->name;
-
 
55
 
36
if (empty($CFG->enablebadges)) {
56
    // Check capabilities.
-
 
57
    $context = $badge->get_context();
-
 
58
    if ($action == 'message') {
Línea 37... Línea -...
37
    throw new \moodle_exception('badgesdisabled', 'badges');
-
 
38
}
59
        $title = [get_string('configuremessage', 'badges'), $badge->name];
39
 
60
        require_capability('moodle/badges:configuremessages', $context);
-
 
61
    } else {
-
 
62
        $title = [get_string('badgedetails', 'badges'), $badge->name];
-
 
63
        require_capability('moodle/badges:configuredetails', $context);
-
 
64
    }
-
 
65
 
-
 
66
    $cancelurl = new moodle_url('/badges/overview.php', ['id' => $badgeid]);
-
 
67
} else {
-
 
68
    // New badge.
-
 
69
    if ($courseid) {
-
 
70
        $course = get_course($courseid);
-
 
71
        $context = context_course::instance($course->id);
-
 
72
    } else {
-
 
73
        $context = context_system::instance();
-
 
74
    }
-
 
75
 
-
 
76
    $badge = new stdClass();
-
 
77
    $badge->id = null;
-
 
78
    $badge->type = $courseid ? BADGE_TYPE_COURSE : BADGE_TYPE_SITE;
40
$badge = new badge($badgeid);
79
    $badge->courseid = $courseid;
-
 
80
 
-
 
81
    $params = ['courseid' => $courseid];
-
 
82
    $badgename = get_string('create', 'badges');
-
 
83
    $title = [$badgename];
-
 
84
 
-
 
85
    // Check capabilities.
-
 
86
    require_capability('moodle/badges:createbadge', $context);
41
$context = $badge->get_context();
87
 
Línea -... Línea 88...
-
 
88
    $cancelurl = new moodle_url('/badges/index.php', ['type' => $badge->type, 'id' => $courseid]);
42
$navurl = new moodle_url('/badges/index.php', array('type' => $badge->type));
89
}
43
 
-
 
44
if ($action == 'message') {
-
 
45
    require_capability('moodle/badges:configuremessages', $context);
-
 
46
} else {
90
 
47
    require_capability('moodle/badges:configuredetails', $context);
-
 
48
}
91
// Check if course badges are enabled.
-
 
92
if (empty($CFG->badges_allowcoursebadges) && ($badge->type == BADGE_TYPE_COURSE)) {
49
 
93
    throw new \moodle_exception('coursebadgesdisabled', 'badges');
50
if ($badge->type == BADGE_TYPE_COURSE) {
94
}
51
    if (empty($CFG->badges_allowcoursebadges)) {
95
 
52
        throw new \moodle_exception('coursebadgesdisabled', 'badges');
96
$navurl = new moodle_url('/badges/index.php', ['type' => $badge->type]);
53
    }
97
if ($badge->type == BADGE_TYPE_COURSE) {
54
    require_login($badge->courseid);
98
    require_login($badge->courseid);
55
    $course = get_course($badge->courseid);
99
    $heading = format_string($course->fullname, true, ['context' => $context]);
56
    $heading = format_string($course->fullname, true, ['context' => $context]);
100
    $title[] = $heading;
Línea 57... Línea 101...
57
    $navurl = new moodle_url('/badges/index.php', array('type' => $badge->type, 'id' => $badge->courseid));
101
    $navurl = new moodle_url('/badges/index.php', ['type' => $badge->type, 'id' => $badge->courseid]);
Línea 58... Línea 102...
58
    $PAGE->set_pagelayout('incourse');
102
    $PAGE->set_pagelayout('incourse');
59
    navigation_node::override_active_url($navurl);
103
    navigation_node::override_active_url($navurl);
60
} else {
104
} else {
61
    $PAGE->set_pagelayout('admin');
105
    $PAGE->set_pagelayout('admin');
62
    $heading = get_string('administrationsite');
106
    $heading = get_string('administrationsite');
63
    navigation_node::override_active_url($navurl, true);
107
    navigation_node::override_active_url($navurl, true);
Línea -... Línea 108...
-
 
108
}
64
}
109
 
65
 
110
$currenturl = new moodle_url('/badges/edit.php', $params);
66
$currenturl = new moodle_url('/badges/edit.php', array('id' => $badge->id, 'action' => $action));
111
 
Línea -... Línea 112...
-
 
112
$PAGE->set_context($context);
-
 
113
$PAGE->set_url($currenturl);
67
 
114
$PAGE->set_heading($heading);
68
$PAGE->set_context($context);
115
$PAGE->set_title(implode(\moodle_page::TITLE_SEPARATOR, $title));
69
$PAGE->set_url($currenturl);
116
$PAGE->add_body_class('limitedwidth');
70
$PAGE->set_heading($heading);
117
$PAGE->navbar->add($badgename);
71
$PAGE->set_title($badge->name);
118
 
72
$PAGE->add_body_class('limitedwidth');
119
/** @var \core_badges_renderer $output*/
73
$PAGE->navbar->add($badge->name);
120
$output = $PAGE->get_renderer('core', 'badges');
74
 
121
$statusmsg = '';
75
$output = $PAGE->get_renderer('core', 'badges');
122
$errormsg  = '';
76
$statusmsg = '';
123
 
77
$errormsg  = '';
124
$editoroptions = [];
-
 
125
if ($badge->id && $action == 'message') {
Línea 78... Línea 126...
78
 
126
    $badge->message = clean_text($badge->message, FORMAT_HTML);
-
 
127
    $editoroptions = [
-
 
128
        'subdirs' => 0,
-
 
129
        'maxbytes' => 0,
-
 
130
        'maxfiles' => 0,
-
 
131
        'changeformat' => 0,
79
$badge->message = clean_text($badge->message, FORMAT_HTML);
132
        'context' => $context,
-
 
133
        'noclean' => false,
-
 
134
        'trusttext' => false,
-
 
135
    ];
Línea -... Línea 136...
-
 
136
    $badge = file_prepare_standard_editor($badge, 'message', $editoroptions, $context);
80
$editoroptions = array(
137
}
81
        'subdirs' => 0,
138
 
82
        'maxbytes' => 0,
139
$formclass = '\core_badges\form' . '\\' . ($action == 'new' ? 'badge' : $action);
83
        'maxfiles' => 0,
140
$params = [
84
        'changeformat' => 0,
141
    'action' => $action,
85
        'context' => $context,
-
 
86
        'noclean' => false,
142
];
87
        'trusttext' => false
-
 
88
        );
-
 
89
$badge = file_prepare_standard_editor($badge, 'message', $editoroptions, $context);
-
 
90
 
-
 
91
$formclass = '\core_badges\form' . '\\' . $action;
-
 
92
$form = new $formclass($currenturl, array('badge' => $badge, 'action' => $action, 'editoroptions' => $editoroptions));
-
 
93
 
-
 
94
if ($form->is_cancelled()) {
143
if ($badge->id) {
95
    redirect(new moodle_url('/badges/overview.php', array('id' => $badgeid)));
144
    $params['badge'] = $badge;
96
} else if ($form->is_submitted() && $form->is_validated() && ($data = $form->get_data())) {
-
 
97
    if ($action == 'badge') {
-
 
98
        $badge->name = $data->name;
-
 
99
        $badge->version = trim($data->version);
-
 
100
        $badge->language = $data->language;
-
 
101
        $badge->description = $data->description;
-
 
102
        $badge->imageauthorname = $data->imageauthorname;
-
 
103
        $badge->imageauthoremail = $data->imageauthoremail;
-
 
104
        $badge->imageauthorurl = $data->imageauthorurl;
-
 
105
        $badge->imagecaption = $data->imagecaption;
-
 
106
        $badge->usermodified = $USER->id;
-
 
107
        if (badges_open_badges_backpack_api() == OPEN_BADGES_V1) {
145
    $params['editoroptions'] = $editoroptions;
-
 
146
} else {
-
 
147
    $params['courseid'] = $courseid;
108
            $badge->issuername = $data->issuername;
148
}
109
            $badge->issuerurl = $data->issuerurl;
149
 
110
            $badge->issuercontact = $data->issuercontact;
150
$form = new $formclass($currenturl, $params);
111
        }
151
if ($form->is_cancelled()) {
112
        $badge->expiredate = ($data->expiry == 1) ? $data->expiredate : null;
152
    redirect($cancelurl);
-
 
153
} else if ($form->is_submitted() && $form->is_validated() && ($data = $form->get_data())) {
113
        $badge->expireperiod = ($data->expiry == 2) ? $data->expireperiod : null;
154
    switch ($action) {
114
 
155
        case 'new':
115
        // Need to unset message_editor options to avoid errors on form edit.
156
            // Create new badge.
-
 
157
            $badge = badge::create_badge($data, $courseid);
116
        unset($badge->messageformat);
158
            $badgeid = $badge->id;
117
        unset($badge->message_editor);
159
            badges_process_badge_image($badge, $form->save_temp_file('image'));
118
 
160
 
119
        if ($badge->save()) {
161
            // If a user can configure badge criteria, they will be redirected to the criteria page.
120
            core_tag_tag::set_item_tags('core_badges', 'badge', $badge->id, $context, $data->tags);
162
            if (has_capability('moodle/badges:configurecriteria', $context)) {
121
            badges_process_badge_image($badge, $form->save_temp_file('image'));
163
                redirect(new moodle_url('/badges/criteria.php', ['id' => $badgeid]));
Línea 122... Línea -...
122
            $form->set_data($badge);
-
 
123
            $statusmsg = get_string('changessaved');
-
 
124
        } else {
-
 
125
            $errormsg = get_string('error:save', 'badges');
-
 
126
        }
-
 
127
    } else if ($action == 'message') {
164
            }
128
        // Calculate next message cron if form data is different from original badge data.
165
            redirect(new moodle_url('/badges/overview.php', ['id' => $badgeid]));
129
        if ($data->notification != $badge->notification) {
166
            break;
130
            if ($data->notification > BADGE_MESSAGE_ALWAYS) {
167
 
131
                $badge->nextcron = badges_calculate_message_schedule($data->notification);
168
        case 'badge':
132
            } else {
169
            // Edit existing badge.
133
                $badge->nextcron = null;
170
            if ($badge->update($data)) {
-
 
171
                badges_process_badge_image($badge, $form->save_temp_file('image'));
134
            }
172
                $form->set_data($badge);
135
        }
173
                $statusmsg = get_string('changessaved');
Línea 136... Línea 174...
136
 
174
            } else {
137
        $badge->message = clean_text($data->message_editor['text'], FORMAT_HTML);
-
 
138
        $badge->messagesubject = $data->messagesubject;
-
 
Línea -... Línea 175...
-
 
175
                $errormsg = get_string('error:save', 'badges');
-
 
176
            }
-
 
177
            break;
139
        $badge->notification = $data->notification;
178
 
Línea 140... Línea 179...
140
        $badge->attachment = $data->attachment;
179
        case 'message':
141
 
180
            // Update badge message.
Línea 142... Línea 181...
142
        unset($badge->messageformat);
181
            if ($badge->update_message($data)) {
143
        unset($badge->message_editor);
182
                $statusmsg = get_string('changessaved');
-
 
183
            } else {
-
 
184
                $errormsg = get_string('error:save', 'badges');
-
 
185
            }
-
 
186
            break;
144
        if ($badge->save()) {
187
    }
145
            $statusmsg = get_string('changessaved');
-
 
Línea 146... Línea 188...
146
        } else {
188
}
Línea 147... Línea 189...
147
            $errormsg = get_string('error:save', 'badges');
189