-
Notifications
You must be signed in to change notification settings - Fork 8
/
comment.php
125 lines (96 loc) · 4.52 KB
/
comment.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* @package mod_tracker
* @category mod
* @author Clifford Tham, Valery Fremaux > 1.8
*/
require('../../config.php');
require_once($CFG->dirroot.'/mod/tracker/lib.php');
require_once($CFG->dirroot.'/mod/tracker/locallib.php');
require_once($CFG->dirroot.'/mod/tracker/forms/addcomment_form.php');
$issueid = required_param('issueid', PARAM_INT); // Tracker ID.
$commentid = optional_param('commentid', 0, PARAM_INT); // Id of comment for editing.
$id = optional_param('id', 0, PARAM_INT); // Course Module ID, or.
$t = optional_param('t', 0, PARAM_INT); // Tracker ID.
list($cm, $tracker, $course) = tracker_get_context($id, $t);
// Security.
$context = context_module::instance($cm->id);
require_course_login($course->id, false, $cm);
require_capability('mod/tracker:comment', $context);
if (!$issue = $DB->get_record('tracker_issue', array('id' => $issueid))) {
print_error('errorbadissueid', 'tracker');
}
// Setting page.
$url = new moodle_url('/mod/tracker/comment.php', array('id' => $id, 'issueid' => $issueid));
$PAGE->set_url($url);
$PAGE->set_context($context);
$PAGE->set_title(format_string($tracker->name));
$PAGE->set_heading(format_string($tracker->name));
$form = new addedit_comment_form(new moodle_url('/mod/tracker/comment.php'), array('issueid' => $issueid, 'cmid' => $id));
if ($form->is_cancelled()) {
$params = array('id' => $id, 'view' => 'view', 'screen' => 'viewanissue', 'issueid' => $issueid);
redirect(new moodle_url('/mod/tracker/view.php', $params));
}
if ($data = $form->get_data()) {
if (empty($data->commentid)) {
$comment = new StdClass();
$comment->comment = $data->comment_editor['text'];
$comment->commentformat = $data->comment_editor['format'];
$comment->userid = $USER->id;
$comment->trackerid = $tracker->id;
$comment->issueid = $issueid;
$comment->datecreated = time();
$comment->id = $DB->insert_record('tracker_issuecomment', $comment);
} else {
$comment = $data;
$comment->id = $comment->commentid;
unset($data->id);
$DB->update_record('tracker_issuecomment', $comment);
}
if ($tracker->allownotifications) {
tracker_notifyccs_comment($issueid, $comment->comment, $tracker);
}
tracker_register_cc($tracker, $issue, $USER->id);
// Stores files.
$data = file_postupdate_standard_editor($data, 'comment', $form->editoroptions, $context,
'mod_tracker', 'issuecomment', $commentid);
// Update back reencoded field text content.
$DB->set_field('tracker_issuecomment', 'comment', $data->comment, array('id' => $comment->id));
$params = array('id' => $id, 'view' => 'view', 'screen' => 'viewanissue', 'issueid' => $issueid);
$event = \mod_tracker\event\tracker_issuecommented::create_from_issue($tracker, $issueid);
$event->trigger();
redirect(new moodle_url('/mod/tracker/view.php', $params));
}
$comment = $DB->get_record('tracker_issuecomment', array('id' => $commentid));
echo $OUTPUT->header();
echo $OUTPUT->heading('['.$tracker->ticketprefix.$issue->id.'] '.$issue->summary);
$description = file_rewrite_pluginfile_urls($issue->description, 'pluginfile.php', $context->id, 'mod_tracker',
'issuedescription', $issue->id);
if ($lastcomments = $DB->get_records('tracker_issuecomment', array('issueid' => $issue->id), 'datecreated DESC', '*', 0, 1)) {
$lastcomment = array_shift($lastcomments);
}
echo $OUTPUT->box(format_text($description, $issue->descriptionformat), 'tracker-issue-description');
$renderer = $PAGE->get_renderer('mod_tracker');
if (!empty($lastcomment)) {
echo $renderer->last_comment($lastcomment);
}
echo $OUTPUT->heading(get_string('addacomment', 'tracker'));
if (!empty($commentid)) {
$form->set_date($comment);
}
$form->display();
echo $OUTPUT->footer();