diff options
-rw-r--r-- | classes/Notice.php | 16 | ||||
-rw-r--r-- | lib/statusnet.php | 15 | ||||
-rwxr-xr-x | scripts/showplugins.php | 38 |
3 files changed, 62 insertions, 7 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index dccc3685a..d65f0da9a 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -148,11 +148,11 @@ class Notice extends Memcached_DataObject //turn each into their canonical tag //this is needed to remove dupes before saving e.g. #hash.tag = #hashtag for($i=0; $i<count($hashtags); $i++) { + /* elide characters we don't want in the tag */ $hashtags[$i] = common_canonical_tag($hashtags[$i]); } foreach(array_unique($hashtags) as $hashtag) { - /* elide characters we don't want in the tag */ $this->saveTag($hashtag); self::blow('profile:notice_ids_tagged:%d:%s', $this->profile_id, $hashtag); } @@ -374,18 +374,20 @@ class Notice extends Memcached_DataObject $notice->saveReplies(); } - if (isset($groups)) { - $notice->saveKnownGroups($groups); - } else { - $notice->saveGroups(); - } - if (isset($tags)) { $notice->saveKnownTags($tags); } else { $notice->saveTags(); } + // Note: groups may save tags, so must be run after tags are saved + // to avoid errors on duplicates. + if (isset($groups)) { + $notice->saveKnownGroups($groups); + } else { + $notice->saveGroups(); + } + if (isset($urls)) { $notice->saveKnownUrls($urls); } else { diff --git a/lib/statusnet.php b/lib/statusnet.php index eba9ab9b8..2aa73486e 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -31,6 +31,7 @@ class StatusNet { protected static $have_config; protected static $is_api; + protected static $plugins = array(); /** * Configure and instantiate a plugin into the current configuration. @@ -74,10 +75,23 @@ class StatusNet $inst->$aname = $avalue; } } + + // Record activated plugins for later display/config dump + self::$plugins[] = array($name, $attrs); + return true; } /** + * Get a list of activated plugins in this process. + * @return array of (string $name, array $args) pairs + */ + public static function getActivePlugins() + { + return self::$plugins; + } + + /** * Initialize, or re-initialize, StatusNet global configuration * and plugins. * @@ -232,6 +246,7 @@ class StatusNet global $_server, $_path, $config; Event::clearHandlers(); + self::$plugins = array(); // try to figure out where we are. $server and $path // can be set by including module, else we guess based diff --git a/scripts/showplugins.php b/scripts/showplugins.php new file mode 100755 index 000000000..058393b0e --- /dev/null +++ b/scripts/showplugins.php @@ -0,0 +1,38 @@ +#!/usr/bin/env php +<?php +/* + * StatusNet - a distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +foreach (StatusNet::getActivePlugins() as $data) { + list($plugin, $args) = $data; + echo "$plugin: "; + if ($args === null) { + echo "(no args)\n"; + } else { + foreach ($args as $arg => $val) { + echo "\n $arg: "; + var_export($val); + } + echo "\n"; + } + echo "\n"; +} |