]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/Requests/Hooks.php
Wordpress 4.6
[autoinstalls/wordpress.git] / wp-includes / Requests / Hooks.php
diff --git a/wp-includes/Requests/Hooks.php b/wp-includes/Requests/Hooks.php
new file mode 100644 (file)
index 0000000..2e61c73
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Handles adding and dispatching events
+ *
+ * @package Requests
+ * @subpackage Utilities
+ */
+
+/**
+ * Handles adding and dispatching events
+ *
+ * @package Requests
+ * @subpackage Utilities
+ */
+class Requests_Hooks implements Requests_Hooker {
+       /**
+        * Registered callbacks for each hook
+        *
+        * @var array
+        */
+       protected $hooks = array();
+
+       /**
+        * Constructor
+        */
+       public function __construct() {
+               // pass
+       }
+
+       /**
+        * Register a callback for a hook
+        *
+        * @param string $hook Hook name
+        * @param callback $callback Function/method to call on event
+        * @param int $priority Priority number. <0 is executed earlier, >0 is executed later
+        */
+       public function register($hook, $callback, $priority = 0) {
+               if (!isset($this->hooks[$hook])) {
+                       $this->hooks[$hook] = array();
+               }
+               if (!isset($this->hooks[$hook][$priority])) {
+                       $this->hooks[$hook][$priority] = array();
+               }
+
+               $this->hooks[$hook][$priority][] = $callback;
+       }
+
+       /**
+        * Dispatch a message
+        *
+        * @param string $hook Hook name
+        * @param array $parameters Parameters to pass to callbacks
+        * @return boolean Successfulness
+        */
+       public function dispatch($hook, $parameters = array()) {
+               if (empty($this->hooks[$hook])) {
+                       return false;
+               }
+
+               foreach ($this->hooks[$hook] as $priority => $hooked) {
+                       foreach ($hooked as $callback) {
+                               call_user_func_array($callback, $parameters);
+                       }
+               }
+
+               return true;
+       }
+}
\ No newline at end of file