summaryrefslogtreecommitdiffstats
path: root/wp-includes/plugin.php
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2006-09-11 15:20:48 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2006-09-11 15:20:48 +0000
commit91c2d227e28206ec57d2b857822d90b11af256d3 (patch)
treeb5eb7cf33ac2251d358b16b6d62af570d69aa224 /wp-includes/plugin.php
parent93b61271ad288c6031c6b33405711e89a1575be2 (diff)
downloadwordpress-mu-91c2d227e28206ec57d2b857822d90b11af256d3.tar.gz
wordpress-mu-91c2d227e28206ec57d2b857822d90b11af256d3.tar.xz
wordpress-mu-91c2d227e28206ec57d2b857822d90b11af256d3.zip
WP Merge to 4182
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@736 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-includes/plugin.php')
-rw-r--r--wp-includes/plugin.php37
1 files changed, 16 insertions, 21 deletions
diff --git a/wp-includes/plugin.php b/wp-includes/plugin.php
index 266c271..1fe2c80 100644
--- a/wp-includes/plugin.php
+++ b/wp-includes/plugin.php
@@ -26,7 +26,9 @@ function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)
function apply_filters($tag, $string) {
global $wp_filter;
- $args = array_slice(func_get_args(), 2);
+ $args = array();
+ for ( $a = 2; $a < func_num_args(); $a++ )
+ $args[] = func_get_arg($a);
merge_filters($tag);
@@ -37,18 +39,15 @@ function apply_filters($tag, $string) {
if ( !is_null($functions) ) {
foreach($functions as $function) {
- $all_args = array_merge(array($string), $args);
$function_name = $function['function'];
$accepted_args = $function['accepted_args'];
- if ( $accepted_args == 1 )
- $the_args = array($string);
- elseif ( $accepted_args > 1 )
- $the_args = array_slice($all_args, 0, $accepted_args);
+ $the_args = $args;
+ array_unshift($the_args, $string);
+ if ( $accepted_args > 0 )
+ $the_args = array_slice($the_args, 0, $accepted_args);
elseif ( $accepted_args == 0 )
$the_args = NULL;
- else
- $the_args = $all_args;
$string = call_user_func_array($function_name, $the_args);
}
@@ -102,11 +101,13 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1)
function do_action($tag, $arg = '') {
global $wp_filter;
- $extra_args = array_slice(func_get_args(), 2);
- if ( is_array($arg) )
- $args = array_merge($arg, $extra_args);
+ $args = array();
+ if ( is_array($arg) && 1 == count($arg) && is_object($arg[0]) ) // array(&$this)
+ $args[] =& $arg[0];
else
- $args = array_merge(array($arg), $extra_args);
+ $args[] = $arg;
+ for ( $a = 2; $a < func_num_args(); $a++ )
+ $args[] = func_get_arg($a);
merge_filters($tag);
@@ -120,18 +121,12 @@ function do_action($tag, $arg = '') {
$function_name = $function['function'];
$accepted_args = $function['accepted_args'];
- if ( $accepted_args == 1 ) {
- if ( is_array($arg) )
- $the_args = $arg;
- else
- $the_args = array($arg);
- } elseif ( $accepted_args > 1 ) {
+ if ( $accepted_args > 0 )
$the_args = array_slice($args, 0, $accepted_args);
- } elseif ( $accepted_args == 0 ) {
+ elseif ( $accepted_args == 0 )
$the_args = NULL;
- } else {
+ else
$the_args = $args;
- }
$string = call_user_func_array($function_name, $the_args);
}