diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/action.php | 17 | ||||
-rw-r--r-- | lib/common.php | 6 | ||||
-rw-r--r-- | lib/connectsettingsaction.php | 30 | ||||
-rw-r--r-- | lib/htmloutputter.php | 7 | ||||
-rw-r--r-- | lib/jsonsearchresultslist.php | 4 | ||||
-rw-r--r-- | lib/mail.php | 40 | ||||
-rw-r--r-- | lib/noticelist.php | 7 | ||||
-rw-r--r-- | lib/router.php | 22 | ||||
-rw-r--r-- | lib/twitterapi.php | 123 |
9 files changed, 211 insertions, 45 deletions
diff --git a/lib/action.php b/lib/action.php index 1c6170693..326edf3a0 100644 --- a/lib/action.php +++ b/lib/action.php @@ -402,6 +402,14 @@ class Action extends HTMLOutputter // lawsuit function showPrimaryNav() { $user = common_current_user(); + $connect = ''; + if (common_config('xmpp', 'enabled')) { + $connect = 'imsettings'; + } else if (common_config('sms', 'enabled')) { + $connect = 'smssettings'; + } else if (common_config('twitter', 'enabled')) { + $connect = 'twittersettings'; + } $this->elementStart('dl', array('id' => 'site_nav_global_primary')); $this->element('dt', null, _('Primary site navigation')); @@ -413,12 +421,9 @@ class Action extends HTMLOutputter // lawsuit _('Home'), _('Personal profile and friends timeline'), false, 'nav_home'); $this->menuItem(common_local_url('profilesettings'), _('Account'), _('Change your email, avatar, password, profile'), false, 'nav_account'); - if (common_config('xmpp', 'enabled')) { - $this->menuItem(common_local_url('imsettings'), - _('Connect'), _('Connect to IM, SMS, Twitter'), false, 'nav_connect'); - } else { - $this->menuItem(common_local_url('smssettings'), - _('Connect'), _('Connect to SMS, Twitter'), false, 'nav_connect'); + if ($connect) { + $this->menuItem(common_local_url($connect), + _('Connect'), _('Connect to services'), false, 'nav_connect'); } if (common_config('invite', 'enabled')) { $this->menuItem(common_local_url('invite'), diff --git a/lib/common.php b/lib/common.php index becd250b0..645ae8c34 100644 --- a/lib/common.php +++ b/lib/common.php @@ -183,6 +183,12 @@ $config = array('piddir' => '/var/run', 'user' => false, 'group' => false), + 'emailpost' => + array('enabled' => true), + 'sms' => + array('enabled' => true), + 'twitter' => + array('enabled' => true), 'twitterbridge' => array('enabled' => false), 'integration' => diff --git a/lib/connectsettingsaction.php b/lib/connectsettingsaction.php index 30629680e..02c468a35 100644 --- a/lib/connectsettingsaction.php +++ b/lib/connectsettingsaction.php @@ -99,25 +99,27 @@ class ConnectSettingsNav extends Widget function show() { # action => array('prompt', 'title') - $menu = - array('imsettings' => - array(_('IM'), - _('Updates by instant messenger (IM)')), - 'smssettings' => - array(_('SMS'), - _('Updates by SMS')), - 'twittersettings' => - array(_('Twitter'), - _('Twitter integration options'))); + $menu = array(); + if (common_config('xmpp', 'enabled')) { + $menu['imsettings'] = + array(_('IM'), + _('Updates by instant messenger (IM)')); + } + if (common_config('sms', 'enabled')) { + $menu['smssettings'] = + array(_('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) { - if ($menuaction == 'imsettings' && - !common_config('xmpp', 'enabled')) { - continue; - } $this->action->menuItem(common_local_url($menuaction), $menudesc[0], $menudesc[1], diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index f4445b44f..604597116 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -350,7 +350,7 @@ class HTMLOutputter extends XMLOutputter function script($src, $type='text/javascript') { $url = parse_url($src); - if(! ($url->scheme || $url->host || $url->query || $url->fragment)) + if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) { $src = common_path($src) . '?version=' . LACONICA_VERSION; } @@ -370,11 +370,8 @@ class HTMLOutputter extends XMLOutputter */ function cssLink($src,$theme=null,$media=null) { - if (!$theme) { - $theme = common_config('site', 'theme'); - } $url = parse_url($src); - if(! ($url->scheme || $url->host || $url->query || $url->fragment)) + if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) { if(file_exists(theme_file($src,$theme))){ $src = theme_path($src, $theme) . '?version=' . LACONICA_VERSION; diff --git a/lib/jsonsearchresultslist.php b/lib/jsonsearchresultslist.php index 7beea9328..34a3d530e 100644 --- a/lib/jsonsearchresultslist.php +++ b/lib/jsonsearchresultslist.php @@ -207,7 +207,7 @@ class ResultItem $replier_profile = null; if ($this->notice->reply_to) { - $reply = Notice::staticGet(intval($notice->reply_to)); + $reply = Notice::staticGet(intval($this->notice->reply_to)); if ($reply) { $replier_profile = $reply->getProfile(); } @@ -224,7 +224,7 @@ class ResultItem $user = User::staticGet('id', $this->profile->id); - $this->iso_language_code = $this->user->language; + $this->iso_language_code = $user->language; $this->source = $this->getSourceLink($this->notice->source); diff --git a/lib/mail.php b/lib/mail.php index 16c1b0f30..33d1eb754 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -596,32 +596,44 @@ function mail_notify_attn($user, $notice) $bestname = $sender->getBestName(); common_init_locale($user->language); - + + if ($notice->conversation != $notice->id) { + $conversationEmailText = "The full conversation can be read here:\n\n". + "\t%5\$s\n\n "; + $conversationUrl = common_local_url('conversation', + array('id' => $notice->conversation)).'#notice-'.$notice->id; + } else { + $conversationEmailText = "%5\$s"; + $conversationUrl = null; + } + $subject = sprintf(_('%s sent a notice to your attention'), $bestname); - - $body = sprintf(_("%1\$s just sent a notice to your attention (an '@-reply') on %2\$s.\n\n". + + $body = sprintf(_("%1\$s just sent a notice to your attention (an '@-reply') on %2\$s.\n\n". "The notice is here:\n\n". "\t%3\$s\n\n" . "It reads:\n\n". "\t%4\$s\n\n" . + $conversationEmailText . "You can reply back here:\n\n". - "\t%5\$s\n\n" . + "\t%6\$s\n\n" . "The list of all @-replies for you here:\n\n" . - "%6\$s\n\n" . + "%7\$s\n\n" . "Faithfully yours,\n" . "%2\$s\n\n" . - "P.S. You can turn off these email notifications here: %7\$s\n"), - $bestname, - common_config('site', 'name'), + "P.S. You can turn off these email notifications here: %8\$s\n"), + $bestname,//%1 + common_config('site', 'name'),//%2 common_local_url('shownotice', - array('notice' => $notice->id)), - $notice->content, + array('notice' => $notice->id)),//%3 + $notice->content,//%4 + $conversationUrl,//%5 common_local_url('newnotice', - array('replyto' => $sender->nickname)), + array('replyto' => $sender->nickname)),//%6 common_local_url('replies', - array('nickname' => $user->nickname)), - common_local_url('emailsettings')); - + array('nickname' => $user->nickname)),//%7 + common_local_url('emailsettings'));//%8 + common_init_locale(); mail_to_user($user, $subject, $body); } diff --git a/lib/noticelist.php b/lib/noticelist.php index a8d5059ca..5429d943f 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -350,11 +350,10 @@ class NoticeListItem extends Widget function showNoticeLink() { - $noticeurl = common_local_url('shownotice', + if($this->notice->is_local){ + $noticeurl = common_local_url('shownotice', array('notice' => $this->notice->id)); - // XXX: we need to figure this out better. Is this right? - if (strcmp($this->notice->uri, $noticeurl) != 0 && - preg_match('/^http/', $this->notice->uri)) { + }else{ $noticeurl = $this->notice->uri; } $this->out->elementStart('a', array('rel' => 'bookmark', diff --git a/lib/router.php b/lib/router.php index 6651773c0..f03cfcf6d 100644 --- a/lib/router.php +++ b/lib/router.php @@ -413,6 +413,28 @@ class Router 'apiaction' => 'laconica')); // Groups + //'list' has to be handled differently, as php will not allow a method to be named 'list' + $m->connect('api/laconica/groups/list/:argument', + array('action' => 'api', + 'method' => 'list_groups', + 'apiaction' => 'groups')); + foreach (array('xml', 'json', 'rss', 'atom') as $e) { + $m->connect('api/laconica/groups/list.' . $e, + array('action' => 'api', + 'method' => 'list_groups.' . $e, + 'apiaction' => 'groups')); + } + + $m->connect('api/laconica/groups/:method', + array('action' => 'api', + 'apiaction' => 'statuses'), + array('method' => '(list_all|)(\.(atom|rss|xml|json))?')); + + $m->connect('api/statuses/:method/:argument', + array('action' => 'api', + 'apiaction' => 'statuses'), + array('method' => '(|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)')); + $m->connect('api/laconica/groups/:method/:argument', array('action' => 'api', 'apiaction' => 'groups')); diff --git a/lib/twitterapi.php b/lib/twitterapi.php index 4737c5874..a5dc2067f 100644 --- a/lib/twitterapi.php +++ b/lib/twitterapi.php @@ -233,6 +233,24 @@ class TwitterapiAction extends Action return $twitter_group; } + function twitter_rss_group_array($group) + { + $entry = array(); + $entry['content']=$group->description; + $entry['title']=$group->nickname; + $entry['link']=$group->permalink(); + $entry['published']=common_date_iso8601($group->created); + $entry['updated']==common_date_iso8601($group->modified); + $taguribase = common_config('integration', 'groupuri'); + $entry['id'] = "group:$groupuribase:$entry[link]"; + + $entry['description'] = $entry['content']; + $entry['pubDate'] = common_date_rfc2822($group->created); + $entry['guid'] = $entry['link']; + + return $entry; + } + function twitter_rss_entry_array($notice) { $profile = $notice->getProfile(); @@ -644,6 +662,65 @@ class TwitterapiAction extends Action } + function show_rss_groups($group, $title, $link, $subtitle) + { + + $this->init_document('rss'); + + $this->elementStart('channel'); + $this->element('title', null, $title); + $this->element('link', null, $link); + $this->element('description', null, $subtitle); + $this->element('language', null, 'en-us'); + $this->element('ttl', null, '40'); + + if (is_array($group)) { + foreach ($group as $g) { + $twitter_group = $this->twitter_rss_group_array($g); + $this->show_twitter_rss_item($twitter_group); + } + } else { + while ($group->fetch()) { + $twitter_group = $this->twitter_rss_group_array($group); + $this->show_twitter_rss_item($twitter_group); + } + } + + $this->elementEnd('channel'); + $this->end_twitter_rss(); + } + + function show_atom_groups($group, $title, $id, $link, $subtitle=null, $selfuri=null) + { + + $this->init_document('atom'); + + $this->element('title', null, $title); + $this->element('id', null, $id); + $this->element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null); + + if (!is_null($selfuri)) { + $this->element('link', array('href' => $selfuri, + 'rel' => 'self', 'type' => 'application/atom+xml'), null); + } + + $this->element('updated', null, common_date_iso8601('now')); + $this->element('subtitle', null, $subtitle); + + if (is_array($group)) { + foreach ($group as $g) { + $this->raw($g->asAtomEntry()); + } + } else { + while ($group->fetch()) { + $this->raw($group->asAtomEntry()); + } + } + + $this->end_document('atom'); + + } + function show_json_timeline($notice) { @@ -668,6 +745,52 @@ class TwitterapiAction extends Action $this->end_document('json'); } + function show_json_groups($group) + { + + $this->init_document('json'); + + $groups = array(); + + if (is_array($group)) { + foreach ($group as $g) { + $twitter_group = $this->twitter_group_array($g); + array_push($groups, $twitter_group); + } + } else { + while ($group->fetch()) { + $twitter_group = $this->twitter_group_array($group); + array_push($groups, $twitter_group); + } + } + + $this->show_json_objects($groups); + + $this->end_document('json'); + } + + function show_xml_groups($group) + { + + $this->init_document('xml'); + $this->elementStart('groups', array('type' => 'array')); + + if (is_array($group)) { + foreach ($group as $g) { + $twitter_group = $this->twitter_group_array($g); + $this->show_twitter_xml_group($twitter_group); + } + } else { + while ($group->fetch()) { + $twitter_group = $this->twitter_group_array($group); + $this->show_twitter_xml_group($twitter_group); + } + } + + $this->elementEnd('groups'); + $this->end_document('xml'); + } + function show_single_json_group($group) { $this->init_document('json'); |