// _local language packs take precedence
$xlangs = array();
foreach ($langs as $lang) {
- $xlangs[] = $lang . '_local';
- $xlangs[] = $lang;
+ if (!empty($lang)) {
+ $xlangs[] = $lang . '_local';
+ $xlangs[] = $lang;
+ }
}
$langs = $xlangs;
unset($xlangs);
$langs = array($forcelang);
}
- // Work through the possible languages, starting with the most specific.
- foreach ($langs as $lang) {
- if (empty($lang)) {
- continue;
- }
-
- // Work out which directory the help files live in.
- if ($lang == 'en_utf8') {
- $helpdir = $CFG->dirroot;
- } else {
- $helpdir = $CFG->dataroot;
- }
- $helpdir .= "/lang/$lang/help";
-
- // Then which file in there we should be serving.
- if ($module == 'moodle') {
- $filepath = "$helpdir/$file";
- } else {
- $filepath = "$helpdir/$module/$file";
-
- // If that does not exist, try a fallback into the module code folder.
- if (!file_exists($filepath)) {
- $filepath = "$CFG->dirroot/mod/$module/lang/$lang/help/$module/$file";
- }
+// Define possible locations for help file similar to locations for language strings
+// Note: Always retain module directory as before
+ $locations = array();
+ if ($module == 'moodle') {
+ $locations[$CFG->dataroot.'/lang/'] = $file;
+ $locations[$CFG->dirroot.'/lang/'] = $file;
+ } else {
+ $modfile = $module.'/'.$file;
+ $locations[$CFG->dataroot.'/lang/'] = $modfile;
+ $locations[$CFG->dirroot.'/lang/'] = $modfile;
+
+ if (strpos($module, 'block_') === 0) { // It's a block help file
+ $block = substr($module, 6);
+ $locations[$CFG->dirroot .'/blocks/'.$block.'/lang/'] = $block.'/'.$file;
+ } else if (strpos($module, 'report_') === 0) { // It's a report help file
+ $report = substr($module, 7);
+ $locations[$CFG->dirroot .'/'.$CFG->admin.'/report/'.$report.'/lang/'] = $report.'/'.$file;
+ $locations[$CFG->dirroot .'/course/report/'.$report.'/lang/'] = $report.'/'.$file;
+ } else if (strpos($module, 'format_') === 0) { // Course format
+ $format = substr($module,7);
+ $locations[$CFG->dirroot .'/course/format/'.$format.'/lang/'] = $format.'/'.$file;
+ } else { // It's a normal activity
+ $locations[$CFG->dirroot .'/mod/'.$module.'/lang/'] = $module.'/'.$file;
}
+ }
- // Now, try to include the help text from this file, if we can.
- if (file_exists_and_readable($filepath)) {
- $helpfound = true;
- @include($filepath); // The actual helpfile
+ // Work through the possible languages, starting with the most specific.
+ while (!$helpfound && (list(,$lang) = each($langs)) && !empty($lang)) {
- // Now, we process some special cases.
- if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
- include_help_for_each_module($file, $langs, $helpdir);
- }
+ while (!$helpfound && (list($locationprefix,$locationsuffix) = each($locations))) {
+ $filepath = $locationprefix.$lang.'/help/'.$locationsuffix;
- // The remaining horrible hardcoded special cases should be delegated to modules somehow.
- if ($module == 'moodle' and ($file == 'resource/types.html')) { // RESOURCES
- include_help_for_each_resource($file, $langs, $helpdir);
- }
- if ($module == 'moodle' and ($file == 'assignment/types.html')) { // ASSIGNMENTS
- include_help_for_each_assignment_type();
+ // Now, try to include the help text from this file, if we can.
+ if (file_exists_and_readable($filepath)) {
+ $helpfound = true;
+ @include($filepath); // The actual helpfile
+
+ // Now, we process some special cases.
+ $helpdir = $locationprefix.$lang.'/help';
+ if ($module == 'moodle' and ($file == 'index.html' or $file == 'mods.html')) {
+ include_help_for_each_module($file, $langs, $helpdir);
+ }
+
+ // The remaining horrible hardcoded special cases should be delegated to modules somehow.
+ if ($module == 'moodle' and ($file == 'resource/types.html')) { // RESOURCES
+ include_help_for_each_resource($file, $langs, $helpdir);
+ }
+ if ($module == 'moodle' and ($file == 'assignment/types.html')) { // ASSIGNMENTS
+ include_help_for_each_assignment_type();
+ }
}
-
- // Having found some help, we break out of the loop over languages.
- break;
}
+ reset($locations);
}
} else {
// The help to display was given as an argument to this function.
global $CFG;
require_once($CFG->dirroot .'/mod/resource/lib.php');
- $typelist = resource_get_resource_types();
+ $typelist = resource_get_types();
$typelist['label'] = get_string('resourcetypelabel', 'resource');
foreach ($typelist as $type => $name) {