summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.txt1
-rw-r--r--includes/module.inc11
2 files changed, 12 insertions, 0 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index a00ec9101..829cb8fd5 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,6 +1,7 @@
Drupal 7.42, xxxx-xx-xx (development version)
-----------------------
+- Added static caching to module_load_include() to improve performance.
- Fixed double-encoding bugs in select field widgets provided by the Options
module. The fix deprecates the 'strip_tags' property on option widgets and
replaces it with a new 'strip_tags_and_unescape' property (minor data
diff --git a/includes/module.inc b/includes/module.inc
index 7bf619b47..b92abcde9 100644
--- a/includes/module.inc
+++ b/includes/module.inc
@@ -320,16 +320,27 @@ function module_load_install($module) {
* The name of the included file, if successful; FALSE otherwise.
*/
function module_load_include($type, $module, $name = NULL) {
+ static $files = array();
+
if (!isset($name)) {
$name = $module;
}
+ $key = $type . ':' . $module . ':' . $name;
+ if (isset($files[$key])) {
+ return $files[$key];
+ }
+
if (function_exists('drupal_get_path')) {
$file = DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . "/$name.$type";
if (is_file($file)) {
require_once $file;
+ $files[$key] = $file;
return $file;
}
+ else {
+ $files[$key] = FALSE;
+ }
}
return FALSE;
}