| | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2008-2012, The Roundcube Dev Team | |
| | | | Copyright (C) 2008-2014, The Roundcube Dev Team | |
| | | | | |
| | | | Licensed under the GNU General Public License version 3 or | |
| | | | any later version with exceptions for skins & plugins. | |
| | |
| | | abstract function init(); |
| | | |
| | | /** |
| | | * Provide information about this |
| | | * |
| | | * @return array Meta information about a plugin or false if not implemented |
| | | */ |
| | | public static function info() |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * Attempt to load the given plugin which is required for the current plugin |
| | | * |
| | | * @param string Plugin name |
| | |
| | | */ |
| | | public function require_plugin($plugin_name) |
| | | { |
| | | return $this->api->load_plugin($plugin_name); |
| | | return $this->api->load_plugin($plugin_name, true); |
| | | } |
| | | |
| | | /** |
| | |
| | | $fpath = $this->home.'/'.$fname; |
| | | $rcube = rcube::get_instance(); |
| | | |
| | | if (is_file($fpath) && !$rcube->config->load_from_file($fpath)) { |
| | | if (($is_local = is_file($fpath)) && !$rcube->config->load_from_file($fpath)) { |
| | | rcube::raise_error(array( |
| | | 'code' => 527, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Failed to load config from $fpath"), true, false); |
| | | return false; |
| | | } |
| | | else if (!$is_local) { |
| | | // Search plugin_name.inc.php file in any configured path |
| | | return $rcube->config->load_from_file($this->ID . '.inc.php'); |
| | | } |
| | | |
| | | return true; |
| | |
| | | $rcube->load_language($lang, $add); |
| | | |
| | | // add labels to client |
| | | if ($add2client) { |
| | | if ($add2client && method_exists($rcube->output, 'add_label')) { |
| | | if (is_array($add2client)) { |
| | | $js_labels = array_map(array($this, 'label_map_callback'), $add2client); |
| | | } |
| | |
| | | } |
| | | $rcube->output->add_label($js_labels); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Wrapper for add_label() adding the plugin ID as domain |
| | | */ |
| | | public function add_label() |
| | | { |
| | | $rcube = rcube::get_instance(); |
| | | |
| | | if (method_exists($rcube->output, 'add_label')) { |
| | | $args = func_get_args(); |
| | | if (count($args) == 1 && is_array($args[0])) { |
| | | $args = $args[0]; |
| | | } |
| | | |
| | | $args = array_map(array($this, 'label_map_callback'), $args); |
| | | $rcube->output->add_label($args); |
| | | } |
| | | } |
| | | |
| | |
| | | public function local_skin_path() |
| | | { |
| | | $rcube = rcube::get_instance(); |
| | | foreach (array($rcube->config->get('skin'), 'larry') as $skin) { |
| | | $skins = array_keys((array)$rcube->output->skins); |
| | | if (empty($skins)) { |
| | | $skins = array($rcube->config->get('skin')); |
| | | } |
| | | foreach ($skins as $skin) { |
| | | $skin_path = 'skins/' . $skin; |
| | | if (is_dir(realpath(slashify($this->home) . $skin_path))) { |
| | | break; |
| | |
| | | */ |
| | | private function label_map_callback($key) |
| | | { |
| | | if (strpos($key, $this->ID.'.') === 0) { |
| | | return $key; |
| | | } |
| | | |
| | | return $this->ID.'.'.$key; |
| | | } |
| | | } |