forked from GNUsocial/gnu-social
Whitespace updates (including leading tabs to spaces).
Fixed i18n.
This commit is contained in:
parent
700b46317a
commit
4b0dd8384f
@ -51,7 +51,6 @@ class RealtimePlugin extends Plugin
|
||||
* When it's time to initialize the plugin, calculate and
|
||||
* pass the URLs we need.
|
||||
*/
|
||||
|
||||
function onInitializePlugin()
|
||||
{
|
||||
// FIXME: need to find a better way to pass this pattern in
|
||||
@ -59,14 +58,14 @@ class RealtimePlugin extends Plugin
|
||||
array('notice' => '0000000000'));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function onCheckSchema()
|
||||
{
|
||||
$schema = Schema::get();
|
||||
$schema->ensureTable('realtime_channel', Realtime_channel::schemaDef());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function onAutoload($cls)
|
||||
{
|
||||
$dir = dirname(__FILE__);
|
||||
@ -238,31 +237,31 @@ class RealtimePlugin extends Plugin
|
||||
$json = $this->noticeAsJson($notice);
|
||||
|
||||
$this->_connect();
|
||||
|
||||
|
||||
// XXX: We should probably fan-out here and do a
|
||||
// new queue item for each path
|
||||
|
||||
foreach ($paths as $path) {
|
||||
|
||||
list($action, $arg1, $arg2) = $path;
|
||||
|
||||
$channels = Realtime_channel::getAllChannels($action, $arg1, $arg2);
|
||||
|
||||
foreach ($channels as $channel) {
|
||||
|
||||
// XXX: We should probably fan-out here and do a
|
||||
// new queue item for each user/path combo
|
||||
|
||||
if (is_null($channel->user_id)) {
|
||||
$profile = null;
|
||||
} else {
|
||||
$profile = Profile::staticGet('id', $channel->user_id);
|
||||
}
|
||||
if ($notice->inScope($profile)) {
|
||||
$timeline = $this->_pathToChannel(array($channel->channel_key));
|
||||
$this->_publish($timeline, $json);
|
||||
}
|
||||
}
|
||||
|
||||
list($action, $arg1, $arg2) = $path;
|
||||
|
||||
$channels = Realtime_channel::getAllChannels($action, $arg1, $arg2);
|
||||
|
||||
foreach ($channels as $channel) {
|
||||
|
||||
// XXX: We should probably fan-out here and do a
|
||||
// new queue item for each user/path combo
|
||||
|
||||
if (is_null($channel->user_id)) {
|
||||
$profile = null;
|
||||
} else {
|
||||
$profile = Profile::staticGet('id', $channel->user_id);
|
||||
}
|
||||
if ($notice->inScope($profile)) {
|
||||
$timeline = $this->_pathToChannel(array($channel->channel_key));
|
||||
$this->_publish($timeline, $json);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->_disconnect();
|
||||
@ -367,12 +366,11 @@ class RealtimePlugin extends Plugin
|
||||
$convurl = $conv->uri;
|
||||
|
||||
if(empty($convurl)) {
|
||||
$msg = sprintf(
|
||||
"Couldn't find Conversation ID %d to make 'in context'"
|
||||
. "link for Notice ID %d",
|
||||
$msg = sprintf( _m("Could not find Conversation ID %d to make 'in context'"
|
||||
. "link for Notice ID %d.",
|
||||
$notice->conversation,
|
||||
$notice->id
|
||||
);
|
||||
));
|
||||
|
||||
common_log(LOG_WARNING, $msg);
|
||||
} else {
|
||||
@ -455,26 +453,26 @@ class RealtimePlugin extends Plugin
|
||||
function _getChannel($action)
|
||||
{
|
||||
$timeline = null;
|
||||
$arg1 = null;
|
||||
$arg2 = null;
|
||||
|
||||
$arg1 = null;
|
||||
$arg2 = null;
|
||||
|
||||
$action_name = $action->trimmed('action');
|
||||
|
||||
// FIXME: lists
|
||||
// FIXME: search (!)
|
||||
// FIXME: profile + tag
|
||||
|
||||
// FIXME: lists
|
||||
// FIXME: search (!)
|
||||
// FIXME: profile + tag
|
||||
|
||||
switch ($action_name) {
|
||||
case 'public':
|
||||
// no arguments
|
||||
// no arguments
|
||||
break;
|
||||
case 'tag':
|
||||
$tag = $action->trimmed('tag');
|
||||
if (empty($tag)) {
|
||||
$arg1 = $tag;
|
||||
} else {
|
||||
$this->log(LOG_NOTICE, "Unexpected 'tag' action without tag argument");
|
||||
return null;
|
||||
$this->log(LOG_NOTICE, "Unexpected 'tag' action without tag argument");
|
||||
return null;
|
||||
}
|
||||
break;
|
||||
case 'showstream':
|
||||
@ -485,29 +483,29 @@ class RealtimePlugin extends Plugin
|
||||
if (!empty($nickname)) {
|
||||
$arg1 = $nickname;
|
||||
} else {
|
||||
$this->log(LOG_NOTICE, "Unexpected $action_name action without nickname argument.");
|
||||
return null;
|
||||
$this->log(LOG_NOTICE, "Unexpected $action_name action without nickname argument.");
|
||||
return null;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
$user_id = (!empty($user)) ? $user->id : null;
|
||||
|
||||
$channel = Realtime_channel::getChannel($user_id,
|
||||
$action_name,
|
||||
$arg1,
|
||||
$arg2);
|
||||
$user = common_current_user();
|
||||
|
||||
$user_id = (!empty($user)) ? $user->id : null;
|
||||
|
||||
$channel = Realtime_channel::getChannel($user_id,
|
||||
$action_name,
|
||||
$arg1,
|
||||
$arg2);
|
||||
|
||||
return $channel;
|
||||
}
|
||||
|
||||
|
||||
function onStartReadWriteTables(&$alwaysRW, &$rwdb)
|
||||
{
|
||||
$alwaysRW[] = 'realtime_channel';
|
||||
return true;
|
||||
$alwaysRW[] = 'realtime_channel';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Copyright (C) 2011, StatusNet, Inc.
|
||||
*
|
||||
* A channel for real-time browser data
|
||||
*
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
|
||||
|
||||
/**
|
||||
* A channel for real-time browser data
|
||||
*
|
||||
*
|
||||
* For each user currently browsing the site, we want to know which page they're on
|
||||
* so we can send real-time updates to their browser.
|
||||
*
|
||||
@ -46,20 +46,19 @@ if (!defined('STATUSNET')) {
|
||||
*
|
||||
* @see DB_DataObject
|
||||
*/
|
||||
|
||||
class Realtime_channel extends Managed_DataObject
|
||||
{
|
||||
const TIMEOUT = 1800; // 30 minutes
|
||||
|
||||
const TIMEOUT = 1800; // 30 minutes
|
||||
|
||||
public $__table = 'realtime_channel'; // table name
|
||||
|
||||
|
||||
public $user_id; // int -> user.id, can be null
|
||||
public $action; // string
|
||||
public $arg1; // argument
|
||||
public $arg2; // argument, usually null
|
||||
public $channel_key; // 128-bit shared secret key
|
||||
public $audience; // listener count
|
||||
public $created; // created date
|
||||
public $created; // created date
|
||||
public $modified; // modified date
|
||||
|
||||
/**
|
||||
@ -71,7 +70,6 @@ class Realtime_channel extends Managed_DataObject
|
||||
* @param mixed $v Value to lookup
|
||||
*
|
||||
* @return Realtime_channel object found, or null for no hits
|
||||
*
|
||||
*/
|
||||
function staticGet($k, $v=null)
|
||||
{
|
||||
@ -84,7 +82,6 @@ class Realtime_channel extends Managed_DataObject
|
||||
* @param array $kv array of key-value mappings
|
||||
*
|
||||
* @return Realtime_channel object found, or null for no hits
|
||||
*
|
||||
*/
|
||||
function pkeyGet($kv)
|
||||
{
|
||||
@ -100,34 +97,34 @@ class Realtime_channel extends Managed_DataObject
|
||||
'description' => 'A channel of realtime notice data',
|
||||
'fields' => array(
|
||||
'user_id' => array('type' => 'int',
|
||||
'not null' => false,
|
||||
'description' => 'user viewing page; can be null'),
|
||||
'not null' => false,
|
||||
'description' => 'user viewing page; can be null'),
|
||||
'action' => array('type' => 'varchar',
|
||||
'length' => 255,
|
||||
'not null' => true,
|
||||
'description' => 'page being viewed'),
|
||||
'arg1' => array('type' => 'varchar',
|
||||
'length' => 255,
|
||||
'not null' => false,
|
||||
'description' => 'page argument, like username or tag'),
|
||||
'arg2' => array('type' => 'varchar',
|
||||
'length' => 255,
|
||||
'not null' => false,
|
||||
'description' => 'second page argument, like tag for showstream'),
|
||||
'channel_key' => array('type' => 'varchar',
|
||||
'length' => 32,
|
||||
'not null' => true,
|
||||
'description' => 'shared secret key for this channel'),
|
||||
'audience' => array('type' => 'integer',
|
||||
'length' => 255,
|
||||
'not null' => true,
|
||||
'description' => 'page being viewed'),
|
||||
'arg1' => array('type' => 'varchar',
|
||||
'length' => 255,
|
||||
'not null' => false,
|
||||
'description' => 'page argument, like username or tag'),
|
||||
'arg2' => array('type' => 'varchar',
|
||||
'length' => 255,
|
||||
'not null' => false,
|
||||
'description' => 'second page argument, like tag for showstream'),
|
||||
'channel_key' => array('type' => 'varchar',
|
||||
'length' => 32,
|
||||
'not null' => true,
|
||||
'description' => 'shared secret key for this channel'),
|
||||
'audience' => array('type' => 'integer',
|
||||
'not null' => true,
|
||||
'default' => 0,
|
||||
'description' => 'reference count'),
|
||||
'created' => array('type' => 'datetime',
|
||||
'not null' => true,
|
||||
'description' => 'date this record was created'),
|
||||
'not null' => true,
|
||||
'description' => 'date this record was created'),
|
||||
'modified' => array('type' => 'datetime',
|
||||
'not null' => true,
|
||||
'description' => 'date this record was modified'),
|
||||
'not null' => true,
|
||||
'description' => 'date this record was modified'),
|
||||
),
|
||||
'primary key' => array('channel_key'),
|
||||
'unique keys' => array('realtime_channel_user_page_idx' => array('user_id', 'action', 'arg1', 'arg2')),
|
||||
@ -140,107 +137,107 @@ class Realtime_channel extends Managed_DataObject
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
static function saveNew($user_id, $action, $arg1, $arg2)
|
||||
{
|
||||
$channel = new Realtime_channel();
|
||||
|
||||
$channel->user_id = $user_id;
|
||||
$channel->action = $action;
|
||||
$channel->arg1 = $arg1;
|
||||
$channel->arg2 = $arg2;
|
||||
$channel->audience = 1;
|
||||
|
||||
$channel->channel_key = common_good_rand(16); // 128-bit key, 32 hex chars
|
||||
|
||||
$channel->created = common_sql_now();
|
||||
$channel->modified = $channel->created;
|
||||
|
||||
$channel->insert();
|
||||
|
||||
return $channel;
|
||||
$channel = new Realtime_channel();
|
||||
|
||||
$channel->user_id = $user_id;
|
||||
$channel->action = $action;
|
||||
$channel->arg1 = $arg1;
|
||||
$channel->arg2 = $arg2;
|
||||
$channel->audience = 1;
|
||||
|
||||
$channel->channel_key = common_good_rand(16); // 128-bit key, 32 hex chars
|
||||
|
||||
$channel->created = common_sql_now();
|
||||
$channel->modified = $channel->created;
|
||||
|
||||
$channel->insert();
|
||||
|
||||
return $channel;
|
||||
}
|
||||
|
||||
|
||||
static function getChannel($user_id, $action, $arg1, $arg2)
|
||||
{
|
||||
$channel = self::fetchChannel($user_id, $action, $arg1, $arg2);
|
||||
|
||||
// Ignore (and delete!) old channels
|
||||
|
||||
if (!empty($channel)) {
|
||||
$modTime = strtotime($channel->modified);
|
||||
if ((time() - $modTime) > self::TIMEOUT) {
|
||||
$channel->delete();
|
||||
$channel = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($channel)) {
|
||||
$channel = self::saveNew($user_id, $action, $arg1, $arg2);
|
||||
}
|
||||
|
||||
return $channel;
|
||||
$channel = self::fetchChannel($user_id, $action, $arg1, $arg2);
|
||||
|
||||
// Ignore (and delete!) old channels
|
||||
|
||||
if (!empty($channel)) {
|
||||
$modTime = strtotime($channel->modified);
|
||||
if ((time() - $modTime) > self::TIMEOUT) {
|
||||
$channel->delete();
|
||||
$channel = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($channel)) {
|
||||
$channel = self::saveNew($user_id, $action, $arg1, $arg2);
|
||||
}
|
||||
|
||||
return $channel;
|
||||
}
|
||||
|
||||
|
||||
static function getAllChannels($action, $arg1, $arg2)
|
||||
{
|
||||
$channel = new Realtime_channel();
|
||||
|
||||
$channel->action = $action;
|
||||
|
||||
if (is_null($arg1)) {
|
||||
$channel->whereAdd('arg1 is null');
|
||||
} else {
|
||||
$channel->arg1 = $arg1;
|
||||
}
|
||||
|
||||
if (is_null($arg2)) {
|
||||
$channel->whereAdd('arg2 is null');
|
||||
} else {
|
||||
$channel->arg2 = $arg2;
|
||||
}
|
||||
|
||||
$channel->whereAdd('modified > "' . common_sql_date(time() - self::TIMEOUT) . '"');
|
||||
|
||||
$channels = array();
|
||||
|
||||
if ($channel->find()) {
|
||||
$channels = $channel->fetchAll();
|
||||
}
|
||||
|
||||
return $channels;
|
||||
$channel = new Realtime_channel();
|
||||
|
||||
$channel->action = $action;
|
||||
|
||||
if (is_null($arg1)) {
|
||||
$channel->whereAdd('arg1 is null');
|
||||
} else {
|
||||
$channel->arg1 = $arg1;
|
||||
}
|
||||
|
||||
if (is_null($arg2)) {
|
||||
$channel->whereAdd('arg2 is null');
|
||||
} else {
|
||||
$channel->arg2 = $arg2;
|
||||
}
|
||||
|
||||
$channel->whereAdd('modified > "' . common_sql_date(time() - self::TIMEOUT) . '"');
|
||||
|
||||
$channels = array();
|
||||
|
||||
if ($channel->find()) {
|
||||
$channels = $channel->fetchAll();
|
||||
}
|
||||
|
||||
return $channels;
|
||||
}
|
||||
|
||||
|
||||
static function fetchChannel($user_id, $action, $arg1, $arg2)
|
||||
{
|
||||
$channel = new Realtime_channel();
|
||||
|
||||
if (is_null($user_id)) {
|
||||
$channel->whereAdd('user_id is null');
|
||||
} else {
|
||||
$channel->user_id = $user_id;
|
||||
}
|
||||
|
||||
$channel->action = $action;
|
||||
|
||||
if (is_null($arg1)) {
|
||||
$channel->whereAdd('arg1 is null');
|
||||
} else {
|
||||
$channel->arg1 = $arg1;
|
||||
}
|
||||
|
||||
if (is_null($arg2)) {
|
||||
$channel->whereAdd('arg2 is null');
|
||||
} else {
|
||||
$channel->arg2 = $arg2;
|
||||
}
|
||||
|
||||
if ($channel->find(true)) {
|
||||
{
|
||||
$channel = new Realtime_channel();
|
||||
|
||||
if (is_null($user_id)) {
|
||||
$channel->whereAdd('user_id is null');
|
||||
} else {
|
||||
$channel->user_id = $user_id;
|
||||
}
|
||||
|
||||
$channel->action = $action;
|
||||
|
||||
if (is_null($arg1)) {
|
||||
$channel->whereAdd('arg1 is null');
|
||||
} else {
|
||||
$channel->arg1 = $arg1;
|
||||
}
|
||||
|
||||
if (is_null($arg2)) {
|
||||
$channel->whereAdd('arg2 is null');
|
||||
} else {
|
||||
$channel->arg2 = $arg2;
|
||||
}
|
||||
|
||||
if ($channel->find(true)) {
|
||||
$channel->increment();
|
||||
return $channel;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return $channel;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function increment()
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Copyright (C) 2011, StatusNet, Inc.
|
||||
*
|
||||
* action to close a channel
|
||||
*
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
@ -44,7 +44,6 @@ if (!defined('STATUSNET')) {
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
class ClosechannelAction extends Action
|
||||
{
|
||||
protected $channelKey = null;
|
||||
@ -57,7 +56,6 @@ class ClosechannelAction extends Action
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function prepare($argarray)
|
||||
{
|
||||
parent::prepare($argarray);
|
||||
@ -88,7 +86,6 @@ class ClosechannelAction extends Action
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function handle($argarray=null)
|
||||
{
|
||||
$this->channel->decrement();
|
||||
@ -107,7 +104,6 @@ class ClosechannelAction extends Action
|
||||
*
|
||||
* @return boolean is read only action?
|
||||
*/
|
||||
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return false;
|
||||
|
@ -412,7 +412,7 @@ RealtimeUpdate = {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: RealtimeUpdate._keepaliveurl});
|
||||
|
||||
|
||||
}, 15 * 60 * 1000 ); // every 15 min; timeout in 30 min
|
||||
|
||||
RealtimeUpdate.initPlayPause();
|
||||
|
Loading…
Reference in New Issue
Block a user