<?php
#[AllowDynamicProperties]
class dispatcherGmp
{
  protected static $_pref = 'gmp_';

  public static function addAction($tag, $function_to_add, $priority = 10, $accepted_args = 1)
  {
    if (strpos($tag, 'gmp_') === false) {
      $tag = self::$_pref . $tag;
    }
    return add_action($tag, $function_to_add, $priority, $accepted_args);
  }
  public static function doAction($tag)
  {
    if (strpos($tag, 'gmp_') === false) {
      $tag = self::$_pref . $tag;
    }
    $numArgs = func_num_args();
    if ($numArgs > 2) {
      $args = [$tag];
      for ($i = 1; $i < func_num_args(); $i++) {
        $args[] = func_get_arg($i);
      }
      return call_user_func_array('do_action', $args);
    } elseif ($numArgs == 2) {
      $args = func_get_arg(1);
    } else {
      $args = null;
    }
    return do_action($tag, $args);
  }
  public static function addFilter($tag, $function_to_add, $priority = 10, $accepted_args = 1)
  {
    if (strpos($tag, 'gmp_') === false) {
      $tag = self::$_pref . $tag;
    }
    return add_filter($tag, $function_to_add, $priority, $accepted_args);
  }
  public static function applyFilters($tag, $value)
  {
    if (strpos($tag, 'gmp_') === false) {
      $tag = self::$_pref . $tag;
    }
    $numArgs = func_num_args();
    if ($numArgs > 2) {
      $args = [$tag];
      for ($i = 1; $i < func_num_args(); $i++) {
        $args[] = func_get_arg($i);
      }
      return call_user_func_array('apply_filters', $args);
    } else {
      return apply_filters($tag, $value);
    }
  }
}
