X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fstatusnet.php;h=844a15c339d10cc8ab363ef296c366ccba1c5963;hb=bcb6dadc9f29eab6319704f59157425a9e0857c4;hp=432c5b8a209b7acd971b82781beeeb86902c3236;hpb=e45edd6ae20042df2931f6c01fba9111e387741c;p=quix0rs-gnu-social.git diff --git a/lib/statusnet.php b/lib/statusnet.php index 432c5b8a20..844a15c339 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -44,9 +44,17 @@ class StatusNet * * @throws ServerException if plugin can't be found */ - public static function addPlugin($name, $attrs = null) + public static function addPlugin($name, array $attrs=array()) { $name = ucfirst($name); + + if (isset(self::$plugins[$name])) { + // We have already loaded this plugin. Don't try to + // do it again with (possibly) different values. + // Försten till kvarn får mala. + return true; + } + $pluginclass = "{$name}Plugin"; if (!class_exists($pluginclass)) { @@ -70,15 +78,29 @@ class StatusNet } } + // Doesn't this $inst risk being garbage collected or something? + // TODO: put into a static array that makes sure $inst isn't lost. $inst = new $pluginclass(); - if (!empty($attrs)) { - foreach ($attrs as $aname => $avalue) { - $inst->$aname = $avalue; - } + foreach ($attrs as $aname => $avalue) { + $inst->$aname = $avalue; } // Record activated plugins for later display/config dump - self::$plugins[] = array($name, $attrs); + self::$plugins[$name] = $attrs; + + return true; + } + + public static function delPlugin($name) + { + // Remove our plugin if it was previously loaded + $name = ucfirst($name); + if (isset(self::$plugins[$name])) { + unset(self::$plugins[$name]); + } + + // make sure initPlugins will avoid this + common_config_set('plugins', 'disable-'.$name, true); return true; } @@ -181,9 +203,13 @@ class StatusNet */ protected static function initPlugins() { + // User config may have already added some of these plugins, with + // maybe configured parameters. The self::addPlugin function will + // ignore the new call if it has already been instantiated. + // Load core plugins foreach (common_config('plugins', 'core') as $name => $params) { - call_user_func('addPlugin', $name, $params); + call_user_func('self::addPlugin', $name, $params); } // Load default plugins @@ -193,18 +219,20 @@ class StatusNet continue; } + // TODO: We should be able to avoid this is_null and assume $params + // is an array, since that's how it is typed in addPlugin if (is_null($params)) { - addPlugin($name); + self::addPlugin($name); } else if (is_array($params)) { if (count($params) == 0) { - addPlugin($name); + self::addPlugin($name); } else { $keys = array_keys($params); if (is_string($keys[0])) { - addPlugin($name, $params); + self::addPlugin($name, $params); } else { foreach ($params as $paramset) { - addPlugin($name, $paramset); + self::addPlugin($name, $paramset); } } } @@ -315,7 +343,7 @@ class StatusNet { global $config; $settings = SiteProfile::getSettings($name); - $config = array_merge($config, $settings); + $config = array_replace_recursive($config, $settings); } protected static function _sn_to_path($sn) @@ -395,11 +423,20 @@ class StatusNet static function isHTTPS() { // There are some exceptions to this; add them here! - if(empty($_SERVER['HTTPS'])) { + if (empty($_SERVER['HTTPS'])) { return false; - } else { - return $_SERVER['HTTPS'] !== 'off'; } + + // If it is _not_ "off", it is on, so "true". + return strtolower($_SERVER['HTTPS']) !== 'off'; + } + + /** + * Can we use HTTPS? Then do! Only return false if it's not configured ("never"). + */ + static function useHTTPS() + { + return self::isHTTPS() || common_config('site', 'ssl') != 'never'; } }