X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fplugin.php;h=0e8c0a742d92f4deb25a35a7da2bfc01f45d04ed;hb=be682a3f8c802fb0f61b38f4689decb10eed1715;hp=7b2436e5431c497e9dd60728b50ce53a1582ae1e;hpb=72b3c9108cc3344519a5b59188c912952a62806a;p=quix0rs-gnu-social.git diff --git a/lib/plugin.php b/lib/plugin.php index 7b2436e543..0e8c0a742d 100644 --- a/lib/plugin.php +++ b/lib/plugin.php @@ -1,6 +1,6 @@ . * * @category Plugin - * @package Laconica - * @author Evan Prodromou - * @copyright 2008 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou + * @copyright 2008 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } /** * Base class for plugins * - * A base class for Laconica plugins. Mostly a light wrapper around + * A base class for StatusNet plugins. Mostly a light wrapper around * the Event framework. * * Subclasses of Plugin will automatically handle an event if they define @@ -45,10 +45,10 @@ if (!defined('LACONICA')) { * initialize() and cleanup() methods, respectively. * * @category Plugin - * @package Laconica - * @author Evan Prodromou + * @package StatusNet + * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ * * @see Event */ @@ -65,6 +65,8 @@ class Plugin Event::addHandler(mb_substr($method, 2), array($this, $method)); } } + + $this->setupGettext(); } function initialize() @@ -76,4 +78,100 @@ class Plugin { return true; } + + /** + * Checks if this plugin has localization that needs to be set up. + * Gettext localizations can be called via the _m() helper function. + */ + protected function setupGettext() + { + $class = get_class($this); + if (substr($class, -6) == 'Plugin') { + $name = substr($class, 0, -6); + $path = common_config('plugins', 'locale_path'); + if (!$path) { + // @fixme this will fail for things installed in local/plugins + // ... but then so will web links so far. + $path = INSTALLDIR . "/plugins/$name/locale"; + } + if (file_exists($path) && is_dir($path)) { + bindtextdomain($name, $path); + bind_textdomain_codeset($name, 'UTF-8'); + } + } + } + + protected function log($level, $msg) + { + common_log($level, get_class($this) . ': '.$msg); + } + + protected function debug($msg) + { + $this->log(LOG_DEBUG, $msg); + } + + function name() + { + $cls = get_class($this); + return mb_substr($cls, 0, -6); + } + + function onPluginVersion(&$versions) + { + $name = $this->name(); + + $versions[] = array('name' => $name, + // TRANS: Displayed as version information for a plugin if no version information was found. + 'version' => _('Unknown')); + + return true; + } + + function path($relative) + { + return self::staticPath($this->name(), $relative); + } + + static function staticPath($plugin, $relative) + { + $isHTTPS = StatusNet::isHTTPS(); + + if ($isHTTPS) { + $server = common_config('plugins', 'sslserver'); + } else { + $server = common_config('plugins', 'server'); + } + + if (empty($server)) { + if ($isHTTPS) { + $server = common_config('site', 'sslserver'); + } + if (empty($server)) { + $server = common_config('site', 'server'); + } + } + + if ($isHTTPS) { + $path = common_config('plugins', 'sslpath'); + } else { + $path = common_config('plugins', 'path'); + } + + if (empty($path)) { + $path = common_config('site', 'path') . '/plugins/'; + } + + if ($path[strlen($path)-1] != '/') { + $path .= '/'; + } + + if ($path[0] != '/') { + $path = '/'.$path; + } + + $protocol = ($isHTTPS) ? 'https' : 'http'; + + return $protocol.'://'.$server.$path.$plugin.'/'.$relative; + } }