<?php
/*
* Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+ * Copyright (C) 2008, 2009, Control Yourself, 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-# Abort if called from a web server
-if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
- print "This script must be run from the command line\n";
- exit();
-}
-
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
-define('LACONICA', true);
-require_once(INSTALLDIR . '/lib/common.php');
-require_once(INSTALLDIR . '/lib/omb.php');
-require_once(INSTALLDIR . '/lib/queuehandler.php');
+$shortoptions = 'i::';
+$longoptions = array('id::');
+
+$helptext = <<<END_OF_OMB_HELP
+Daemon script for pushing new notices to OpenMicroBlogging subscribers.
+
+ -i --id Identity (default none)
+
+END_OF_OMB_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+require_once INSTALLDIR . '/lib/omb.php';
+require_once INSTALLDIR . '/lib/queuehandler.php';
set_error_handler('common_error_handler');
-class OmbQueueHandler extends QueueHandler {
-
- function transport() {
- return 'omb';
- }
-
- function start() {
- return true;
- }
-
- function handle_notice($notice) {
- if ($this->is_remote($notice)) {
- # It's fine, we're done with it.
- return true;
- } else {
- return omb_broadcast_remote_subscribers($notice);
- }
- }
-
- function finish() {
- }
-
- function is_remote($notice) {
- $user = User::staticGet($notice->profile_id);
- return !$user;
- }
-}
+class OmbQueueHandler extends QueueHandler
+{
-mb_internal_encoding('UTF-8');
+ function transport()
+ {
+ return 'omb';
+ }
-$id = ($argc > 1) ? $argv[1] : NULL;
+ function start()
+ {
+ $this->log(LOG_INFO, "INITIALIZE");
+ return true;
+ }
-$handler = new OmbQueueHandler($id);
+ function handle_notice($notice)
+ {
+ if ($this->is_remote($notice)) {
+ $this->log(LOG_DEBUG, 'Ignoring remote notice ' . $notice->id);
+ return true;
+ } else {
+ return omb_broadcast_remote_subscribers($notice);
+ }
+ }
-if ($handler->start()) {
- $handler->handle_queue();
+ function finish()
+ {
+ }
+
+ function is_remote($notice)
+ {
+ $user = User::staticGet($notice->profile_id);
+ return is_null($user);
+ }
}
-$handler->finish();
+if (have_option('i')) {
+ $id = get_option_value('i');
+} else if (have_option('--id')) {
+ $id = get_option_value('--id');
+} else if (count($args) > 0) {
+ $id = $args[0];
+} else {
+ $id = null;
+}
+
+$handler = new OmbQueueHandler($id);
+
+$handler->runOnce();