You are here

function context_admin_plugin_callback_invoke in Contextual Administration 7

Helper function for exposing new core/contrib hooks or alter functions to context_admin plugins.

$plugin_callback - the key within the $plugin array in the plugin for the hook or alter function specific to the plugin. $callback_type - either hook or alter, hooks will use func_get_args which passes by value, and alters will use debug_backtrace to pass by reference.

1 call to context_admin_plugin_callback_invoke()
context_admin_node_insert in ./context_admin.module
Implementation of hook_node_insert
1 string reference to 'context_admin_plugin_callback_invoke'
context_admin_form_alter in ./context_admin.module
Implementation of hook_form_alter

File

./context_admin.module, line 137

Code

function context_admin_plugin_callback_invoke($plugin_callback, $callback_type, $page = NULL) {

  // Checking to make sure that we're on a context_admin generated page.
  if (empty($page)) {
    $page = page_manager_get_current_page();
  }
  $plugin = '';
  if ($page) {
    if (isset($page['handler']->conf['context_admin_options'])) {
      $plugin = $page['handler']->conf['context_admin_options'];
    }
    ctools_include('plugins');
    if ($callback_type == 'alter') {
      $stack = debug_backtrace();
      if (isset($stack[0]["args"])) {
        $args = array();
        for ($i = 0; $i < count($stack[0]["args"]); $i++) {
          $args[$i] =& $stack[0]["args"][$i];
        }
      }
    }
    elseif ($callback_type == 'hook') {
      $args = func_get_args();
    }
    unset($args[0]);
    unset($args[1]);
    unset($args[2]);
    $args[] = $page;
    if ($callback = ctools_plugin_load_function('context_admin', 'context_admin', $plugin, $plugin_callback)) {
      call_user_func_array($callback, $args);
    }
  }
}