From 546b4bf59d9f3446ff0009985893c01cdfcb97dd Mon Sep 17 00:00:00 2001 From: David Mudrak Date: Tue, 26 Apr 2011 23:08:24 +0200 Subject: [PATCH] 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. --- lib/moodlelib.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index bad7c450897..bacdf724650 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -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) {