1 |
efrain |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
require_once('../../config.php');
|
|
|
4 |
require_once('lib.php');
|
|
|
5 |
|
|
|
6 |
$id = required_param('id', PARAM_INT); // Entry ID
|
|
|
7 |
$confirm = optional_param('confirm', 0, PARAM_BOOL); // export confirmation
|
|
|
8 |
$prevmode = required_param('prevmode', PARAM_ALPHA);
|
|
|
9 |
$hook = optional_param('hook', '', PARAM_CLEAN);
|
|
|
10 |
|
|
|
11 |
$url = new moodle_url('/mod/glossary/exportentry.php', array('id'=>$id,'prevmode'=>$prevmode));
|
|
|
12 |
if ($confirm !== 0) {
|
|
|
13 |
$url->param('confirm', $confirm);
|
|
|
14 |
}
|
|
|
15 |
if ($hook !== 'ALL') {
|
|
|
16 |
$url->param('hook', $hook);
|
|
|
17 |
}
|
|
|
18 |
$PAGE->set_url($url);
|
|
|
19 |
|
|
|
20 |
if (!$entry = $DB->get_record('glossary_entries', array('id'=>$id))) {
|
|
|
21 |
throw new \moodle_exception('invalidentry');
|
|
|
22 |
}
|
|
|
23 |
|
|
|
24 |
if ($entry->sourceglossaryid) {
|
|
|
25 |
//already exported
|
|
|
26 |
if (!$cm = get_coursemodule_from_id('glossary', $entry->sourceglossaryid)) {
|
|
|
27 |
throw new \moodle_exception('invalidcoursemodule');
|
|
|
28 |
}
|
|
|
29 |
redirect('view.php?id='.$cm->id.'&mode=entry&hook='.$entry->id);
|
|
|
30 |
}
|
|
|
31 |
|
|
|
32 |
if (!$cm = get_coursemodule_from_instance('glossary', $entry->glossaryid)) {
|
|
|
33 |
throw new \moodle_exception('invalidcoursemodule');
|
|
|
34 |
}
|
|
|
35 |
|
|
|
36 |
if (!$glossary = $DB->get_record('glossary', array('id'=>$cm->instance))) {
|
|
|
37 |
throw new \moodle_exception('invalidid', 'glossary');
|
|
|
38 |
}
|
|
|
39 |
|
|
|
40 |
if (!$course = $DB->get_record('course', array('id'=>$cm->course))) {
|
|
|
41 |
throw new \moodle_exception('coursemisconf');
|
|
|
42 |
}
|
|
|
43 |
|
|
|
44 |
require_course_login($course->id, true, $cm);
|
|
|
45 |
$context = context_module::instance($cm->id);
|
|
|
46 |
require_capability('mod/glossary:export', $context);
|
|
|
47 |
|
|
|
48 |
$returnurl = "view.php?id=$cm->id&mode=$prevmode&hook=".urlencode($hook);
|
|
|
49 |
|
|
|
50 |
if (!$mainglossary = $DB->get_record('glossary', array('course'=>$cm->course, 'mainglossary'=>1))) {
|
|
|
51 |
//main glossary not present
|
|
|
52 |
redirect($returnurl);
|
|
|
53 |
}
|
|
|
54 |
|
|
|
55 |
if (!$maincm = get_coursemodule_from_instance('glossary', $mainglossary->id)) {
|
|
|
56 |
throw new \moodle_exception('invalidcoursemodule');
|
|
|
57 |
}
|
|
|
58 |
|
|
|
59 |
$context = context_module::instance($cm->id);
|
|
|
60 |
$maincontext = context_module::instance($maincm->id);
|
|
|
61 |
|
|
|
62 |
if (!$course = $DB->get_record('course', array('id'=>$cm->course))) {
|
|
|
63 |
throw new \moodle_exception('coursemisconf');
|
|
|
64 |
}
|
|
|
65 |
|
|
|
66 |
|
|
|
67 |
$strglossaries = get_string('modulenameplural', 'glossary');
|
|
|
68 |
$entryalreadyexist = get_string('entryalreadyexist','glossary');
|
|
|
69 |
$entryexported = get_string('entryexported','glossary');
|
|
|
70 |
|
|
|
71 |
if (!$mainglossary->allowduplicatedentries) {
|
|
|
72 |
if ($DB->record_exists_select('glossary_entries',
|
|
|
73 |
'glossaryid = :glossaryid AND LOWER(concept) = :concept', array(
|
|
|
74 |
'glossaryid' => $mainglossary->id,
|
|
|
75 |
'concept' => core_text::strtolower($entry->concept)))) {
|
|
|
76 |
$PAGE->set_title($glossary->name);
|
|
|
77 |
$PAGE->set_heading($course->fullname);
|
|
|
78 |
echo $OUTPUT->header();
|
|
|
79 |
echo $OUTPUT->notification(get_string('errconceptalreadyexists', 'glossary'));
|
|
|
80 |
echo $OUTPUT->continue_button($returnurl);
|
|
|
81 |
echo $OUTPUT->box_end();
|
|
|
82 |
echo $OUTPUT->footer();
|
|
|
83 |
die;
|
|
|
84 |
}
|
|
|
85 |
}
|
|
|
86 |
|
|
|
87 |
if (!data_submitted() or !$confirm or !confirm_sesskey()) {
|
|
|
88 |
$PAGE->set_title($glossary->name);
|
|
|
89 |
$PAGE->set_heading($course->fullname);
|
|
|
90 |
echo $OUTPUT->header();
|
|
|
91 |
echo '<div class="boxaligncenter">';
|
|
|
92 |
$areyousure = '<h2>'.format_string($entry->concept).'</h2><p align="center">'.get_string('areyousureexport','glossary').'<br /><b>'.format_string($mainglossary->name).'</b>?';
|
|
|
93 |
$linkyes = 'exportentry.php';
|
|
|
94 |
$linkno = 'view.php';
|
|
|
95 |
$optionsyes = array('id'=>$entry->id, 'confirm'=>1, 'sesskey'=>sesskey(), 'prevmode'=>$prevmode, 'hook'=>$hook);
|
|
|
96 |
$optionsno = array('id'=>$cm->id, 'mode'=>$prevmode, 'hook'=>$hook);
|
|
|
97 |
|
|
|
98 |
echo $OUTPUT->confirm($areyousure, new moodle_url($linkyes, $optionsyes), new moodle_url($linkno, $optionsno));
|
|
|
99 |
echo '</div>';
|
|
|
100 |
echo $OUTPUT->footer();
|
|
|
101 |
die;
|
|
|
102 |
|
|
|
103 |
} else {
|
|
|
104 |
$entry->glossaryid = $mainglossary->id;
|
|
|
105 |
$entry->sourceglossaryid = $glossary->id;
|
|
|
106 |
|
|
|
107 |
$DB->update_record('glossary_entries', $entry);
|
|
|
108 |
|
|
|
109 |
// move attachments too
|
|
|
110 |
$fs = get_file_storage();
|
|
|
111 |
|
|
|
112 |
if ($oldfiles = $fs->get_area_files($context->id, 'mod_glossary', 'attachment', $entry->id)) {
|
|
|
113 |
foreach ($oldfiles as $oldfile) {
|
|
|
114 |
$file_record = new stdClass();
|
|
|
115 |
$file_record->contextid = $maincontext->id;
|
|
|
116 |
$fs->create_file_from_storedfile($file_record, $oldfile);
|
|
|
117 |
}
|
|
|
118 |
$fs->delete_area_files($context->id, 'mod_glossary', 'attachment', $entry->id);
|
|
|
119 |
$entry->attachment = '1';
|
|
|
120 |
} else {
|
|
|
121 |
$entry->attachment = '0';
|
|
|
122 |
}
|
|
|
123 |
$DB->update_record('glossary_entries', $entry);
|
|
|
124 |
|
|
|
125 |
redirect ($returnurl);
|
|
|
126 |
}
|
|
|
127 |
|