unset($datarray['self']);
unset($datarray['api_source']);
+ $signed = Diaspora::createCommentSignature($author, $datarray);
+ if (!empty($signed)) {
+ $datarray['diaspora_signed_text'] = json_encode($signed);
+ }
+
$post_id = Item::insert($datarray);
if (!$post_id) {
'parent_uri' => $parent_item['uri']
]);
}
-
- // Store the comment signature information in case we need to relay to Diaspora
- Diaspora::storeCommentSignature($datarray, $author, ($self ? $user['prvkey'] : false), $post_id);
} else {
if (($contact_record != $author) && !count($forum_contact)) {
notification([
$signed = Diaspora::createLikeSignature($item_contact, $new_item);
if (!empty($signed)) {
- $new_item['diaspora_signed_text'] = $signed;
+ $new_item['diaspora_signed_text'] = json_encode($signed);
}
$new_item_id = self::insert($new_item);
self::fetchMissingActivity($activity['reply-to-id'], $activity);
}
+ $item['diaspora_signed_text'] = defaults($activity, 'diaspora:comment', '');
+
self::postItem($activity, $item);
}
$item['gravity'] = GRAVITY_ACTIVITY;
$item['object-type'] = ACTIVITY_OBJ_NOTE;
+ $item['diaspora_signed_text'] = defaults($activity, 'diaspora:like', '');
+
self::postItem($activity, $item);
}
$item['tag'] = self::constructTagList($activity['tags'], $activity['sensitive']);
$item['app'] = $activity['generator'];
$item['plink'] = defaults($activity, 'alternate-url', $item['uri']);
- $item['diaspora_signed_text'] = defaults($activity, 'diaspora:comment', '');
$item = self::constructAttachList($activity['attachments'], $item);
$object_data['diaspora:guid'] = JsonLD::fetchElement($object, 'diaspora:guid');
$object_data['diaspora:comment'] = JsonLD::fetchElement($object, 'diaspora:comment');
+ $object_data['diaspora:like'] = JsonLD::fetchElement($object, 'diaspora:like');
$object_data['actor'] = $object_data['author'] = $actor;
$object_data['context'] = JsonLD::fetchElement($object, 'as:context');
$object_data['conversation'] = JsonLD::fetchElement($object, 'ostatus:conversation');
$data['object'] = self::createActivityFromItem($item_id, true);
} else {
$data['diaspora:guid'] = $item['guid'];
+ if (!empty($item['signed_text'])) {
+ $data['diaspora:like'] = $item['signed_text'];
+ }
$data['object'] = $item['thr-parent'];
}
}
/**
- * @brief Stores the signature for comments that are created on our system
+ * @brief Creates the signature for Comments that are created on our system
*
- * @param array $item The item array of the comment
- * @param array $contact The contact array of the item owner
- * @param string $uprvkey The private key of the sender
- * @param int $message_id The message id of the comment
+ * @param array $contact The contact array of the comment
+ * @param array $item Item array
*
- * @return bool Success
+ * @return array Signed content
*/
- public static function storeCommentSignature(array $item, array $contact, $uprvkey, $message_id)
+ public static function createCommentSignature(array $contact, array $item)
{
- if ($uprvkey == "") {
- logger('No private key, so not storing comment signature', LOGGER_DEBUG);
+ // Is the contact the owner? Then fetch the private key
+ if (!$contact['self'] || ($contact['uid'] == 0)) {
+ logger("No owner post, so not storing signature", LOGGER_DEBUG);
return false;
}
- $contact["uprvkey"] = $uprvkey;
+ $user = DBA::selectFirst('user', ['prvkey'], ['uid' => $contact["uid"]]);
+ if (!DBA::isResult($user)) {
+ return false;
+ }
+
+ $contact["uprvkey"] = $user['prvkey'];
$message = self::constructComment($item, $contact);
if ($message === false) {
$message["author_signature"] = self::signature($contact, $message);
- /*
- * Now store the signature more flexible to dynamically support new fields.
- * This will break Diaspora compatibility with Friendica versions prior to 3.5.
- */
- DBA::insert('sign', ['iid' => $message_id, 'signed_text' => json_encode($message)]);
-
- logger('Stored diaspora comment signature');
- return true;
+ return $message;
}
}