Commit | Line | Data |
---|---|---|
c64f1317 PS |
1 | <?php |
2 | // This file is part of Moodle - http://moodle.org/ | |
3 | // | |
4 | // Moodle is free software: you can redistribute it and/or modify | |
5 | // it under the terms of the GNU General Public License as published by | |
6 | // the Free Software Foundation, either version 3 of the License, or | |
7 | // (at your option) any later version. | |
8 | // | |
9 | // Moodle is distributed in the hope that it will be useful, | |
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | // GNU General Public License for more details. | |
13 | // | |
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/>. | |
16 | ||
17 | /** | |
18 | * TinyMCE editor integration upgrade. | |
19 | * | |
20 | * @package editor_tinymce | |
21 | * @copyright 2012 Petr Skoda {@link http://skodak.org} | |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
23 | */ | |
24 | ||
25 | defined('MOODLE_INTERNAL') || die(); | |
26 | ||
27 | function xmldb_editor_tinymce_upgrade($oldversion) { | |
28 | global $CFG, $DB; | |
29 | ||
30 | $dbman = $DB->get_manager(); | |
31 | ||
32 | ||
33 | if ($oldversion < 2012083100) { | |
34 | // Reset redesigned editor toolbar setting. | |
35 | unset_config('customtoolbar', 'editor_tinymce'); | |
36 | upgrade_plugin_savepoint(true, 2012083100, 'editor', 'tinymce'); | |
37 | } | |
38 | ||
39 | ||
6b9dfe73 EL |
40 | // Moodle v2.4.0 release upgrade line |
41 | // Put any upgrade step following this | |
42 | ||
43 | ||
c9e54743 EL |
44 | // Moodle v2.5.0 release upgrade line. |
45 | // Put any upgrade step following this. | |
46 | ||
3b62cd64 JF |
47 | if ($oldversion < 2013061400) { |
48 | // Reset redesigned editor toolbar setting. | |
49 | $oldorder = "fontselect,fontsizeselect,formatselect,|,undo,redo,|,search,replace,|,fullscreen | |
50 | ||
51 | bold,italic,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,|,cleanup,removeformat,pastetext,pasteword,|,forecolor,backcolor,|,ltr,rtl | |
52 | ||
53 | bullist,numlist,outdent,indent,|,link,unlink,|,image,nonbreaking,charmap,table,|,code"; | |
54 | ||
55 | $neworder = "formatselect,bold,italic,|,bullist,numlist,|,link,unlink,|,image | |
56 | ||
57 | undo,redo,|,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,|,outdent,indent,|,forecolor,backcolor,|,ltr,rtl,|,nonbreaking,charmap,table | |
58 | ||
59 | fontselect,fontsizeselect,code,search,replace,|,cleanup,removeformat,pastetext,pasteword,|,fullscreen"; | |
60 | $currentorder = get_config('editor_tinymce', 'customtoolbar'); | |
61 | if ($currentorder == $oldorder) { | |
62 | unset_config('customtoolbar', 'editor_tinymce'); | |
63 | set_config('customtoolbar', $neworder, 'editor_tinymce'); | |
64 | } | |
65 | upgrade_plugin_savepoint(true, 2013061400, 'editor', 'tinymce'); | |
66 | } | |
67 | ||
05e9c136 DW |
68 | if ($oldversion < 2013070500) { |
69 | // Insert wrap plugin to nicely wrap the toolbars on small screens. | |
70 | $oldorder = "formatselect,bold,italic,|,bullist,numlist,|,link,unlink,|,image | |
71 | ||
72 | undo,redo,|,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,|,outdent,indent,|,forecolor,backcolor,|,ltr,rtl,|,nonbreaking,charmap,table | |
73 | ||
74 | fontselect,fontsizeselect,code,search,replace,|,cleanup,removeformat,pastetext,pasteword,|,fullscreen"; | |
75 | ||
76 | $neworder = "formatselect,bold,italic,wrap,bullist,numlist,|,link,unlink,|,image | |
77 | ||
78 | undo,redo,|,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,wrap,outdent,indent,|,forecolor,backcolor,|,ltr,rtl,|,nonbreaking,charmap,table | |
79 | ||
80 | fontselect,fontsizeselect,wrap,code,search,replace,|,cleanup,removeformat,pastetext,pasteword,|,fullscreen"; | |
81 | $currentorder = get_config('editor_tinymce', 'customtoolbar'); | |
82 | if ($currentorder == $oldorder) { | |
83 | unset_config('customtoolbar', 'editor_tinymce'); | |
84 | set_config('customtoolbar', $neworder, 'editor_tinymce'); | |
85 | } else { | |
86 | // Simple auto conversion algorithm. | |
650a44fc | 87 | $toolbars = explode("\n", $oldorder); |
05e9c136 DW |
88 | $newtoolbars = array(); |
89 | foreach ($toolbars as $toolbar) { | |
90 | $sepcount = substr_count($toolbar, '|'); | |
91 | ||
92 | if ($sepcount > 0) { | |
93 | // We assume the middle separator (rounding down). | |
650a44fc | 94 | $divisionindex = round($sepcount / 2, 0, PHP_ROUND_HALF_DOWN); |
05e9c136 | 95 | |
650a44fc | 96 | $buttons = explode(',', $toolbar); |
05e9c136 DW |
97 | $index = 0; |
98 | foreach ($buttons as $key => $button) { | |
99 | if ($button === "|") { | |
100 | if ($index == $divisionindex) { | |
101 | $buttons[$key] = 'wrap'; | |
102 | break; | |
650a44fc DW |
103 | } else { |
104 | $index += 1; | |
05e9c136 DW |
105 | } |
106 | } | |
107 | } | |
650a44fc | 108 | $toolbar = implode(',', $buttons); |
05e9c136 DW |
109 | } |
110 | array_push($newtoolbars, $toolbar); | |
111 | } | |
650a44fc | 112 | $neworder = implode("\n", $newtoolbars); |
05e9c136 DW |
113 | |
114 | // Set the new config. | |
115 | unset_config('customtoolbar', 'editor_tinymce'); | |
116 | set_config('customtoolbar', $neworder, 'editor_tinymce'); | |
117 | } | |
118 | upgrade_plugin_savepoint(true, 2013070500, 'editor', 'tinymce'); | |
119 | } | |
120 | ||
90792eff JF |
121 | if ($oldversion < 2013102900) { |
122 | // Reset redesigned editor toolbar setting. | |
123 | $currentorder = get_config('editor_tinymce', 'customtoolbar'); | |
124 | // Start with a wrap. | |
125 | $neworder = "wrap,". $currentorder; | |
126 | // Replace all separators with wraps to allow for proper display of groups. | |
127 | $neworder = preg_replace('/\|\|*/', "wrap", $neworder); | |
128 | // Insert a wrap between the format selector and the bold button. | |
129 | $neworder = str_replace("formatselect,bold", "formatselect,wrap,bold", $neworder); | |
130 | set_config('customtoolbar', $neworder, 'editor_tinymce'); | |
131 | upgrade_plugin_savepoint(true, 2013102900, 'editor', 'tinymce'); | |
132 | } | |
133 | ||
2106d4b3 JF |
134 | if ($oldversion < 2013110600) { |
135 | // Reset redesigned editor toolbar setting. | |
136 | $currentorder = get_config('editor_tinymce', 'customtoolbar'); | |
46f763ed JF |
137 | $olddefaultorder = "wrap,formatselect,wrap,bold,italic,wrap,bullist,numlist,wrap,link,unlink,wrap,image |
138 | ||
139 | undo,redo,wrap,underline,strikethrough,sub,sup,wrap,justifyleft,justifycenter,justifyright,wrap,outdent,indent,wrap,forecolor,backcolor,wrap,ltr,rtl,wrap,nonbreaking,charmap,table | |
140 | ||
141 | fontselect,fontsizeselect,wrap,code,search,replace,wrap,cleanup,removeformat,pastetext,pasteword,wrap,fullscreen"; | |
142 | $neworder = "wrap,formatselect,wrap,bold,italic,wrap,bullist,numlist,wrap,link,unlink,wrap,image | |
143 | ||
144 | undo,redo,wrap,underline,strikethrough,sub,sup,wrap,justifyleft,justifycenter,justifyright,wrap,outdent,indent,wrap,forecolor,backcolor,wrap,ltr,rtl | |
145 | ||
146 | fontselect,fontsizeselect,wrap,code,search,replace,wrap,nonbreaking,charmap,table,wrap,cleanup,removeformat,pastetext,pasteword,wrap,fullscreen"; | |
147 | if ($currentorder == $olddefaultorder) { | |
148 | set_config('customtoolbar', $neworder, 'editor_tinymce'); | |
149 | } | |
150 | ||
2106d4b3 JF |
151 | upgrade_plugin_savepoint(true, 2013110600, 'editor', 'tinymce'); |
152 | } | |
153 | ||
b170380a DW |
154 | // Moodle v2.6.0 release upgrade line. |
155 | // Put any upgrade step following this. | |
156 | ||
157 | ||
f94891cc EL |
158 | // Moodle v2.7.0 release upgrade line. |
159 | // Put any upgrade step following this. | |
160 | ||
07f8f2f5 MN |
161 | if ($oldversion < 2014062900) { |
162 | // We only want to delete DragMath from the customtoolbar setting if the directory no longer exists. If | |
163 | // the directory is present then it means it has been restored, so do not remove any settings. | |
164 | if (!check_dir_exists($CFG->libdir . '/editor/tinymce/plugins/dragmath', false)) { | |
165 | // Remove the DragMath plugin from the 'customtoolbar' setting (if it exists) as it has been removed. | |
166 | $currentorder = get_config('editor_tinymce', 'customtoolbar'); | |
167 | $newtoolbarrows = array(); | |
168 | $currenttoolbarrows = explode("\n", $currentorder); | |
169 | foreach ($currenttoolbarrows as $currenttoolbarrow) { | |
170 | $currenttoolbarrow = implode(',', array_diff(str_getcsv($currenttoolbarrow), array('dragmath'))); | |
171 | $newtoolbarrows[] = $currenttoolbarrow; | |
172 | } | |
173 | $neworder = implode("\n", $newtoolbarrows); | |
174 | unset_config('customtoolbar', 'editor_tinymce'); | |
175 | set_config('customtoolbar', $neworder, 'editor_tinymce'); | |
176 | } | |
177 | ||
178 | upgrade_plugin_savepoint(true, 2014062900, 'editor', 'tinymce'); | |
179 | } | |
180 | ||
c64f1317 PS |
181 | return true; |
182 | } |