Thomas Bruederli
2013-10-21 f06aa8058b7e32ba32d4551074b6e0b8a300f751
program/include/rcube_plugin_api.php
@@ -6,7 +6,10 @@
 |                                                                       |
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Plugins repository                                                  |
@@ -27,12 +30,14 @@
class rcube_plugin_api
{
  static private $instance;
  public $dir;
  public $url = 'plugins/';
  public $output;
  public $config;
  public $allowed_prefs         = array();
  public $allowed_session_prefs = array();
  public $handlers = array();
  private $plugins = array();
  private $tasks = array();
@@ -71,6 +76,9 @@
    'delete_identity'   => 'identity_delete',
    'save_identity'     => 'identity_update',
    'identity_save'     => 'identity_update',
    // to be removed after 0.8
    'imap_init'         => 'storage_init',
    'mailboxes_list'    => 'storage_folders',
  );
  /**
@@ -182,6 +190,9 @@
            $plugin->init();
            $this->plugins[$plugin_name] = $plugin;
          }
          if (!empty($plugin->allowed_prefs)) {
            $this->allowed_prefs = array_merge($this->allowed_prefs, $plugin->allowed_prefs);
          }
          return true;
        }
      }
@@ -224,6 +235,20 @@
        'message' => "Invalid callback function for $hook"), true, false);
  }
  /**
   * Allow a plugin object to unregister a callback.
   *
   * @param string $hook Hook name
   * @param mixed  $callback String with global function name or array($obj, 'methodname')
   */
  public function unregister_hook($hook, $callback)
  {
    $callback_id = array_search($callback, $this->handlers[$hook]);
    if ($callback_id !== false) {
      unset($this->handlers[$hook][$callback_id]);
    }
  }
  /**
   * Triggers a plugin hook.