Add ability to mark hooks as deprecated
authoraude <aude.wiki@gmail.com>
Wed, 8 Jan 2014 21:32:21 +0000 (22:32 +0100)
committeraude <aude.wiki@gmail.com>
Fri, 10 Jan 2014 08:12:26 +0000 (09:12 +0100)
Change-Id: I8fd29e97a2b5d02746b572a9c315fbe54faf36f2

RELEASE-NOTES-1.23
includes/GlobalFunctions.php
includes/Hooks.php

index e017a62..a05d7a2 100644 (file)
@@ -163,6 +163,7 @@ changes to languages because of Bugzilla reports.
 ** Several array keys have been renamed: hideMinor → hideminor,
    hideBots → hidebots, hideAnons → hideanons, hideLiu → hideliu,
    hidePatrolled → hidepatrolled, hideOwn → hidemyself.
+* Option to mark hooks as deprecated has been added.
 
 ==== Removed classes ====
 * TitleDependency (unused)
index 3250ec8..a638287 100644 (file)
@@ -4026,10 +4026,12 @@ function wfGetLangConverterCacheStorage() {
  *
  * @param string $event event name
  * @param array $args parameters passed to hook functions
+ * @param string|null $deprecatedVersion optionally mark hook as deprecated with version number
+ *
  * @return Boolean True if no handler aborted the hook
  */
-function wfRunHooks( $event, array $args = array() ) {
-       return Hooks::run( $event, $args );
+function wfRunHooks( $event, array $args = array(), $deprecatedVersion = null ) {
+       return Hooks::run( $event, $args, $deprecatedVersion );
 }
 
 /**
index db47d31..785e717 100644 (file)
@@ -124,6 +124,7 @@ class Hooks {
         *
         * @param string $event Event name
         * @param array $args  Array of parameters passed to hook functions
+        * @param string|null $deprecatedVersion Optionally, mark hook as deprecated with version number
         * @return bool True if no handler aborted the hook
         *
         * @since 1.22 A hook function is not required to return a value for
@@ -132,7 +133,7 @@ class Hooks {
         * @throws MWException
         * @throws FatalError
         */
-       public static function run( $event, array $args = array() ) {
+       public static function run( $event, array $args = array(), $deprecatedVersion = null ) {
                wfProfileIn( 'hook: ' . $event );
                foreach ( self::getHandlers( $event ) as $hook ) {
                        // Turn non-array values into an array. (Can't use casting because of objects.)
@@ -195,6 +196,12 @@ class Hooks {
                        // Profile first in case the Profiler causes errors.
                        wfProfileIn( $func );
                        set_error_handler( 'Hooks::hookErrorHandler' );
+
+                       // mark hook as deprecated, if deprecation version is specified
+                       if ( $deprecatedVersion !== null ) {
+                               wfDeprecated( "$event hook (used in $func)", $deprecatedVersion );
+                       }
+
                        try {
                                $retval = call_user_func_array( $callback, $hook_args );
                        } catch ( MWHookException $e ) {