Merge branch '0.8.x' of git@gitorious.org:laconica/mainline into 0.8.x
This commit is contained in:
commit
9f07921b45
58
README
58
README
@ -553,25 +553,53 @@ 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
|
||||
writing, the software has been tested with ActiveMQ (
|
||||
|
||||
Twitter Friends Syncing
|
||||
-----------------------
|
||||
Twitter Bridge
|
||||
--------------
|
||||
|
||||
As of Laconica 0.6.3, users may set a flag in their settings ("Subscribe
|
||||
to my Twitter friends here" under the Twitter tab) to have Laconica
|
||||
attempt to locate and subscribe to "friends" (people they "follow") on
|
||||
Twitter who also have accounts on your Laconica system, and who have
|
||||
previously set up a link for automatically posting notices to Twitter.
|
||||
* OAuth
|
||||
|
||||
Optionally, there is a script (./scripts/synctwitterfriends.php), meant
|
||||
to be run periodically from a job scheduler (e.g.: cron under Unix), to
|
||||
look for new additions to users' friends lists. Note that the friends
|
||||
syncing only subscribes users to each other, it does not unsubscribe
|
||||
users when they stop following each other on Twitter.
|
||||
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 Laconica 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:
|
||||
|
||||
Sample cron job:
|
||||
$config['twitter']['consumer_key'] = 'YOURKEY';
|
||||
$config['twitter']['consumer_secret'] = 'YOURSECRET';
|
||||
|
||||
# Update Twitter friends subscriptions every half hour
|
||||
0,30 * * * * /path/to/php /path/to/laconica/scripts/synctwitterfriends.php>&/dev/null
|
||||
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 Laconica 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
|
||||
Laconica 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 Laconica attempt to locate and
|
||||
subscribe to "friends" (people they "follow") on Twitter who also have
|
||||
accounts on your Laconica 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
|
||||
-----------------------------
|
||||
|
@ -130,8 +130,18 @@ class ShowgroupAction extends GroupDesignAction
|
||||
$this->group = User_group::staticGet('nickname', $nickname);
|
||||
|
||||
if (!$this->group) {
|
||||
$this->clientError(_('No such group'), 404);
|
||||
return false;
|
||||
$alias = Group_alias::staticGet('alias', $nickname);
|
||||
if ($alias) {
|
||||
$args = array('id' => $alias->group_id);
|
||||
if ($this->page != 1) {
|
||||
$args['page'] = $this->page;
|
||||
}
|
||||
common_redirect(common_local_url('groupbyid', $args), 301);
|
||||
return false;
|
||||
} else {
|
||||
$this->clientError(_('No such group'), 404);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
common_set_returnto($this->selfUrl());
|
||||
|
@ -190,7 +190,7 @@ class ShownoticeAction extends OwnerDesignAction
|
||||
{
|
||||
parent::handle($args);
|
||||
|
||||
if ($this->notice->is_local == 0) {
|
||||
if ($this->notice->is_local == Notice::REMOTE_OMB) {
|
||||
if (!empty($this->notice->url)) {
|
||||
common_redirect($this->notice->url, 301);
|
||||
} else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
|
||||
|
@ -29,34 +29,38 @@ class Foreign_link extends Memcached_DataObject
|
||||
/* the code above is auto generated do not remove the tag below */
|
||||
###END_AUTOCODE
|
||||
|
||||
// XXX: This only returns a 1->1 single obj mapping. Change? Or make
|
||||
// a getForeignUsers() that returns more than one? --Zach
|
||||
static function getByUserID($user_id, $service)
|
||||
{
|
||||
if (empty($user_id) || empty($service)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$flink = new Foreign_link();
|
||||
|
||||
$flink->service = $service;
|
||||
$flink->user_id = $user_id;
|
||||
$flink->limit(1);
|
||||
|
||||
if ($flink->find(true)) {
|
||||
return $flink;
|
||||
}
|
||||
$result = $flink->find(true);
|
||||
|
||||
return empty($result) ? null : $flink;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
static function getByForeignID($foreign_id, $service)
|
||||
{
|
||||
$flink = new Foreign_link();
|
||||
$flink->service = $service;
|
||||
$flink->foreign_id = $foreign_id;
|
||||
$flink->limit(1);
|
||||
if (empty($foreign_id) || empty($service)) {
|
||||
return null;
|
||||
} else {
|
||||
$flink = new Foreign_link();
|
||||
$flink->service = $service;
|
||||
$flink->foreign_id = $foreign_id;
|
||||
$flink->limit(1);
|
||||
|
||||
if ($flink->find(true)) {
|
||||
return $flink;
|
||||
$result = $flink->find(true);
|
||||
|
||||
return empty($result) ? null : $flink;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function set_flags($noticesend, $noticerecv, $replysync, $friendsync)
|
||||
@ -66,7 +70,7 @@ class Foreign_link extends Memcached_DataObject
|
||||
} else {
|
||||
$this->noticesync &= ~FOREIGN_NOTICE_SEND;
|
||||
}
|
||||
|
||||
|
||||
if ($noticerecv) {
|
||||
$this->noticesync |= FOREIGN_NOTICE_RECV;
|
||||
} else {
|
||||
|
@ -29,10 +29,6 @@ require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
|
||||
|
||||
define('NOTICE_CACHE_WINDOW', 61);
|
||||
|
||||
define('NOTICE_LOCAL_PUBLIC', 1);
|
||||
define('NOTICE_REMOTE_OMB', 0);
|
||||
define('NOTICE_LOCAL_NONPUBLIC', -1);
|
||||
|
||||
define('MAX_BOXCARS', 128);
|
||||
|
||||
class Notice extends Memcached_DataObject
|
||||
@ -62,7 +58,11 @@ class Notice extends Memcached_DataObject
|
||||
/* the code above is auto generated do not remove the tag below */
|
||||
###END_AUTOCODE
|
||||
|
||||
const GATEWAY = -2;
|
||||
/* Notice types */
|
||||
const LOCAL_PUBLIC = 1;
|
||||
const REMOTE_OMB = 0;
|
||||
const LOCAL_NONPUBLIC = -1;
|
||||
const GATEWAY = -2;
|
||||
|
||||
function getProfile()
|
||||
{
|
||||
@ -134,7 +134,7 @@ class Notice extends Memcached_DataObject
|
||||
}
|
||||
|
||||
static function saveNew($profile_id, $content, $source=null,
|
||||
$is_local=1, $reply_to=null, $uri=null, $created=null) {
|
||||
$is_local=Notice::LOCAL_PUBLIC, $reply_to=null, $uri=null, $created=null) {
|
||||
|
||||
$profile = Profile::staticGet($profile_id);
|
||||
|
||||
@ -177,7 +177,7 @@ class Notice extends Memcached_DataObject
|
||||
|
||||
if (($blacklist && in_array($profile_id, $blacklist)) ||
|
||||
($source && $autosource && in_array($source, $autosource))) {
|
||||
$notice->is_local = -1;
|
||||
$notice->is_local = Notice::LOCAL_NONPUBLIC;
|
||||
} else {
|
||||
$notice->is_local = $is_local;
|
||||
}
|
||||
@ -509,7 +509,7 @@ class Notice extends Memcached_DataObject
|
||||
|
||||
function blowPublicCache($blowLast=false)
|
||||
{
|
||||
if ($this->is_local == 1) {
|
||||
if ($this->is_local == Notice::LOCAL_PUBLIC) {
|
||||
$cache = common_memcache();
|
||||
if ($cache) {
|
||||
$cache->delete(common_cache_key('public'));
|
||||
@ -775,10 +775,11 @@ class Notice extends Memcached_DataObject
|
||||
}
|
||||
|
||||
if (common_config('public', 'localonly')) {
|
||||
$notice->whereAdd('is_local = 1');
|
||||
$notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC);
|
||||
} else {
|
||||
# -1 == blacklisted
|
||||
$notice->whereAdd('is_local != -1');
|
||||
# -1 == blacklisted, -2 == gateway (i.e. Twitter)
|
||||
$notice->whereAdd('is_local !='. Notice::LOCAL_NONPUBLIC);
|
||||
$notice->whereAdd('is_local !='. Notice::GATEWAY);
|
||||
}
|
||||
|
||||
if ($since_id != 0) {
|
||||
|
@ -261,5 +261,6 @@ $config['sphinx']['port'] = 3312;
|
||||
// $config['attachments']['user_quota'] = 50000000;
|
||||
// $config['attachments']['monthly_quota'] = 15000000;
|
||||
// $config['attachments']['uploads'] = true;
|
||||
// $config['attachments']['path'] = "/file/";
|
||||
|
||||
// $config['oohembed']['endpoint'] = 'http://oohembed.com/oohembed/';
|
||||
|
@ -82,7 +82,7 @@ if (isset($server)) {
|
||||
if (isset($path)) {
|
||||
$_path = $path;
|
||||
} else {
|
||||
$_path = array_key_exists('SCRIPT_NAME', $_SERVER) ?
|
||||
$_path = (array_key_exists('SERVER_NAME', $_SERVER) && array_key_exists('SCRIPT_NAME', $_SERVER)) ?
|
||||
_sn_to_path($_SERVER['SCRIPT_NAME']) :
|
||||
null;
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ class MySQLSearch extends SearchEngine
|
||||
} else if ('identica_notices' === $this->table) {
|
||||
|
||||
// Don't show imported notices
|
||||
$this->target->whereAdd('notice.is_local != ' . NOTICE_GATEWAY);
|
||||
$this->target->whereAdd('notice.is_local != ' . Notice::GATEWAY);
|
||||
|
||||
if (strtolower($q) != $q) {
|
||||
$this->target->whereAdd("( MATCH(content) AGAINST ('" . addslashes($q) .
|
||||
|
@ -79,7 +79,7 @@ class UnQueueManager
|
||||
|
||||
function _isLocal($notice)
|
||||
{
|
||||
return ($notice->is_local == NOTICE_LOCAL_PUBLIC ||
|
||||
$notice->is_local == NOTICE_LOCAL_NONPUBLIC);
|
||||
return ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||
$notice->is_local == Notice::LOCAL_NONPUBLIC);
|
||||
}
|
||||
}
|
86
lib/util.php
86
lib/util.php
@ -412,73 +412,43 @@ function common_render_text($text)
|
||||
function common_replace_urls_callback($text, $callback, $notice_id = null) {
|
||||
// Start off with a regex
|
||||
$regex = '#'.
|
||||
'(?:'.
|
||||
'(?:^|\s+)('.
|
||||
'(?:'.
|
||||
'(?:https?|ftps?|mms|rtsp|gopher|news|nntp|telnet|wais|file|prospero|webcal|irc)://'.
|
||||
'|'.
|
||||
'(?:mailto|aim|tel|xmpp):'.
|
||||
')?'.
|
||||
'(?:'.
|
||||
'(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'. //IPv4
|
||||
'|(?:'.
|
||||
'(?:[0-9a-f]{1,4}:){1,1}(?::[0-9a-f]{1,4}){1,6}|'. //IPv6
|
||||
'(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,5}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,4}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,3}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,5}(?::[0-9a-f]{1,4}){1,2}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,6}(?::[0-9a-f]{1,4}){1,1}|'.
|
||||
'(?:(?:[0-9a-f]{1,4}:){1,7}|:):|'.
|
||||
':(?::[0-9a-f]{1,4}){1,7}|'.
|
||||
'(?:(?:(?:[0-9a-f]{1,4}:){6})(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|'.
|
||||
'(?:(?:[0-9a-f]{1,4}:){5}[0-9a-f]{1,4}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|'.
|
||||
'(?:[0-9a-f]{1,4}:){5}:[0-9a-f]{1,4}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,1}(?::[0-9a-f]{1,4}){1,4}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,3}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,2}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'.
|
||||
'(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,1}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'.
|
||||
'(?:(?:[0-9a-f]{1,4}:){1,5}|:):(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'.
|
||||
':(?::[0-9a-f]{1,4}){1,5}:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}'.
|
||||
')|'.
|
||||
'(?:[^.\s/:]+\.)+'. //DNS
|
||||
'(?:museum|travel|onion|[a-z]{2,4})'.
|
||||
')'.
|
||||
'[^.\s]+\.[^\s]+'.
|
||||
'|'.
|
||||
'(?:[^.\s/:]+\.)+'.
|
||||
'(?:museum|travel|[a-z]{2,4})'.
|
||||
'(?:[:/][^\s]*)?'.
|
||||
')'.
|
||||
'#ix';
|
||||
preg_match_all($regex, $text, $matches);
|
||||
|
||||
// Then clean up what the regex left behind
|
||||
$offset = 0;
|
||||
foreach($matches[0] as $orig_url) {
|
||||
$url = htmlspecialchars_decode($orig_url);
|
||||
|
||||
// Make sure we didn't pick up an email address
|
||||
if (preg_match('#^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$#i', $url)) continue;
|
||||
|
||||
// Remove surrounding punctuation
|
||||
$url = trim($url, '.?!,;:\'"`([<');
|
||||
|
||||
// Remove surrounding parens and the like
|
||||
preg_match('/[)\]>]+$/', $url, $trailing);
|
||||
if (isset($trailing[0])) {
|
||||
preg_match_all('/[(\[<]/', $url, $opened);
|
||||
preg_match_all('/[)\]>]/', $url, $closed);
|
||||
$unopened = count($closed[0]) - count($opened[0]);
|
||||
|
||||
// Make sure not to take off more closing parens than there are at the end
|
||||
$unopened = ($unopened > mb_strlen($trailing[0])) ? mb_strlen($trailing[0]):$unopened;
|
||||
|
||||
$url = ($unopened > 0) ? mb_substr($url, 0, $unopened * -1):$url;
|
||||
}
|
||||
|
||||
// Remove trailing punctuation again (in case there were some inside parens)
|
||||
$url = rtrim($url, '.?!,;:\'"`');
|
||||
|
||||
// Make sure we didn't capture part of the next sentence
|
||||
preg_match('#((?:[^.\s/]+\.)+)(museum|travel|[a-z]{2,4})#i', $url, $url_parts);
|
||||
|
||||
// Were the parts capitalized any?
|
||||
$last_part = (mb_strtolower($url_parts[2]) !== $url_parts[2]) ? true:false;
|
||||
$prev_part = (mb_strtolower($url_parts[1]) !== $url_parts[1]) ? true:false;
|
||||
|
||||
// If the first part wasn't cap'd but the last part was, we captured too much
|
||||
if ((!$prev_part && $last_part)) {
|
||||
$url = mb_substr($url, 0 , mb_strpos($url, '.'.$url_parts['2'], 0));
|
||||
}
|
||||
|
||||
// Capture the new TLD
|
||||
preg_match('#((?:[^.\s/]+\.)+)(museum|travel|[a-z]{2,4})#i', $url, $url_parts);
|
||||
|
||||
$tlds = array('ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao', 'aq', 'ar', 'arpa', 'as', 'asia', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop', 'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do', 'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm', 'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm', 'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tel', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'us', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm', 'zw');
|
||||
|
||||
if (!in_array($url_parts[2], $tlds)) continue;
|
||||
|
||||
// Make sure we didn't capture a hash tag
|
||||
if (strpos($url, '#') === 0) continue;
|
||||
|
||||
// Put the url back the way we found it.
|
||||
$url = (mb_strpos($orig_url, htmlspecialchars($url)) === FALSE) ? $url:htmlspecialchars($url);
|
||||
|
||||
foreach($matches[1] as $url) {
|
||||
// Call user specified func
|
||||
if (empty($notice_id)) {
|
||||
$modified_url = call_user_func($callback, $url);
|
||||
@ -884,8 +854,8 @@ function common_enqueue_notice($notice)
|
||||
$transports[] = 'jabber';
|
||||
}
|
||||
|
||||
if ($notice->is_local == NOTICE_LOCAL_PUBLIC ||
|
||||
$notice->is_local == NOTICE_LOCAL_NONPUBLIC) {
|
||||
if ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||
$notice->is_local == Notice::LOCAL_NONPUBLIC) {
|
||||
$transports = array_merge($transports, $localTransports);
|
||||
if ($xmpp) {
|
||||
$transports[] = 'public';
|
||||
|
@ -31,27 +31,25 @@ require_once INSTALLDIR . '/plugins/FBConnect/FBConnectPlugin.php';
|
||||
|
||||
class FBConnectauthAction extends Action
|
||||
{
|
||||
|
||||
var $fbuid = null;
|
||||
var $fb_fields = null;
|
||||
|
||||
function prepare($args) {
|
||||
parent::prepare($args);
|
||||
|
||||
try {
|
||||
$this->fbuid = getFacebook()->get_loggedin_user();
|
||||
|
||||
$this->fbuid = getFacebook()->get_loggedin_user();
|
||||
if ($this->fbuid > 0) {
|
||||
$this->fb_fields = $this->getFacebookFields($this->fbuid,
|
||||
array('first_name', 'last_name', 'name'));
|
||||
} else {
|
||||
list($proxy, $ip) = common_client_ip();
|
||||
|
||||
if ($this->fbuid > 0) {
|
||||
$this->fb_fields = $this->getFacebookFields($this->fbuid,
|
||||
array('first_name', 'last_name', 'name'));
|
||||
} else {
|
||||
common_debug("No Facebook User found.");
|
||||
}
|
||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||
"Failed auth attempt, proxy = $proxy, ip = $ip.");
|
||||
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING, 'Problem getting Facebook uid: ' .
|
||||
$e->getMessage());
|
||||
$this->clientError(_('You must be logged into Facebook to ' .
|
||||
'use Facebook Connect.'));
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -69,8 +67,9 @@ class FBConnectauthAction extends Action
|
||||
if (!empty($flink)) {
|
||||
|
||||
// User already has a linked Facebook account and shouldn't be here
|
||||
common_debug('There is already a local user (' . $flink->user_id .
|
||||
') linked with this Facebook (' . $this->fbuid . ').');
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
'There is already a local user (' . $flink->user_id .
|
||||
') linked with this Facebook (' . $this->fbuid . ').');
|
||||
|
||||
// We don't want these cookies
|
||||
getFacebook()->clear_cookie_state();
|
||||
@ -101,7 +100,8 @@ class FBConnectauthAction extends Action
|
||||
} else if ($this->arg('connect')) {
|
||||
$this->connectNewUser();
|
||||
} else {
|
||||
common_debug(print_r($this->args, true), __FILE__);
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
print_r($this->args, true));
|
||||
$this->showForm(_('Something weird happened.'),
|
||||
$this->trimmed('newname'));
|
||||
}
|
||||
@ -211,7 +211,6 @@ class FBConnectauthAction extends Action
|
||||
|
||||
function createNewUser()
|
||||
{
|
||||
|
||||
if (common_config('site', 'closed')) {
|
||||
$this->clientError(_('Registration not allowed.'));
|
||||
return;
|
||||
@ -274,7 +273,8 @@ class FBConnectauthAction extends Action
|
||||
common_set_user($user);
|
||||
common_real_login(true);
|
||||
|
||||
common_debug("Registered new user $user->id from Facebook user $this->fbuid");
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
"Registered new user $user->id from Facebook user $this->fbuid");
|
||||
|
||||
common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)),
|
||||
303);
|
||||
@ -292,8 +292,9 @@ class FBConnectauthAction extends Action
|
||||
|
||||
$user = User::staticGet('nickname', $nickname);
|
||||
|
||||
if ($user) {
|
||||
common_debug("Legit user to connect to Facebook: $nickname");
|
||||
if (!empty($user)) {
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
"Legit user to connect to Facebook: $nickname");
|
||||
}
|
||||
|
||||
$result = $this->flinkUser($user->id, $this->fbuid);
|
||||
@ -303,7 +304,8 @@ class FBConnectauthAction extends Action
|
||||
return;
|
||||
}
|
||||
|
||||
common_debug("Connected Facebook user $this->fbuid to local user $user->id");
|
||||
common_debug('Facebook Connnect Plugin - ' .
|
||||
"Connected Facebook user $this->fbuid to local user $user->id");
|
||||
|
||||
common_set_user($user);
|
||||
common_real_login(true);
|
||||
@ -317,12 +319,13 @@ class FBConnectauthAction extends Action
|
||||
|
||||
$result = $this->flinkUser($user->id, $this->fbuid);
|
||||
|
||||
if (!$result) {
|
||||
if (empty($result)) {
|
||||
$this->serverError(_('Error connecting user to Facebook.'));
|
||||
return;
|
||||
}
|
||||
|
||||
common_debug("Connected Facebook user $this->fbuid to local user $user->id");
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
"Connected Facebook user $this->fbuid to local user $user->id");
|
||||
|
||||
// Return to Facebook connection settings tab
|
||||
common_redirect(common_local_url('FBConnectSettings'), 303);
|
||||
@ -330,16 +333,18 @@ class FBConnectauthAction extends Action
|
||||
|
||||
function tryLogin()
|
||||
{
|
||||
common_debug("Trying Facebook Login...");
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
"Trying login for Facebook user $this->fbuid.");
|
||||
|
||||
$flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_CONNECT_SERVICE);
|
||||
|
||||
if ($flink) {
|
||||
if (!empty($flink)) {
|
||||
$user = $flink->getUser();
|
||||
|
||||
if (!empty($user)) {
|
||||
|
||||
common_debug("Logged in Facebook user $flink->foreign_id as user $user->id ($user->nickname)");
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
"Logged in Facebook user $flink->foreign_id as user $user->id ($user->nickname)");
|
||||
|
||||
common_set_user($user);
|
||||
common_real_login(true);
|
||||
@ -348,7 +353,8 @@ class FBConnectauthAction extends Action
|
||||
|
||||
} else {
|
||||
|
||||
common_debug("No flink found for fbuid: $this->fbuid");
|
||||
common_debug('Facebook Connect Plugin - ' .
|
||||
"No flink found for fbuid: $this->fbuid - new user");
|
||||
|
||||
$this->showForm(null, $this->bestNewNickname());
|
||||
}
|
||||
@ -444,7 +450,8 @@ class FBConnectauthAction extends Action
|
||||
return reset($infos);
|
||||
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING, "Facebook client failure when requesting " .
|
||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||
"Facebook client failure when requesting " .
|
||||
join(",", $fields) . " on uid " . $fb_uid .
|
||||
" : ". $e->getMessage());
|
||||
return null;
|
||||
|
@ -214,7 +214,7 @@ class FBConnectPlugin extends Plugin
|
||||
$fbuid = $facebook->get_loggedin_user();
|
||||
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING,
|
||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||
'Problem getting Facebook user: ' .
|
||||
$e->getMessage());
|
||||
}
|
||||
@ -342,7 +342,7 @@ class FBConnectPlugin extends Plugin
|
||||
}
|
||||
|
||||
function onStartLogout($action)
|
||||
{
|
||||
{
|
||||
$action->logout();
|
||||
$fbuid = $this->loggedIn();
|
||||
|
||||
@ -351,8 +351,9 @@ class FBConnectPlugin extends Plugin
|
||||
$facebook = getFacebook();
|
||||
$facebook->expire_session();
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING, 'Could\'t logout of Facebook: ' .
|
||||
$e->getMessage());
|
||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||
'Could\'t logout of Facebook: ' .
|
||||
$e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@ -376,7 +377,8 @@ class FBConnectPlugin extends Plugin
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING, "Facebook client failure requesting profile pic!");
|
||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||
"Facebook client failure requesting profile pic!");
|
||||
}
|
||||
|
||||
return $url;
|
||||
|
@ -186,9 +186,9 @@ class FBConnectSettingsAction extends ConnectSettingsAction
|
||||
$facebook->clear_cookie_state();
|
||||
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING,
|
||||
'Couldn\'t clear Facebook cookies: ' .
|
||||
$e->getMessage());
|
||||
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
|
||||
'Couldn\'t clear Facebook cookies: ' .
|
||||
$e->getMessage());
|
||||
}
|
||||
|
||||
$this->showForm(_('You have disconnected from Facebook.'), true);
|
||||
|
2
scripts/fixup_utf8.php
Normal file → Executable file
2
scripts/fixup_utf8.php
Normal file → Executable file
@ -42,7 +42,7 @@ class UTF8FixerUpper
|
||||
{
|
||||
$this->args = $args;
|
||||
|
||||
if (array_key_exists('max_date', $args)) {
|
||||
if (!empty($args['max_date'])) {
|
||||
$this->max_date = strftime('%Y-%m-%d %H:%M:%S', strtotime($args['max_date']));
|
||||
} else {
|
||||
$this->max_date = strftime('%Y-%m-%d %H:%M:%S', time());
|
||||
|
Loading…
Reference in New Issue
Block a user