3 require_once('../../config.php');
4 require_once('lib.php');
5 require_once('edit_form.php');
7 $cmid = required_param('cmid', PARAM_INT
); // Course Module ID
8 $id = optional_param('id', 0, PARAM_INT
); // EntryID
10 if (!$cm = get_coursemodule_from_id('glossary', $cmid)) {
11 print_error('invalidcoursemodule');
14 if (!$course = $DB->get_record('course', array('id'=>$cm->course
))) {
15 print_error('coursemisconf');
18 require_login($course, false, $cm);
20 $context = context_module
::instance($cm->id
);
22 if (!$glossary = $DB->get_record('glossary', array('id'=>$cm->instance
))) {
23 print_error('invalidid', 'glossary');
26 $url = new moodle_url('/mod/glossary/edit.php', array('cmid'=>$cm->id
));
28 $url->param('id', $id);
32 if ($id) { // if entry is specified
34 print_error('guestnoedit', 'glossary', "$CFG->wwwroot/mod/glossary/view.php?id=$cmid");
37 if (!$entry = $DB->get_record('glossary_entries', array('id'=>$id, 'glossaryid'=>$glossary->id
))) {
38 print_error('invalidentry');
41 $ineditperiod = ((time() - $entry->timecreated
< $CFG->maxeditingtime
) ||
$glossary->editalways
);
42 if (!has_capability('mod/glossary:manageentries', $context) and !($entry->userid
== $USER->id
and ($ineditperiod and has_capability('mod/glossary:write', $context)))) {
43 if ($USER->id
!= $entry->userid
) {
44 print_error('errcannoteditothers', 'glossary', "view.php?id=$cm->id&mode=entry&hook=$id");
45 } elseif (!$ineditperiod) {
46 print_error('erredittimeexpired', 'glossary', "view.php?id=$cm->id&mode=entry&hook=$id");
51 if ($aliases = $DB->get_records_menu("glossary_alias", array("entryid"=>$id), '', 'id, alias')) {
52 $entry->aliases
= implode("\n", $aliases) . "\n";
54 if ($categoriesarr = $DB->get_records_menu("glossary_entries_categories", array('entryid'=>$id), '', 'id, categoryid')) {
55 // TODO: this fetches cats from both main and secondary glossary :-(
56 $entry->categories
= array_values($categoriesarr);
60 require_capability('mod/glossary:write', $context);
61 // note: guest user does not have any write capability
62 $entry = new stdClass();
66 list($definitionoptions, $attachmentoptions) = glossary_get_editor_and_attachment_options($course, $context, $entry);
68 $entry = file_prepare_standard_editor($entry, 'definition', $definitionoptions, $context, 'mod_glossary', 'entry', $entry->id
);
69 $entry = file_prepare_standard_filemanager($entry, 'attachment', $attachmentoptions, $context, 'mod_glossary', 'attachment', $entry->id
);
71 $entry->cmid
= $cm->id
;
73 // create form and set initial data
74 $mform = new mod_glossary_entry_form(null, array('current'=>$entry, 'cm'=>$cm, 'glossary'=>$glossary,
75 'definitionoptions'=>$definitionoptions, 'attachmentoptions'=>$attachmentoptions));
77 if ($mform->is_cancelled()){
79 redirect("view.php?id=$cm->id&mode=entry&hook=$id");
81 redirect("view.php?id=$cm->id");
84 } else if ($data = $mform->get_data()) {
85 $entry = glossary_edit_entry($data, $course, $cm, $glossary, $context);
86 if (core_tag_tag
::is_enabled('mod_glossary', 'glossary_entries') && isset($data->tags
)) {
87 core_tag_tag
::set_item_tags('mod_glossary', 'glossary_entries', $data->id
, $context, $data->tags
);
89 redirect("view.php?id=$cm->id&mode=entry&hook=$entry->id");
93 $PAGE->navbar
->add(get_string('edit'));
96 $PAGE->set_title($glossary->name
);
97 $PAGE->set_heading($course->fullname
);
98 echo $OUTPUT->header();
99 echo $OUTPUT->heading(format_string($glossary->name
), 2);
100 if ($glossary->intro
) {
101 echo $OUTPUT->box(format_module_intro('glossary', $glossary, $cm->id
), 'generalbox', 'intro');
104 $data = new StdClass();
105 $data->tags
= core_tag_tag
::get_item_tags_array('mod_glossary', 'glossary_entries', $id);
106 $mform->set_data($data);
110 echo $OUTPUT->footer();