diff options
author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2007-10-12 16:21:15 +0000 |
---|---|---|
committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2007-10-12 16:21:15 +0000 |
commit | 3a4570b0fc8b3d6339bef71d17d7701554e0bbf7 (patch) | |
tree | 2a06e5261263c68d8afd95a6328879dc289cb909 /wp-includes/plugin.php | |
parent | b83c34a7010faee0223f6037025c350da12e05e6 (diff) | |
download | wordpress-mu-3a4570b0fc8b3d6339bef71d17d7701554e0bbf7.tar.gz wordpress-mu-3a4570b0fc8b3d6339bef71d17d7701554e0bbf7.tar.xz wordpress-mu-3a4570b0fc8b3d6339bef71d17d7701554e0bbf7.zip |
Merge with WP 2.3 - testing use only!
Move pluggable functions out of wpmu-functions and into pluggable.php, fixes #439
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1069 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-includes/plugin.php')
-rw-r--r-- | wp-includes/plugin.php | 100 |
1 files changed, 52 insertions, 48 deletions
diff --git a/wp-includes/plugin.php b/wp-includes/plugin.php index 050c544..2c04c1c 100644 --- a/wp-includes/plugin.php +++ b/wp-includes/plugin.php @@ -2,12 +2,12 @@ /** * Hooks a function to a specific filter action. - * + * * Filters are the hooks that WordPress launches to modify text of various types - * before adding it to the database or sending it to the browser screen. Plugins - * can specify that one or more of its PHP functions is executed to + * before adding it to the database or sending it to the browser screen. Plugins + * can specify that one or more of its PHP functions is executed to * modify specific types of text at these times, using the Filter API. - * See the [Plugin API] for a list of filter hooks. + * See the [Plugin API] for a list of filter hooks. * * @param string $tag The name of the filter to hook the <tt>$function_to_add</tt> to. * @param callback $function_to_add The name of the function to be called when the filter is applied. @@ -19,14 +19,16 @@ function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) global $wp_filter, $merged_filters; // So the format is wp_filter['tag']['array of priorities']['array of functions serialized']['array of ['array (functions, accepted_args)]'] - $wp_filter[$tag][$priority][_wp_filter_build_unique_id($tag, $function_to_add, $priority)] = array('function' => $function_to_add, 'accepted_args' => $accepted_args); + $idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority); + $wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args); + //$wp_filter[$tag][$priority][serialize($function_to_add)] = array('function' => $function_to_add, 'accepted_args' => $accepted_args); unset( $merged_filters[ $tag ] ); return true; } /** * Call the functions added to a filter hook. - * + * * The callback functions attached to filter hook <tt>$tag</tt> are invoked by * calling this function. This function can be used to create a new filter hook * by simply calling this function with the name of the new hook specified using @@ -57,16 +59,16 @@ function apply_filters($tag, $string) { $string = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args'])); } - } while ( next($wp_filter[$tag]) ); + } while ( next($wp_filter[$tag]) !== false ); return $string; } /** * Merge the filter functions of a specific filter hook with generic filter functions. - * - * It is possible to defined generic filter functions using the filter hook - * <em>all</e>. These functions are called for every filter tag. This function + * + * It is possible to defined generic filter functions using the filter hook + * <em>all</e>. These functions are called for every filter tag. This function * merges the functions attached to the <em>all</em> hook with the functions * of a specific hoook defined by <tt>$tag</tt>. * @param string $tag The filter hook of which the functions should be merged. @@ -85,10 +87,10 @@ function merge_filters($tag) { } /** - * Removes a function from a specified filter hook. - * - * This function removes a function attached to a specified filter hook. This - * method can be used to remove default functions attached to a specific filter + * Removes a function from a specified filter hook. + * + * This function removes a function attached to a specified filter hook. This + * method can be used to remove default functions attached to a specific filter * hook and possibly replace them with a substitute. * @param string $tag The filter hook to which the function to be removed is hooked. * @param callback $function_to_remove The name of the function which should be removed. @@ -97,26 +99,28 @@ function merge_filters($tag) { * @return boolean Whether the function is removed. */ function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) { - global $wp_filter, $merged_filters; - - unset($GLOBALS['wp_filter'][$tag][$priority][_wp_filter_build_unique_id($tag, $function_to_remove, $priority)]); - unset( $merged_filters[ $tag ] ); + $function_to_remove = _wp_filter_build_unique_id($tag, $function_to_remove, $priority); - return true; + $r = isset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]); + + unset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]); + unset($GLOBALS['merged_filters'][$tag]); + + return $r; } /** * Hooks a function on to a specific action. - * - * Actions are the hooks that the WordPress core launches at specific points + * + * Actions are the hooks that the WordPress core launches at specific points * during execution, or when specific events occur. Plugins can specify that - * one or more of its PHP functions are executed at these points, using the + * one or more of its PHP functions are executed at these points, using the * Action API. - * + * * @param string $tag The name of the action to which the <tt>$function_to-add</tt> is hooked. * @param callback $function_to_add The name of the function you wish to be called. Note: any of the syntaxes explained in the PHP documentation for the 'callback' type (http://us2.php.net/manual/en/language.pseudo-types.php#language.types.callback) are valid. * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action. - * @param int $accepted_args optional. The number of arguments the function accept (default 1). In WordPress 1.5.1+, hooked functions can take extra arguments that are set when the matching do_action() or apply_filters() call is run. + * @param int $accepted_args optional. The number of arguments the function accept (default 1). In WordPress 1.5.1+, hooked functions can take extra arguments that are set when the matching do_action() or apply_filters() call is run. * @return boolean Always true. */ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) { @@ -125,13 +129,13 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) /** * Execute functions hooked on a specific action hook. - * + * * This function invokes all functions attached to action hook <tt>$tag</tt>. * It is possible to create new action hooks by simply calling this function, * specifying the name of the new hook using the <tt>$tag</tt> parameter. * @uses merge_filters * @param string $tag The name of the action to be executed. - * @param mixed $arg,... Optional additional arguments which are passed on to the functions hooked to the action. + * @param mixed $arg,... Optional additional arguments which are passed on to the functions hooked to the action. */ function do_action($tag, $arg = '') { global $wp_filter, $wp_actions; @@ -159,7 +163,7 @@ function do_action($tag, $arg = '') { if ( !is_null($the_['function']) ) call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); - } while ( next($wp_filter[$tag]) ); + } while ( next($wp_filter[$tag]) !== false ); } @@ -179,8 +183,8 @@ function did_action($tag) { /** * Execute functions hooked on a specific action hook, specifying arguments in a array. - * - * This function is identical to {@link do_action}, but the argumetns passe to + * + * This function is identical to {@link do_action}, but the argumetns passe to * the functions hooked to <tt>$tag</tt> are supplied using an array. * @param string $tag The name of the action to be executed. * @param array $args The arguments supplied to the functions hooked to <tt>$tag</tt> @@ -203,15 +207,15 @@ function do_action_ref_array($tag, $args) { if ( !is_null($the_['function']) ) call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); - } while ( next($wp_filter[$tag]) ); + } while ( next($wp_filter[$tag]) !== false ); } /** - * Removes a function from a specified action hook. - * - * This function removes a function attached to a specified action hook. This - * method can be used to remove default functions attached to a specific filter + * Removes a function from a specified action hook. + * + * This function removes a function attached to a specified action hook. This + * method can be used to remove default functions attached to a specific filter * hook and possibly replace them with a substitute. * @param string $tag The action hook to which the function to be removed is hooked. * @param callback $function_to_remove The name of the function which should be removed. @@ -220,7 +224,7 @@ function do_action_ref_array($tag, $args) { * @return boolean Whether the function is removed. */ function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) { - remove_filter($tag, $function_to_remove, $priority, $accepted_args); + return remove_filter($tag, $function_to_remove, $priority, $accepted_args); } // @@ -229,7 +233,7 @@ function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args /** * Gets the basename of a plugin. - * + * * This method extract the name of a plugin from its filename. * @param string $file The filename of plugin. * @return string The name of a plugin. @@ -243,14 +247,14 @@ function plugin_basename($file) { /** * Hook a function on a plugin activation action hook. - * + * * When a plugin is activated, the action 'activate_PLUGINNAME' hook is * activated. In the name of this hook, PLUGINNAME is replaced with the name of * the plugin, including the optional subdirectory. For example, when the plugin - * is located in <tt>wp-content/plugin/sampleplugin/sample.php</tt>, then the - * name of this hook will become 'activate_sampleplugin/sample.php'. - * When the plugin consists of only one file and is (as by default) located at - * <tt>wp-content/plugin/sample.php</tt> the name of this hook will be + * is located in <tt>wp-content/plugin/sampleplugin/sample.php</tt>, then the + * name of this hook will become 'activate_sampleplugin/sample.php'. + * When the plugin consists of only one file and is (as by default) located at + * <tt>wp-content/plugin/sample.php</tt> the name of this hook will be * 'activate_sample.php'. * @param string $file The filename of the plugin including the path. * @param string $function the function hooked to the 'activate_PLUGIN' action. @@ -262,14 +266,14 @@ function register_activation_hook($file, $function) { /** * Hook a function on a plugin deactivation action hook. - * + * * When a plugin is deactivated, the action 'deactivate_PLUGINNAME' hook is * deactivated. In the name of this hook, PLUGINNAME is replaced with the name of * the plugin, including the optional subdirectory. For example, when the plugin - * is located in <tt>wp-content/plugin/sampleplugin/sample.php</tt>, then the - * name of this hook will become 'activate_sampleplugin/sample.php'. - * When the plugin consists of only one file and is (as by default) located at - * <tt>wp-content/plugin/sample.php</tt> the name of this hook will be + * is located in <tt>wp-content/plugin/sampleplugin/sample.php</tt>, then the + * name of this hook will become 'activate_sampleplugin/sample.php'. + * When the plugin consists of only one file and is (as by default) located at + * <tt>wp-content/plugin/sample.php</tt> the name of this hook will be * 'activate_sample.php'. * @param string $file The filename of the plugin including the path. * @param string $function the function hooked to the 'activate_PLUGIN' action. @@ -282,8 +286,9 @@ function register_deactivation_hook($file, $function) { function _wp_filter_build_unique_id($tag, $function, $priority = 10) { global $wp_filter; - + // If function then just skip all of the tests and not overwrite the following. + // Static Calling if( is_string($function) ) return $function; // Object Class Calling @@ -299,7 +304,6 @@ function _wp_filter_build_unique_id($tag, $function, $priority = 10) $obj_idx .= $function[0]->wp_filter_id; return $obj_idx; } - // Static Calling else if( is_string($function[0]) ) return $function[0].$function[1]; } |