| @@ -112,10 +112,14 @@ | ||
| 112 | 112 | // We will iterate over the links and use each link to access a nested property or array element of the $obj. |
| 113 | 113 | foreach ( $links as $link ) { |
| 114 | 114 | if ( is_array( $obj ) && array_key_exists( $link, $obj ) ) { |
| 115 | 115 | $obj = $obj[ $link ]; |
| 116 | - } elseif ( is_object( $obj ) && isset( $obj->$link ) ) { | |
| 117 | - $obj = $obj->$link; | |
| 116 | + } elseif ( is_object( $obj ) ) { | |
| 117 | + $vars = get_object_vars( $obj ); | |
| 118 | + if ( ! array_key_exists( $link, $vars ) ) { | |
| 119 | + return false; | |
| 120 | + } | |
| 121 | + $obj = $vars[ $link ]; | |
| 118 | 122 | } else { |
| 119 | 123 | return false; |
| 120 | 124 | } |
| 121 | 125 | } |
| @@ -301,15 +305,30 @@ | ||
| 301 | 305 | |
| 302 | 306 | if ( isset( $hook_data['callback'] ) && is_array( $hook_data['callback'] ) && count( $hook_data['callback'] ) > 1 ) { |
| 303 | 307 | // Custom callback provided, call it. |
| 304 | 308 | $reflection_method = new ReflectionMethod( $hook_data['callback'][0], $hook_data['callback'][1] ); |
| 305 | - $ret = $reflection_method->invokeArgs( | |
| 306 | - new $hook_data['callback'][0](), | |
| 307 | - array( | |
| 308 | - $hook_name, | |
| 309 | - $params, | |
| 310 | - ) | |
| 309 | + $new_hooks = array( | |
| 310 | + 'add_user_to_blog', | |
| 311 | + 'user_profile_update_errors', | |
| 312 | + 'profile_update', | |
| 313 | + 'password_reset', | |
| 314 | + 'user_register', | |
| 315 | + 'wpmu_new_user', | |
| 311 | 316 | ); |
| 317 | + if ( in_array( $hook_name, $new_hooks, true ) ) { | |
| 318 | + $ret = $reflection_method->invokeArgs( | |
| 319 | + new $hook_data['callback'][0](), | |
| 320 | + $params | |
| 321 | + ); | |
| 322 | + } else { | |
| 323 | + $ret = $reflection_method->invokeArgs( | |
| 324 | + new $hook_data['callback'][0](), | |
| 325 | + array( | |
| 326 | + $hook_name, | |
| 327 | + $params, | |
| 328 | + ) | |
| 329 | + ); | |
| 330 | + } | |
| 312 | 331 | |
| 313 | 332 | if ( is_array( $ret ) && 2 === count( $ret ) ) { |
| 314 | 333 | [ $text, $context ] = $ret; |
| 315 | 334 | } elseif ( is_array( $ret ) && 3 === count( $ret ) ) { |