]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/plugin.php
Merge branch 'master' into 0.9.x
[quix0rs-gnu-social.git] / lib / plugin.php
index f63bdf30936b1e08f96e44424630d11cecefc79a..0e8c0a742d92f4deb25a35a7da2bfc01f45d04ed 100644 (file)
@@ -88,7 +88,12 @@ class Plugin
         $class = get_class($this);
         if (substr($class, -6) == 'Plugin') {
             $name = substr($class, 0, -6);
-            $path = INSTALLDIR . "/plugins/$name/locale";
+            $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');
@@ -105,16 +110,68 @@ class Plugin
     {
         $this->log(LOG_DEBUG, $msg);
     }
+    
+    function name()
+    {
+        $cls = get_class($this);
+        return mb_substr($cls, 0, -6);
+    }
 
     function onPluginVersion(&$versions)
     {
-        $cls = get_class($this);
-        $name = mb_substr($cls, 0, -6);
+        $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;
+    }
+}