alecpl
2010-10-26 10a6fc58e6e8a40388ffda43f949f69f5ec804dc
program/include/rcube_plugin_api.php
@@ -31,6 +31,7 @@
  public $dir;
  public $url = 'plugins/';
  public $output;
  public $config;
  
  public $handlers = array();
  private $plugins = array();
@@ -39,7 +40,6 @@
  private $actionmap = array();
  private $objectsmap = array();
  private $template_contents = array();
  private $required_plugins = array('filesystem_attachments');
  private $active_hook = false;
@@ -76,7 +76,7 @@
  /**
   * This implements the 'singleton' design pattern
   *
   * @return object rcube_plugin_api The one and only instance if this class
   * @return rcube_plugin_api The one and only instance if this class
   */
  static function get_instance()
  {
@@ -107,6 +107,7 @@
  {
    $rcmail = rcmail::get_instance();
    $this->output = $rcmail->output;
    $this->config = $rcmail->config;
    $plugins_dir = dir($this->dir);
    $plugins_dir = unslashify($plugins_dir->path);
@@ -189,8 +190,8 @@
  /**
   * Allows a plugin object to register a callback for a certain hook
   *
   * @param string Hook name
   * @param mixed String with global function name or array($obj, 'methodname')
   * @param string $hook Hook name
   * @param mixed  $callback String with global function name or array($obj, 'methodname')
   */
  public function register_hook($hook, $callback)
  {
@@ -214,8 +215,8 @@
   * Triggers a plugin hook.
   * This is called from the application and executes all registered handlers
   *
   * @param string Hook name
   * @param array Named arguments (key->value pairs)
   * @param string $hook Hook name
   * @param array $args Named arguments (key->value pairs)
   * @return array The (probably) altered hook arguments
   */
  public function exec_hook($hook, $args = array())
@@ -243,10 +244,10 @@
  /**
   * Let a plugin register a handler for a specific request
   *
   * @param string Action name (_task=mail&_action=plugin.foo)
   * @param string Plugin name that registers this action
   * @param mixed Callback: string with global function name or array($obj, 'methodname')
   * @param string Task name registered by this plugin
   * @param string $action Action name (_task=mail&_action=plugin.foo)
   * @param string $owner Plugin name that registers this action
   * @param mixed  $callback Callback: string with global function name or array($obj, 'methodname')
   * @param string $task Task name registered by this plugin
   */
  public function register_action($action, $owner, $callback, $task = null)
  {
@@ -273,7 +274,7 @@
   * This method handles requests like _task=mail&_action=plugin.foo
   * It executes the callback function that was registered with the given action.
   *
   * @param string Action name
   * @param string $action Action name
   */
  public function exec_action($action)
  {
@@ -291,9 +292,9 @@
  /**
   * Register a handler function for template objects
   *
   * @param string Object name
   * @param string Plugin name that registers this action
   * @param mixed Callback: string with global function name or array($obj, 'methodname')
   * @param string $name Object name
   * @param string $owner Plugin name that registers this action
   * @param mixed  $callback Callback: string with global function name or array($obj, 'methodname')
   */
  public function register_handler($name, $owner, $callback)
  {
@@ -317,8 +318,8 @@
  /**
   * Register this plugin to be responsible for a specific task
   *
   * @param string Task name (only characters [a-z0-9_.-] are allowed)
   * @param string Plugin name that registers this action
   * @param string $task Task name (only characters [a-z0-9_.-] are allowed)
   * @param string $owner Plugin name that registers this action
   */
  public function register_task($task, $owner)
  {
@@ -345,6 +346,7 @@
  /**
   * Checks whether the given task is registered by a plugin
   *
   * @param string $task Task name
   * @return boolean True if registered, otherwise false
   */
  public function is_plugin_task($task)
@@ -357,7 +359,7 @@
   * Check if a plugin hook is currently processing.
   * Mainly used to prevent loops and recursion.
   *
   * @param string Hook to check (optional)
   * @param string $hook Hook to check (optional)
   * @return boolean True if any/the given hook is currently processed, otherwise false
   */
  public function is_processing($hook = null)
@@ -367,6 +369,8 @@
  
  /**
   * Include a plugin script file in the current HTML page
   *
   * @param string $fn Path to script
   */
  public function include_script($fn)
  {
@@ -378,6 +382,8 @@
  /**
   * Include a plugin stylesheet in the current HTML page
   *
   * @param string $fn Path to stylesheet
   */
  public function include_stylesheet($fn)
  {
@@ -389,6 +395,9 @@
  
  /**
   * Save the given HTML content to be added to a template container
   *
   * @param string $html HTML content
   * @param string $container Template container identifier
   */
  public function add_content($html, $container)
  {
@@ -397,6 +406,9 @@
  
  /**
   * Callback for template_container hooks
   *
   * @param array $attrib
   * @return array
   */
  private function template_container_hook($attrib)
  {
@@ -406,6 +418,9 @@
  
  /**
   * Make the given file name link into the plugins directory
   *
   * @param string $fn Filename
   * @return string
   */
  private function resource_url($fn)
  {