forked from GNUsocial/gnu-social
Merge branch '0.7.x' into 0.8.x
This commit is contained in:
@@ -87,6 +87,8 @@ $config =
|
||||
'closed' => false,
|
||||
'inviteonly' => false,
|
||||
'private' => false,
|
||||
'ssl' => 'never',
|
||||
'sslserver' => null,
|
||||
'dupelimit' => 60), # default for same person saying the same thing
|
||||
'syslog' =>
|
||||
array('appname' => 'laconica', # for syslog
|
||||
@@ -151,6 +153,9 @@ $config =
|
||||
array('notify' => array()),
|
||||
'inboxes' =>
|
||||
array('enabled' => true), # on by default for new sites
|
||||
'newuser' =>
|
||||
array('subscribe' => null,
|
||||
'welcome' => null),
|
||||
);
|
||||
|
||||
$config['db'] = &PEAR::getStaticProperty('DB_DataObject','options');
|
||||
|
||||
@@ -179,7 +179,7 @@ function jabber_format_entry($profile, $notice)
|
||||
$xs->elementEnd('body');
|
||||
$xs->elementEnd('html');
|
||||
|
||||
$html = $xs->asString();
|
||||
$html = $xs->getString();
|
||||
|
||||
return $html . ' ' . $entry;
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ function get_all_languages() {
|
||||
'he' => array('q' => 0.5, 'lang' => 'he_IL', 'name' => 'Hebrew', 'direction' => 'rtl'),
|
||||
'it' => array('q' => 1, 'lang' => 'it_IT', 'name' => 'Italian', 'direction' => 'ltr'),
|
||||
'jp' => array('q' => 0.5, 'lang' => 'ja_JP', 'name' => 'Japanese', 'direction' => 'ltr'),
|
||||
'ko' => array('q' => 0.9, 'lang' => 'ko', 'name' => 'Korean', 'direction' => 'ltr'),
|
||||
'ko' => array('q' => 0.9, 'lang' => 'ko_KR', 'name' => 'Korean', 'direction' => 'ltr'),
|
||||
'mk' => array('q' => 0.5, 'lang' => 'mk_MK', 'name' => 'Macedonian', 'direction' => 'ltr'),
|
||||
'nb' => array('q' => 0.1, 'lang' => 'nb_NO', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
|
||||
'no' => array('q' => 0.1, 'lang' => 'nb_NO', 'name' => 'Norwegian (Bokmål)', 'direction' => 'ltr'),
|
||||
|
||||
10
lib/mail.php
10
lib/mail.php
@@ -554,17 +554,19 @@ function mail_notify_fave($other, $user, $notice)
|
||||
|
||||
$body = sprintf(_("%1\$s just added your notice from %2\$s".
|
||||
" as one of their favorites.\n\n" .
|
||||
"In case you forgot, you can see the text".
|
||||
" of your notice here:\n\n" .
|
||||
"The URL of your notice is:\n\n" .
|
||||
"%3\$s\n\n" .
|
||||
"You can see the list of %1\$s's favorites here:\n\n" .
|
||||
"The text of your notice is:\n\n" .
|
||||
"%4\$s\n\n" .
|
||||
"You can see the list of %1\$s's favorites here:\n\n" .
|
||||
"%5\$s\n\n" .
|
||||
"Faithfully yours,\n" .
|
||||
"%5\$s\n"),
|
||||
"%6\$s\n"),
|
||||
$bestname,
|
||||
common_exact_date($notice->created),
|
||||
common_local_url('shownotice',
|
||||
array('notice' => $notice->id)),
|
||||
$notice->content,
|
||||
common_local_url('showfavorites',
|
||||
array('nickname' => $user->nickname)),
|
||||
common_config('site', 'name'));
|
||||
|
||||
@@ -132,20 +132,14 @@ class MessageForm extends Form
|
||||
$mutual_users->free();
|
||||
unset($mutual_users);
|
||||
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
$this->out->elementStart('li', array('id' => 'notice_to'));
|
||||
$this->out->dropdown('to', _('To'), $mutual, null, false,
|
||||
($this->to) ? $this->to->id : null);
|
||||
$this->out->elementEnd('li');
|
||||
|
||||
$this->out->elementStart('li', array('id' => 'notice_text'));
|
||||
$this->out->element('textarea', array('id' => 'notice_data-text',
|
||||
'cols' => 35,
|
||||
'rows' => 4,
|
||||
'name' => 'content'),
|
||||
($this->content) ? $this->content : '');
|
||||
$this->out->elementEnd('li');
|
||||
$this->out->elementEnd('ul');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -156,14 +150,10 @@ class MessageForm extends Form
|
||||
|
||||
function formActions()
|
||||
{
|
||||
$this->out->elementStart('ul', 'form_actions');
|
||||
$this->out->elementStart('li', array('id' => 'notice_submit'));
|
||||
$this->out->element('input', array('id' => 'notice_action-submit',
|
||||
'class' => 'submit',
|
||||
'name' => 'message_send',
|
||||
'type' => 'submit',
|
||||
'value' => _('Send')));
|
||||
$this->out->elementEnd('li');
|
||||
$this->out->elementEnd('ul');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,9 +134,6 @@ class NoticeForm extends Form
|
||||
|
||||
function formData()
|
||||
{
|
||||
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
$this->out->elementStart('li', array('id' => 'notice_text'));
|
||||
$this->out->element('label', array('for' => 'notice_data-text'),
|
||||
sprintf(_('What\'s up, %s?'), $this->user->nickname));
|
||||
// XXX: vary by defined max size
|
||||
@@ -145,8 +142,6 @@ class NoticeForm extends Form
|
||||
'rows' => 4,
|
||||
'name' => 'status_textarea'),
|
||||
($this->content) ? $this->content : '');
|
||||
$this->out->elementEnd('li');
|
||||
$this->out->elementEnd('ul');
|
||||
|
||||
$this->out->elementStart('dl', 'form_note');
|
||||
$this->out->element('dt', null, _('Available characters'));
|
||||
@@ -168,14 +163,10 @@ class NoticeForm extends Form
|
||||
|
||||
function formActions()
|
||||
{
|
||||
$this->out->elementStart('ul', 'form_actions');
|
||||
$this->out->elementStart('li', array('id' => 'notice_submit'));
|
||||
$this->out->element('input', array('id' => 'notice_action-submit',
|
||||
'class' => 'submit',
|
||||
'name' => 'status_submit',
|
||||
'type' => 'submit',
|
||||
'value' => _('Send')));
|
||||
$this->out->elementEnd('li');
|
||||
$this->out->elementEnd('ul');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,8 +258,12 @@ class NoticeListItem extends Widget
|
||||
function showAuthor()
|
||||
{
|
||||
$this->out->elementStart('span', 'vcard author');
|
||||
$this->out->elementStart('a', array('href' => $this->profile->profileurl,
|
||||
'class' => 'url'));
|
||||
$attrs = array('href' => $this->profile->profileurl,
|
||||
'class' => 'url');
|
||||
if (!empty($this->profile->fullname)) {
|
||||
$attrs['title'] = $this->profile->fullname . ' (' . $this->profile->nickname . ') ';
|
||||
}
|
||||
$this->out->elementStart('a', $attrs);
|
||||
$this->showAvatar();
|
||||
$this->showNickname();
|
||||
$this->out->elementEnd('a');
|
||||
@@ -387,6 +391,7 @@ class NoticeListItem extends Widget
|
||||
case 'xmpp':
|
||||
case 'mail':
|
||||
case 'omb':
|
||||
case 'system':
|
||||
case 'api':
|
||||
$this->out->element('dd', null, $source_name);
|
||||
break;
|
||||
|
||||
@@ -50,7 +50,15 @@ function ping_broadcast_notice($notice) {
|
||||
"User-Agent: Laconica/".LACONICA_VERSION."\r\n",
|
||||
'content' => $req)));
|
||||
$file = file_get_contents($notify_url, false, $context);
|
||||
|
||||
if ($file === false || mb_strlen($file) == 0) {
|
||||
common_log(LOG_WARNING,
|
||||
"XML-RPC empty results for ping ($notify_url, $notice->id) ");
|
||||
continue;
|
||||
}
|
||||
|
||||
$response = xmlrpc_decode($file);
|
||||
|
||||
if (xmlrpc_is_fault($response)) {
|
||||
common_log(LOG_WARNING,
|
||||
"XML-RPC error for ping ($notify_url, $notice->id) ".
|
||||
|
||||
@@ -68,8 +68,8 @@ class Router
|
||||
}
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
|
||||
function initialize()
|
||||
{
|
||||
$m = Net_URL_Mapper::getInstance();
|
||||
|
||||
// In the "root"
|
||||
@@ -136,14 +136,17 @@ class Router
|
||||
|
||||
foreach (array('group', 'people', 'notice') as $s) {
|
||||
$m->connect('search/'.$s, array('action' => $s.'search'));
|
||||
$m->connect('search/'.$s.'?q=:q', array('action' => $s.'search'),array('q' => '.+'));
|
||||
$m->connect('search/'.$s.'?q=:q',
|
||||
array('action' => $s.'search'),
|
||||
array('q' => '.+'));
|
||||
}
|
||||
|
||||
// The second of these is needed to make the link work correctly
|
||||
// when inserted into the page. The first is needed to match the
|
||||
// route on the way in. Seems to be another Net_URL_Mapper bug to me.
|
||||
// when inserted into the page. The first is needed to match the
|
||||
// route on the way in. Seems to be another Net_URL_Mapper bug to me.
|
||||
$m->connect('search/notice/rss', array('action' => 'noticesearchrss'));
|
||||
$m->connect('search/notice/rss?q=:q', array('action' => 'noticesearchrss'),array('q' => '.+'));
|
||||
$m->connect('search/notice/rss?q=:q', array('action' => 'noticesearchrss'),
|
||||
array('q' => '.+'));
|
||||
|
||||
// notice
|
||||
|
||||
@@ -269,8 +272,8 @@ class Router
|
||||
foreach (array('xml', 'json', 'rss', 'atom') as $e) {
|
||||
$m->connect('api/direct_messages/sent.'.$e,
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'direct_messages',
|
||||
'method' => 'sent.'.$e));
|
||||
'apiaction' => 'direct_messages',
|
||||
'method' => 'sent.'.$e));
|
||||
}
|
||||
|
||||
$m->connect('api/direct_messages/destroy/:argument',
|
||||
@@ -334,9 +337,9 @@ class Router
|
||||
|
||||
foreach (array('xml', 'json', 'rss', 'atom') as $e) {
|
||||
$m->connect('api/favorites.'.$e,
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'favorites',
|
||||
'method' => 'favorites.'.$e));
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'favorites',
|
||||
'method' => 'favorites.'.$e));
|
||||
}
|
||||
|
||||
// notifications
|
||||
@@ -421,7 +424,7 @@ class Router
|
||||
$match = $this->m->match($path);
|
||||
} catch (Net_URL_Mapper_InvalidException $e) {
|
||||
common_log(LOG_ERR, "Problem getting route for $path - " .
|
||||
$e->getMessage());
|
||||
$e->getMessage());
|
||||
$cac = new ClientErrorAction("Page not found.", 404);
|
||||
$cac->showPage();
|
||||
}
|
||||
@@ -431,8 +434,6 @@ class Router
|
||||
|
||||
function build($action, $args=null, $params=null, $fragment=null)
|
||||
{
|
||||
if($params!=null)
|
||||
common_log(LOG_DEBUG,"build: ".$action." ".print_r($args,true)." ".print_r($params,true));
|
||||
$action_arg = array('action' => $action);
|
||||
|
||||
if ($args) {
|
||||
@@ -441,8 +442,17 @@ class Router
|
||||
$args = $action_arg;
|
||||
}
|
||||
|
||||
if($params!=null)
|
||||
common_log(LOG_DEBUG,"generate args:".print_r($args,true));
|
||||
return $this->m->generate($args, $params, $fragment);
|
||||
$url = $this->m->generate($args, $params, $fragment);
|
||||
|
||||
// Due to a bug in the Net_URL_Mapper code, the returned URL may
|
||||
// contain a malformed query of the form ?p1=v1?p2=v2?p3=v3. We
|
||||
// repair that here rather than modifying the upstream code...
|
||||
|
||||
$qpos = strpos($url, '?');
|
||||
if ($qpos !== false) {
|
||||
$url = substr($url, 0, $qpos+1) .
|
||||
str_replace('?', '&', substr($url, $qpos+1));
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
|
||||
47
lib/util.php
47
lib/util.php
@@ -622,9 +622,13 @@ function common_at_link($sender_id, $nickname)
|
||||
$url = $recipient->profileurl;
|
||||
}
|
||||
$xs = new XMLStringer(false);
|
||||
$attrs = array('href' => $url,
|
||||
'class' => 'url');
|
||||
if (!empty($recipient->fullname)) {
|
||||
$attrs['title'] = $recipient->fullname . ' (' . $recipient->nickname . ')';
|
||||
}
|
||||
$xs->elementStart('span', 'vcard');
|
||||
$xs->elementStart('a', array('href' => $url,
|
||||
'class' => 'url'));
|
||||
$xs->elementStart('a', $attrs);
|
||||
$xs->element('span', 'fn nickname', $nickname);
|
||||
$xs->elementEnd('a');
|
||||
$xs->elementEnd('span');
|
||||
@@ -639,10 +643,14 @@ function common_group_link($sender_id, $nickname)
|
||||
$sender = Profile::staticGet($sender_id);
|
||||
$group = User_group::staticGet('nickname', common_canonical_nickname($nickname));
|
||||
if ($group && $sender->isMember($group)) {
|
||||
$attrs = array('href' => $group->permalink(),
|
||||
'class' => 'url');
|
||||
if (!empty($group->fullname)) {
|
||||
$attrs['title'] = $group->fullname . ' (' . $group->nickname . ')';
|
||||
}
|
||||
$xs = new XMLStringer();
|
||||
$xs->elementStart('span', 'vcard');
|
||||
$xs->elementStart('a', array('href' => $group->permalink(),
|
||||
'class' => 'url'));
|
||||
$xs->elementStart('a', $attrs);
|
||||
$xs->element('span', 'fn nickname', $nickname);
|
||||
$xs->elementEnd('a');
|
||||
$xs->elementEnd('span');
|
||||
@@ -713,25 +721,46 @@ function common_relative_profile($sender, $nickname, $dt=null)
|
||||
|
||||
function common_local_url($action, $args=null, $params=null, $fragment=null)
|
||||
{
|
||||
static $sensitive = array('login', 'register', 'passwordsettings',
|
||||
'twittersettings', 'finishopenidlogin',
|
||||
'api');
|
||||
|
||||
$r = Router::get();
|
||||
$path = $r->build($action, $args, $params, $fragment);
|
||||
|
||||
$ssl = in_array($action, $sensitive);
|
||||
|
||||
if (common_config('site','fancy')) {
|
||||
$url = common_path(mb_substr($path, 1));
|
||||
$url = common_path(mb_substr($path, 1), $ssl);
|
||||
} else {
|
||||
if (mb_strpos($path, '/index.php') === 0) {
|
||||
$url = common_path(mb_substr($path, 1));
|
||||
$url = common_path(mb_substr($path, 1), $ssl);
|
||||
} else {
|
||||
$url = common_path('index.php'.$path);
|
||||
$url = common_path('index.php'.$path, $ssl);
|
||||
}
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
||||
function common_path($relative)
|
||||
function common_path($relative, $ssl=false)
|
||||
{
|
||||
$pathpart = (common_config('site', 'path')) ? common_config('site', 'path')."/" : '';
|
||||
return "http://".common_config('site', 'server').'/'.$pathpart.$relative;
|
||||
|
||||
if (($ssl && (common_config('site', 'ssl') === 'sometimes'))
|
||||
|| common_config('site', 'ssl') === 'always') {
|
||||
$proto = 'https';
|
||||
if (is_string(common_config('site', 'sslserver')) &&
|
||||
mb_strlen(common_config('site', 'sslserver')) > 0) {
|
||||
$serverpart = common_config('site', 'sslserver');
|
||||
} else {
|
||||
$serverpart = common_config('site', 'server');
|
||||
}
|
||||
} else {
|
||||
$proto = 'http';
|
||||
$serverpart = common_config('site', 'server');
|
||||
}
|
||||
|
||||
return $proto.'://'.$serverpart.'/'.$pathpart.$relative;
|
||||
}
|
||||
|
||||
function common_date_string($dt)
|
||||
|
||||
Reference in New Issue
Block a user