aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/hook
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2013-01-15 11:31:39 -0600
committerNathan Guse <nathaniel.guse@gmail.com>2013-01-15 11:31:39 -0600
commit51e0f002eeaf2d55a63feee66ccb37d689f46f55 (patch)
tree21590506df83029d97a02ccaafa86c085f8c568f /phpBB/includes/hook
parent44fcec520f785d18d3cd3b19e26db977f23b844c (diff)
parenta2f6e494f37914352b0bb72d5a84904d3f2c51a3 (diff)
downloadforums-51e0f002eeaf2d55a63feee66ccb37d689f46f55.tar
forums-51e0f002eeaf2d55a63feee66ccb37d689f46f55.tar.gz
forums-51e0f002eeaf2d55a63feee66ccb37d689f46f55.tar.bz2
forums-51e0f002eeaf2d55a63feee66ccb37d689f46f55.tar.xz
forums-51e0f002eeaf2d55a63feee66ccb37d689f46f55.zip
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/11103
# By Oleg Pudeyev (37) and others # Via Oleg Pudeyev (24) and others * 'develop' of github.com:phpbb/phpbb3: (179 commits) [ticket/11323] Add tests for inclusion of defined variables [ticket/11324] Add PHP 5.5 environment to travis and allow it to fail. [ticket/11321] Recreate schema files with develop/create_schema_files.php [ticket/11320] Include functions file as we need phpbb_convert_30_dbms_to_31 [ticket/11313] Use correct object el instead of eel in alt_text callback [ticket/11301] Guidelines: Add spaces in front and after the / operator. [ticket/11301] Explicitly cast str offset to int to prevent E_NOTICE on 5.4. [ticket/11311] Include asset core.js in subsilver2 overall_footer.html [ticket/10949] Remove not needed comma [ticket/11309] phpbb_extension_interface::disable_step correct docblock. [ticket/10949] Converted missing code to new JS coding guidelines [ticket/11302] Correctly select first timezone or selected timezone [ticket/11305] Mock container for cache driver in functional create_user() [ticket/11305] Check for $cache being null before using it in db drivers. [ticket/10805] Compare phpbbAlertTimer against null [ticket/11305] Define hook finder as a service on the container. [ticket/11305] Adjust comment. [ticket/11305] Use phpbb_create_default_container. [ticket/11305] Create a normal container during final installation step. [ticket/11305] Retrieve cache driver from container rather than cache service. ... Conflicts: phpBB/install/schemas/firebird_schema.sql phpBB/install/schemas/mssql_schema.sql phpBB/install/schemas/mysql_40_schema.sql phpBB/install/schemas/mysql_41_schema.sql phpBB/install/schemas/oracle_schema.sql phpBB/install/schemas/postgres_schema.sql phpBB/install/schemas/sqlite_schema.sql phpBB/styles/subsilver2/template/overall_footer.html
Diffstat (limited to 'phpBB/includes/hook')
-rw-r--r--phpBB/includes/hook/finder.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/phpBB/includes/hook/finder.php b/phpBB/includes/hook/finder.php
new file mode 100644
index 0000000000..065e685514
--- /dev/null
+++ b/phpBB/includes/hook/finder.php
@@ -0,0 +1,84 @@
+<?php
+/**
+*
+* @package extension
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+/**
+* The hook finder locates installed hooks.
+*
+* @package phpBB3
+*/
+class phpbb_hook_finder
+{
+ protected $phpbb_root_path;
+ protected $cache;
+ protected $php_ext;
+
+ /**
+ * Creates a new finder instance.
+ *
+ * @param string $phpbb_root_path Path to the phpbb root directory
+ * @param string $php_ext php file extension
+ * @param phpbb_cache_driver_interface $cache A cache instance or null
+ */
+ public function __construct($phpbb_root_path, $php_ext, phpbb_cache_driver_interface $cache = null)
+ {
+ $this->phpbb_root_path = $phpbb_root_path;
+ $this->cache = $cache;
+ $this->php_ext = $php_ext;
+ }
+
+ /**
+ * Finds all hook files.
+ *
+ * @param bool $cache Whether the result should be cached
+ * @return array An array of paths to found hook files
+ */
+ public function find($cache = true)
+ {
+ if (!defined('DEBUG') && $cache && $this->cache)
+ {
+ $hook_files = $this->cache->get('_hooks');
+ if ($hook_files !== false)
+ {
+ return $hook_files;
+ }
+ }
+
+ $hook_files = array();
+
+ // Now search for hooks...
+ $dh = @opendir($this->phpbb_root_path . 'includes/hooks/');
+
+ if ($dh)
+ {
+ while (($file = readdir($dh)) !== false)
+ {
+ if (strpos($file, 'hook_') === 0 && substr($file, -(strlen($this->php_ext) + 1)) === '.' . $this->php_ext)
+ {
+ $hook_files[] = substr($file, 0, -(strlen($this->php_ext) + 1));
+ }
+ }
+ closedir($dh);
+ }
+
+ if ($cache && $this->cache)
+ {
+ $this->cache->put('_hooks', $hook_files);
+ }
+
+ return $hook_files;
+ }
+}