]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #4380 from annando/nodeinfo2
authorHypolite Petovan <mrpetovan@gmail.com>
Fri, 2 Feb 2018 14:56:03 +0000 (09:56 -0500)
committerGitHub <noreply@github.com>
Fri, 2 Feb 2018 14:56:03 +0000 (09:56 -0500)
We now support querying nodeinfo 2.0

doc/Developers-Intro.md
include/api.php
include/like.php [deleted file]
library/OAuth1.php
mod/like.php
src/Model/Item.php
util/messages.po

index a5d17a2211efb445810791ccfc8d7728916b64c6..b1a4d3e4bf4337ec65cf6b17bb36322d5ae4a47b 100644 (file)
@@ -48,6 +48,23 @@ Friendica uses [Composer](https://getcomposer.org) to manage dependencies librar
 
 It's a command-line tool that downloads required libraries into the `vendor` folder and makes any namespaced class in `src` available through the whole application through `boot.php`.
 
+If you want to have git automatically update the dependencies with composer, you can use the `post-merge` [git-hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) with a script similar to this one:
+
+    #/usr/bin/env bash
+    # MIT © Sindre Sorhus - sindresorhus.com
+    # forked by Gianluca Guarini
+    # phponly by Ivo Bathke ;)
+    # modified for Friendica by Tobias Diekershoff
+    changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
+    check_run() {
+                   echo "$changed_files" | grep --quiet "$1" && eval "$2"
+    }
+    # `composer install` if the `composer.lock` file gets changed
+    # to update all the php dependencies
+    check_run composer.lock "util/composer.phar install --no-dev"
+
+just place it into `.git/hooks/post-merge` and make it executeable.
+
 * [Class autoloading](help/autoloader)
 * [Using Composer](help/Composer)
 * [How To Move Classes to `src`](help/Developer-How-To-Move-Classes-to-src)
@@ -112,7 +129,7 @@ Have a look at our [issue tracker](https://github.com/friendica/friendica) on gi
 * Try to reproduce a bug that needs more inquiries and write down what you find out.
 * If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
 * Fix a bug if you can. Please make the pull request against the *develop* branch of the repository.
-* There is a *Junior Job* label for issues we think might be a good point to start with.
+* There is a *[Junior Job](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A"Junior+Jobs")* label for issues we think might be a good point to start with.
        But you don't have to limit yourself to those issues.
 
 ### Web interface
@@ -133,7 +150,7 @@ As Friendica is using a [Twitter/GNU Social compatible API](help/api) any of the
 Furthermore there are several client projects, especially for use with Friendica.
 If you are interested in improving those clients, please contact the developers of the clients directly.
 
-* Android / CynogenMod: **Friendica for Android** [src](https://github.com/max-weller/friendica-for-android), [homepage](http://friendica.android.max-weller.de/) - abandoned
+* Android / LinageOS: **Friendiqa** [src](https://github.com/LubuWest/Friendiqa) developed by [Marco R](https://freunde.ma-nic.de/profile/marco)
 * iOS: *currently no client*
 * SailfishOS: **Friendiy** [src](https://kirgroup.com/projects/fabrixxm/harbour-friendly) - developed by [Fabio](https://kirgroup.com/profile/fabrixxm/?tab=profile)
 * Windows: **Friendica Mobile** for Windows versions [before 8.1](http://windowsphone.com/s?appid=e3257730-c9cf-4935-9620-5261e3505c67) and [Windows 10](https://www.microsoft.com/store/apps/9nblggh0fhmn) - developed by [Gerhard Seeber](http://mozartweg.dyndns.org/friendica/profile/gerhard/?tab=profile)
index f5747ad1cf269681fe8ca36b211633d146c9d772..4edced2214eb6f21eb0c49508b691d1bf9d1ec3f 100644 (file)
@@ -48,7 +48,6 @@ require_once 'include/security.php';
 require_once 'include/html2bbcode.php';
 require_once 'mod/wall_upload.php';
 require_once 'mod/proxy.php';
-require_once 'include/like.php';
 
 define('API_METHOD_ANY', '*');
 define('API_METHOD_GET', 'GET');
@@ -5587,7 +5586,7 @@ function api_friendica_activity($type)
 
        $id = (x($_REQUEST, 'id') ? $_REQUEST['id'] : 0);
 
-       $res = do_like($id, $verb);
+       $res = Item::performLike($id, $verb);
 
        if ($res) {
                if ($type == "xml") {
diff --git a/include/like.php b/include/like.php
deleted file mode 100644 (file)
index 7e24b46..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-/**
- * @file include/like.php
- */
-use Friendica\App;
-use Friendica\Core\Addon;
-use Friendica\Core\L10n;
-use Friendica\Core\System;
-use Friendica\Core\Worker;
-use Friendica\Database\DBM;
-use Friendica\Model\Contact;
-use Friendica\Model\Item;
-use Friendica\Protocol\Diaspora;
-
-/**
- * @brief add/remove activity to an item
- *
- * Toggle activities as like,dislike,attend of an item
- *
- * @param string $item_id
- * @param string $verb
- *             Activity verb. One of
- *                     like, unlike, dislike, undislike, attendyes, unattendyes,
- *                     attendno, unattendno, attendmaybe, unattendmaybe
- * @hook 'post_local_end'
- *             array $arr
- *                     'post_id' => ID of posted item
- */
-function do_like($item_id, $verb) {
-       $a = get_app();
-
-       if (!local_user() && !remote_user()) {
-               return false;
-       }
-
-       switch ($verb) {
-               case 'like':
-                       $bodyverb = L10n::t('%1$s likes %2$s\'s %3$s');
-                       $activity = ACTIVITY_LIKE;
-                       break;
-               case 'unlike':
-                       $bodyverb = L10n::t('%1$s doesn\'t like %2$s\'s %3$s');
-                       $activity = ACTIVITY_LIKE;
-                       break;
-               case 'dislike':
-               case 'undislike':
-                       $bodyverb = L10n::t('%1$s doesn\'t like %2$s\'s %3$s');
-                       $activity = ACTIVITY_DISLIKE;
-                       break;
-               case 'attendyes':
-               case 'unattendyes':
-                       $bodyverb = L10n::t('%1$s is attending %2$s\'s %3$s');
-                       $activity = ACTIVITY_ATTEND;
-                       break;
-               case 'attendno':
-               case 'unattendno':
-                       $bodyverb = L10n::t('%1$s is not attending %2$s\'s %3$s');
-                       $activity = ACTIVITY_ATTENDNO;
-                       break;
-               case 'attendmaybe':
-               case 'unattendmaybe':
-                       $bodyverb = L10n::t('%1$s may attend %2$s\'s %3$s');
-                       $activity = ACTIVITY_ATTENDMAYBE;
-                       break;
-               default:
-                       logger('like: unknown verb ' . $verb . ' for item ' . $item_id);
-                       return false;
-       }
-
-       // Enable activity toggling instead of on/off
-       $event_verb_flag = $activity === ACTIVITY_ATTEND || $activity === ACTIVITY_ATTENDNO || $activity === ACTIVITY_ATTENDMAYBE;
-
-       logger('like: verb ' . $verb . ' item ' . $item_id);
-
-       // Retrieve item
-       $items = q("SELECT * FROM `item` WHERE `id` = '%s' OR `uri` = '%s' LIMIT 1",
-               dbesc($item_id),
-               dbesc($item_id)
-       );
-
-       if (!$item_id || !DBM::is_result($items)) {
-               logger('like: unknown item ' . $item_id);
-               return false;
-       }
-
-       $item = $items[0];
-       $uid = $item['uid'];
-
-       if (($uid == 0) && local_user()) {
-               $uid = local_user();
-       }
-
-       if (!can_write_wall($uid)) {
-               logger('like: unable to write on wall ' . $uid);
-               return false;
-       }
-
-       // Retrieves the local post owner
-       $owners = q("SELECT `contact`.* FROM `contact`
-               WHERE `contact`.`self`
-               AND `contact`.`uid` = %d",
-               intval($uid)
-       );
-       if (DBM::is_result($owners)) {
-               $owner_self_contact = $owners[0];
-       } else {
-               logger('like: unknown owner ' . $uid);
-               return false;
-       }
-
-       // Retrieve the current logged in user's public contact
-       $author_id = public_contact();
-
-       $contacts = q("SELECT * FROM `contact` WHERE `id` = %d",
-               intval($author_id)
-       );
-       if (DBM::is_result($contacts)) {
-               $author_contact = $contacts[0];
-       } else {
-               logger('like: unknown author ' . $author_id);
-               return false;
-       }
-
-       // Contact-id is the uid-dependant author contact
-       if (local_user() == $uid) {
-               $item_contact_id = $owner_self_contact['id'];
-               $item_contact = $owner_self_contact;
-       } else {
-               $item_contact_id = Contact::getIdForURL($author_contact['url'], $uid);
-
-               $contacts = q("SELECT * FROM `contact` WHERE `id` = %d",
-                       intval($item_contact_id)
-               );
-               if (DBM::is_result($contacts)) {
-                       $item_contact = $contacts[0];
-               } else {
-                       logger('like: unknown item contact ' . $item_contact_id);
-                       return false;
-               }
-       }
-
-       // Look for an existing verb row
-       // event participation are essentially radio toggles. If you make a subsequent choice,
-       // we need to eradicate your first choice.
-       if ($event_verb_flag) {
-               $verbs = "'" . dbesc(ACTIVITY_ATTEND) . "', '" . dbesc(ACTIVITY_ATTENDNO) . "', '" . dbesc(ACTIVITY_ATTENDMAYBE) . "'";
-       } else {
-               $verbs = "'".dbesc($activity)."'";
-       }
-
-       $existing_like = q("SELECT `id`, `guid`, `verb` FROM `item`
-               WHERE `verb` IN ($verbs)
-               AND `deleted` = 0
-               AND `author-id` = %d
-               AND `uid` = %d
-               AND (`parent` = '%s' OR `parent-uri` = '%s' OR `thr-parent` = '%s')
-               LIMIT 1",
-               intval($author_contact['id']),
-               intval($item['uid']),
-               dbesc($item_id), dbesc($item_id), dbesc($item['uri'])
-       );
-
-       // If it exists, mark it as deleted
-       if (DBM::is_result($existing_like)) {
-               $like_item = $existing_like[0];
-
-               // Already voted, undo it
-               q("UPDATE `item` SET `deleted` = 1, `unseen` = 1, `changed` = '%s' WHERE `id` = %d",
-                       dbesc(datetime_convert()),
-                       intval($like_item['id'])
-               );
-
-               // Clean up the Diaspora signatures for this like
-               // Go ahead and do it even if Diaspora support is disabled. We still want to clean up
-               // if it had been enabled in the past
-               dba::delete('sign', ['iid' => $like_item['id']]);
-
-               $like_item_id = $like_item['id'];
-               Worker::add(PRIORITY_HIGH, "Notifier", "like", $like_item_id);
-
-               if (!$event_verb_flag || $like_item['verb'] == $activity) {
-                       return true;
-               }
-       }
-
-       // Verb is "un-something", just trying to delete existing entries
-       if (strpos($verb, 'un') === 0) {
-               return true;
-       }
-
-       // Else or if event verb different from existing row, create a new item row
-       $post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
-       if ($item['object-type'] === ACTIVITY_OBJ_EVENT) {
-               $post_type = L10n::t('event');
-       }
-       $objtype = $item['resource-id'] ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE ;
-       $link = xmlify('<link rel="alternate" type="text/html" href="' . System::baseUrl() . '/display/' . $owner_self_contact['nick'] . '/' . $item['id'] . '" />' . "\n") ;
-       $body = $item['body'];
-
-       $obj = <<< EOT
-
-       <object>
-               <type>$objtype</type>
-               <local>1</local>
-               <id>{$item['uri']}</id>
-               <link>$link</link>
-               <title></title>
-               <content>$body</content>
-       </object>
-EOT;
-
-       $ulink = '[url=' . $author_contact['url'] . ']' . $author_contact['name'] . '[/url]';
-       $alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
-       $plink = '[url=' . System::baseUrl() . '/display/' . $owner_self_contact['nick'] . '/' . $item['id'] . ']' . $post_type . '[/url]';
-
-       $new_item = [
-               'guid'          => get_guid(32),
-               'uri'           => item_new_uri($a->get_hostname(), $item['uid']),
-               'uid'           => $item['uid'],
-               'contact-id'    => $item_contact_id,
-               'type'          => 'activity',
-               'wall'          => $item['wall'],
-               'origin'        => 1,
-               'gravity'       => GRAVITY_LIKE,
-               'parent'        => $item['id'],
-               'parent-uri'    => $item['uri'],
-               'thr-parent'    => $item['uri'],
-               'owner-id'      => $item['owner-id'],
-               'owner-name'    => $item['owner-name'],
-               'owner-link'    => $item['owner-link'],
-               'owner-avatar'  => $item['owner-avatar'],
-               'author-id'     => $author_contact['id'],
-               'author-name'   => $author_contact['name'],
-               'author-link'   => $author_contact['url'],
-               'author-avatar' => $author_contact['thumb'],
-               'body'          => sprintf($bodyverb, $ulink, $alink, $plink),
-               'verb'          => $activity,
-               'object-type'   => $objtype,
-               'object'        => $obj,
-               'allow_cid'     => $item['allow_cid'],
-               'allow_gid'     => $item['allow_gid'],
-               'deny_cid'      => $item['deny_cid'],
-               'deny_gid'      => $item['deny_gid'],
-               'visible'       => 1,
-               'unseen'        => 1,
-       ];
-
-       $new_item_id = Item::insert($new_item);
-
-       // @todo: Explain this block
-       if (! $item['visible']) {
-               q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d",
-                       intval($item['id'])
-               );
-       }
-
-       // Save the author information for the like in case we need to relay to Diaspora
-       Diaspora::storeLikeSignature($item_contact, $new_item_id);
-
-       $new_item['id'] = $new_item_id;
-
-       Addon::callHooks('post_local_end', $new_item);
-
-       Worker::add(PRIORITY_HIGH, "Notifier", "like", $new_item_id);
-
-       return true;
-}
index a2097be064b2c78cf698d733e9ce0cbcb3daa175..c537f2b252f7db0c8f69967859702bbbb4f30093 100644 (file)
@@ -3,10 +3,8 @@
 
 /* Generic exception class
  */
-if (!class_exists('OAuthException')) {
-       class OAuthException extends Exception {
-               // pass
-       }
+class OAuthException extends Exception {
+  // pass
 }
 
 class OAuthConsumer {
index 3c7e70cea63294dba2d420b0426aa516e9d8d44a..9371c30743c45a94ba131fc463d3e3d70046f8ce 100644 (file)
@@ -2,11 +2,11 @@
 
 use Friendica\App;
 use Friendica\Core\System;
+use Friendica\Model\Item;
 
 require_once 'include/security.php';
 require_once 'include/bbcode.php';
 require_once 'include/items.php';
-require_once 'include/like.php';
 
 function like_content(App $a) {
        if (!local_user() && !remote_user()) {
@@ -22,7 +22,7 @@ function like_content(App $a) {
 
        $item_id = (($a->argc > 1) ? notags(trim($a->argv[1])) : 0);
 
-       $r = do_like($item_id, $verb);
+       $r = Item::performLike($item_id, $verb);
        if (!$r) {
                return;
        }
index 98ffd89ff1b9f888b63459b454f3c8119be4b701..7545375181cf42a8c5fe73cbdedc2e53c15011a0 100644 (file)
@@ -6,28 +6,32 @@
 
 namespace Friendica\Model;
 
+use Friendica\BaseObject;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\L10n;
 use Friendica\Core\PConfig;
-use Friendica\Core\Worker;
 use Friendica\Core\System;
+use Friendica\Core\Worker;
+use Friendica\Database\DBM;
 use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
 use Friendica\Model\GContact;
 use Friendica\Model\Group;
 use Friendica\Model\Term;
-use Friendica\Model\User;
-use Friendica\Database\DBM;
+use Friendica\Object\Image;
+use Friendica\Protocol\Diaspora;
 use Friendica\Protocol\OStatus;
 use dba;
 use Text_LanguageDetect;
 
+require_once 'boot.php';
 require_once 'include/tags.php';
 require_once 'include/threads.php';
 require_once 'include/items.php';
 require_once 'include/text.php';
 
-class Item
+class Item extends BaseObject
 {
        /**
         * @brief Update existing item entries
@@ -1642,4 +1646,230 @@ class Item
                }
                return false;
        }
+
+       /**
+        * @brief add/remove activity to an item
+        *
+        * Toggle activities as like,dislike,attend of an item
+        *
+        * @param string $item_id
+        * @param string $verb
+        *              Activity verb. One of
+        *                      like, unlike, dislike, undislike, attendyes, unattendyes,
+        *                      attendno, unattendno, attendmaybe, unattendmaybe
+        * @hook 'post_local_end'
+        *              array $arr
+        *                      'post_id' => ID of posted item
+        */
+       public static function performLike($item_id, $verb)
+       {
+               if (!local_user() && !remote_user()) {
+                       return false;
+               }
+
+               switch ($verb) {
+                       case 'like':
+                       case 'unlike':
+                               $bodyverb = L10n::t('%1$s likes %2$s\'s %3$s');
+                               $activity = ACTIVITY_LIKE;
+                               break;
+                       case 'dislike':
+                       case 'undislike':
+                               $bodyverb = L10n::t('%1$s doesn\'t like %2$s\'s %3$s');
+                               $activity = ACTIVITY_DISLIKE;
+                               break;
+                       case 'attendyes':
+                       case 'unattendyes':
+                               $bodyverb = L10n::t('%1$s is attending %2$s\'s %3$s');
+                               $activity = ACTIVITY_ATTEND;
+                               break;
+                       case 'attendno':
+                       case 'unattendno':
+                               $bodyverb = L10n::t('%1$s is not attending %2$s\'s %3$s');
+                               $activity = ACTIVITY_ATTENDNO;
+                               break;
+                       case 'attendmaybe':
+                       case 'unattendmaybe':
+                               $bodyverb = L10n::t('%1$s may attend %2$s\'s %3$s');
+                               $activity = ACTIVITY_ATTENDMAYBE;
+                               break;
+                       default:
+                               logger('like: unknown verb ' . $verb . ' for item ' . $item_id);
+                               return false;
+               }
+
+               // Enable activity toggling instead of on/off
+               $event_verb_flag = $activity === ACTIVITY_ATTEND || $activity === ACTIVITY_ATTENDNO || $activity === ACTIVITY_ATTENDMAYBE;
+
+               logger('like: verb ' . $verb . ' item ' . $item_id);
+
+               $item = dba::selectFirst('item', [], ['`id` = ? OR `uri` = ?', $item_id, $item_id]);
+               if (!DBM::is_result($item)) {
+                       logger('like: unknown item ' . $item_id);
+                       return false;
+               }
+
+               $uid = $item['uid'];
+               if (($uid == 0) && local_user()) {
+                       $uid = local_user();
+               }
+
+               if (!can_write_wall($uid)) {
+                       logger('like: unable to write on wall ' . $uid);
+                       return false;
+               }
+
+               // Retrieves the local post owner
+               $owner_self_contact = dba::selectFirst('contact', [], ['uid' => $uid, 'self' => true]);
+               if (!DBM::is_result($owner_self_contact)) {
+                       logger('like: unknown owner ' . $uid);
+                       return false;
+               }
+
+               // Retrieve the current logged in user's public contact
+               $author_id = public_contact();
+
+               $author_contact = dba::selectFirst('contact', [], ['id' => $author_id]);
+               if (!DBM::is_result($author_contact)) {
+                       logger('like: unknown author ' . $author_id);
+                       return false;
+               }
+
+               // Contact-id is the uid-dependant author contact
+               if (local_user() == $uid) {
+                       $item_contact_id = $owner_self_contact['id'];
+                       $item_contact = $owner_self_contact;
+               } else {
+                       $item_contact_id = Contact::getIdForURL($author_contact['url'], $uid);
+                       $item_contact = dba::selectFirst('contact', [], ['id' => $item_contact_id]);
+                       if (!DBM::is_result($item_contact)) {
+                               logger('like: unknown item contact ' . $item_contact_id);
+                               return false;
+                       }
+               }
+
+               // Look for an existing verb row
+               // event participation are essentially radio toggles. If you make a subsequent choice,
+               // we need to eradicate your first choice.
+               if ($event_verb_flag) {
+                       $verbs = "'" . dbesc(ACTIVITY_ATTEND) . "', '" . dbesc(ACTIVITY_ATTENDNO) . "', '" . dbesc(ACTIVITY_ATTENDMAYBE) . "'";
+               } else {
+                       $verbs = "'".dbesc($activity)."'";
+               }
+
+               $existing_like = q("SELECT `id`, `guid`, `verb` FROM `item`
+                       WHERE `verb` IN ($verbs)
+                       AND `deleted` = 0
+                       AND `author-id` = %d
+                       AND `uid` = %d
+                       AND (`parent` = '%s' OR `parent-uri` = '%s' OR `thr-parent` = '%s')
+                       LIMIT 1",
+                       intval($author_contact['id']),
+                       intval($item['uid']),
+                       dbesc($item_id), dbesc($item_id), dbesc($item['uri'])
+               );
+
+               // If it exists, mark it as deleted
+               if (DBM::is_result($existing_like)) {
+                       $like_item = $existing_like[0];
+
+                       // Already voted, undo it
+                       $fields = ['deleted' => true, 'unseen' => true, 'changed' => datetime_convert()];
+                       dba::update('item', $fields, ['id' => $like_item['id']]);
+
+                       // Clean up the Diaspora signatures for this like
+                       // Go ahead and do it even if Diaspora support is disabled. We still want to clean up
+                       // if it had been enabled in the past
+                       dba::delete('sign', ['iid' => $like_item['id']]);
+
+                       $like_item_id = $like_item['id'];
+                       Worker::add(PRIORITY_HIGH, "Notifier", "like", $like_item_id);
+
+                       if (!$event_verb_flag || $like_item['verb'] == $activity) {
+                               return true;
+                       }
+               }
+
+               // Verb is "un-something", just trying to delete existing entries
+               if (strpos($verb, 'un') === 0) {
+                       return true;
+               }
+
+               // Else or if event verb different from existing row, create a new item row
+               $post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
+               if ($item['object-type'] === ACTIVITY_OBJ_EVENT) {
+                       $post_type = L10n::t('event');
+               }
+               $objtype = $item['resource-id'] ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE ;
+               $link = xmlify('<link rel="alternate" type="text/html" href="' . System::baseUrl() . '/display/' . $owner_self_contact['nick'] . '/' . $item['id'] . '" />' . "\n") ;
+               $body = $item['body'];
+
+               $obj = <<< EOT
+
+               <object>
+                       <type>$objtype</type>
+                       <local>1</local>
+                       <id>{$item['uri']}</id>
+                       <link>$link</link>
+                       <title></title>
+                       <content>$body</content>
+               </object>
+EOT;
+
+               $ulink = '[url=' . $author_contact['url'] . ']' . $author_contact['name'] . '[/url]';
+               $alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
+               $plink = '[url=' . System::baseUrl() . '/display/' . $owner_self_contact['nick'] . '/' . $item['id'] . ']' . $post_type . '[/url]';
+
+               $new_item = [
+                       'guid'          => get_guid(32),
+                       'uri'           => item_new_uri(self::getApp()->get_hostname(), $item['uid']),
+                       'uid'           => $item['uid'],
+                       'contact-id'    => $item_contact_id,
+                       'type'          => 'activity',
+                       'wall'          => $item['wall'],
+                       'origin'        => 1,
+                       'gravity'       => GRAVITY_LIKE,
+                       'parent'        => $item['id'],
+                       'parent-uri'    => $item['uri'],
+                       'thr-parent'    => $item['uri'],
+                       'owner-id'      => $item['owner-id'],
+                       'owner-name'    => $item['owner-name'],
+                       'owner-link'    => $item['owner-link'],
+                       'owner-avatar'  => $item['owner-avatar'],
+                       'author-id'     => $author_contact['id'],
+                       'author-name'   => $author_contact['name'],
+                       'author-link'   => $author_contact['url'],
+                       'author-avatar' => $author_contact['thumb'],
+                       'body'          => sprintf($bodyverb, $ulink, $alink, $plink),
+                       'verb'          => $activity,
+                       'object-type'   => $objtype,
+                       'object'        => $obj,
+                       'allow_cid'     => $item['allow_cid'],
+                       'allow_gid'     => $item['allow_gid'],
+                       'deny_cid'      => $item['deny_cid'],
+                       'deny_gid'      => $item['deny_gid'],
+                       'visible'       => 1,
+                       'unseen'        => 1,
+               ];
+
+               $new_item_id = Item::insert($new_item);
+
+               // @todo: Explain this block
+               if (! $item['visible']) {
+                       q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d",
+                               intval($item['id'])
+                       );
+               }
+
+               // Save the author information for the like in case we need to relay to Diaspora
+               Diaspora::storeLikeSignature($item_contact, $new_item_id);
+
+               $new_item['id'] = $new_item_id;
+
+               Addon::callHooks('post_local_end', $new_item);
+
+               Worker::add(PRIORITY_HIGH, "Notifier", "like", $new_item_id);
+
+               return true;
+       }
 }
index 6305a6592d6f013f6346febb4790e3a0eabca928..8b46f7b1c089889835751ddb6e602a3a5e17f006 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-01-31 07:01+0100\n"
+"POT-Creation-Date: 2018-02-01 08:23+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -420,14 +420,13 @@ msgstr ""
 msgid "link to source"
 msgstr ""
 
-#: include/text.php:1767 include/conversation.php:142
-#: include/conversation.php:280 include/like.php:194
+#: include/text.php:1767 include/like.php:194 include/conversation.php:142
+#: include/conversation.php:280
 msgid "event"
 msgstr ""
 
-#: include/text.php:1769 include/conversation.php:150
-#: include/conversation.php:288 include/like.php:192 mod/subthread.php:96
-#: mod/tagger.php:71
+#: include/text.php:1769 include/like.php:192 include/conversation.php:150
+#: include/conversation.php:288 mod/subthread.php:96 mod/tagger.php:71
 msgid "photo"
 msgstr ""
 
@@ -875,24 +874,165 @@ msgstr ""
 msgid "Invalid link protocol"
 msgstr ""
 
-#: include/conversation.php:145 include/conversation.php:155
-#: include/conversation.php:283 include/conversation.php:292
-#: include/like.php:192 mod/subthread.php:96 mod/tagger.php:71
-#: src/Protocol/Diaspora.php:1942
-msgid "status"
+#: include/event.php:430
+msgid "all-day"
+msgstr ""
+
+#: include/event.php:453
+msgid "Jun"
+msgstr ""
+
+#: include/event.php:456
+msgid "Sept"
+msgstr ""
+
+#: include/event.php:474 mod/cal.php:277 mod/events.php:401
+msgid "today"
+msgstr ""
+
+#: include/event.php:479
+msgid "No events to display"
+msgstr ""
+
+#: include/event.php:593
+msgid "l, F j"
+msgstr ""
+
+#: include/event.php:617
+msgid "Edit event"
+msgstr ""
+
+#: include/event.php:618
+msgid "Duplicate event"
+msgstr ""
+
+#: include/event.php:619
+msgid "Delete event"
+msgstr ""
+
+#: include/event.php:906
+msgid "Export"
+msgstr ""
+
+#: include/event.php:907
+msgid "Export calendar as ical"
+msgstr ""
+
+#: include/event.php:908
+msgid "Export calendar as csv"
+msgstr ""
+
+#: include/event.php:925
+msgid "D g:i A"
+msgstr ""
+
+#: include/event.php:926
+msgid "g:i A"
+msgstr ""
+
+#: include/event.php:995 include/event.php:997
+msgid "Show map"
+msgstr ""
+
+#: include/event.php:996
+msgid "Hide map"
+msgstr ""
+
+#: include/items.php:351 mod/notice.php:22 mod/viewsrc.php:20 mod/admin.php:266
+#: mod/admin.php:1758 mod/admin.php:2006 mod/display.php:67 mod/display.php:244
+#: mod/display.php:346
+msgid "Item not found."
+msgstr ""
+
+#: include/items.php:391
+msgid "Do you really want to delete this item?"
+msgstr ""
+
+#: include/items.php:393 mod/api.php:110 mod/follow.php:152 mod/message.php:134
+#: mod/suggest.php:38 mod/register.php:234 mod/contacts.php:464
+#: mod/dfrn_request.php:651 mod/profiles.php:645 mod/profiles.php:648
+#: mod/profiles.php:670 mod/settings.php:1107 mod/settings.php:1113
+#: mod/settings.php:1120 mod/settings.php:1124 mod/settings.php:1128
+#: mod/settings.php:1132 mod/settings.php:1136 mod/settings.php:1140
+#: mod/settings.php:1160 mod/settings.php:1161 mod/settings.php:1162
+#: mod/settings.php:1163 mod/settings.php:1164
+msgid "Yes"
+msgstr ""
+
+#: include/items.php:396 include/conversation.php:1358 mod/fbrowser.php:103
+#: mod/fbrowser.php:134 mod/follow.php:163 mod/message.php:137
+#: mod/suggest.php:41 mod/tagrm.php:18 mod/tagrm.php:103 mod/unfollow.php:117
+#: mod/videos.php:145 mod/editpost.php:148 mod/contacts.php:467
+#: mod/dfrn_request.php:661 mod/photos.php:246 mod/photos.php:335
+#: mod/settings.php:678 mod/settings.php:704
+msgid "Cancel"
+msgstr ""
+
+#: include/items.php:410 mod/allfriends.php:21 mod/api.php:35 mod/api.php:40
+#: mod/attach.php:38 mod/cal.php:301 mod/common.php:26 mod/crepair.php:98
+#: mod/delegate.php:20 mod/events.php:195 mod/follow.php:16 mod/follow.php:57
+#: mod/follow.php:120 mod/fsuggest.php:79 mod/group.php:26 mod/invite.php:18
+#: mod/invite.php:104 mod/manage.php:109 mod/message.php:55 mod/message.php:100
+#: mod/nogroup.php:28 mod/notes.php:30 mod/profile_photo.php:27
+#: mod/profile_photo.php:186 mod/profile_photo.php:197
+#: mod/profile_photo.php:210 mod/regmod.php:108 mod/repair_ostatus.php:13
+#: mod/suggest.php:60 mod/unfollow.php:15 mod/unfollow.php:57
+#: mod/unfollow.php:90 mod/viewcontacts.php:55 mod/wall_attach.php:74
+#: mod/wall_attach.php:77 mod/wall_upload.php:103 mod/wall_upload.php:106
+#: mod/wallmessage.php:16 mod/wallmessage.php:40 mod/wallmessage.php:79
+#: mod/wallmessage.php:103 mod/editpost.php:20 mod/register.php:51
+#: mod/uimport.php:28 mod/contacts.php:378 mod/dfrn_confirm.php:67
+#: mod/dirfind.php:24 mod/item.php:162 mod/notifications.php:73
+#: mod/ostatus_subscribe.php:16 mod/photos.php:172 mod/photos.php:1084
+#: mod/poke.php:159 mod/profiles.php:178 mod/profiles.php:615
+#: mod/settings.php:39 mod/settings.php:138 mod/settings.php:667
+#: mod/network.php:29 index.php:421
+msgid "Permission denied."
+msgstr ""
+
+#: include/items.php:480
+msgid "Archives"
+msgstr ""
+
+#: include/items.php:486 view/theme/vier/theme.php:258
+#: src/Content/ForumManager.php:130 src/Content/Widget.php:311
+#: src/Object/Post.php:420 src/App.php:519
+msgid "show more"
 msgstr ""
 
-#: include/conversation.php:162 include/like.php:38
+#: include/like.php:38 include/conversation.php:162
 #: src/Protocol/Diaspora.php:1938
 #, php-format
 msgid "%1$s likes %2$s's %3$s"
 msgstr ""
 
-#: include/conversation.php:165 include/like.php:42 include/like.php:47
+#: include/like.php:42 include/like.php:47 include/conversation.php:165
 #, php-format
 msgid "%1$s doesn't like %2$s's %3$s"
 msgstr ""
 
+#: include/like.php:52
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:57
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:62
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr ""
+
+#: include/like.php:192 include/conversation.php:145
+#: include/conversation.php:155 include/conversation.php:283
+#: include/conversation.php:292 mod/subthread.php:96 mod/tagger.php:71
+#: src/Protocol/Diaspora.php:1942
+msgid "status"
+msgstr ""
+
 #: include/conversation.php:168
 #, php-format
 msgid "%1$s attends %2$s's %3$s"
@@ -933,509 +1073,369 @@ msgstr ""
 msgid "%1$s marked %2$s's %3$s as favorite"
 msgstr ""
 
-#: include/conversation.php:606 mod/photos.php:1538 mod/profiles.php:350
+#: include/conversation.php:604 mod/photos.php:1538 mod/profiles.php:350
 msgid "Likes"
 msgstr ""
 
-#: include/conversation.php:606 mod/photos.php:1538 mod/profiles.php:354
+#: include/conversation.php:604 mod/photos.php:1538 mod/profiles.php:354
 msgid "Dislikes"
 msgstr ""
 
-#: include/conversation.php:607 include/conversation.php:1679
+#: include/conversation.php:605 include/conversation.php:1667
 #: mod/photos.php:1539
 msgid "Attending"
 msgid_plural "Attending"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:607 mod/photos.php:1539
+#: include/conversation.php:605 mod/photos.php:1539
 msgid "Not attending"
 msgstr ""
 
-#: include/conversation.php:607 mod/photos.php:1539
+#: include/conversation.php:605 mod/photos.php:1539
 msgid "Might attend"
 msgstr ""
 
-#: include/conversation.php:751 mod/photos.php:1606 src/Object/Post.php:175
+#: include/conversation.php:739 mod/photos.php:1606 src/Object/Post.php:175
 msgid "Select"
 msgstr ""
 
-#: include/conversation.php:752 mod/admin.php:1702 mod/contacts.php:821
+#: include/conversation.php:740 mod/admin.php:1702 mod/contacts.php:821
 #: mod/contacts.php:1019 mod/photos.php:1607 mod/settings.php:740
 #: src/Object/Post.php:176
 msgid "Delete"
 msgstr ""
 
-#: include/conversation.php:784 src/Object/Post.php:353 src/Object/Post.php:354
+#: include/conversation.php:772 src/Object/Post.php:353 src/Object/Post.php:354
 #, php-format
 msgid "View %s's profile @ %s"
 msgstr ""
 
-#: include/conversation.php:796 src/Object/Post.php:341
+#: include/conversation.php:784 src/Object/Post.php:341
 msgid "Categories:"
 msgstr ""
 
-#: include/conversation.php:797 src/Object/Post.php:342
+#: include/conversation.php:785 src/Object/Post.php:342
 msgid "Filed under:"
 msgstr ""
 
-#: include/conversation.php:804 src/Object/Post.php:367
+#: include/conversation.php:792 src/Object/Post.php:367
 #, php-format
 msgid "%s from %s"
 msgstr ""
 
-#: include/conversation.php:819
+#: include/conversation.php:807
 msgid "View in context"
 msgstr ""
 
-#: include/conversation.php:821 include/conversation.php:1352
+#: include/conversation.php:809 include/conversation.php:1340
 #: mod/message.php:261 mod/message.php:432 mod/wallmessage.php:146
 #: mod/editpost.php:124 mod/photos.php:1510 src/Object/Post.php:392
 msgid "Please wait"
 msgstr ""
 
-#: include/conversation.php:892
+#: include/conversation.php:880
 msgid "remove"
 msgstr ""
 
-#: include/conversation.php:896
+#: include/conversation.php:884
 msgid "Delete Selected Items"
 msgstr ""
 
-#: include/conversation.php:1058 view/theme/frio/theme.php:356
+#: include/conversation.php:1046 view/theme/frio/theme.php:356
 msgid "Follow Thread"
 msgstr ""
 
-#: include/conversation.php:1059 src/Model/Contact.php:553
+#: include/conversation.php:1047 src/Model/Contact.php:553
 msgid "View Status"
 msgstr ""
 
-#: include/conversation.php:1060 include/conversation.php:1076
+#: include/conversation.php:1048 include/conversation.php:1064
 #: mod/allfriends.php:73 mod/directory.php:153 mod/suggest.php:82
 #: mod/dirfind.php:220 mod/match.php:89 src/Model/Contact.php:496
 #: src/Model/Contact.php:509 src/Model/Contact.php:554
 msgid "View Profile"
 msgstr ""
 
-#: include/conversation.php:1061 src/Model/Contact.php:555
+#: include/conversation.php:1049 src/Model/Contact.php:555
 msgid "View Photos"
 msgstr ""
 
-#: include/conversation.php:1062 src/Model/Contact.php:556
+#: include/conversation.php:1050 src/Model/Contact.php:556
 msgid "Network Posts"
 msgstr ""
 
-#: include/conversation.php:1063 src/Model/Contact.php:557
+#: include/conversation.php:1051 src/Model/Contact.php:557
 msgid "View Contact"
 msgstr ""
 
-#: include/conversation.php:1064 src/Model/Contact.php:559
+#: include/conversation.php:1052 src/Model/Contact.php:559
 msgid "Send PM"
 msgstr ""
 
-#: include/conversation.php:1068 src/Model/Contact.php:560
+#: include/conversation.php:1056 src/Model/Contact.php:560
 msgid "Poke"
 msgstr ""
 
-#: include/conversation.php:1073 mod/allfriends.php:74 mod/follow.php:145
+#: include/conversation.php:1061 mod/allfriends.php:74 mod/follow.php:145
 #: mod/suggest.php:83 mod/contacts.php:587 mod/dirfind.php:221 mod/match.php:90
 #: src/Content/Widget.php:60 src/Model/Contact.php:510
 msgid "Connect/Follow"
 msgstr ""
 
-#: include/conversation.php:1192
+#: include/conversation.php:1180
 #, php-format
 msgid "%s likes this."
 msgstr ""
 
-#: include/conversation.php:1195
+#: include/conversation.php:1183
 #, php-format
 msgid "%s doesn't like this."
 msgstr ""
 
-#: include/conversation.php:1198
+#: include/conversation.php:1186
 #, php-format
 msgid "%s attends."
 msgstr ""
 
-#: include/conversation.php:1201
+#: include/conversation.php:1189
 #, php-format
 msgid "%s doesn't attend."
 msgstr ""
 
-#: include/conversation.php:1204
+#: include/conversation.php:1192
 #, php-format
 msgid "%s attends maybe."
 msgstr ""
 
-#: include/conversation.php:1215
+#: include/conversation.php:1203
 msgid "and"
 msgstr ""
 
-#: include/conversation.php:1221
+#: include/conversation.php:1209
 #, php-format
 msgid "and %d other people"
 msgstr ""
 
-#: include/conversation.php:1230
+#: include/conversation.php:1218
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this"
 msgstr ""
 
-#: include/conversation.php:1231
+#: include/conversation.php:1219
 #, php-format
 msgid "%s like this."
 msgstr ""
 
-#: include/conversation.php:1234
+#: include/conversation.php:1222
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this"
 msgstr ""
 
-#: include/conversation.php:1235
+#: include/conversation.php:1223
 #, php-format
 msgid "%s don't like this."
 msgstr ""
 
-#: include/conversation.php:1238
+#: include/conversation.php:1226
 #, php-format
 msgid "<span  %1$s>%2$d people</span> attend"
 msgstr ""
 
-#: include/conversation.php:1239
+#: include/conversation.php:1227
 #, php-format
 msgid "%s attend."
 msgstr ""
 
-#: include/conversation.php:1242
+#: include/conversation.php:1230
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't attend"
 msgstr ""
 
-#: include/conversation.php:1243
+#: include/conversation.php:1231
 #, php-format
 msgid "%s don't attend."
 msgstr ""
 
-#: include/conversation.php:1246
+#: include/conversation.php:1234
 #, php-format
 msgid "<span  %1$s>%2$d people</span> attend maybe"
 msgstr ""
 
-#: include/conversation.php:1247
+#: include/conversation.php:1235
 #, php-format
 msgid "%s anttend maybe."
 msgstr ""
 
-#: include/conversation.php:1277 include/conversation.php:1293
+#: include/conversation.php:1265 include/conversation.php:1281
 msgid "Visible to <strong>everybody</strong>"
 msgstr ""
 
-#: include/conversation.php:1278 include/conversation.php:1294
+#: include/conversation.php:1266 include/conversation.php:1282
 #: mod/message.php:196 mod/message.php:203 mod/message.php:342
 #: mod/message.php:349 mod/wallmessage.php:120 mod/wallmessage.php:127
 msgid "Please enter a link URL:"
 msgstr ""
 
-#: include/conversation.php:1279 include/conversation.php:1295
+#: include/conversation.php:1267 include/conversation.php:1283
 msgid "Please enter a video link/URL:"
 msgstr ""
 
-#: include/conversation.php:1280 include/conversation.php:1296
+#: include/conversation.php:1268 include/conversation.php:1284
 msgid "Please enter an audio link/URL:"
 msgstr ""
 
-#: include/conversation.php:1281 include/conversation.php:1297
+#: include/conversation.php:1269 include/conversation.php:1285
 msgid "Tag term:"
 msgstr ""
 
-#: include/conversation.php:1282 include/conversation.php:1298 mod/filer.php:35
+#: include/conversation.php:1270 include/conversation.php:1286 mod/filer.php:35
 msgid "Save to Folder:"
 msgstr ""
 
-#: include/conversation.php:1283 include/conversation.php:1299
+#: include/conversation.php:1271 include/conversation.php:1287
 msgid "Where are you right now?"
 msgstr ""
 
-#: include/conversation.php:1284
+#: include/conversation.php:1272
 msgid "Delete item(s)?"
 msgstr ""
 
-#: include/conversation.php:1333
+#: include/conversation.php:1321
 msgid "Share"
 msgstr ""
 
-#: include/conversation.php:1334 mod/message.php:259 mod/message.php:429
+#: include/conversation.php:1322 mod/message.php:259 mod/message.php:429
 #: mod/wallmessage.php:144 mod/editpost.php:110
 msgid "Upload photo"
 msgstr ""
 
-#: include/conversation.php:1335 mod/editpost.php:111
+#: include/conversation.php:1323 mod/editpost.php:111
 msgid "upload photo"
 msgstr ""
 
-#: include/conversation.php:1336 mod/editpost.php:112
+#: include/conversation.php:1324 mod/editpost.php:112
 msgid "Attach file"
 msgstr ""
 
-#: include/conversation.php:1337 mod/editpost.php:113
+#: include/conversation.php:1325 mod/editpost.php:113
 msgid "attach file"
 msgstr ""
 
-#: include/conversation.php:1338 mod/message.php:260 mod/message.php:430
+#: include/conversation.php:1326 mod/message.php:260 mod/message.php:430
 #: mod/wallmessage.php:145 mod/editpost.php:114
 msgid "Insert web link"
 msgstr ""
 
-#: include/conversation.php:1339 mod/editpost.php:115
+#: include/conversation.php:1327 mod/editpost.php:115
 msgid "web link"
 msgstr ""
 
-#: include/conversation.php:1340 mod/editpost.php:116
+#: include/conversation.php:1328 mod/editpost.php:116
 msgid "Insert video link"
 msgstr ""
 
-#: include/conversation.php:1341 mod/editpost.php:117
+#: include/conversation.php:1329 mod/editpost.php:117
 msgid "video link"
 msgstr ""
 
-#: include/conversation.php:1342 mod/editpost.php:118
+#: include/conversation.php:1330 mod/editpost.php:118
 msgid "Insert audio link"
 msgstr ""
 
-#: include/conversation.php:1343 mod/editpost.php:119
+#: include/conversation.php:1331 mod/editpost.php:119
 msgid "audio link"
 msgstr ""
 
-#: include/conversation.php:1344 mod/editpost.php:120
+#: include/conversation.php:1332 mod/editpost.php:120
 msgid "Set your location"
 msgstr ""
 
-#: include/conversation.php:1345 mod/editpost.php:121
+#: include/conversation.php:1333 mod/editpost.php:121
 msgid "set location"
 msgstr ""
 
-#: include/conversation.php:1346 mod/editpost.php:122
+#: include/conversation.php:1334 mod/editpost.php:122
 msgid "Clear browser location"
 msgstr ""
 
-#: include/conversation.php:1347 mod/editpost.php:123
+#: include/conversation.php:1335 mod/editpost.php:123
 msgid "clear location"
 msgstr ""
 
-#: include/conversation.php:1349 mod/editpost.php:137
+#: include/conversation.php:1337 mod/editpost.php:137
 msgid "Set title"
 msgstr ""
 
-#: include/conversation.php:1351 mod/editpost.php:139
+#: include/conversation.php:1339 mod/editpost.php:139
 msgid "Categories (comma-separated list)"
 msgstr ""
 
-#: include/conversation.php:1353 mod/editpost.php:125
+#: include/conversation.php:1341 mod/editpost.php:125
 msgid "Permission settings"
 msgstr ""
 
-#: include/conversation.php:1354 mod/editpost.php:154
+#: include/conversation.php:1342 mod/editpost.php:154
 msgid "permissions"
 msgstr ""
 
-#: include/conversation.php:1362 mod/editpost.php:134
+#: include/conversation.php:1350 mod/editpost.php:134
 msgid "Public post"
 msgstr ""
 
-#: include/conversation.php:1366 mod/events.php:531 mod/editpost.php:145
+#: include/conversation.php:1354 mod/events.php:531 mod/editpost.php:145
 #: mod/photos.php:1529 mod/photos.php:1568 mod/photos.php:1641
 #: src/Object/Post.php:795
 msgid "Preview"
 msgstr ""
 
-#: include/conversation.php:1370 include/items.php:396 mod/fbrowser.php:103
-#: mod/fbrowser.php:134 mod/follow.php:163 mod/message.php:137
-#: mod/suggest.php:41 mod/tagrm.php:18 mod/tagrm.php:103 mod/unfollow.php:117
-#: mod/videos.php:145 mod/editpost.php:148 mod/contacts.php:467
-#: mod/dfrn_request.php:661 mod/photos.php:246 mod/photos.php:335
-#: mod/settings.php:678 mod/settings.php:704
-msgid "Cancel"
-msgstr ""
-
-#: include/conversation.php:1375
+#: include/conversation.php:1363
 msgid "Post to Groups"
 msgstr ""
 
-#: include/conversation.php:1376
+#: include/conversation.php:1364
 msgid "Post to Contacts"
 msgstr ""
 
-#: include/conversation.php:1377
+#: include/conversation.php:1365
 msgid "Private post"
 msgstr ""
 
-#: include/conversation.php:1382 mod/editpost.php:152 src/Model/Profile.php:340
+#: include/conversation.php:1370 mod/editpost.php:152 src/Model/Profile.php:340
 msgid "Message"
 msgstr ""
 
-#: include/conversation.php:1383 mod/editpost.php:153
+#: include/conversation.php:1371 mod/editpost.php:153
 msgid "Browser"
 msgstr ""
 
-#: include/conversation.php:1650
+#: include/conversation.php:1638
 msgid "View all"
 msgstr ""
 
-#: include/conversation.php:1673
+#: include/conversation.php:1661
 msgid "Like"
 msgid_plural "Likes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1676
+#: include/conversation.php:1664
 msgid "Dislike"
 msgid_plural "Dislikes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: include/conversation.php:1682
+#: include/conversation.php:1670
 msgid "Not Attending"
 msgid_plural "Not Attending"
 msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:1685 src/Content/ContactSelector.php:125
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/event.php:430
-msgid "all-day"
-msgstr ""
-
-#: include/event.php:453
-msgid "Jun"
-msgstr ""
-
-#: include/event.php:456
-msgid "Sept"
-msgstr ""
-
-#: include/event.php:474 mod/cal.php:277 mod/events.php:401
-msgid "today"
-msgstr ""
-
-#: include/event.php:479
-msgid "No events to display"
-msgstr ""
-
-#: include/event.php:593
-msgid "l, F j"
-msgstr ""
-
-#: include/event.php:617
-msgid "Edit event"
-msgstr ""
-
-#: include/event.php:618
-msgid "Duplicate event"
-msgstr ""
-
-#: include/event.php:619
-msgid "Delete event"
-msgstr ""
-
-#: include/event.php:906
-msgid "Export"
-msgstr ""
-
-#: include/event.php:907
-msgid "Export calendar as ical"
-msgstr ""
-
-#: include/event.php:908
-msgid "Export calendar as csv"
-msgstr ""
-
-#: include/event.php:925
-msgid "D g:i A"
-msgstr ""
-
-#: include/event.php:926
-msgid "g:i A"
-msgstr ""
-
-#: include/event.php:995 include/event.php:997
-msgid "Show map"
-msgstr ""
-
-#: include/event.php:996
-msgid "Hide map"
-msgstr ""
-
-#: include/items.php:351 mod/notice.php:22 mod/viewsrc.php:20 mod/admin.php:266
-#: mod/admin.php:1758 mod/admin.php:2006 mod/display.php:67 mod/display.php:244
-#: mod/display.php:346
-msgid "Item not found."
-msgstr ""
-
-#: include/items.php:391
-msgid "Do you really want to delete this item?"
-msgstr ""
-
-#: include/items.php:393 mod/api.php:110 mod/follow.php:152 mod/message.php:134
-#: mod/suggest.php:38 mod/register.php:234 mod/contacts.php:464
-#: mod/dfrn_request.php:651 mod/profiles.php:645 mod/profiles.php:648
-#: mod/profiles.php:670 mod/settings.php:1107 mod/settings.php:1113
-#: mod/settings.php:1120 mod/settings.php:1124 mod/settings.php:1128
-#: mod/settings.php:1132 mod/settings.php:1136 mod/settings.php:1140
-#: mod/settings.php:1160 mod/settings.php:1161 mod/settings.php:1162
-#: mod/settings.php:1163 mod/settings.php:1164
-msgid "Yes"
-msgstr ""
-
-#: include/items.php:410 mod/allfriends.php:21 mod/api.php:35 mod/api.php:40
-#: mod/attach.php:38 mod/cal.php:301 mod/common.php:26 mod/crepair.php:98
-#: mod/delegate.php:20 mod/events.php:195 mod/follow.php:16 mod/follow.php:57
-#: mod/follow.php:120 mod/fsuggest.php:79 mod/group.php:26 mod/invite.php:18
-#: mod/invite.php:104 mod/manage.php:109 mod/message.php:55 mod/message.php:100
-#: mod/network.php:29 mod/nogroup.php:28 mod/notes.php:30
-#: mod/profile_photo.php:27 mod/profile_photo.php:186 mod/profile_photo.php:197
-#: mod/profile_photo.php:210 mod/regmod.php:108 mod/repair_ostatus.php:13
-#: mod/suggest.php:60 mod/unfollow.php:15 mod/unfollow.php:57
-#: mod/unfollow.php:90 mod/viewcontacts.php:55 mod/wall_attach.php:74
-#: mod/wall_attach.php:77 mod/wall_upload.php:103 mod/wall_upload.php:106
-#: mod/wallmessage.php:16 mod/wallmessage.php:40 mod/wallmessage.php:79
-#: mod/wallmessage.php:103 mod/editpost.php:20 mod/register.php:51
-#: mod/uimport.php:28 mod/contacts.php:378 mod/dfrn_confirm.php:67
-#: mod/dirfind.php:24 mod/item.php:162 mod/notifications.php:73
-#: mod/ostatus_subscribe.php:16 mod/photos.php:172 mod/photos.php:1084
-#: mod/poke.php:159 mod/profiles.php:178 mod/profiles.php:615
-#: mod/settings.php:39 mod/settings.php:138 mod/settings.php:667 index.php:421
-msgid "Permission denied."
-msgstr ""
-
-#: include/items.php:480
-msgid "Archives"
-msgstr ""
-
-#: include/items.php:486 view/theme/vier/theme.php:258
-#: src/Content/ForumManager.php:130 src/Content/Widget.php:311
-#: src/Object/Post.php:420 src/App.php:519
-msgid "show more"
-msgstr ""
-
-#: include/like.php:52
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr ""
-
-#: include/like.php:57
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr ""
+msgstr[1] ""
 
-#: include/like.php:62
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr ""
+#: include/conversation.php:1673 src/Content/ContactSelector.php:125
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] ""
+msgstr[1] ""
 
 #: mod/allfriends.php:51
 msgid "No friends to display."
@@ -1552,47 +1552,6 @@ msgstr ""
 msgid "Common Friends"
 msgstr ""
 
-#: mod/community.php:25 mod/directory.php:38 mod/videos.php:211
-#: mod/viewcontacts.php:45 mod/dfrn_request.php:605 mod/display.php:198
-#: mod/photos.php:964 mod/probe.php:13 mod/search.php:98 mod/search.php:104
-#: mod/webfinger.php:16
-msgid "Public access denied."
-msgstr ""
-
-#: mod/community.php:44
-msgid "Community option not available."
-msgstr ""
-
-#: mod/community.php:61
-msgid "Not available."
-msgstr ""
-
-#: mod/community.php:75 src/Content/Nav.php:165
-msgid "Community"
-msgstr ""
-
-#: mod/community.php:78
-msgid "Posts from local users on this server"
-msgstr ""
-
-#: mod/community.php:86
-msgid "Global Timeline"
-msgstr ""
-
-#: mod/community.php:89
-msgid "Posts from users of the federated network"
-msgstr ""
-
-#: mod/community.php:138 mod/search.php:225
-msgid "No results."
-msgstr ""
-
-#: mod/community.php:182
-msgid ""
-"This community stream shows all public posts received by this node. They may "
-"not reflect the opinions of this node’s users."
-msgstr ""
-
 #: mod/credits.php:18
 msgid "Credits"
 msgstr ""
@@ -1752,6 +1711,13 @@ msgstr ""
 msgid "No entries."
 msgstr ""
 
+#: mod/directory.php:38 mod/videos.php:211 mod/viewcontacts.php:45
+#: mod/dfrn_request.php:605 mod/display.php:198 mod/photos.php:964
+#: mod/probe.php:13 mod/search.php:98 mod/search.php:104 mod/webfinger.php:16
+#: mod/community.php:25
+msgid "Public access denied."
+msgstr ""
+
 #: mod/directory.php:142 mod/notifications.php:253 src/Model/Profile.php:418
 #: src/Model/Profile.php:724
 msgid "Gender:"
@@ -2326,99 +2292,6 @@ msgid_plural "%d messages"
 msgstr[0] ""
 msgstr[1] ""
 
-#: mod/network.php:191 mod/search.php:37
-msgid "Remove term"
-msgstr ""
-
-#: mod/network.php:198 mod/search.php:46 src/Content/Feature.php:100
-msgid "Saved Searches"
-msgstr ""
-
-#: mod/network.php:199 src/Model/Group.php:401
-msgid "add"
-msgstr ""
-
-#: mod/network.php:544
-#, php-format
-msgid ""
-"Warning: This group contains %s member from a network that doesn't allow non "
-"public messages."
-msgid_plural ""
-"Warning: This group contains %s members from a network that doesn't allow "
-"non public messages."
-msgstr[0] ""
-msgstr[1] ""
-
-#: mod/network.php:547
-msgid "Messages in this group won't be send to these receivers."
-msgstr ""
-
-#: mod/network.php:615
-msgid "No such group"
-msgstr ""
-
-#: mod/network.php:640
-#, php-format
-msgid "Group: %s"
-msgstr ""
-
-#: mod/network.php:666
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr ""
-
-#: mod/network.php:669
-msgid "Invalid contact."
-msgstr ""
-
-#: mod/network.php:912
-msgid "Commented Order"
-msgstr ""
-
-#: mod/network.php:915
-msgid "Sort by Comment Date"
-msgstr ""
-
-#: mod/network.php:920
-msgid "Posted Order"
-msgstr ""
-
-#: mod/network.php:923
-msgid "Sort by Post Date"
-msgstr ""
-
-#: mod/network.php:931 mod/profiles.php:696
-#: src/Core/NotificationsManager.php:184
-msgid "Personal"
-msgstr ""
-
-#: mod/network.php:934
-msgid "Posts that mention or involve you"
-msgstr ""
-
-#: mod/network.php:942
-msgid "New"
-msgstr ""
-
-#: mod/network.php:945
-msgid "Activity Stream - by date"
-msgstr ""
-
-#: mod/network.php:953
-msgid "Shared Links"
-msgstr ""
-
-#: mod/network.php:956
-msgid "Interesting Links"
-msgstr ""
-
-#: mod/network.php:964
-msgid "Starred"
-msgstr ""
-
-#: mod/network.php:967
-msgid "Favourite Posts"
-msgstr ""
-
 #: mod/newmember.php:11
 msgid "Welcome to Friendica"
 msgstr ""
@@ -6508,6 +6381,11 @@ msgstr ""
 msgid "Additional information"
 msgstr ""
 
+#: mod/profiles.php:696 mod/network.php:931
+#: src/Core/NotificationsManager.php:184
+msgid "Personal"
+msgstr ""
+
 #: mod/profiles.php:697
 msgid "Relation"
 msgstr ""
@@ -6688,6 +6566,14 @@ msgstr ""
 msgid "Create New Profile"
 msgstr ""
 
+#: mod/search.php:37 mod/network.php:191
+msgid "Remove term"
+msgstr ""
+
+#: mod/search.php:46 mod/network.php:198 src/Content/Feature.php:100
+msgid "Saved Searches"
+msgstr ""
+
 #: mod/search.php:105
 msgid "Only logged in users are permitted to perform a search."
 msgstr ""
@@ -6700,6 +6586,10 @@ msgstr ""
 msgid "Only one search per minute is permitted for not logged in users."
 msgstr ""
 
+#: mod/search.php:225 mod/community.php:135
+msgid "No results."
+msgstr ""
+
 #: mod/search.php:231
 #, php-format
 msgid "Items tagged with: %s"
@@ -7497,6 +7387,116 @@ msgstr ""
 msgid "%1$s is following %2$s's %3$s"
 msgstr ""
 
+#: mod/community.php:44
+msgid "Community option not available."
+msgstr ""
+
+#: mod/community.php:61
+msgid "Not available."
+msgstr ""
+
+#: mod/community.php:75
+msgid "Local Community"
+msgstr ""
+
+#: mod/community.php:78
+msgid "Posts from local users on this server"
+msgstr ""
+
+#: mod/community.php:86
+msgid "Global Community"
+msgstr ""
+
+#: mod/community.php:89
+msgid "Posts from users of the whole federated network"
+msgstr ""
+
+#: mod/community.php:179
+msgid ""
+"This community stream shows all public posts received by this node. They may "
+"not reflect the opinions of this node’s users."
+msgstr ""
+
+#: mod/network.php:199 src/Model/Group.php:401
+msgid "add"
+msgstr ""
+
+#: mod/network.php:544
+#, php-format
+msgid ""
+"Warning: This group contains %s member from a network that doesn't allow non "
+"public messages."
+msgid_plural ""
+"Warning: This group contains %s members from a network that doesn't allow "
+"non public messages."
+msgstr[0] ""
+msgstr[1] ""
+
+#: mod/network.php:547
+msgid "Messages in this group won't be send to these receivers."
+msgstr ""
+
+#: mod/network.php:615
+msgid "No such group"
+msgstr ""
+
+#: mod/network.php:640
+#, php-format
+msgid "Group: %s"
+msgstr ""
+
+#: mod/network.php:666
+msgid "Private messages to this person are at risk of public disclosure."
+msgstr ""
+
+#: mod/network.php:669
+msgid "Invalid contact."
+msgstr ""
+
+#: mod/network.php:912
+msgid "Commented Order"
+msgstr ""
+
+#: mod/network.php:915
+msgid "Sort by Comment Date"
+msgstr ""
+
+#: mod/network.php:920
+msgid "Posted Order"
+msgstr ""
+
+#: mod/network.php:923
+msgid "Sort by Post Date"
+msgstr ""
+
+#: mod/network.php:934
+msgid "Posts that mention or involve you"
+msgstr ""
+
+#: mod/network.php:942
+msgid "New"
+msgstr ""
+
+#: mod/network.php:945
+msgid "Activity Stream - by date"
+msgstr ""
+
+#: mod/network.php:953
+msgid "Shared Links"
+msgstr ""
+
+#: mod/network.php:956
+msgid "Interesting Links"
+msgstr ""
+
+#: mod/network.php:964
+msgid "Starred"
+msgstr ""
+
+#: mod/network.php:967
+msgid "Favourite Posts"
+msgstr ""
+
 #: view/theme/duepuntozero/config.php:54 src/Model/User.php:429
 msgid "default"
 msgstr ""
@@ -8210,6 +8210,10 @@ msgstr ""
 msgid "Search site content"
 msgstr ""
 
+#: src/Content/Nav.php:165
+msgid "Community"
+msgstr ""
+
 #: src/Content/Nav.php:165
 msgid "Conversations on this and other servers"
 msgstr ""