Aleksander Machniak
2013-10-17 eb433aa33cec00b42eba3153fc905ebef9c6fd0b
program/include/rcube_plugin_api.php
@@ -30,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();
@@ -74,7 +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',
  );
  /**
@@ -186,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;
        }
      }
@@ -228,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.