Commit | Line | Data |
---|---|---|
1bcb7eb5 | 1 | <?php |
2 | ||
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/>. | |
17 | ||
18 | /* | |
19 | * Handling all ajax request for comments API | |
20 | */ | |
2696b976 PS |
21 | define('AJAX_SCRIPT', true); |
22 | ||
1bcb7eb5 | 23 | require_once('../config.php'); |
36051c9e | 24 | require_once($CFG->dirroot . '/comment/lib.php'); |
1bcb7eb5 | 25 | |
1bcb7eb5 | 26 | $contextid = optional_param('contextid', SYSCONTEXTID, PARAM_INT); |
57588523 | 27 | list($context, $course, $cm) = get_context_info_array($contextid); |
1bcb7eb5 | 28 | |
467c85d7 DC |
29 | $PAGE->set_context($context); |
30 | $PAGE->set_url('/comment/comment_ajax.php'); | |
31 | ||
18fb4d75 DC |
32 | $action = optional_param('action', '', PARAM_ALPHA); |
33 | ||
d846488e DC |
34 | // XXX: display comments in frontpage without login |
35 | if ($context->id != get_context_instance(CONTEXT_COURSE, SITEID)->id | |
36 | or $action == 'add' | |
37 | or $action == 'delete') { | |
38 | require_login($course, true, $cm); | |
39 | } | |
2696b976 | 40 | require_sesskey(); |
1bcb7eb5 | 41 | |
467c85d7 DC |
42 | $area = optional_param('area', '', PARAM_ALPHAEXT); |
43 | $client_id = optional_param('client_id', '', PARAM_RAW); | |
44 | $commentid = optional_param('commentid', -1, PARAM_INT); | |
45 | $content = optional_param('content', '', PARAM_RAW); | |
46 | $itemid = optional_param('itemid', '', PARAM_INT); | |
47 | $page = optional_param('page', 0, PARAM_INT); | |
7ade777c | 48 | $component = optional_param('component', '', PARAM_ALPHAEXT); |
1bcb7eb5 | 49 | |
bce08d9a PS |
50 | echo $OUTPUT->header(); // send headers |
51 | ||
467c85d7 | 52 | // initilising comment object |
1bcb7eb5 | 53 | if (!empty($client_id)) { |
467c85d7 DC |
54 | $args = new stdclass; |
55 | $args->context = $context; | |
56 | $args->course = $course; | |
57 | $args->cm = $cm; | |
58 | $args->area = $area; | |
59 | $args->itemid = $itemid; | |
60 | $args->client_id = $client_id; | |
7ade777c | 61 | $args->component = $component; |
467c85d7 | 62 | $manager = new comment($args); |
866354a9 DC |
63 | } else { |
64 | die; | |
1bcb7eb5 | 65 | } |
866354a9 | 66 | |
467c85d7 | 67 | // process ajax request |
1bcb7eb5 | 68 | switch ($action) { |
2696b976 | 69 | case 'add': |
467c85d7 DC |
70 | $result = $manager->add($content); |
71 | if (!empty($result) && is_object($result)) { | |
72 | $result->count = $manager->count(); | |
73 | $result->client_id = $client_id; | |
74 | echo json_encode($result); | |
15894c65 | 75 | } |
2696b976 PS |
76 | break; |
77 | case 'delete': | |
467c85d7 | 78 | $result = $manager->delete($commentid); |
15894c65 | 79 | if ($result === true) { |
80 | echo json_encode(array('client_id'=>$client_id, 'commentid'=>$commentid)); | |
81 | } | |
2696b976 PS |
82 | break; |
83 | case 'get': | |
84 | default: | |
467c85d7 DC |
85 | $result = array(); |
86 | $comments = $manager->get_comments($page); | |
87 | $result['list'] = $comments; | |
88 | $result['count'] = $manager->count(); | |
89 | $result['pagination'] = $manager->get_pagination($page); | |
90 | $result['client_id'] = $client_id; | |
91 | echo json_encode($result); | |
1bcb7eb5 | 92 | } |