[ Index ]
 

Code source de WordPress 2.1.2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/wp-includes/ -> plugin.php (source)

   1  <?php
   2  
   3  //
   4  // Filter functions, the core of the WP plugin architecture.
   5  //
   6  
   7  function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
   8      global $wp_filter;
   9  
  10      // check that we don't already have the same filter at the same priority
  11      if ( isset($wp_filter[$tag]["$priority"]) ) {
  12          foreach ( $wp_filter[$tag]["$priority"] as $filter ) {
  13              // uncomment if we want to match function AND accepted_args
  14              // if ( $filter == array($function, $accepted_args) ) {
  15              if ( $filter['function'] == $function_to_add )
  16                  return true;
  17          }
  18      }
  19  
  20      // So the format is wp_filter['tag']['array of priorities']['array of ['array (functions, accepted_args)]']
  21      $wp_filter[$tag]["$priority"][] = array('function'=>$function_to_add, 'accepted_args'=>$accepted_args);
  22      return true;
  23  }
  24  
  25  function apply_filters($tag, $string) {
  26      global $wp_filter;
  27  
  28      $args = array();
  29      for ( $a = 2; $a < func_num_args(); $a++ )
  30          $args[] = func_get_arg($a);
  31  
  32      merge_filters($tag);
  33  
  34      if ( !isset($wp_filter[$tag]) )
  35          return $string;
  36  
  37      foreach ( (array) $wp_filter[$tag] as $priority => $functions ) {
  38          if ( !is_null($functions) ) {
  39              foreach ( (array) $functions as $function ) {
  40                  $function_name = $function['function'];
  41                  $accepted_args = $function['accepted_args'];
  42                  $the_args = $args;
  43                  array_unshift($the_args, $string);
  44                  if ( $accepted_args > 0 )
  45                      $the_args = array_slice($the_args, 0, $accepted_args);
  46                  elseif ( 0 == $accepted_args )
  47                      $the_args = NULL;
  48                  $string = call_user_func_array($function_name, $the_args);
  49              }
  50          }
  51      }
  52      return $string;
  53  }
  54  
  55  function merge_filters($tag) {
  56      global $wp_filter;
  57      if ( isset($wp_filter['all']) ) {
  58          foreach ( (array) $wp_filter['all'] as $priority => $functions ) {
  59              if ( isset($wp_filter[$tag][$priority]) )
  60                  $wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], $wp_filter[$tag][$priority]);
  61              else
  62                  $wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], array());
  63              $wp_filter[$tag][$priority] = array_unique($wp_filter[$tag][$priority]);
  64          }
  65      }
  66  
  67      if ( isset($wp_filter[$tag]) )
  68          uksort( $wp_filter[$tag], "strnatcasecmp" );
  69  }
  70  
  71  function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
  72      global $wp_filter;
  73  
  74      // rebuild the list of filters
  75      if ( isset($wp_filter[$tag]["$priority"]) ) {
  76          $new_function_list = array();
  77          foreach ( (array) $wp_filter[$tag]["$priority"] as $filter ) {
  78              if ( $filter['function'] != $function_to_remove )
  79                  $new_function_list[] = $filter;
  80          }
  81          $wp_filter[$tag]["$priority"] = $new_function_list;
  82      }
  83      return true;
  84  }
  85  
  86  //
  87  // Action functions
  88  //
  89  
  90  function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
  91      add_filter($tag, $function_to_add, $priority, $accepted_args);
  92  }
  93  
  94  function do_action($tag, $arg = '') {
  95      global $wp_filter, $wp_actions;
  96  
  97      $args = array();
  98      if ( is_array($arg) && 1 == count($arg) && is_object($arg[0]) ) // array(&$this)
  99          $args[] =& $arg[0];
 100      else
 101          $args[] = $arg;
 102      for ( $a = 2; $a < func_num_args(); $a++ )
 103          $args[] = func_get_arg($a);
 104  
 105      merge_filters($tag);
 106  
 107      if ( !isset($wp_filter[$tag]) )
 108          return;
 109  
 110      foreach ( (array) $wp_filter[$tag] as $priority => $functions ) {
 111          if ( !is_null($functions) ) {
 112              foreach ( (array) $functions as $function ) {
 113                  $function_name = $function['function'];
 114                  $accepted_args = $function['accepted_args'];
 115  
 116                  if ( $accepted_args > 0 )
 117                      $the_args = array_slice($args, 0, $accepted_args);
 118                  elseif ( $accepted_args == 0 )
 119                      $the_args = NULL;
 120                  else
 121                      $the_args = $args;
 122  
 123                  call_user_func_array($function_name, $the_args);
 124              }
 125          }
 126      }
 127  
 128      if ( is_array($wp_actions) )
 129          $wp_actions[] = $tag;
 130      else
 131          $wp_actions = array($tag);
 132  }
 133  
 134  // Returns the number of times an action has been done
 135  function did_action($tag) {
 136      global $wp_actions;
 137  
 138      return count(array_keys($wp_actions, $tag));
 139  }
 140  
 141  function do_action_ref_array($tag, $args) {
 142      global $wp_filter, $wp_actions;
 143  
 144      if ( !is_array($wp_actions) )
 145          $wp_actions = array($tag);
 146      else
 147          $wp_actions[] = $tag;
 148  
 149      merge_filters($tag);
 150  
 151      if ( !isset($wp_filter[$tag]) )
 152          return;
 153  
 154      foreach ( (array) $wp_filter[$tag] as $priority => $functions ) {
 155          if ( !is_null($functions) ) {
 156              foreach ( (array) $functions as $function ) {
 157                  $function_name = $function['function'];
 158                  $accepted_args = $function['accepted_args'];
 159                  if ( $accepted_args > 0 )
 160                      $the_args = array_slice($args, 0, $accepted_args);
 161                  elseif ( 0 == $accepted_args )
 162                      $the_args = NULL;
 163                  else
 164                      $the_args = $args;
 165  
 166                  call_user_func_array($function_name, $the_args);
 167              }
 168          }
 169      }
 170  }
 171  
 172  function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
 173      remove_filter($tag, $function_to_remove, $priority, $accepted_args);
 174  }
 175  
 176  //
 177  // Functions for handling plugins.
 178  //
 179  
 180  function plugin_basename($file) {
 181      $file = preg_replace('|\\\\+|', '\\\\', $file);
 182      $file = preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', $file);
 183      return $file;
 184  }
 185  
 186  function register_activation_hook($file, $function) {
 187      $file = plugin_basename($file);
 188      add_action('activate_' . $file, $function);
 189  }
 190  
 191  function register_deactivation_hook($file, $function) {
 192      $file = plugin_basename($file);
 193      add_action('deactivate_' . $file, $function);
 194  }
 195  
 196  ?>


Généré le : Fri Mar 30 19:41:27 2007 par Balluche grâce à PHPXref 0.7