Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x-mobile
This commit is contained in:
commit
19edced6c2
65
EVENTS.txt
65
EVENTS.txt
|
@ -390,3 +390,68 @@ EndProfilePageProfileTags: after showing the tags on the profile page
|
||||||
- $action: the current action
|
- $action: the current action
|
||||||
- &$profile: the profile being shown
|
- &$profile: the profile being shown
|
||||||
|
|
||||||
|
StartProfileList: when starting a list of profiles (before <ul>)
|
||||||
|
- $profilelist: ProfileList widget, with $profile, $action, and $out
|
||||||
|
|
||||||
|
EndProfileList: when ending a list of profiles (after </ul>)
|
||||||
|
- $profilelist: ProfileList widget
|
||||||
|
|
||||||
|
StartProfileListItem: when starting to show a profile list item
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItem: after showing a profile list item
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemProfile: the profile data part of the item
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemProfile: the profile data part of the item
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemActions: the actions (buttons) for an item
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemActions: the actions (buttons) for an item
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemProfileElements: inside the <div>
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemProfileElements: inside the <div>
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemAvatar: Showing a profile list avatar
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemAvatar: Showing a profile list avatar
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemFullName: Showing the profile list full name
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemFullName: Showing the profile list full name
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemLocation: Showing the profile list location
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemLocation: Showing the profile list location
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemHomepage: Showing the profile list homepage
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemHomepage: Showing the profile list homepage
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemBio: Showing the profile list bio
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemBio: Showing the profile list bio
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
StartProfileListItemActionElements: Showing the profile list actions (prepend a button here, or replace all buttons)
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
||||||
|
EndProfileListItemActionElements: Showing profile list actions (append a button here)
|
||||||
|
- $item: ProfileListItem widget
|
||||||
|
|
74
README
74
README
|
@ -2,7 +2,7 @@
|
||||||
README
|
README
|
||||||
------
|
------
|
||||||
|
|
||||||
StatusNet 0.8.1 ("Second Guessing")
|
StatusNet 0.8.2 ("Life and How to Live It")
|
||||||
26 Aug 2009
|
26 Aug 2009
|
||||||
|
|
||||||
This is the README file for StatusNet (formerly Laconica), the Open
|
This is the README file for StatusNet (formerly Laconica), the Open
|
||||||
|
@ -526,8 +526,6 @@ This will run eight (for now) queue handlers:
|
||||||
of registered users.
|
of registered users.
|
||||||
* xmppconfirmhandler.php - sends confirmation messages to registered
|
* xmppconfirmhandler.php - sends confirmation messages to registered
|
||||||
users.
|
users.
|
||||||
* twitterqueuehandler.php - sends queued notices to Twitter for user
|
|
||||||
who have opted to set up Twitter bridging.
|
|
||||||
* facebookqueuehandler.php - sends queued notices to Facebook for users
|
* facebookqueuehandler.php - sends queued notices to Facebook for users
|
||||||
of the built-in Facebook application.
|
of the built-in Facebook application.
|
||||||
|
|
||||||
|
@ -547,54 +545,6 @@ our kind of hacky home-grown DB-based queue solution. See the "queues"
|
||||||
config section below for how to configure to use STOMP. As of this
|
config section below for how to configure to use STOMP. As of this
|
||||||
writing, the software has been tested with ActiveMQ (
|
writing, the software has been tested with ActiveMQ (
|
||||||
|
|
||||||
Twitter Bridge
|
|
||||||
--------------
|
|
||||||
|
|
||||||
* OAuth
|
|
||||||
|
|
||||||
As of 0.8.1, OAuth is used to to access protected resources on Twitter
|
|
||||||
instead of HTTP Basic Auth. To use Twitter bridging you will need
|
|
||||||
to register your instance of StatusNet as an application on Twitter
|
|
||||||
(http://twitter.com/apps), and update the following variables in your
|
|
||||||
config.php with the consumer key and secret Twitter generates for you:
|
|
||||||
|
|
||||||
$config['twitter']['consumer_key'] = 'YOURKEY';
|
|
||||||
$config['twitter']['consumer_secret'] = 'YOURSECRET';
|
|
||||||
|
|
||||||
When registering your application with Twitter set the type to "Browser"
|
|
||||||
and your Callback URL to:
|
|
||||||
|
|
||||||
http://example.org/mublog/twitter/authorization
|
|
||||||
|
|
||||||
The default access type should be, "Read & Write".
|
|
||||||
|
|
||||||
* Importing statuses from Twitter
|
|
||||||
|
|
||||||
To allow your users to import their friends' Twitter statuses, you will
|
|
||||||
need to enable the bidirectional Twitter bridge in config.php:
|
|
||||||
|
|
||||||
$config['twitterbridge']['enabled'] = true;
|
|
||||||
|
|
||||||
and run the TwitterStatusFetcher daemon (scripts/twitterstatusfetcher.php).
|
|
||||||
Additionally, you will want to set the integration source variable,
|
|
||||||
which will keep notices posted to Twitter via StatusNet from looping
|
|
||||||
back. The integration source should be set to the name of your
|
|
||||||
application, exactly as you specified it on the settings page for your
|
|
||||||
StatusNet application on Twitter, e.g.:
|
|
||||||
|
|
||||||
$config['integration']['source'] = 'YourApp';
|
|
||||||
|
|
||||||
* Twitter Friends Syncing
|
|
||||||
|
|
||||||
Users may set a flag in their settings ("Subscribe to my Twitter friends
|
|
||||||
here" under the Twitter tab) to have StatusNet attempt to locate and
|
|
||||||
subscribe to "friends" (people they "follow") on Twitter who also have
|
|
||||||
accounts on your StatusNet system, and who have previously set up a link
|
|
||||||
for automatically posting notices to Twitter.
|
|
||||||
|
|
||||||
As of 0.8.0, this is no longer accomplished via a cron job. Instead you
|
|
||||||
must run the SyncTwitterFriends daemon (scripts/synctwitterfreinds.php).
|
|
||||||
|
|
||||||
Built-in Facebook Application
|
Built-in Facebook Application
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
@ -1251,24 +1201,11 @@ For SMS integration.
|
||||||
enabled: Whether to enable SMS integration. Defaults to true. Queues
|
enabled: Whether to enable SMS integration. Defaults to true. Queues
|
||||||
should also be enabled.
|
should also be enabled.
|
||||||
|
|
||||||
twitter
|
|
||||||
-------
|
|
||||||
|
|
||||||
For Twitter integration
|
|
||||||
|
|
||||||
enabled: Whether to enable Twitter integration. Defaults to true.
|
|
||||||
Queues should also be enabled.
|
|
||||||
|
|
||||||
integration
|
integration
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
A catch-all for integration with other systems.
|
A catch-all for integration with other systems.
|
||||||
|
|
||||||
source: The name to use for the source of posts to Twitter. Defaults
|
|
||||||
to 'statusnet', but if you request your own source name from
|
|
||||||
Twitter <http://twitter.com/help/request_source>, you can use
|
|
||||||
that here instead. Status updates on Twitter will then have
|
|
||||||
links to your site.
|
|
||||||
taguri: base for tag:// URIs. Defaults to site-server + ',2009'.
|
taguri: base for tag:// URIs. Defaults to site-server + ',2009'.
|
||||||
|
|
||||||
inboxes
|
inboxes
|
||||||
|
@ -1446,15 +1383,6 @@ dir: directory to write backgrounds too. Default is '/background/'
|
||||||
path: path to backgrounds. Default is sub-path of install path; note
|
path: path to backgrounds. Default is sub-path of install path; note
|
||||||
that you may need to change this if you change site-path too.
|
that you may need to change this if you change site-path too.
|
||||||
|
|
||||||
twitterbridge
|
|
||||||
-------------
|
|
||||||
|
|
||||||
A bi-direction bridge to Twitter (http://twitter.com/).
|
|
||||||
|
|
||||||
enabled: default false. If true, will show user's Twitter friends'
|
|
||||||
notices in their inbox and faves pages, only to the user. You
|
|
||||||
must also run the twitterstatusfetcher.php script.
|
|
||||||
|
|
||||||
ping
|
ping
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
|
@ -179,9 +179,12 @@ class GroupMemberListItem extends ProfileListItem
|
||||||
function showActions()
|
function showActions()
|
||||||
{
|
{
|
||||||
$this->startActions();
|
$this->startActions();
|
||||||
|
if (Event::handle('StartProfileListItemActionElements', array($this))) {
|
||||||
$this->showSubscribeButton();
|
$this->showSubscribeButton();
|
||||||
$this->showMakeAdminForm();
|
$this->showMakeAdminForm();
|
||||||
$this->showGroupBlockForm();
|
$this->showGroupBlockForm();
|
||||||
|
Event::handle('EndProfileListItemActionElements', array($this));
|
||||||
|
}
|
||||||
$this->endActions();
|
$this->endActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@ class Avatar extends Memcached_DataObject
|
||||||
if (empty($server)) {
|
if (empty($server)) {
|
||||||
$server = common_config('site', 'server');
|
$server = common_config('site', 'server');
|
||||||
}
|
}
|
||||||
|
common_debug('path = ' . $path);
|
||||||
// XXX: protocol
|
// XXX: protocol
|
||||||
|
|
||||||
return 'http://'.$server.$path.$filename;
|
return 'http://'.$server.$path.$filename;
|
||||||
|
|
|
@ -235,7 +235,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||||
* @access private
|
* @access private
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
var $_DB_DataObject_version = "1.8.11";
|
var $_DB_DataObject_version = "1.8.12";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Database table (used by table extends)
|
* The Database table (used by table extends)
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
*
|
*
|
||||||
* PHP versions 4 and 5
|
* PHP versions 4 and 5
|
||||||
*
|
*
|
||||||
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
* LICENSE: This source file is subject to version 3.01 of the PHP license
|
||||||
* that is available through the world-wide-web at the following URI:
|
* that is available through the world-wide-web at the following URI:
|
||||||
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
|
||||||
* the PHP License and are unable to obtain it through the web, please
|
* the PHP License and are unable to obtain it through the web, please
|
||||||
* send a note to license@php.net so we can mail you a copy immediately.
|
* send a note to license@php.net so we can mail you a copy immediately.
|
||||||
*
|
*
|
||||||
|
@ -16,8 +16,8 @@
|
||||||
* @package DB_DataObject
|
* @package DB_DataObject
|
||||||
* @author Alan Knowles <alan@akbkhome.com>
|
* @author Alan Knowles <alan@akbkhome.com>
|
||||||
* @copyright 1997-2008 The PHP Group
|
* @copyright 1997-2008 The PHP Group
|
||||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
||||||
* @version CVS: $Id: Cast.php 264148 2008-08-04 03:44:59Z alan_k $
|
* @version CVS: $Id: Cast.php 287158 2009-08-12 13:58:31Z alan_k $
|
||||||
* @link http://pear.php.net/package/DB_DataObject
|
* @link http://pear.php.net/package/DB_DataObject
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
*
|
*
|
||||||
* PHP versions 4 and 5
|
* PHP versions 4 and 5
|
||||||
*
|
*
|
||||||
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
* LICENSE: This source file is subject to version 3.01 of the PHP license
|
||||||
* that is available through the world-wide-web at the following URI:
|
* that is available through the world-wide-web at the following URI:
|
||||||
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
|
||||||
* the PHP License and are unable to obtain it through the web, please
|
* the PHP License and are unable to obtain it through the web, please
|
||||||
* send a note to license@php.net so we can mail you a copy immediately.
|
* send a note to license@php.net so we can mail you a copy immediately.
|
||||||
*
|
*
|
||||||
|
@ -17,8 +17,8 @@
|
||||||
* @package DB_DataObject
|
* @package DB_DataObject
|
||||||
* @author Alan Knowles <alan@akbkhome.com>
|
* @author Alan Knowles <alan@akbkhome.com>
|
||||||
* @copyright 1997-2006 The PHP Group
|
* @copyright 1997-2006 The PHP Group
|
||||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
||||||
* @version CVS: $Id: Error.php 277015 2009-03-12 05:51:03Z alan_k $
|
* @version CVS: $Id: Error.php 287158 2009-08-12 13:58:31Z alan_k $
|
||||||
* @link http://pear.php.net/package/DB_DataObject
|
* @link http://pear.php.net/package/DB_DataObject
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ function _setlocale($category, $locale) {
|
||||||
$ret = 0;
|
$ret = 0;
|
||||||
if (function_exists('setlocale')) // I don't know if this ever happens ;)
|
if (function_exists('setlocale')) // I don't know if this ever happens ;)
|
||||||
$ret = setlocale($category, $locale);
|
$ret = setlocale($category, $locale);
|
||||||
if (($ret and $locale == '') or ($ret == $locale)) {
|
if ($ret and ($locale == '' or $ret == $locale)) {
|
||||||
$EMULATEGETTEXT = 0;
|
$EMULATEGETTEXT = 0;
|
||||||
$CURRENTLOCALE = $ret;
|
$CURRENTLOCALE = $ret;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -223,7 +223,6 @@ require_once INSTALLDIR.'/lib/theme.php';
|
||||||
require_once INSTALLDIR.'/lib/mail.php';
|
require_once INSTALLDIR.'/lib/mail.php';
|
||||||
require_once INSTALLDIR.'/lib/subs.php';
|
require_once INSTALLDIR.'/lib/subs.php';
|
||||||
require_once INSTALLDIR.'/lib/Shorturl_api.php';
|
require_once INSTALLDIR.'/lib/Shorturl_api.php';
|
||||||
require_once INSTALLDIR.'/lib/twitter.php';
|
|
||||||
|
|
||||||
require_once INSTALLDIR.'/lib/clientexception.php';
|
require_once INSTALLDIR.'/lib/clientexception.php';
|
||||||
require_once INSTALLDIR.'/lib/serverexception.php';
|
require_once INSTALLDIR.'/lib/serverexception.php';
|
||||||
|
|
|
@ -98,6 +98,11 @@ class ConnectSettingsNav extends Widget
|
||||||
|
|
||||||
function show()
|
function show()
|
||||||
{
|
{
|
||||||
|
$action_name = $this->action->trimmed('action');
|
||||||
|
$this->action->elementStart('ul', array('class' => 'nav'));
|
||||||
|
|
||||||
|
if (Event::handle('StartConnectSettingsNav', array(&$this->action))) {
|
||||||
|
|
||||||
# action => array('prompt', 'title')
|
# action => array('prompt', 'title')
|
||||||
$menu = array();
|
$menu = array();
|
||||||
if (common_config('xmpp', 'enabled')) {
|
if (common_config('xmpp', 'enabled')) {
|
||||||
|
@ -110,14 +115,6 @@ class ConnectSettingsNav extends Widget
|
||||||
array(_('SMS'),
|
array(_('SMS'),
|
||||||
_('Updates by SMS'));
|
_('Updates by SMS'));
|
||||||
}
|
}
|
||||||
if (common_config('twitter', 'enabled')) {
|
|
||||||
$menu['twittersettings'] =
|
|
||||||
array(_('Twitter'),
|
|
||||||
_('Twitter integration options'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$action_name = $this->action->trimmed('action');
|
|
||||||
$this->action->elementStart('ul', array('class' => 'nav'));
|
|
||||||
|
|
||||||
foreach ($menu as $menuaction => $menudesc) {
|
foreach ($menu as $menuaction => $menudesc) {
|
||||||
$this->action->menuItem(common_local_url($menuaction),
|
$this->action->menuItem(common_local_url($menuaction),
|
||||||
|
@ -126,6 +123,12 @@ class ConnectSettingsNav extends Widget
|
||||||
$action_name === $menuaction);
|
$action_name === $menuaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Event::handle('EndConnectSettingsNav', array(&$this->action));
|
||||||
|
}
|
||||||
|
|
||||||
$this->action->elementEnd('ul');
|
$this->action->elementEnd('ul');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ $default =
|
||||||
array('enabled' => true),
|
array('enabled' => true),
|
||||||
'sms' =>
|
'sms' =>
|
||||||
array('enabled' => true),
|
array('enabled' => true),
|
||||||
'twitterbridge' =>
|
'twitterimport' =>
|
||||||
array('enabled' => false),
|
array('enabled' => false),
|
||||||
'integration' =>
|
'integration' =>
|
||||||
array('source' => 'StatusNet', # source attribute for Twitter
|
array('source' => 'StatusNet', # source attribute for Twitter
|
||||||
|
|
|
@ -48,7 +48,7 @@ if (!defined('STATUSNET')) {
|
||||||
class HTTPResponse
|
class HTTPResponse
|
||||||
{
|
{
|
||||||
public $code = null;
|
public $code = null;
|
||||||
public $headers = null;
|
public $headers = array();
|
||||||
public $body = null;
|
public $body = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,35 +101,36 @@ function get_nice_language_list()
|
||||||
*/
|
*/
|
||||||
function get_all_languages() {
|
function get_all_languages() {
|
||||||
return array(
|
return array(
|
||||||
'bg' => array('q' => 0.8, 'lang' => 'bg_BG', 'name' => 'Bulgarian', 'direction' => 'ltr'),
|
'bg' => array('q' => 0.8, 'lang' => 'bg', 'name' => 'Bulgarian', 'direction' => 'ltr'),
|
||||||
'ca' => array('q' => 0.5, 'lang' => 'ca_ES', 'name' => 'Catalan', 'direction' => 'ltr'),
|
'ca' => array('q' => 0.5, 'lang' => 'ca', 'name' => 'Catalan', 'direction' => 'ltr'),
|
||||||
'cs' => array('q' => 0.5, 'lang' => 'cs_CZ', 'name' => 'Czech', 'direction' => 'ltr'),
|
'cs' => array('q' => 0.5, 'lang' => 'cs', 'name' => 'Czech', 'direction' => 'ltr'),
|
||||||
'de' => array('q' => 0.8, 'lang' => 'de_DE', 'name' => 'German', 'direction' => 'ltr'),
|
'de' => array('q' => 0.8, 'lang' => 'de', 'name' => 'German', 'direction' => 'ltr'),
|
||||||
'el' => array('q' => 0.1, 'lang' => 'el', 'name' => 'Greek', 'direction' => 'ltr'),
|
'el' => array('q' => 0.1, 'lang' => 'el', 'name' => 'Greek', 'direction' => 'ltr'),
|
||||||
'en-us' => array('q' => 1, 'lang' => 'en_US', 'name' => 'English (US)', 'direction' => 'ltr'),
|
'en-us' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
|
||||||
'en-gb' => array('q' => 1, 'lang' => 'en_GB', 'name' => 'English (British)', 'direction' => 'ltr'),
|
'en-gb' => array('q' => 1, 'lang' => 'en_GB', 'name' => 'English (British)', 'direction' => 'ltr'),
|
||||||
'en' => array('q' => 1, 'lang' => 'en_US', 'name' => 'English (US)', 'direction' => 'ltr'),
|
'en' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
|
||||||
'es' => array('q' => 1, 'lang' => 'es', 'name' => 'Spanish', 'direction' => 'ltr'),
|
'es' => array('q' => 1, 'lang' => 'es', 'name' => 'Spanish', 'direction' => 'ltr'),
|
||||||
'fi' => array('q' => 1, 'lang' => 'fi', 'name' => 'Finnish', 'direction' => 'ltr'),
|
'fi' => array('q' => 1, 'lang' => 'fi', 'name' => 'Finnish', 'direction' => 'ltr'),
|
||||||
'fr-fr' => array('q' => 1, 'lang' => 'fr_FR', 'name' => 'French', 'direction' => 'ltr'),
|
'fr-fr' => array('q' => 1, 'lang' => 'fr', 'name' => 'French', 'direction' => 'ltr'),
|
||||||
'he' => array('q' => 0.5, 'lang' => 'he_IL', 'name' => 'Hebrew', 'direction' => 'rtl'),
|
'ga' => array('q' => 0.5, 'lang' => 'ga', 'name' => 'Galician', 'direction' => 'ltr'),
|
||||||
'it' => array('q' => 1, 'lang' => 'it_IT', 'name' => 'Italian', 'direction' => 'ltr'),
|
'he' => array('q' => 0.5, 'lang' => 'he', 'name' => 'Hebrew', 'direction' => 'rtl'),
|
||||||
'jp' => array('q' => 0.5, 'lang' => 'ja_JP', 'name' => 'Japanese', 'direction' => 'ltr'),
|
'it' => array('q' => 1, 'lang' => 'it', 'name' => 'Italian', 'direction' => 'ltr'),
|
||||||
'ko' => array('q' => 0.9, 'lang' => 'ko_KR', 'name' => 'Korean', 'direction' => 'ltr'),
|
'jp' => array('q' => 0.5, 'lang' => 'ja', 'name' => 'Japanese', 'direction' => 'ltr'),
|
||||||
'mk' => array('q' => 0.5, 'lang' => 'mk_MK', 'name' => 'Macedonian', 'direction' => 'ltr'),
|
'ko' => array('q' => 0.9, 'lang' => 'ko', 'name' => 'Korean', 'direction' => 'ltr'),
|
||||||
'nb' => array('q' => 0.1, 'lang' => 'nb_NO', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
|
'mk' => array('q' => 0.5, 'lang' => 'mk', 'name' => 'Macedonian', 'direction' => 'ltr'),
|
||||||
'no' => array('q' => 0.1, 'lang' => 'nb_NO', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
|
'nb' => array('q' => 0.1, 'lang' => 'nb', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
|
||||||
'nn' => array('q' => 1, 'lang' => 'nn_NO', 'name' => 'Norwegian (Nynorsk)', 'direction' => 'ltr'),
|
'no' => array('q' => 0.1, 'lang' => 'nb', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
|
||||||
'nl' => array('q' => 0.5, 'lang' => 'nl_NL', 'name' => 'Dutch', 'direction' => 'ltr'),
|
'nn' => array('q' => 1, 'lang' => 'nn', 'name' => 'Norwegian (Nynorsk)', 'direction' => 'ltr'),
|
||||||
'pl' => array('q' => 0.5, 'lang' => 'pl_PL', 'name' => 'Polish', 'direction' => 'ltr'),
|
'nl' => array('q' => 0.5, 'lang' => 'nl', 'name' => 'Dutch', 'direction' => 'ltr'),
|
||||||
|
'pl' => array('q' => 0.5, 'lang' => 'pl', 'name' => 'Polish', 'direction' => 'ltr'),
|
||||||
'pt' => array('q' => 0.1, 'lang' => 'pt', 'name' => 'Portuguese', 'direction' => 'ltr'),
|
'pt' => array('q' => 0.1, 'lang' => 'pt', 'name' => 'Portuguese', 'direction' => 'ltr'),
|
||||||
'pt-br' => array('q' => 0.9, 'lang' => 'pt_BR', 'name' => 'Portuguese Brazil', 'direction' => 'ltr'),
|
'pt-br' => array('q' => 0.9, 'lang' => 'pt_BR', 'name' => 'Portuguese Brazil', 'direction' => 'ltr'),
|
||||||
'ru' => array('q' => 0.9, 'lang' => 'ru_RU', 'name' => 'Russian', 'direction' => 'ltr'),
|
'ru' => array('q' => 0.9, 'lang' => 'ru', 'name' => 'Russian', 'direction' => 'ltr'),
|
||||||
'sv' => array('q' => 0.8, 'lang' => 'sv_SE', 'name' => 'Swedish', 'direction' => 'ltr'),
|
'sv' => array('q' => 0.8, 'lang' => 'sv', 'name' => 'Swedish', 'direction' => 'ltr'),
|
||||||
'te' => array('q' => 0.3, 'lang' => 'te_IN', 'name' => 'Telugu', 'direction' => 'ltr'),
|
'te' => array('q' => 0.3, 'lang' => 'te', 'name' => 'Telugu', 'direction' => 'ltr'),
|
||||||
'tr' => array('q' => 0.5, 'lang' => 'tr_TR', 'name' => 'Turkish', 'direction' => 'ltr'),
|
'tr' => array('q' => 0.5, 'lang' => 'tr', 'name' => 'Turkish', 'direction' => 'ltr'),
|
||||||
'uk' => array('q' => 1, 'lang' => 'uk_UA', 'name' => 'Ukrainian', 'direction' => 'ltr'),
|
'uk' => array('q' => 1, 'lang' => 'uk', 'name' => 'Ukrainian', 'direction' => 'ltr'),
|
||||||
'vi' => array('q' => 0.8, 'lang' => 'vi_VN', 'name' => 'Vietnamese', 'direction' => 'ltr'),
|
'vi' => array('q' => 0.8, 'lang' => 'vi', 'name' => 'Vietnamese', 'direction' => 'ltr'),
|
||||||
'zh-cn' => array('q' => 0.9, 'lang' => 'zh_CN', 'name' => 'Chinese (Simplified)', 'direction' => 'ltr'),
|
'zh-cn' => array('q' => 0.9, 'lang' => 'zh_CN', 'name' => 'Chinese (Simplified)', 'direction' => 'ltr'),
|
||||||
'zh-hant' => array('q' => 0.2, 'lang' => 'zh_TW', 'name' => 'Chinese (Taiwanese)', 'direction' => 'ltr'),
|
'zh-hant' => array('q' => 0.2, 'lang' => 'zh_TW', 'name' => 'Chinese (Taiwanese)', 'direction' => 'ltr'),
|
||||||
);
|
);
|
||||||
|
|
|
@ -62,9 +62,15 @@ class ProfileList extends Widget
|
||||||
|
|
||||||
function show()
|
function show()
|
||||||
{
|
{
|
||||||
|
$cnt = 0;
|
||||||
|
|
||||||
|
if (Event::handle('StartProfileList', array($this))) {
|
||||||
$this->startList();
|
$this->startList();
|
||||||
$cnt = $this->showProfiles();
|
$cnt = $this->showProfiles();
|
||||||
$this->endList();
|
$this->endList();
|
||||||
|
Event::handle('EndProfileList', array($this));
|
||||||
|
}
|
||||||
|
|
||||||
return $cnt;
|
return $cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,10 +123,19 @@ class ProfileListItem extends Widget
|
||||||
|
|
||||||
function show()
|
function show()
|
||||||
{
|
{
|
||||||
|
if (Event::handle('StartProfileListItem', array($this))) {
|
||||||
$this->startItem();
|
$this->startItem();
|
||||||
|
if (Event::handle('StartProfileListItemProfile', array($this))) {
|
||||||
$this->showProfile();
|
$this->showProfile();
|
||||||
|
Event::handle('EndProfileListItemProfile', array($this));
|
||||||
|
}
|
||||||
|
if (Event::handle('StartProfileListItemActions', array($this))) {
|
||||||
$this->showActions();
|
$this->showActions();
|
||||||
|
Event::handle('EndProfileListItemActions', array($this));
|
||||||
|
}
|
||||||
$this->endItem();
|
$this->endItem();
|
||||||
|
Event::handle('EndProfileListItem', array($this));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function startItem()
|
function startItem()
|
||||||
|
@ -132,11 +147,29 @@ class ProfileListItem extends Widget
|
||||||
function showProfile()
|
function showProfile()
|
||||||
{
|
{
|
||||||
$this->startProfile();
|
$this->startProfile();
|
||||||
|
if (Event::handle('StartProfileListItemProfileElements', array($this))) {
|
||||||
|
if (Event::handle('StartProfileListItemAvatar', array($this))) {
|
||||||
$this->showAvatar();
|
$this->showAvatar();
|
||||||
|
Event::handle('EndProfileListItemAvatar', array($this));
|
||||||
|
}
|
||||||
|
if (Event::handle('StartProfileListItemFullName', array($this))) {
|
||||||
$this->showFullName();
|
$this->showFullName();
|
||||||
|
Event::handle('EndProfileListItemFullName', array($this));
|
||||||
|
}
|
||||||
|
if (Event::handle('StartProfileListItemLocation', array($this))) {
|
||||||
$this->showLocation();
|
$this->showLocation();
|
||||||
|
Event::handle('EndProfileListItemLocation', array($this));
|
||||||
|
}
|
||||||
|
if (Event::handle('StartProfileListItemHomepage', array($this))) {
|
||||||
$this->showHomepage();
|
$this->showHomepage();
|
||||||
|
Event::handle('EndProfileListItemHomepage', array($this));
|
||||||
|
}
|
||||||
|
if (Event::handle('StartProfileListItemBio', array($this))) {
|
||||||
$this->showBio();
|
$this->showBio();
|
||||||
|
Event::handle('EndProfileListItemBio', array($this));
|
||||||
|
}
|
||||||
|
Event::handle('EndProfileListItemProfileElements', array($this));
|
||||||
|
}
|
||||||
$this->endProfile();
|
$this->endProfile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +258,10 @@ class ProfileListItem extends Widget
|
||||||
function showActions()
|
function showActions()
|
||||||
{
|
{
|
||||||
$this->startActions();
|
$this->startActions();
|
||||||
|
if (Event::handle('StartProfileListItemActionElements', array($this))) {
|
||||||
$this->showSubscribeButton();
|
$this->showSubscribeButton();
|
||||||
|
Event::handle('EndProfileListItemActionElements', array($this));
|
||||||
|
}
|
||||||
$this->endActions();
|
$this->endActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,22 @@ define('CLAIM_TIMEOUT', 1200);
|
||||||
define('QUEUE_HANDLER_MISS_IDLE', 10);
|
define('QUEUE_HANDLER_MISS_IDLE', 10);
|
||||||
define('QUEUE_HANDLER_HIT_IDLE', 0);
|
define('QUEUE_HANDLER_HIT_IDLE', 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for queue handlers.
|
||||||
|
*
|
||||||
|
* As extensions of the Daemon class, each queue handler has the ability
|
||||||
|
* to launch itself in the background, at which point it'll pass control
|
||||||
|
* to the configured QueueManager class to poll for updates.
|
||||||
|
*
|
||||||
|
* Subclasses must override at least the following methods:
|
||||||
|
* - transport
|
||||||
|
* - start
|
||||||
|
* - finish
|
||||||
|
* - handle_notice
|
||||||
|
*
|
||||||
|
* Some subclasses will also want to override the idle handler:
|
||||||
|
* - idle
|
||||||
|
*/
|
||||||
class QueueHandler extends Daemon
|
class QueueHandler extends Daemon
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -39,6 +55,14 @@ class QueueHandler extends Daemon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many seconds a polling-based queue manager should wait between
|
||||||
|
* checks for new items to handle.
|
||||||
|
*
|
||||||
|
* Defaults to 60 seconds; override to speed up or slow down.
|
||||||
|
*
|
||||||
|
* @return int timeout in seconds
|
||||||
|
*/
|
||||||
function timeout()
|
function timeout()
|
||||||
{
|
{
|
||||||
return 60;
|
return 60;
|
||||||
|
@ -54,24 +78,69 @@ class QueueHandler extends Daemon
|
||||||
return strtolower($this->class_name().'.'.$this->get_id());
|
return strtolower($this->class_name().'.'.$this->get_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return transport keyword which identifies items this queue handler
|
||||||
|
* services; must be defined for all subclasses.
|
||||||
|
*
|
||||||
|
* Must be 8 characters or less to fit in the queue_item database.
|
||||||
|
* ex "email", "jabber", "sms", "irc", ...
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
function transport()
|
function transport()
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialization, run when the queue handler starts.
|
||||||
|
* If this function indicates failure, the handler run will be aborted.
|
||||||
|
*
|
||||||
|
* @fixme run() will abort if this doesn't return true,
|
||||||
|
* but some subclasses don't bother.
|
||||||
|
* @return boolean true on success, false on failure
|
||||||
|
*/
|
||||||
function start()
|
function start()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cleanup, run when the queue handler ends.
|
||||||
|
* If this function indicates failure, a warning will be logged.
|
||||||
|
*
|
||||||
|
* @fixme run() will throw warnings if this doesn't return true,
|
||||||
|
* but many subclasses don't bother.
|
||||||
|
* @return boolean true on success, false on failure
|
||||||
|
*/
|
||||||
function finish()
|
function finish()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Here's the meat of your queue handler -- you're handed a Notice
|
||||||
|
* object, which you may do as you will with.
|
||||||
|
*
|
||||||
|
* If this function indicates failure, a warning will be logged
|
||||||
|
* and the item is placed back in the queue to be re-run.
|
||||||
|
*
|
||||||
|
* @param Notice $notice
|
||||||
|
* @return boolean true on success, false on failure
|
||||||
|
*/
|
||||||
function handle_notice($notice)
|
function handle_notice($notice)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup and start of run loop for this queue handler as a daemon.
|
||||||
|
* Most of the heavy lifting is passed on to the QueueManager's service()
|
||||||
|
* method, which passes control back to our handle_notice() method for
|
||||||
|
* each notice that comes in on the queue.
|
||||||
|
*
|
||||||
|
* Most of the time this won't need to be overridden in a subclass.
|
||||||
|
*
|
||||||
|
* @return boolean true on success, false on failure
|
||||||
|
*/
|
||||||
function run()
|
function run()
|
||||||
{
|
{
|
||||||
if (!$this->start()) {
|
if (!$this->start()) {
|
||||||
|
@ -100,6 +169,14 @@ class QueueHandler extends Daemon
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by QueueHandler after each handled item or empty polling cycle.
|
||||||
|
* This is a good time to e.g. service your XMPP connection.
|
||||||
|
*
|
||||||
|
* Doesn't need to be overridden if there's no maintenance to do.
|
||||||
|
*
|
||||||
|
* @param int $timeout seconds to sleep if there's nothing to do
|
||||||
|
*/
|
||||||
function idle($timeout=0)
|
function idle($timeout=0)
|
||||||
{
|
{
|
||||||
if ($timeout > 0) {
|
if ($timeout > 0) {
|
||||||
|
|
|
@ -86,10 +86,6 @@ class Router
|
||||||
|
|
||||||
$m->connect('doc/:title', array('action' => 'doc'));
|
$m->connect('doc/:title', array('action' => 'doc'));
|
||||||
|
|
||||||
// Twitter
|
|
||||||
|
|
||||||
$m->connect('twitter/authorization', array('action' => 'twitterauthorization'));
|
|
||||||
|
|
||||||
// facebook
|
// facebook
|
||||||
|
|
||||||
$m->connect('facebook', array('action' => 'facebookhome'));
|
$m->connect('facebook', array('action' => 'facebookhome'));
|
||||||
|
@ -136,7 +132,7 @@ class Router
|
||||||
// settings
|
// settings
|
||||||
|
|
||||||
foreach (array('profile', 'avatar', 'password', 'im',
|
foreach (array('profile', 'avatar', 'password', 'im',
|
||||||
'email', 'sms', 'twitter', 'userdesign', 'other') as $s) {
|
'email', 'sms', 'userdesign', 'other') as $s) {
|
||||||
$m->connect('settings/'.$s, array('action' => $s.'settings'));
|
$m->connect('settings/'.$s, array('action' => $s.'settings'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,11 +48,6 @@ class UnQueueManager
|
||||||
jabber_public_notice($notice);
|
jabber_public_notice($notice);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'twitter':
|
|
||||||
if ($this->_isLocal($notice)) {
|
|
||||||
broadcast_twitter($notice);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'facebook':
|
case 'facebook':
|
||||||
if ($this->_isLocal($notice)) {
|
if ($this->_isLocal($notice)) {
|
||||||
require_once INSTALLDIR . '/lib/facebookutil.php';
|
require_once INSTALLDIR . '/lib/facebookutil.php';
|
||||||
|
|
18
lib/util.php
18
lib/util.php
|
@ -51,13 +51,23 @@ function common_init_locale($language=null)
|
||||||
function common_init_language()
|
function common_init_language()
|
||||||
{
|
{
|
||||||
mb_internal_encoding('UTF-8');
|
mb_internal_encoding('UTF-8');
|
||||||
|
|
||||||
|
// gettext seems very picky... We first need to setlocale()
|
||||||
|
// to a locale which _does_ exist on the system, and _then_
|
||||||
|
// we can set in another locale that may not be set up
|
||||||
|
// (say, ga_ES for Galego/Galician) it seems to take it.
|
||||||
|
common_init_locale("en_US");
|
||||||
|
|
||||||
$language = common_language();
|
$language = common_language();
|
||||||
// So we don't have to make people install the gettext locales
|
|
||||||
$locale_set = common_init_locale($language);
|
$locale_set = common_init_locale($language);
|
||||||
bindtextdomain("statusnet", common_config('site','locale_path'));
|
setlocale(LC_CTYPE, 'C');
|
||||||
|
|
||||||
|
// So we don't have to make people install the gettext locales
|
||||||
|
$path = common_config('site','locale_path');
|
||||||
|
bindtextdomain("statusnet", $path);
|
||||||
bind_textdomain_codeset("statusnet", "UTF-8");
|
bind_textdomain_codeset("statusnet", "UTF-8");
|
||||||
textdomain("statusnet");
|
textdomain("statusnet");
|
||||||
setlocale(LC_CTYPE, 'C');
|
|
||||||
if(!$locale_set) {
|
if(!$locale_set) {
|
||||||
common_log(LOG_INFO, 'Language requested:' . $language . ' - locale could not be set. Perhaps that system locale is not installed.', __FILE__);
|
common_log(LOG_INFO, 'Language requested:' . $language . ' - locale could not be set. Perhaps that system locale is not installed.', __FILE__);
|
||||||
}
|
}
|
||||||
|
@ -391,7 +401,7 @@ function common_render_content($text, $notice)
|
||||||
{
|
{
|
||||||
$r = common_render_text($text);
|
$r = common_render_text($text);
|
||||||
$id = $notice->profile_id;
|
$id = $notice->profile_id;
|
||||||
$r = preg_replace('/(^|[\s\.\,\:\;]+)@([A-Za-z0-9]{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
|
$r = preg_replace('/(^|\s+)@(['.NICKNAME_FMT.']{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
|
||||||
$r = preg_replace('/^T ([A-Z0-9]{1,64}) /e', "'T '.common_at_link($id, '\\1').' '", $r);
|
$r = preg_replace('/^T ([A-Z0-9]{1,64}) /e', "'T '.common_at_link($id, '\\1').' '", $r);
|
||||||
$r = preg_replace('/(^|[\s\.\,\:\;]+)@#([A-Za-z0-9]{1,64})/e', "'\\1@#'.common_at_hash_link($id, '\\2')", $r);
|
$r = preg_replace('/(^|[\s\.\,\:\;]+)@#([A-Za-z0-9]{1,64})/e', "'\\1@#'.common_at_hash_link($id, '\\2')", $r);
|
||||||
$r = preg_replace('/(^|[\s\.\,\:\;]+)!([A-Za-z0-9]{1,64})/e', "'\\1!'.common_group_link($id, '\\2')", $r);
|
$r = preg_replace('/(^|[\s\.\,\:\;]+)!([A-Za-z0-9]{1,64})/e', "'\\1!'.common_group_link($id, '\\2')", $r);
|
||||||
|
|
BIN
locale/bg/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/bg/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/cs/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/cs/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/de/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/de/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
locale/fr/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/fr/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/ga/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/ga/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
4713
locale/ga/LC_MESSAGES/statusnet.po
Normal file
4713
locale/ga/LC_MESSAGES/statusnet.po
Normal file
File diff suppressed because it is too large
Load Diff
BIN
locale/is/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/is/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
BIN
locale/it/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/it/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/ja/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/ja/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/mk/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/mk/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
|
@ -4670,12 +4670,12 @@ msgstr "%1$s сега ги следи вашите забелешки за %2$s.
|
||||||
#: lib/mail.php:254
|
#: lib/mail.php:254
|
||||||
#, fuzzy, php-format
|
#, fuzzy, php-format
|
||||||
msgid "Location: %s\n"
|
msgid "Location: %s\n"
|
||||||
msgstr "Локација"
|
msgstr ""
|
||||||
|
|
||||||
#: lib/mail.php:256
|
#: lib/mail.php:256
|
||||||
#, fuzzy, php-format
|
#, fuzzy, php-format
|
||||||
msgid "Homepage: %s\n"
|
msgid "Homepage: %s\n"
|
||||||
msgstr "Домашна страница"
|
msgstr ""
|
||||||
|
|
||||||
#: lib/mail.php:258
|
#: lib/mail.php:258
|
||||||
#, php-format
|
#, php-format
|
Binary file not shown.
BIN
locale/nl/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/nl/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
locale/sv/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/sv/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/te/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/te/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
BIN
locale/tr/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/tr/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
|
@ -4676,13 +4676,13 @@ msgstr "%1$s %2$s'da durumunuzu takip ediyor"
|
||||||
#: lib/mail.php:254
|
#: lib/mail.php:254
|
||||||
#, fuzzy, php-format
|
#, fuzzy, php-format
|
||||||
msgid "Location: %s\n"
|
msgid "Location: %s\n"
|
||||||
msgstr "Yer"
|
msgstr ""
|
||||||
|
|
||||||
# Belki Durum Merkezi falan denebilir mi ki?
|
# Belki Durum Merkezi falan denebilir mi ki?
|
||||||
#: lib/mail.php:256
|
#: lib/mail.php:256
|
||||||
#, fuzzy, php-format
|
#, fuzzy, php-format
|
||||||
msgid "Homepage: %s\n"
|
msgid "Homepage: %s\n"
|
||||||
msgstr "Başlangıç Sayfası"
|
msgstr ""
|
||||||
|
|
||||||
#: lib/mail.php:258
|
#: lib/mail.php:258
|
||||||
#, php-format
|
#, php-format
|
Binary file not shown.
BIN
locale/vi/LC_MESSAGES/statusnet.mo
Normal file
BIN
locale/vi/LC_MESSAGES/statusnet.mo
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -4563,12 +4563,12 @@ msgstr "現在%1$s在%2$s成為你的粉絲囉"
|
||||||
#: lib/mail.php:254
|
#: lib/mail.php:254
|
||||||
#, fuzzy, php-format
|
#, fuzzy, php-format
|
||||||
msgid "Location: %s\n"
|
msgid "Location: %s\n"
|
||||||
msgstr "地點"
|
msgstr ""
|
||||||
|
|
||||||
#: lib/mail.php:256
|
#: lib/mail.php:256
|
||||||
#, fuzzy, php-format
|
#, fuzzy, php-format
|
||||||
msgid "Homepage: %s\n"
|
msgid "Homepage: %s\n"
|
||||||
msgstr "個人首頁"
|
msgstr ""
|
||||||
|
|
||||||
#: lib/mail.php:258
|
#: lib/mail.php:258
|
||||||
#, php-format
|
#, php-format
|
||||||
|
|
|
@ -115,26 +115,48 @@ class FBConnectPlugin extends Plugin
|
||||||
// XXX: Facebook says we don't need this FB_RequireFeatures(),
|
// XXX: Facebook says we don't need this FB_RequireFeatures(),
|
||||||
// but we actually do, for IE and Safari. Gar.
|
// but we actually do, for IE and Safari. Gar.
|
||||||
|
|
||||||
$html = sprintf('<script type="text/javascript">
|
$js = '<script type="text/javascript">';
|
||||||
$(document).ready(function () {
|
$js .= ' $(document).ready(function () {';
|
||||||
FB_RequireFeatures(
|
$js .= ' FB_RequireFeatures(';
|
||||||
["XFBML"],
|
$js .= ' ["XFBML"], function() {';
|
||||||
function() {
|
$js .= ' FB.init("%1$s", "../xd_receiver.html");';
|
||||||
FB.init("%s", "../xd_receiver.html");
|
$js .= ' }';
|
||||||
}
|
$js .= ' );';
|
||||||
); });
|
$js .= ' });';
|
||||||
|
|
||||||
function goto_login() {
|
$js .= ' function goto_login() {';
|
||||||
window.location = "%s";
|
$js .= ' window.location = "%2$s";';
|
||||||
}
|
$js .= ' }';
|
||||||
|
|
||||||
function goto_logout() {
|
// The below function alters the logout link so that it logs the user out
|
||||||
window.location = "%s";
|
// of Facebook Connect as well as the site. However, for some pages
|
||||||
}
|
// (FB Connect Settings) we need to output the FB Connect scripts (to
|
||||||
</script>', $apikey,
|
// show an existing FB connection even if the user isn't authenticated
|
||||||
$login_url, $logout_url);
|
// with Facebook connect) but NOT alter the logout link. And the only
|
||||||
|
// way to reliably do that is with the FB Connect .js libs. Crazy.
|
||||||
|
|
||||||
$action->raw($html);
|
$js .= ' FB.ensureInit(function() {';
|
||||||
|
$js .= ' FB.Connect.ifUserConnected(';
|
||||||
|
$js .= ' function() { ';
|
||||||
|
$js .= ' $(\'#nav_logout a\').attr(\'href\', \'#\');';
|
||||||
|
$js .= ' $(\'#nav_logout a\').click(function() {';
|
||||||
|
$js .= ' FB.Connect.logoutAndRedirect(\'%3$s\');';
|
||||||
|
$js .= ' return false;';
|
||||||
|
$js .= ' })';
|
||||||
|
$js .= ' },';
|
||||||
|
$js .= ' function() {';
|
||||||
|
$js .= ' return false;';
|
||||||
|
$js .= ' }';
|
||||||
|
$js .= ' );';
|
||||||
|
$js .= ' });';
|
||||||
|
$js .= '</script>';
|
||||||
|
|
||||||
|
$js = sprintf($js, $apikey, $login_url, $logout_url);
|
||||||
|
|
||||||
|
// Compress the bugger down a bit
|
||||||
|
$js = str_replace(' ', '', $js);
|
||||||
|
|
||||||
|
$action->raw(" $js"); // leading two spaces to make it line up
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -150,7 +172,6 @@ class FBConnectPlugin extends Plugin
|
||||||
|
|
||||||
function onEndShowStatusNetStyles($action)
|
function onEndShowStatusNetStyles($action)
|
||||||
{
|
{
|
||||||
|
|
||||||
if ($this->reqFbScripts($action)) {
|
if ($this->reqFbScripts($action)) {
|
||||||
$action->cssLink('plugins/FBConnect/FBConnectPlugin.css');
|
$action->cssLink('plugins/FBConnect/FBConnectPlugin.css');
|
||||||
}
|
}
|
||||||
|
@ -269,66 +290,9 @@ class FBConnectPlugin extends Plugin
|
||||||
$action->elementEnd('li');
|
$action->elementEnd('li');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$action->menuItem(common_local_url('all', array('nickname' => $user->nickname)),
|
|
||||||
_('Home'), _('Personal profile and friends timeline'), false, 'nav_home');
|
|
||||||
$action->menuItem(common_local_url('profilesettings'),
|
|
||||||
_('Account'), _('Change your email, avatar, password, profile'), false, 'nav_account');
|
|
||||||
$action->menuItem(common_local_url($connect),
|
|
||||||
_('Connect'), _('Connect to services'), false, 'nav_connect');
|
|
||||||
if (common_config('invite', 'enabled')) {
|
|
||||||
$action->menuItem(common_local_url('invite'),
|
|
||||||
_('Invite'),
|
|
||||||
sprintf(_('Invite friends and colleagues to join you on %s'),
|
|
||||||
common_config('site', 'name')),
|
|
||||||
false, 'nav_invitecontact');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Need to override the Logout link to make it do FB stuff
|
return true;
|
||||||
if (!empty($fbuid)) {
|
|
||||||
|
|
||||||
$logout_url = common_local_url('logout');
|
|
||||||
$title = _('Logout from the site');
|
|
||||||
$text = _('Logout');
|
|
||||||
|
|
||||||
$html = sprintf('<li id="nav_logout"><a href="#" title="%s" ' .
|
|
||||||
'onclick="FB.Connect.logoutAndRedirect(\'%s\');">%s</a></li>',
|
|
||||||
$title, $logout_url, $text);
|
|
||||||
|
|
||||||
$action->raw($html);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$action->menuItem(common_local_url('logout'),
|
|
||||||
_('Logout'), _('Logout from the site'), false, 'nav_logout');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (!common_config('site', 'openidonly')) {
|
|
||||||
if (!common_config('site', 'closed')) {
|
|
||||||
$action->menuItem(common_local_url('register'),
|
|
||||||
_('Register'), _('Create an account'), false, 'nav_register');
|
|
||||||
}
|
|
||||||
$action->menuItem(common_local_url('login'),
|
|
||||||
_('Login'), _('Login to the site'), false, 'nav_login');
|
|
||||||
} else {
|
|
||||||
$this->menuItem(common_local_url('openidlogin'),
|
|
||||||
_('OpenID'), _('Login with OpenID'), false, 'nav_openid');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$action->menuItem(common_local_url('doc', array('title' => 'help')),
|
|
||||||
_('Help'), _('Help me!'), false, 'nav_help');
|
|
||||||
if ($user || !common_config('site', 'private')) {
|
|
||||||
$action->menuItem(common_local_url('peoplesearch'),
|
|
||||||
_('Search'), _('Search for people or text'), false, 'nav_search');
|
|
||||||
}
|
|
||||||
|
|
||||||
// We are replacing the primary nav entirely; give other
|
|
||||||
// plugins a chance to handle it here.
|
|
||||||
|
|
||||||
Event::handle('EndPrimaryNav', array($action));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onStartShowLocalNavBlock($action)
|
function onStartShowLocalNavBlock($action)
|
||||||
|
|
86
plugins/TwitterBridge/README
Normal file
86
plugins/TwitterBridge/README
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
This Twitter "bridge" plugin allows you to integrate your StatusNet
|
||||||
|
instance with Twitter. Installing it will allow your users to:
|
||||||
|
|
||||||
|
- automatically post notices to thier Twitter accounts
|
||||||
|
- automatically subscribe to other Twitter users who are also using
|
||||||
|
your StatusNet install, if possible (requires running a daemon)
|
||||||
|
- import their Twitter friends' tweets (requires running a daemon)
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
To enable the plugin, add the following to your config.php:
|
||||||
|
|
||||||
|
require_once(INSTALLDIR . '/plugins/TwitterBridge/TwitterBridgePlugin.php');
|
||||||
|
$tb = new TwitterBridgePlugin();
|
||||||
|
|
||||||
|
OAuth is used to to access protected resources on Twitter (as opposed to
|
||||||
|
HTTP Basic Auth)*. To use Twitter bridging you will need to register
|
||||||
|
your instance of StatusNet as an application on Twitter
|
||||||
|
(http://twitter.com/apps), and update the following variables in your
|
||||||
|
config.php with the consumer key and secret Twitter generates for you:
|
||||||
|
|
||||||
|
$config['twitter']['consumer_key'] = 'YOURKEY';
|
||||||
|
$config['twitter']['consumer_secret'] = 'YOURSECRET';
|
||||||
|
|
||||||
|
When registering your application with Twitter set the type to "Browser"
|
||||||
|
and your Callback URL to:
|
||||||
|
|
||||||
|
http://example.org/mublog/twitter/authorization
|
||||||
|
|
||||||
|
The default access type should be, "Read & Write".
|
||||||
|
|
||||||
|
* Note: The plugin will still push notices to Twitter for users who
|
||||||
|
have previously setup the Twitter bridge using their Twitter name and
|
||||||
|
password under an older versions of StatusNet, but all new Twitter
|
||||||
|
bridge connections will use OAuth.
|
||||||
|
|
||||||
|
Deamons
|
||||||
|
-------
|
||||||
|
|
||||||
|
For friend syncing and importing notices running two additional daemon
|
||||||
|
scripts is necessary (synctwitterfriends.php and
|
||||||
|
twitterstatusfetcher.php).
|
||||||
|
|
||||||
|
In the daemons subidrectory of the plugin are three scripts:
|
||||||
|
|
||||||
|
* Twitter Friends Syncing (daemons/synctwitterfriends.php)
|
||||||
|
|
||||||
|
Users may set a flag in their settings ("Subscribe to my Twitter friends
|
||||||
|
here" under the Twitter tab) to have StatusNet attempt to locate and
|
||||||
|
subscribe to "friends" (people they "follow") on Twitter who also have
|
||||||
|
accounts on your StatusNet system, and who have previously set up a link
|
||||||
|
for automatically posting notices to Twitter.
|
||||||
|
|
||||||
|
The plugin will try to start this daemon when you run
|
||||||
|
scripts/startdaemons.sh.
|
||||||
|
|
||||||
|
* Importing statuses from Twitter (daemons/twitterstatusfetcher.php)
|
||||||
|
|
||||||
|
To allow your users to import their friends' Twitter statuses, you will
|
||||||
|
need to enable the bidirectional Twitter bridge in your config.php:
|
||||||
|
|
||||||
|
$config['twitterimport']['enabled'] = true;
|
||||||
|
|
||||||
|
The plugin will then start the TwitterStatusFetcher daemon along with the
|
||||||
|
other daemons when you run scripts/startdaemons.sh.
|
||||||
|
|
||||||
|
Additionally, you will want to set the integration source variable,
|
||||||
|
which will keep notices posted to Twitter via StatusNet from looping
|
||||||
|
back. The integration source should be set to the name of your
|
||||||
|
application, exactly as you specified it on the settings page for your
|
||||||
|
StatusNet application on Twitter, e.g.:
|
||||||
|
|
||||||
|
$config['integration']['source'] = 'YourApp';
|
||||||
|
|
||||||
|
* TwitterQueueHandler (daemons/twitterqueuehandler.php)
|
||||||
|
|
||||||
|
This script sends queued notices to Twitter for user who have opted to
|
||||||
|
set up Twitter bridging.
|
||||||
|
|
||||||
|
It's not strictly necessary to run this queue handler, and sites that
|
||||||
|
haven't enabled queuing are still able to push notices to Twitter, but
|
||||||
|
for larger sites and sites that wish to improve performance, this
|
||||||
|
script allows notices to be sent "offline" via a separate process.
|
||||||
|
|
||||||
|
The plugin will start this script when you run scripts/startdaemons.sh.
|
187
plugins/TwitterBridge/TwitterBridgePlugin.php
Normal file
187
plugins/TwitterBridge/TwitterBridgePlugin.php
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* StatusNet, the distributed open-source microblogging tool
|
||||||
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* LICENCE: 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/>.
|
||||||
|
*
|
||||||
|
* @category Plugin
|
||||||
|
* @package StatusNet
|
||||||
|
* @author Zach Copley <zach@status.net>
|
||||||
|
* @copyright 2009 Control Yourself, Inc.
|
||||||
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://laconi.ca/
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('STATUSNET')) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plugin for sending and importing Twitter statuses
|
||||||
|
*
|
||||||
|
* This class allows users to link their Twitter accounts
|
||||||
|
*
|
||||||
|
* @category Plugin
|
||||||
|
* @package StatusNet
|
||||||
|
* @author Zach Copley <zach@status.net>
|
||||||
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://laconi.ca/
|
||||||
|
* @link http://twitter.com/
|
||||||
|
*/
|
||||||
|
|
||||||
|
class TwitterBridgePlugin extends Plugin
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Initializer for the plugin.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Twitter-related paths to the router table
|
||||||
|
*
|
||||||
|
* Hook for RouterInitialized event.
|
||||||
|
*
|
||||||
|
* @param Net_URL_Mapper &$m path-to-action mapper
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRouterInitialized(&$m)
|
||||||
|
{
|
||||||
|
$m->connect('twitter/authorization',
|
||||||
|
array('action' => 'twitterauthorization'));
|
||||||
|
$m->connect('settings/twitter', array('action' => 'twittersettings'));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the Twitter Settings page to the Connect Settings menu
|
||||||
|
*
|
||||||
|
* @param Action &$action The calling page
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*/
|
||||||
|
function onEndConnectSettingsNav(&$action)
|
||||||
|
{
|
||||||
|
$action_name = $action->trimmed('action');
|
||||||
|
|
||||||
|
$action->menuItem(common_local_url('twittersettings'),
|
||||||
|
_('Twitter'),
|
||||||
|
_('Twitter integration options'),
|
||||||
|
$action_name === 'twittersettings');
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically load the actions and libraries used by the Twitter bridge
|
||||||
|
*
|
||||||
|
* @param Class $cls the class
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function onAutoload($cls)
|
||||||
|
{
|
||||||
|
switch ($cls) {
|
||||||
|
case 'TwittersettingsAction':
|
||||||
|
case 'TwitterauthorizationAction':
|
||||||
|
include_once INSTALLDIR . '/plugins/TwitterBridge/' .
|
||||||
|
strtolower(mb_substr($cls, 0, -6)) . '.php';
|
||||||
|
return false;
|
||||||
|
case 'TwitterOAuthClient':
|
||||||
|
include_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php';
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a Twitter queue item for each notice
|
||||||
|
*
|
||||||
|
* @param Notice $notice the notice
|
||||||
|
* @param array &$transports the list of transports (queues)
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*/
|
||||||
|
function onStartEnqueueNotice($notice, &$transports)
|
||||||
|
{
|
||||||
|
array_push($transports, 'twitter');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* broadcast the message when not using queuehandler
|
||||||
|
*
|
||||||
|
* @param Notice &$notice the notice
|
||||||
|
* @param array $queue destination queue
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*/
|
||||||
|
function onUnqueueHandleNotice(&$notice, $queue)
|
||||||
|
{
|
||||||
|
if (($queue == 'twitter') && ($this->_isLocal($notice))) {
|
||||||
|
broadcast_twitter($notice);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the notice was locally created
|
||||||
|
*
|
||||||
|
* @param Notice $notice
|
||||||
|
*
|
||||||
|
* @return boolean locality
|
||||||
|
*/
|
||||||
|
function _isLocal($notice)
|
||||||
|
{
|
||||||
|
return ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||||
|
$notice->is_local == Notice::LOCAL_NONPUBLIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Twitter bridge daemons to the list of daemons to start
|
||||||
|
*
|
||||||
|
* @param array $daemons the list fo daemons to run
|
||||||
|
*
|
||||||
|
* @return boolean hook return
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function onGetValidDaemons($daemons)
|
||||||
|
{
|
||||||
|
array_push($daemons, INSTALLDIR .
|
||||||
|
'/plugins/TwitterBridge/daemons/twitterqueuehandler.php');
|
||||||
|
array_push($daemons, INSTALLDIR .
|
||||||
|
'/plugins/TwitterBridge/daemons/synctwitterfriends.php');
|
||||||
|
|
||||||
|
if (common_config('twitterimport', 'enabled')) {
|
||||||
|
array_push($daemons, INSTALLDIR
|
||||||
|
. '/plugins/TwitterBridge/daemons/twitterstatusfetcher.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -18,7 +18,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
|
||||||
|
|
||||||
$shortoptions = 'di::';
|
$shortoptions = 'di::';
|
||||||
$longoptions = array('id::', 'debug');
|
$longoptions = array('id::', 'debug');
|
||||||
|
@ -32,6 +32,9 @@ END_OF_TRIM_HELP;
|
||||||
|
|
||||||
require_once INSTALLDIR . '/scripts/commandline.inc';
|
require_once INSTALLDIR . '/scripts/commandline.inc';
|
||||||
require_once INSTALLDIR . '/lib/parallelizingdaemon.php';
|
require_once INSTALLDIR . '/lib/parallelizingdaemon.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitterbasicauthclient.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Daemon to sync local friends with Twitter friends
|
* Daemon to sync local friends with Twitter friends
|
||||||
|
@ -44,14 +47,6 @@ require_once INSTALLDIR . '/lib/parallelizingdaemon.php';
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$helptext = <<<END_OF_TWITTER_HELP
|
|
||||||
Batch script for synching local friends with Twitter friends.
|
|
||||||
|
|
||||||
END_OF_TWITTER_HELP;
|
|
||||||
|
|
||||||
require_once INSTALLDIR . '/scripts/commandline.inc';
|
|
||||||
require_once INSTALLDIR . '/lib/parallelizingdaemon.php';
|
|
||||||
|
|
||||||
class SyncTwitterFriendsDaemon extends ParallelizingDaemon
|
class SyncTwitterFriendsDaemon extends ParallelizingDaemon
|
||||||
{
|
{
|
||||||
/**
|
/**
|
|
@ -18,7 +18,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
|
||||||
|
|
||||||
$shortoptions = 'i::';
|
$shortoptions = 'i::';
|
||||||
$longoptions = array('id::');
|
$longoptions = array('id::');
|
||||||
|
@ -31,9 +31,8 @@ Daemon script for pushing new notices to Twitter.
|
||||||
END_OF_ENJIT_HELP;
|
END_OF_ENJIT_HELP;
|
||||||
|
|
||||||
require_once INSTALLDIR . '/scripts/commandline.inc';
|
require_once INSTALLDIR . '/scripts/commandline.inc';
|
||||||
|
|
||||||
require_once INSTALLDIR . '/lib/twitter.php';
|
|
||||||
require_once INSTALLDIR . '/lib/queuehandler.php';
|
require_once INSTALLDIR . '/lib/queuehandler.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
|
||||||
class TwitterQueueHandler extends QueueHandler
|
class TwitterQueueHandler extends QueueHandler
|
||||||
{
|
{
|
|
@ -18,7 +18,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
|
||||||
|
|
||||||
// Tune number of processes and how often to poll Twitter
|
// Tune number of processes and how often to poll Twitter
|
||||||
// XXX: Should these things be in config.php?
|
// XXX: Should these things be in config.php?
|
||||||
|
@ -37,7 +37,11 @@ Batch script for retrieving Twitter messages from foreign service.
|
||||||
END_OF_TRIM_HELP;
|
END_OF_TRIM_HELP;
|
||||||
|
|
||||||
require_once INSTALLDIR . '/scripts/commandline.inc';
|
require_once INSTALLDIR . '/scripts/commandline.inc';
|
||||||
|
require_once INSTALLDIR . '/lib/common.php';
|
||||||
require_once INSTALLDIR . '/lib/daemon.php';
|
require_once INSTALLDIR . '/lib/daemon.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitterbasicauthclient.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetcher for statuses from Twitter
|
* Fetcher for statuses from Twitter
|
||||||
|
@ -496,8 +500,6 @@ class TwitterStatusFetcher extends ParallelizingDaemon
|
||||||
$avatar->filename = $filename;
|
$avatar->filename = $filename;
|
||||||
$avatar->url = Avatar::url($filename);
|
$avatar->url = Avatar::url($filename);
|
||||||
|
|
||||||
common_debug($this->name() . " - New filename: $avatar->url");
|
|
||||||
|
|
||||||
$avatar->created = common_sql_now();
|
$avatar->created = common_sql_now();
|
||||||
|
|
||||||
$id = $avatar->insert();
|
$id = $avatar->insert();
|
||||||
|
@ -515,9 +517,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon
|
||||||
|
|
||||||
function fetchAvatar($url, $filename)
|
function fetchAvatar($url, $filename)
|
||||||
{
|
{
|
||||||
$avatar_dir = INSTALLDIR . '/avatar/';
|
$avatarfile = Avatar::path($filename);
|
||||||
|
|
||||||
$avatarfile = $avatar_dir . $filename;
|
|
||||||
|
|
||||||
$out = fopen($avatarfile, 'wb');
|
$out = fopen($avatarfile, 'wb');
|
||||||
if (!$out) {
|
if (!$out) {
|
|
@ -23,6 +23,9 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||||
|
|
||||||
define('TWITTER_SERVICE', 1); // Twitter is foreign_service ID 1
|
define('TWITTER_SERVICE', 1); // Twitter is foreign_service ID 1
|
||||||
|
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitterbasicauthclient.php';
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php';
|
||||||
|
|
||||||
function updateTwitter_user($twitter_id, $screen_name)
|
function updateTwitter_user($twitter_id, $screen_name)
|
||||||
{
|
{
|
||||||
$uri = 'http://twitter.com/' . $screen_name;
|
$uri = 'http://twitter.com/' . $screen_name;
|
|
@ -31,9 +31,32 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class for doing OAuth authentication against Twitter
|
||||||
|
*
|
||||||
|
* Peforms the OAuth "dance" between StatusNet and Twitter -- requests a token,
|
||||||
|
* authorizes it, and exchanges it for an access token. It also creates a link
|
||||||
|
* (Foreign_link) between the StatusNet user and Twitter user and stores the
|
||||||
|
* access token and secret in the link.
|
||||||
|
*
|
||||||
|
* @category Twitter
|
||||||
|
* @package StatusNet
|
||||||
|
* @author Zach Copley <zach@status.net>
|
||||||
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://laconi.ca/
|
||||||
|
*
|
||||||
|
*/
|
||||||
class TwitterauthorizationAction extends Action
|
class TwitterauthorizationAction extends Action
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Initialize class members. Looks for 'oauth_token' parameter.
|
||||||
|
*
|
||||||
|
* @param array $args misc. arguments
|
||||||
|
*
|
||||||
|
* @return boolean true
|
||||||
|
*/
|
||||||
function prepare($args)
|
function prepare($args)
|
||||||
{
|
{
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
|
@ -32,7 +32,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once INSTALLDIR . '/lib/connectsettingsaction.php';
|
require_once INSTALLDIR . '/lib/connectsettingsaction.php';
|
||||||
require_once INSTALLDIR.'/lib/twitter.php';
|
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Settings for Twitter integration
|
* Settings for Twitter integration
|
||||||
|
@ -82,11 +82,6 @@ class TwittersettingsAction extends ConnectSettingsAction
|
||||||
|
|
||||||
function showContent()
|
function showContent()
|
||||||
{
|
{
|
||||||
if (!common_config('twitter', 'enabled')) {
|
|
||||||
$this->element('div', array('class' => 'error'),
|
|
||||||
_('Twitter is not available.'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
|
|
||||||
|
@ -157,7 +152,7 @@ class TwittersettingsAction extends ConnectSettingsAction
|
||||||
false);
|
false);
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
|
|
||||||
if (common_config('twitterbridge','enabled')) {
|
if (common_config('twitterimport','enabled')) {
|
||||||
$this->elementStart('li');
|
$this->elementStart('li');
|
||||||
$this->checkbox('noticerecv',
|
$this->checkbox('noticerecv',
|
||||||
_('Import my Friends Timeline.'),
|
_('Import my Friends Timeline.'),
|
|
@ -49,15 +49,6 @@ if(common_config('xmpp','enabled')) {
|
||||||
$daemons[] = INSTALLDIR.'/scripts/xmppconfirmhandler.php';
|
$daemons[] = INSTALLDIR.'/scripts/xmppconfirmhandler.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
if(common_config('twitterbridge','enabled')) {
|
|
||||||
$daemons[] = INSTALLDIR.'/scripts/twitterstatusfetcher.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (common_config('twitter', 'enabled')) {
|
|
||||||
$daemons[] = INSTALLDIR.'/scripts/twitterqueuehandler.php';
|
|
||||||
$daemons[] = INSTALLDIR.'/scripts/synctwitterfriends.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (common_config('sms', 'enabled')) {
|
if (common_config('sms', 'enabled')) {
|
||||||
$daemons[] = INSTALLDIR.'/scripts/smsqueuehandler.php';
|
$daemons[] = INSTALLDIR.'/scripts/smsqueuehandler.php';
|
||||||
}
|
}
|
||||||
|
|
|
@ -365,6 +365,10 @@ class MailerDaemon
|
||||||
if (preg_match('/^\s*Sent via/', $line)) {
|
if (preg_match('/^\s*Sent via/', $line)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (preg_match('/^\s*Sent from my/', $line)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// skip everything after a sig
|
// skip everything after a sig
|
||||||
if (preg_match('/^\s*--+\s*$/', $line) ||
|
if (preg_match('/^\s*--+\s*$/', $line) ||
|
||||||
preg_match('/^\s*__+\s*$/', $line))
|
preg_match('/^\s*__+\s*$/', $line))
|
||||||
|
|
|
@ -18,7 +18,7 @@ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
||||||
font-size:1em;
|
font-size:1em;
|
||||||
}
|
}
|
||||||
address {
|
address {
|
||||||
margin-right:7.2%;
|
margin-right:5.8%;
|
||||||
}
|
}
|
||||||
|
|
||||||
input, textarea, select, option {
|
input, textarea, select, option {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user