]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 1.0.x
authorBrion Vibber <brion@pobox.com>
Mon, 22 Mar 2010 20:56:16 +0000 (13:56 -0700)
committerBrion Vibber <brion@pobox.com>
Mon, 22 Mar 2010 20:56:16 +0000 (13:56 -0700)
Conflicts:
lib/channel.php
scripts/imdaemon.php

1  2 
actions/shownotice.php
classes/User.php
lib/channel.php
lib/command.php
lib/queuemanager.php
lib/statusnet.php
lib/util.php
scripts/imdaemon.php

Simple merge
index 15ec4ad946192896d527b2e0fc4a6c1878c6fb5a,8ad2ec63d5c81d12cbf6c3b35c7eb41b8cac5e60..1ba940a6963600fc2545f167ec199d49656dd411
@@@ -82,8 -91,9 +86,9 @@@ class User extends Memcached_DataObjec
  
      function updateKeys(&$orig)
      {
+         $this->_connect();
          $parts = array();
 -        foreach (array('nickname', 'email', 'jabber', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) {
 +        foreach (array('nickname', 'email', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) {
              if (strcmp($this->$k, $orig->$k) != 0) {
                  $parts[] = $k . ' = ' . $this->_quote($this->$k);
              }
diff --cc lib/channel.php
index 05437b4e9eaa44c3720b9ed9a192cbb7cbf43807,689bca0be98a8028966812aa578569dbc3efdb7d..e83960ac5402cc41fbe1867ca2bceea31c7280f6
@@@ -47,6 -47,82 +47,25 @@@ class Channe
      }
  }
  
 -class XMPPChannel extends Channel
 -{
 -
 -    var $conn = null;
 -
 -    function source()
 -    {
 -        return 'xmpp';
 -    }
 -
 -    function __construct($conn)
 -    {
 -        $this->conn = $conn;
 -    }
 -
 -    function on($user)
 -    {
 -        return $this->set_notify($user, 1);
 -    }
 -
 -    function off($user)
 -    {
 -        return $this->set_notify($user, 0);
 -    }
 -
 -    function output($user, $text)
 -    {
 -        $text = '['.common_config('site', 'name') . '] ' . $text;
 -        jabber_send_message($user->jabber, $text);
 -    }
 -
 -    function error($user, $text)
 -    {
 -        $text = '['.common_config('site', 'name') . '] ' . $text;
 -        jabber_send_message($user->jabber, $text);
 -    }
 -
 -    function set_notify(&$user, $notify)
 -    {
 -        $orig = clone($user);
 -        $user->jabbernotify = $notify;
 -        $result = $user->update($orig);
 -        if (!$result) {
 -            $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
 -            common_log(LOG_ERR,
 -                       'Could not set notify flag to ' . $notify .
 -                       ' for user ' . common_log_objstring($user) .
 -                       ': ' . $last_error->message);
 -            return false;
 -        } else {
 -            common_log(LOG_INFO,
 -                       'User ' . $user->nickname . ' set notify flag to ' . $notify);
 -            return true;
 -        }
 -    }
 -}
 -
+ class CLIChannel extends Channel
+ {
+     function source()
+     {
+         return 'cli';
+     }
+     function output($user, $text)
+     {
+         $site = common_config('site', 'name');
+         print "[{$user->nickname}@{$site}] $text\n";
+     }
+     function error($user, $text)
+     {
+         $this->output($user, $text);
+     }
+ }
  class WebChannel extends Channel
  {
      var $out = null;
diff --cc lib/command.php
index 5be9cd6e85bdc161145a345796ba53d1084b1c3f,f7421269d0aad3c4bc4771fe2b32e85d458c609e..c2116828c00914de1c1669932355c129bfaf84cb
@@@ -607,9 -650,9 +650,9 @@@ class OffCommand extends Comman
          parent::__construct($user);
          $this->other = $other;
      }
-     function execute($channel)
+     function handle($channel)
      {
 -        if ($other) {
 +        if ($this->other) {
              $channel->error($this->user, _("Command not yet implemented."));
          } else {
              if ($channel->off($this->user)) {
@@@ -630,9 -673,9 +673,9 @@@ class OnCommand extends Comman
          $this->other = $other;
      }
  
-     function execute($channel)
+     function handle($channel)
      {
 -        if ($other) {
 +        if ($this->other) {
              $channel->error($this->user, _("Command not yet implemented."));
          } else {
              if ($channel->on($this->user)) {
Simple merge
index afb8f5af02f4ad830d496c633dbfd61ef7a17caf,eba9ab9b8eef799f20567efa82cb905e6fa420bd..776cfb579b807f70c069e38416025b77779e637b
@@@ -339,13 -339,10 +339,9 @@@ class StatusNe
          }
  
          // Backwards compatibility
 -
          if (array_key_exists('memcached', $config)) {
              if ($config['memcached']['enabled']) {
-                 if(class_exists('Memcached')) {
-                     addPlugin('Memcached', array('servers' => $config['memcached']['server']));
-                 } else {
-                     addPlugin('Memcache', array('servers' => $config['memcached']['server']));
-                 }
+                 addPlugin('Memcache', array('servers' => $config['memcached']['server']));
              }
  
              if (!empty($config['memcached']['base'])) {
diff --cc lib/util.php
Simple merge
index 4a2c942234f6112d19f017aaf64e1de61fcfdbff,0000000000000000000000000000000000000000..0ce74667c5d0178e2aeea7daa7b5f86d0cec3121
mode 100755,000000..100755
--- /dev/null
@@@ -1,101 -1,0 +1,118 @@@
-         $master = new ImMaster($this->get_id());
 +#!/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__) . '/..'));
 +
 +$shortoptions = 'fi::a';
 +$longoptions = array('id::', 'foreground', 'all');
 +
 +$helptext = <<<END_OF_IM_HELP
 +Daemon script for receiving new notices from IM 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_IM_HELP;
 +
 +require_once INSTALLDIR.'/scripts/commandline.inc';
 +
 +class ImDaemon extends SpawningDaemon
 +{
 +    protected $allsites = false;
 +
 +    function __construct($id=null, $daemonize=true, $threads=1, $allsites=false)
 +    {
 +        if ($threads != 1) {
 +            // This should never happen. :)
 +            throw new Exception("IMDaemon can must run single-threaded");
 +        }
 +        parent::__construct($id, $daemonize, $threads);
 +        $this->allsites = $allsites;
 +    }
 +
 +    function runThread()
 +    {
 +        common_log(LOG_INFO, 'Waiting to listen to IM connections and queues');
 +
++        $master = new ImMaster($this->get_id(), $this->processManager());
 +        $master->init($this->allsites);
 +        $master->service();
 +
 +        common_log(LOG_INFO, 'terminating normally');
 +
 +        return $master->respawn ? self::EXIT_RESTART : self::EXIT_SHUTDOWN;
 +    }
 +
 +}
 +
 +class ImMaster extends IoMaster
 +{
++    protected $processManager;
++
++    function __construct($id, $processManager)
++    {
++        parent::__construct($id);
++        $this->processManager = $processManager;
++    }
++
 +    /**
 +     * Initialize IoManagers for the currently configured site
 +     * which are appropriate to this instance.
 +     */
 +    function initManagers()
 +    {
 +        $classes = array();
 +        if (Event::handle('StartImDaemonIoManagers', array(&$classes))) {
 +            $qm = QueueManager::get();
 +            $qm->setActiveGroup('im');
 +            $classes[] = $qm;
++            $classes[] = $this->processManager;
 +        }
 +        Event::handle('EndImDaemonIoManagers', array(&$classes));
 +        foreach ($classes as $class) {
 +            $this->instantiate($class);
 +        }
 +    }
 +}
 +
++if (version_compare(PHP_VERSION, '5.2.6', '<')) {
++    $arch = php_uname('m');
++    if ($arch == 'x86_64' || $arch == 'amd64') {
++        print "Aborting daemon - 64-bit PHP prior to 5.2.6 has known bugs in stream_select; you are running " . PHP_VERSION . " on $arch.\n";
++        exit(1);
++    }
++}
++
 +if (have_option('i', 'id')) {
 +    $id = get_option_value('i', 'id');
 +} else if (count($args) > 0) {
 +    $id = $args[0];
 +} else {
 +    $id = null;
 +}
 +
 +$foreground = have_option('f', 'foreground');
 +$all = have_option('a') || have_option('--all');
 +
 +$daemon = new ImDaemon($id, !$foreground, 1, $all);
 +
 +$daemon->runOnce();