Permalink
Browse files

MDL-26955 get_plugin_directory() respects $CFG->themedir

If $CFG->themedir is set (it is not usually) and the given theme is not
found in the standard location, then it is expected to be in the custom
$CFG->themedir directory.

Credit goes to Urs Hunkler for the idea of the patch.
  • Loading branch information...
1 parent 7daba27 commit bef867a96c7f0e659163c180deb98b2ffb61af50 @mudrd8mz mudrd8mz committed Apr 26, 2011
Showing with 10 additions and 1 deletion.
  1. +10 −1 lib/moodlelib.php
View
@@ -6873,6 +6873,8 @@ function endecrypt ($pwd, $data, $case) {
* @return string full path to plugin directory; NULL if not found
*/
function get_plugin_directory($plugintype, $name) {
+ global $CFG;
+
if ($plugintype === '') {
$plugintype = 'mod';
}
@@ -6883,6 +6885,13 @@ function get_plugin_directory($plugintype, $name) {
}
$name = clean_param($name, PARAM_SAFEDIR); // just in case ;-)
+ if (!empty($CFG->themedir) and $plugintype === 'theme') {
+ if (!is_dir($types['theme'] . '/' . $name)) {
+ // ok, so the theme is supposed to be in the $CFG->themedir
+ return $CFG->themedir . '/' . $name;
+ }
+ }
+
return $types[$plugintype].'/'.$name;
}
@@ -7079,7 +7088,7 @@ function get_plugin_types($fullpaths=true) {
'qtype' => 'question/type',
'qformat' => 'question/format',
'plagiarism' => 'plagiarism',
- 'theme' => 'theme'); // this is a bit hacky, themes may be in dataroot too
+ 'theme' => 'theme'); // this is a bit hacky, themes may be in $CFG->themedir too
$mods = get_plugin_list('mod');
foreach ($mods as $mod => $moddir) {

0 comments on commit bef867a

Please sign in to comment.