From 3a59199040a4360b279c6c51700b74a643bbaf51 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 12 Jun 2009 19:38:04 +0800 Subject: [PATCH 01/15] Fix "Undefined property: DisfavorAction::$id" --- actions/disfavor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/disfavor.php b/actions/disfavor.php index bc13b09da5..4064a0d988 100644 --- a/actions/disfavor.php +++ b/actions/disfavor.php @@ -75,7 +75,7 @@ class DisfavorAction extends Action return; } $fave = new Fave(); - $fave->user_id = $this->id; + $fave->user_id = $user->id; $fave->notice_id = $notice->id; if (!$fave->find(true)) { $this->clientError(_('This notice is not a favorite!')); From 216ada5cc4cc73eb8c9d22e9ad19cec0d07ff9ea Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 12 Jun 2009 19:48:26 +0800 Subject: [PATCH 02/15] Fix "Trying to get property of non-object" errors in groupeditform.php --- lib/groupeditform.php | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/groupeditform.php b/lib/groupeditform.php index ca674f3c8e..3014dd1c56 100644 --- a/lib/groupeditform.php +++ b/lib/groupeditform.php @@ -131,30 +131,46 @@ class GroupEditForm extends Form function formData() { + if ($this->group) { + $id = $this->group->id; + $nickname = $this->group->nickname; + $fullname = $this->group->fullname; + $homepage = $this->group->homepage; + $description = $this->group->description; + $location = $this->group->location; + } else { + $id = ''; + $nickname = ''; + $fullname = ''; + $homepage = ''; + $description = ''; + $location = ''; + } + $this->out->elementStart('ul', 'form_data'); $this->out->elementStart('li'); - $this->out->hidden('groupid', $this->group->id); + $this->out->hidden('groupid', $id); $this->out->input('nickname', _('Nickname'), - ($this->out->arg('nickname')) ? $this->out->arg('nickname') : $this->group->nickname, + ($this->out->arg('nickname')) ? $this->out->arg('nickname') : $nickname, _('1-64 lowercase letters or numbers, no punctuation or spaces')); $this->out->elementEnd('li'); $this->out->elementStart('li'); $this->out->input('fullname', _('Full name'), - ($this->out->arg('fullname')) ? $this->out->arg('fullname') : $this->group->fullname); + ($this->out->arg('fullname')) ? $this->out->arg('fullname') : $fullname); $this->out->elementEnd('li'); $this->out->elementStart('li'); $this->out->input('homepage', _('Homepage'), - ($this->out->arg('homepage')) ? $this->out->arg('homepage') : $this->group->homepage, + ($this->out->arg('homepage')) ? $this->out->arg('homepage') : $homepage, _('URL of the homepage or blog of the group or topic')); $this->out->elementEnd('li'); $this->out->elementStart('li'); $this->out->textarea('description', _('Description'), - ($this->out->arg('description')) ? $this->out->arg('description') : $this->group->description, + ($this->out->arg('description')) ? $this->out->arg('description') : $description, _('Describe the group or topic in 140 chars')); $this->out->elementEnd('li'); $this->out->elementStart('li'); $this->out->input('location', _('Location'), - ($this->out->arg('location')) ? $this->out->arg('location') : $this->group->location, + ($this->out->arg('location')) ? $this->out->arg('location') : $location, _('Location for the group, if any, like "City, State (or Region), Country"')); $this->out->elementEnd('li'); $this->out->elementEnd('ul'); From 1b76df4b6aa4d5f092fa4f7188a9e853443452e1 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 12 Jun 2009 19:49:33 +0800 Subject: [PATCH 03/15] Fix "Undefined variable: cnt" --- actions/groups.php | 1 + 1 file changed, 1 insertion(+) diff --git a/actions/groups.php b/actions/groups.php index 26b52a5fcd..1cf3599593 100644 --- a/actions/groups.php +++ b/actions/groups.php @@ -113,6 +113,7 @@ class GroupsAction extends Action $groups->orderBy('created DESC'); $groups->limit($offset, $limit); + $cnt = 0; if ($groups->find()) { $gl = new GroupList($groups, null, $this); $cnt = $gl->show(); From cfea2b0c4e21bc61ec250c8f34ec8c9aa6536e83 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 12 Jun 2009 19:55:41 +0800 Subject: [PATCH 04/15] Fix "Trying to get property of non-object" errors when accessing the people search results page --- lib/peoplesearchresults.php | 2 +- lib/profilelist.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/peoplesearchresults.php b/lib/peoplesearchresults.php index d3f8408525..9cd162baa0 100644 --- a/lib/peoplesearchresults.php +++ b/lib/peoplesearchresults.php @@ -56,7 +56,7 @@ class PeopleSearchResults extends ProfileList function __construct($profile, $terms, $action) { - parent::__construct($profile, $terms, $action); + parent::__construct($profile, null, $action); $this->terms = array_map('preg_quote', array_map('htmlspecialchars', $terms)); $this->pattern = '/('.implode('|',$terms).')/i'; diff --git a/lib/profilelist.php b/lib/profilelist.php index a4cc235552..c22da00cb2 100644 --- a/lib/profilelist.php +++ b/lib/profilelist.php @@ -208,7 +208,7 @@ class ProfileList extends Widget } $this->out->elementEnd('li'); $this->out->elementStart('li', 'entity_block'); - if ($user->id == $this->owner->id) { + if ($this->owner && $user->id == $this->owner->id) { $this->showBlockForm(); } $this->out->elementEnd('li'); From e2b20bd1e6087594b6069117ccb675f751ddc17a Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 12 Jun 2009 19:58:30 +0800 Subject: [PATCH 05/15] Fix "Trying to get property of non-object" errors when a user tries to log in using an unknown nickname --- lib/util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util.php b/lib/util.php index b3a94a5a01..32e178b3ee 100644 --- a/lib/util.php +++ b/lib/util.php @@ -114,7 +114,7 @@ function common_check_user($nickname, $password) return false; } $user = User::staticGet('nickname', $nickname); - if (is_null($user)) { + if (is_null($user) || $user === false) { return false; } else { if (0 == strcmp(common_munge_password($password, $user->id), From 53f31a247e4355318e8a997451930a1b1772099c Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Fri, 12 Jun 2009 20:03:18 +0800 Subject: [PATCH 06/15] Fix missing max_id in API search calls --- actions/twitapisearchatom.php | 1 + lib/jsonsearchresultslist.php | 1 + 2 files changed, 2 insertions(+) diff --git a/actions/twitapisearchatom.php b/actions/twitapisearchatom.php index eb9ab5d8e9..c223a7e27c 100644 --- a/actions/twitapisearchatom.php +++ b/actions/twitapisearchatom.php @@ -169,6 +169,7 @@ class TwitapisearchatomAction extends TwitterapiAction $this->cnt = $notice->find(); $cnt = 0; + $this->max_id = 0; while ($notice->fetch()) { diff --git a/lib/jsonsearchresultslist.php b/lib/jsonsearchresultslist.php index f786c20a80..7beea9328d 100644 --- a/lib/jsonsearchresultslist.php +++ b/lib/jsonsearchresultslist.php @@ -89,6 +89,7 @@ class JSONSearchResultsList function show() { $cnt = 0; + $this->max_id = 0; $time_start = microtime(true); From acff6d4bfd05ffba5f0819f2dad56af40c899e76 Mon Sep 17 00:00:00 2001 From: Eric Helgeson Date: Fri, 12 Jun 2009 16:43:40 -0500 Subject: [PATCH 07/15] Verbage of a closed invite only site, it shouldnt ask you to register. --- actions/public.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/public.php b/actions/public.php index 27153f1315..c04843383d 100644 --- a/actions/public.php +++ b/actions/public.php @@ -173,7 +173,7 @@ class PublicAction extends Action if (common_logged_in()) { $message .= _('Be the first to post!'); } - else { + if (! (common_config('site','closed') || common_config('site','inviteonly'))) { $message .= _('Why not [register an account](%%action.register%%) and be the first to post!'); } From 6d308f6ffe3f894c60fafaea3ceaef86d30dfe1d Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Sun, 14 Jun 2009 16:17:22 +0800 Subject: [PATCH 08/15] Adds $config['invite']['enabled'] to enable/disable invites. The invite function may not applicable for private and/or closed installs. This adds a configuration option to enable/disable invites (defaulting to enabled), hides the "Invite" nav item when necessary, and adds a check to actions/invite.php. Note that I haven't tried the Facebook application so I didn't add any checks to actions/facebookinvite.php. --- README | 7 +++++++ actions/invite.php | 4 +++- config.php.sample | 3 +++ lib/action.php | 12 +++++++----- lib/common.php | 2 ++ lib/facebookaction.php | 14 ++++++++------ lib/subgroupnav.php | 2 +- plugins/FBConnect/FBConnectPlugin.php | 12 +++++++----- 8 files changed, 38 insertions(+), 18 deletions(-) diff --git a/README b/README index 2099f94d62..679fa8ee31 100644 --- a/README +++ b/README @@ -1067,6 +1067,13 @@ debug: if turned on, this will make the XMPP library blurt out all of public: an array of JIDs to send _all_ notices to. This is useful for participating in third-party search and archiving services. +invite +------ + +For configuring invites. + +enabled: Whether to allow users to send invites. Default true. + tag --- diff --git a/actions/invite.php b/actions/invite.php index 7e52cdbcc6..9631f7a7f0 100644 --- a/actions/invite.php +++ b/actions/invite.php @@ -35,7 +35,9 @@ class InviteAction extends Action function handle($args) { parent::handle($args); - if (!common_logged_in()) { + if (!common_config('invite', 'enabled')) { + $this->clientError(_('Invites have been disabled.')); + } else if (!common_logged_in()) { $this->clientError(sprintf(_('You must be logged in to invite other users to use %s'), common_config('site', 'name'))); return; diff --git a/config.php.sample b/config.php.sample index 636f4cf8e2..2e5bcaca0a 100644 --- a/config.php.sample +++ b/config.php.sample @@ -86,6 +86,9 @@ $config['sphinx']['port'] = 3312; // $config['xmpp']['public'][] = 'someindexer@example.net'; // $config['xmpp']['debug'] = false; +// Turn off invites +// $config['invite']['enabled'] = false; + // Default locale info // $config['site']['timezone'] = 'Pacific/Auckland'; // $config['site']['language'] = 'en_NZ'; diff --git a/lib/action.php b/lib/action.php index 89a8c8f4d3..12d122f120 100644 --- a/lib/action.php +++ b/lib/action.php @@ -422,11 +422,13 @@ class Action extends HTMLOutputter // lawsuit $this->menuItem(common_local_url('smssettings'), _('Connect'), _('Connect to SMS, Twitter'), false, 'nav_connect'); } - $this->menuItem(common_local_url('invite'), - _('Invite'), - sprintf(_('Invite friends and colleagues to join you on %s'), - common_config('site', 'name')), - false, 'nav_invitecontact'); + if (common_config('invite', 'enabled')) { + $this->menuItem(common_local_url('invite'), + _('Invite'), + sprintf(_('Invite friends and colleagues to join you on %s'), + common_config('site', 'name')), + false, 'nav_invitecontact'); + } $this->menuItem(common_local_url('logout'), _('Logout'), _('Logout from the site'), false, 'nav_logout'); } diff --git a/lib/common.php b/lib/common.php index 6bf4ad21f5..b51661f2a8 100644 --- a/lib/common.php +++ b/lib/common.php @@ -130,6 +130,8 @@ $config = 'host' => null, # only set if != server 'debug' => false, # print extra debug info 'public' => array()), # JIDs of users who want to receive the public stream + 'invite' => + array('enabled' => true), 'sphinx' => array('enabled' => false, 'server' => 'localhost', diff --git a/lib/facebookaction.php b/lib/facebookaction.php index a445750f7e..1ae90d53bd 100644 --- a/lib/facebookaction.php +++ b/lib/facebookaction.php @@ -213,12 +213,14 @@ class FacebookAction extends Action array('href' => 'index.php', 'title' => _('Home')), _('Home')); $this->elementEnd('li'); - $this->elementStart('li', - array('class' => - ($this->action == 'facebookinvite') ? 'current' : 'facebook_invite')); - $this->element('a', - array('href' => 'invite.php', 'title' => _('Invite')), _('Invite')); - $this->elementEnd('li'); + if (common_config('invite', 'enabled')) { + $this->elementStart('li', + array('class' => + ($this->action == 'facebookinvite') ? 'current' : 'facebook_invite')); + $this->element('a', + array('href' => 'invite.php', 'title' => _('Invite')), _('Invite')); + $this->elementEnd('li'); + } $this->elementStart('li', array('class' => diff --git a/lib/subgroupnav.php b/lib/subgroupnav.php index 4a9b36ae8f..5209919232 100644 --- a/lib/subgroupnav.php +++ b/lib/subgroupnav.php @@ -100,7 +100,7 @@ class SubGroupNav extends Widget $this->user->nickname), $action == 'usergroups', 'nav_usergroups'); - if (!is_null($cur) && $this->user->id === $cur->id) { + if (common_config('invite', 'enabled') && !is_null($cur) && $this->user->id === $cur->id) { $this->out->menuItem(common_local_url('invite'), _('Invite'), sprintf(_('Invite friends and colleagues to join you on %s'), diff --git a/plugins/FBConnect/FBConnectPlugin.php b/plugins/FBConnect/FBConnectPlugin.php index a366985be4..11dc568a9a 100644 --- a/plugins/FBConnect/FBConnectPlugin.php +++ b/plugins/FBConnect/FBConnectPlugin.php @@ -200,11 +200,13 @@ class FBConnectPlugin extends Plugin $action->menuItem(common_local_url('smssettings'), _('Connect'), _('Connect to SMS, Twitter'), false, 'nav_connect'); } - $action->menuItem(common_local_url('invite'), - _('Invite'), - sprintf(_('Invite friends and colleagues to join you on %s'), - common_config('site', 'name')), - false, 'nav_invitecontact'); + 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 if ($flink && $fbuid > 0) { From f7d488d4b2bfdc8dfa6b5a2bc2931dbf824509a0 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Sun, 14 Jun 2009 16:39:31 +0800 Subject: [PATCH 09/15] Fixes the notice search RSS feeds / API results for searches that return no matches. If a user does a notice search that should return no matching notices, the RSS feed / API results for that search currently returns all notices instead of no notices. This fixes it so that an empty list is returned instead. --- actions/noticesearchrss.php | 13 +++++++++---- actions/twitapisearchatom.php | 29 +++++++++++++++++------------ actions/twitapisearchjson.php | 9 ++++++--- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/actions/noticesearchrss.php b/actions/noticesearchrss.php index f6da969ee4..94bf6ba30a 100644 --- a/actions/noticesearchrss.php +++ b/actions/noticesearchrss.php @@ -67,11 +67,16 @@ class NoticesearchrssAction extends Rss10Action if (!$limit) $limit = 20; $search_engine->limit(0, $limit, true); - $search_engine->query($q); - $notice->find(); + if (false === $search_engine->query($q)) { + $cnt = 0; + } else { + $cnt = $notice->find(); + } - while ($notice->fetch()) { - $notices[] = clone($notice); + if ($cnt > 0) { + while ($notice->fetch()) { + $notices[] = clone($notice); + } } return $notices; diff --git a/actions/twitapisearchatom.php b/actions/twitapisearchatom.php index eb9ab5d8e9..708b1494d1 100644 --- a/actions/twitapisearchatom.php +++ b/actions/twitapisearchatom.php @@ -165,24 +165,29 @@ class TwitapisearchatomAction extends TwitterapiAction $search_engine->set_sort_mode('chron'); $search_engine->limit(($this->page - 1) * $this->rpp, $this->rpp + 1, true); - $search_engine->query($q); - $this->cnt = $notice->find(); + if (false === $search_engine->query($q)) { + $this->cnt = 0; + } else { + $this->cnt = $notice->find(); + } $cnt = 0; - while ($notice->fetch()) { + if ($this->cnt > 0) { + while ($notice->fetch()) { - ++$cnt; + ++$cnt; - if (!$this->max_id) { - $this->max_id = $notice->id; + if (!$this->max_id) { + $this->max_id = $notice->id; + } + + if ($cnt > $this->rpp) { + break; + } + + $notices[] = clone($notice); } - - if ($cnt > $this->rpp) { - break; - } - - $notices[] = clone($notice); } return $notices; diff --git a/actions/twitapisearchjson.php b/actions/twitapisearchjson.php index b0e3be687c..27a717bfc9 100644 --- a/actions/twitapisearchjson.php +++ b/actions/twitapisearchjson.php @@ -124,8 +124,11 @@ class TwitapisearchjsonAction extends TwitterapiAction $search_engine = $notice->getSearchEngine('identica_notices'); $search_engine->set_sort_mode('chron'); $search_engine->limit(($this->page - 1) * $this->rpp, $this->rpp + 1, true); - $search_engine->query($q); - $cnt = $notice->find(); + if (false === $search_engine->query($q)) { + $cnt = 0; + } else { + $cnt = $notice->find(); + } // TODO: since_id, lang, geocode @@ -146,4 +149,4 @@ class TwitapisearchjsonAction extends TwitterapiAction { return true; } -} \ No newline at end of file +} From 43680ed0c2cf83448d755fa1edff42711d06a82c Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Sun, 14 Jun 2009 17:03:22 +0800 Subject: [PATCH 10/15] Fixes two PHP Warnings ("Invalid argument supplied for foreach() in /var/www/mmmu/lib/rssaction.php") when accessing the RSS feed of a group that has no notices. --- actions/grouprss.php | 1 + 1 file changed, 1 insertion(+) diff --git a/actions/grouprss.php b/actions/grouprss.php index 0b7280a11c..2bdcaafb27 100644 --- a/actions/grouprss.php +++ b/actions/grouprss.php @@ -116,6 +116,7 @@ class groupRssAction extends Rss10Action return null; } + $notices = array(); $notice = $group->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); while ($notice->fetch()) { From 4450f3352c4dafcbe132146873ef9fad251d9714 Mon Sep 17 00:00:00 2001 From: Eric Helgeson Date: Tue, 16 Jun 2009 17:18:48 -0500 Subject: [PATCH 11/15] Needed the else. Tested logged in/out ; site closed/inviteonly/both --- actions/public.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/actions/public.php b/actions/public.php index c04843383d..2c8083320e 100644 --- a/actions/public.php +++ b/actions/public.php @@ -173,9 +173,11 @@ class PublicAction extends Action if (common_logged_in()) { $message .= _('Be the first to post!'); } - if (! (common_config('site','closed') || common_config('site','inviteonly'))) { - $message .= _('Why not [register an account](%%action.register%%) and be the first to post!'); - } + else { + if (! (common_config('site','closed') || common_config('site','inviteonly'))) { + $message .= _('Why not [register an account](%%action.register%%) and be the first to post!'); + } + } $this->elementStart('div', 'guide'); $this->raw(common_markup_to_html($message)); From 3a3614fc5523442b87b7625207d45095928f0087 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Fri, 26 Jun 2009 22:42:52 +1200 Subject: [PATCH 12/15] also check for write permission to background folder --- install.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.php b/install.php index b94a929360..570b08edf4 100644 --- a/install.php +++ b/install.php @@ -72,6 +72,12 @@ function checkPrereqs()

Cannot write background directory: /background/

+

On your server, try this command: chmod a+w /background/

+ Date: Wed, 10 Jun 2009 13:16:11 +0000 Subject: [PATCH 13/15] Laconica defaults to a locale 'en' which uses language 'en'. Unfortunately, this language doesn't exist -- properly it's en_US. This causes a lot of spammy messages in syslog. This fix simply changes 'en' to have the same properties as 'en-us', i.e. a language of en_US and a description of 'English (US)'. --- lib/language.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/language.php b/lib/language.php index cd6498d30b..3ea3dd2aa0 100644 --- a/lib/language.php +++ b/lib/language.php @@ -108,7 +108,7 @@ function get_all_languages() { '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-gb' => array('q' => 1, 'lang' => 'en_GB', 'name' => 'English (British)', 'direction' => 'ltr'), - 'en' => array('q' => 1, 'lang' => 'en', 'name' => 'English', 'direction' => 'ltr'), + 'en' => array('q' => 1, 'lang' => 'en_US', 'name' => 'English (US)', 'direction' => 'ltr'), 'es' => array('q' => 1, 'lang' => 'es', 'name' => 'Spanish', 'direction' => 'ltr'), 'fi' => array('q' => 1, 'lang' => 'fi', 'name' => 'Finnish', 'direction' => 'ltr'), 'fr-fr' => array('q' => 1, 'lang' => 'fr_FR', 'name' => 'French', 'direction' => 'ltr'), From b416df93128e6ffc42ad62233f92ab617f809de1 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 11 Jun 2009 13:07:41 +0000 Subject: [PATCH 14/15] Add site-wide option to change the length at which URLs are auto-shortened --- README | 3 +++ lib/Shorturl_api.php | 2 +- lib/common.php | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README b/README index e02fa02d31..0f1b5a43b4 100644 --- a/README +++ b/README @@ -906,6 +906,9 @@ sslserver: use an alternate server name for SSL URLs, like parameters correctly so that both the SSL server and the "normal" server can access the session cookie and preferably other cookies as well. +shorturllength: Length of URL at which URLs in a message exceeding 140 + characters will be sent to the user's chosen + shortening service. db -- diff --git a/lib/Shorturl_api.php b/lib/Shorturl_api.php index 29f4eb3a66..22d5b4cb54 100644 --- a/lib/Shorturl_api.php +++ b/lib/Shorturl_api.php @@ -40,7 +40,7 @@ class ShortUrlApi } private function is_long($url) { - return strlen($url) >= $this->long_limit; + return strlen($url) >= common_config('site', 'shorturllength'); } protected function http_post($data) { diff --git a/lib/common.php b/lib/common.php index e10f24b3b8..5d451463b9 100644 --- a/lib/common.php +++ b/lib/common.php @@ -120,6 +120,7 @@ $config = 'private' => false, 'ssl' => 'never', 'sslserver' => null, + 'shorturllength' => 30, 'dupelimit' => 60), # default for same person saying the same thing 'syslog' => array('appname' => 'laconica', # for syslog From fbb7757c4b546bee7b2bf224e5544f7af3fa7d94 Mon Sep 17 00:00:00 2001 From: Dan Moore Date: Fri, 5 Jun 2009 01:01:25 -0400 Subject: [PATCH 15/15] Cleaning up comments at top of favor.php. --- actions/favor.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/favor.php b/actions/favor.php index ec86b17e69..fe51e34a27 100644 --- a/actions/favor.php +++ b/actions/favor.php @@ -12,8 +12,6 @@ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://laconi.ca/ * - -/* * Laconica - a distributed open-source microblogging tool * Copyright (C) 2008, 2009, Control Yourself, Inc. *