aboutsummaryrefslogtreecommitdiff
path: root/engine/lib
diff options
context:
space:
mode:
Diffstat (limited to 'engine/lib')
-rw-r--r--engine/lib/elgglib.php28
-rw-r--r--engine/lib/plugins.php4
2 files changed, 29 insertions, 3 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index 4376ca53f..5b224e0be 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -2200,8 +2200,30 @@ function js_page_handler($page) {
}
}
-function __autoload($class) {
- require_once dirname(dirname(__FILE__))."/classes/$class.php";
+function __elgg_autoload($class) {
+ global $CONFIG;
+
+ if (!include($CONFIG->classes[$class])) {
+ throw new Exception("Failed to autoload $class");
+ }
+}
+
+function elgg_register_classes($dir) {
+ $classes = elgg_get_file_list($dir, array(), array(), array('.php'));
+
+ foreach ($classes as $class) {
+ elgg_register_class(basename($class, '.php'), $class);
+ }
+}
+
+function elgg_register_class($class, $location) {
+ global $CONFIG;
+
+ if (!isset($CONFIG->classes)) {
+ $CONFIG->classes = array();
+ }
+
+ $CONFIG->classes[$class] = $location;
}
/**
@@ -2233,7 +2255,7 @@ function __elgg_shutdown_hook() {
*/
function elgg_init() {
global $CONFIG;
-
+
register_action('comments/add');
register_action('comments/delete');
register_action('likes/add');
diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php
index a36f2bf6d..52f498bf7 100644
--- a/engine/lib/plugins.php
+++ b/engine/lib/plugins.php
@@ -191,6 +191,10 @@ function load_plugins() {
if (is_dir($CONFIG->pluginspath . $mod . "/languages")) {
register_translations($CONFIG->pluginspath . $mod . "/languages/");
}
+
+ if (is_dir($CONFIG->pluginspath . "$mod/classes")) {
+ elgg_register_classes($CONFIG->pluginspath . "$mod/classes");
+ }
}
}
}