summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/decache.php8
-rwxr-xr-xscripts/init_conversation.php49
-rwxr-xr-xscripts/queuedaemon.php23
-rwxr-xr-xscripts/update_po_templates.php8
-rw-r--r--scripts/updateavatarurl.php4
-rw-r--r--scripts/updateavatarurl_group.php99
-rwxr-xr-xscripts/xmppdaemon.php28
7 files changed, 193 insertions, 26 deletions
diff --git a/scripts/decache.php b/scripts/decache.php
index 7cabd78ad..094bdb5aa 100644
--- a/scripts/decache.php
+++ b/scripts/decache.php
@@ -24,6 +24,8 @@ $helptext = <<<ENDOFHELP
USAGE: decache.php <table> <id> [<column>]
Clears the cache for the object in table <table> with id <id>
If <column> is specified, use that instead of 'id'
+
+
ENDOFHELP;
require_once INSTALLDIR.'/scripts/commandline.inc';
@@ -43,8 +45,10 @@ if (count($args) > 2) {
$object = Memcached_DataObject::staticGet($table, $column, $id);
if (!$object) {
- print "No such '$table' with $column = '$id'.\n";
- exit(1);
+ print "No such '$table' with $column = '$id'; it's possible some cache keys won't be cleared properly.\n";
+ $class = ucfirst($table);
+ $object = new $class();
+ $object->column = $id;
}
$result = $object->decache();
diff --git a/scripts/init_conversation.php b/scripts/init_conversation.php
new file mode 100755
index 000000000..675e7cabd
--- /dev/null
+++ b/scripts/init_conversation.php
@@ -0,0 +1,49 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, 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';
+
+common_log(LOG_INFO, 'Initializing conversation table...');
+
+$notice = new Notice();
+$notice->query('select distinct conversation from notice');
+
+while ($notice->fetch()) {
+ $id = $notice->conversation;
+
+ if ($id) {
+ $uri = common_local_url('conversation', array('id' => $id));
+
+ // @fixme db_dataobject won't save our value for an autoincrement
+ // so we're bypassing the insert wrappers
+ $conv = new Conversation();
+ $sql = "insert into conversation (id,uri,created) values(%d,'%s','%s')";
+ $sql = sprintf($sql,
+ $id,
+ $conv->escape($uri),
+ $conv->escape(common_sql_now()));
+ echo "$id ";
+ $conv->query($sql);
+ print "... ";
+ }
+}
+print "done.\n";
diff --git a/scripts/queuedaemon.php b/scripts/queuedaemon.php
index 30a8a9602..6dba16f95 100755
--- a/scripts/queuedaemon.php
+++ b/scripts/queuedaemon.php
@@ -74,8 +74,6 @@ require_once(INSTALLDIR.'/lib/daemon.php');
require_once(INSTALLDIR.'/classes/Queue_item.php');
require_once(INSTALLDIR.'/classes/Notice.php');
-define('CLAIM_TIMEOUT', 1200);
-
/**
* Queue handling daemon...
*
@@ -92,7 +90,7 @@ class QueueDaemon extends SpawningDaemon
function __construct($id=null, $daemonize=true, $threads=1, $allsites=false)
{
parent::__construct($id, $daemonize, $threads);
- $this->all = $allsites;
+ $this->allsites = $allsites;
}
/**
@@ -108,7 +106,7 @@ class QueueDaemon extends SpawningDaemon
$this->log(LOG_INFO, 'checking for queued notices');
$master = new QueueMaster($this->get_id());
- $master->init($this->all);
+ $master->init($this->allsites);
try {
$master->service();
} catch (Exception $e) {
@@ -128,19 +126,20 @@ class QueueDaemon extends SpawningDaemon
class QueueMaster extends IoMaster
{
/**
- * Initialize IoManagers for the currently configured site
- * which are appropriate to this instance.
+ * Initialize IoManagers which are appropriate to this instance.
*/
function initManagers()
{
- $classes = array();
- if (Event::handle('StartQueueDaemonIoManagers', array(&$classes))) {
- $classes[] = 'QueueManager';
+ $managers = array();
+ if (Event::handle('StartQueueDaemonIoManagers', array(&$managers))) {
+ $qm = QueueManager::get();
+ $qm->setActiveGroup('main');
+ $managers[] = $qm;
}
- Event::handle('EndQueueDaemonIoManagers', array(&$classes));
+ Event::handle('EndQueueDaemonIoManagers', array(&$managers));
- foreach ($classes as $class) {
- $this->instantiate($class);
+ foreach ($managers as $manager) {
+ $this->instantiate($manager);
}
}
}
diff --git a/scripts/update_po_templates.php b/scripts/update_po_templates.php
index f882f673a..61a6ac783 100755
--- a/scripts/update_po_templates.php
+++ b/scripts/update_po_templates.php
@@ -63,7 +63,10 @@ xgettext \
--output=locale/$domain.po \
--language=PHP \
--keyword='' \
- --keyword="_m:1" \
+ --keyword="_m:1,1t" \
+ --keyword="_m:1c,2,2t" \
+ --keyword="_m:1,2,3t" \
+ --keyword="_m:1c,2,3,4t" \
END;
foreach ($files as $file) {
@@ -186,6 +189,9 @@ foreach ($args as $arg) {
$allplugins = true;
} elseif (substr($arg, 0, 9) == "--plugin=") {
$plugins[] = substr($arg, 9);
+ } elseif ($arg == '--help') {
+ echo "options: --all --core --plugins --plugin=Foo\n\n";
+ exit(0);
}
}
diff --git a/scripts/updateavatarurl.php b/scripts/updateavatarurl.php
index 617c2e24c..3b6681bae 100644
--- a/scripts/updateavatarurl.php
+++ b/scripts/updateavatarurl.php
@@ -94,11 +94,11 @@ function updateAvatars($user)
}
}
- $orig = clone($avatar);
+ $orig_url = $avatar->url;
$avatar->url = Avatar::url($avatar->filename);
- if ($avatar->url != $orig->url) {
+ if ($avatar->url != $orig_url) {
$sql =
"UPDATE avatar SET url = '" . $avatar->url . "' ".
"WHERE profile_id = " . $avatar->profile_id . " ".
diff --git a/scripts/updateavatarurl_group.php b/scripts/updateavatarurl_group.php
new file mode 100644
index 000000000..ada42de20
--- /dev/null
+++ b/scripts/updateavatarurl_group.php
@@ -0,0 +1,99 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, 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__) . '/..'));
+
+$shortoptions = 'i:n:a';
+$longoptions = array('id=', 'nickname=', 'all');
+
+$helptext = <<<END_OF_UPDATEAVATARURL_HELP
+updateavatarurl_group.php [options]
+update the URLs of all group avatars in the system
+
+ -i --id ID of group to update
+ -n --nickname nickname of the group to update
+ -a --all update all
+
+END_OF_UPDATEAVATARURL_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+try {
+ $user = null;
+
+ if (have_option('i', 'id')) {
+ $id = get_option_value('i', 'id');
+ $group = User_group::staticGet('id', $id);
+ if (empty($group)) {
+ throw new Exception("Can't find group with id '$id'.");
+ }
+ updateGroupAvatars($group);
+ } else if (have_option('n', 'nickname')) {
+ $nickname = get_option_value('n', 'nickname');
+ $group = User_group::staticGet('nickname', $nickname);
+ if (empty($group)) {
+ throw new Exception("Can't find group with nickname '$nickname'");
+ }
+ updateGroupAvatars($group);
+ } else if (have_option('a', 'all')) {
+ $group = new User_group();
+ if ($group->find()) {
+ while ($group->fetch()) {
+ updateGroupAvatars($group);
+ }
+ }
+ } else {
+ show_help();
+ exit(1);
+ }
+} catch (Exception $e) {
+ print $e->getMessage()."\n";
+ exit(1);
+}
+
+function updateGroupAvatars($group)
+{
+ if (!have_option('q', 'quiet')) {
+ print "Updating avatars for group '".$group->nickname."' (".$group->id.")...";
+ }
+
+ if (empty($group->original_logo)) {
+ print "(none found)...";
+ } else {
+ // Using clone here was screwing up the group->find() iteration
+ $orig = User_group::staticGet('id', $group->id);
+
+ $group->original_logo = Avatar::url(basename($group->original_logo));
+ $group->homepage_logo = Avatar::url(basename($group->homepage_logo));
+ $group->stream_logo = Avatar::url(basename($group->stream_logo));
+ $group->mini_logo = Avatar::url(basename($group->mini_logo));
+
+ if (!$group->update($orig)) {
+ throw new Exception("Can't update avatars for group " . $group->nickname . ".");
+ }
+ }
+
+ if (have_option('v', 'verbose')) {
+ print "DONE.";
+ }
+ if (!have_option('q', 'quiet') || have_option('v', 'verbose')) {
+ print "\n";
+ }
+}
diff --git a/scripts/xmppdaemon.php b/scripts/xmppdaemon.php
index 46dd9b90c..9302f0c43 100755
--- a/scripts/xmppdaemon.php
+++ b/scripts/xmppdaemon.php
@@ -20,13 +20,15 @@
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
-$shortoptions = 'fi::';
-$longoptions = array('id::', 'foreground');
+$shortoptions = 'fi::a';
+$longoptions = array('id::', 'foreground', 'all');
$helptext = <<<END_OF_XMPP_HELP
Daemon script for receiving new notices from Jabber users.
-i --id Identity (default none)
+ -a --all Handle XMPP for all local sites
+ (requires Stomp queue handler, status_network setup)
-f --foreground Stay in the foreground (default background)
END_OF_XMPP_HELP;
@@ -37,13 +39,16 @@ require_once INSTALLDIR . '/lib/jabber.php';
class XMPPDaemon extends SpawningDaemon
{
- function __construct($id=null, $daemonize=true, $threads=1)
+ protected $allsites = false;
+
+ function __construct($id=null, $daemonize=true, $threads=1, $allsites=false)
{
if ($threads != 1) {
// This should never happen. :)
throw new Exception("XMPPDaemon can must run single-threaded");
}
parent::__construct($id, $daemonize, $threads);
+ $this->allsites = $allsites;
}
function runThread()
@@ -51,7 +56,7 @@ class XMPPDaemon extends SpawningDaemon
common_log(LOG_INFO, 'Waiting to listen to XMPP and queues');
$master = new XmppMaster($this->get_id());
- $master->init();
+ $master->init($this->allsites);
$master->service();
common_log(LOG_INFO, 'terminating normally');
@@ -69,15 +74,19 @@ class XmppMaster extends IoMaster
*/
function initManagers()
{
- // @fixme right now there's a hack in QueueManager to determine
- // which queues to subscribe to based on the master class.
- $this->instantiate('QueueManager');
- $this->instantiate('XmppManager');
+ if (common_config('xmpp', 'enabled')) {
+ $qm = QueueManager::get();
+ $qm->setActiveGroup('xmpp');
+ $this->instantiate($qm);
+ $this->instantiate(XmppManager::get());
+ }
}
}
// Abort immediately if xmpp is not enabled, otherwise the daemon chews up
// lots of CPU trying to connect to unconfigured servers
+// @fixme do this check after we've run through the site list so we
+// don't have to find an XMPP site to start up when using --all mode.
if (common_config('xmpp','enabled')==false) {
print "Aborting daemon - xmpp is disabled\n";
exit();
@@ -92,7 +101,8 @@ if (have_option('i', 'id')) {
}
$foreground = have_option('f', 'foreground');
+$all = have_option('a') || have_option('--all');
-$daemon = new XMPPDaemon($id, !$foreground);
+$daemon = new XMPPDaemon($id, !$foreground, 1, $all);
$daemon->runOnce();