diff options
Diffstat (limited to 'mod/developers/classes/ElggInspector.php')
-rw-r--r-- | mod/developers/classes/ElggInspector.php | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/mod/developers/classes/ElggInspector.php b/mod/developers/classes/ElggInspector.php new file mode 100644 index 000000000..e83fc6b81 --- /dev/null +++ b/mod/developers/classes/ElggInspector.php @@ -0,0 +1,201 @@ +<?php +/** + * Inspect Elgg variables + * + */ + +class ElggInspector { + + /** + * Get Elgg event information + * + * returns [event,type] => array(handlers) + */ + public function getEvents() { + global $CONFIG; + + $tree = array(); + foreach ($CONFIG->events as $event => $types) { + foreach ($types as $type => $handlers) { + $tree[$event . ',' . $type] = array_values($handlers); + } + } + + ksort($tree); + + return $tree; + } + + /** + * Get Elgg plugin hooks information + * + * returns [hook,type] => array(handlers) + */ + public function getPluginHooks() { + global $CONFIG; + + $tree = array(); + foreach ($CONFIG->hooks as $hook => $types) { + foreach ($types as $type => $handlers) { + $tree[$hook . ',' . $type] = array_values($handlers); + } + } + + ksort($tree); + + return $tree; + } + + /** + * Get Elgg view information + * + * returns [view] => array(view location and extensions) + */ + public function getViews() { + global $CONFIG; + + $coreViews = $this->recurseFileTree($CONFIG->viewpath . "default/"); + + // remove base path and php extension + array_walk($coreViews, create_function('&$v,$k', 'global $CONFIG; $v = substr($v, strlen($CONFIG->viewpath . "default/"), -4);')); + + // setup views array before adding extensions and plugin views + $views = array(); + foreach ($coreViews as $view) { + $views[$view] = array($CONFIG->viewpath . "default/" . $view . ".php"); + } + + // add plugins and handle overrides + foreach ($CONFIG->views->locations['default'] as $view => $location) { + $views[$view] = array($location . $view . ".php"); + } + + // now extensions + foreach ($CONFIG->views->extensions as $view => $extensions) { + $view_list = array(); + foreach ($extensions as $priority => $ext_view) { + if (isset($views[$ext_view])) { + $view_list[] = $views[$ext_view][0]; + } + } + if (count($view_list) > 0) { + $views[$view] = $view_list; + } + } + + ksort($views); + + return $views; + } + + /** + * Get Elgg widget information + * + * returns [widget] => array(name, contexts) + */ + public function getWidgets() { + global $CONFIG; + + $tree = array(); + foreach ($CONFIG->widgets->handlers as $handler => $handler_obj) { + $tree[$handler] = array($handler_obj->name, implode(',', array_values($handler_obj->context))); + } + + ksort($tree); + + return $tree; + } + + + /** + * Get Elgg actions information + * + * returns [action] => array(file, public, admin) + */ + public function getActions() { + global $CONFIG; + + $tree = array(); + foreach ($CONFIG->actions as $action => $info) { + $tree[$action] = array($info['file'], ($info['public']) ? 'public' : 'logged in only', ($info['admin']) ? 'admin only' : 'non-admin'); + } + + ksort($tree); + + return $tree; + } + + /** + * Get simplecache information + * + * returns [views] + */ + public function getSimpleCache() { + global $CONFIG; + + $tree = array(); + foreach ($CONFIG->views->simplecache as $view) { + $tree[$view] = ""; + } + + ksort($tree); + + return $tree; + } + + /** + * Get Elgg web services API methods + * + * returns [method] => array(function, parameters, call_method, api auth, user auth) + */ + public function getWebServices() { + global $API_METHODS; + + $tree = array(); + foreach ($API_METHODS as $method => $info) { + $params = implode(', ', array_keys($info['parameters'])); + if (!$params) { + $params = 'none'; + } + $tree[$method] = array( + $info['function'], + "params: $params", + $info['call_method'], + ($info['require_api_auth']) ? 'API authentication required' : 'No API authentication required', + ($info['require_user_auth']) ? 'User authentication required' : 'No user authentication required', + ); + } + + ksort($tree); + + return $tree; + } + + /** + * Create array of all php files in directory and subdirectories + * + * @param $dir full path to directory to begin search + * @return array of every php file in $dir or below in file tree + */ + protected function recurseFileTree($dir) { + $view_list = array(); + + $handle = opendir($dir); + while ($file = readdir($handle)) { + if ($file[0] == '.') { + + } else if (is_dir($dir . $file)) { + $view_list = array_merge($view_list, $this->recurseFileTree($dir . $file. "/")); + } else { + $extension = strrchr(trim($file, "/"), '.'); + if ($extension === ".php") { + $view_list[] = $dir . $file; + } + } + } + closedir($handle); + + return $view_list; + } + +} |