9c0cf3596553fae0437417a00d16af376da4ba27
[moodle.git] / lib / editor / tinymce / extra / strings.php
1 <?php
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/>.
18 /**
19  * On-the-fly conversion of Moodle lang strings to TinyMCE expected JS format.
20  *
21  * @package    moodlecore
22  * @subpackage editor
23  * @copyright  2009 Petr Skoda (http://skodak.org)
24  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25  */
27 define('NO_MOODLE_COOKIES', true);
28 define('NO_UPGRADE_CHECK', true);
30 require_once('../../../../config.php');
32 $lang  = optional_param('elanguage', 'en', PARAM_SAFEDIR);
33 $theme = optional_param('etheme', 'advanced', PARAM_SAFEDIR);
35 if (file_exists($CFG->dataroot .'/lang/'. $lang) or file_exists($CFG->dirroot .'/lang/'. $lang)) {
36     //ok
37 } else if (file_exists($CFG->dataroot.'/lang/'.$lang) or
38            file_exists($CFG->dirroot .'/lang/'.$lang)) {
39     //$lang = $lang;
40 } else {
41     $lang = 'en';
42 }
44 // load english defaults
45 $string = array();
46 foreach (get_langpack_locations('en') as $location) {
47     if (!file_exists($location)) {
48         continue;
49     }
50     include($location);
51 }
53 // find parent language
54 if ($parent = get_parent_language($lang)) {
55     foreach (get_langpack_locations($parent) as $location) {
56         if (!file_exists($location)) {
57             continue;
58         }
59         include($location);
60     }
61 }
63 // load wanted language
64 if ($lang !== 'en') {
65     foreach (get_langpack_locations($lang) as $location) {
66         if (!file_exists($location)) {
67             continue;
68         }
69         include($location);
70     }
71 }
73 //process the $strings to match expected tinymce lang array stucture
74 $result = array();
76 foreach ($string as $key=>$value) {
77     $parts = explode(':', $key);
78     if (count($parts) != 2) {
79         // incorrect string - ignore
80         continue;
81     }
82     $value = str_replace("%%","%",$value);              // Unescape % characters
84     $result[$parts[0]][$parts[1]] = $value;
85 }
87 $output = 'tinyMCE.addI18n({'.$lang.':'.json_encode($result).'});';
89 $lifetime = '10'; // TODO: increase later
90 @header('Content-type: text/javascript; charset=utf-8');
91 @header('Content-length: '.strlen($output));
92 @header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
93 @header('Cache-control: max-age='.$lifetime);
94 @header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .'GMT');
95 @header('Pragma: ');
97 echo $output;
100 /// ======= Functions =================
102 function get_langpack_locations($lang) {
103     global $CFG;
105     $result = array();
106     $result[] = "$CFG->dirroot/lang/$lang/editor_tinymce.php";
107     $result[] = "$CFG->dataroot/lang/$lang/editor_tinymce.php";
108     $result[] = "$CFG->dataroot/lang/{$lang}_local/editor_tinymce.php";
110     return $result;