- $handle = diaspora_handle_from_contact($item['contact-id']);
- if(! $handle)
- return;
-
-
- if($relay_retract)
- $sender_signed_text = $item['guid'] . ';' . $target_type;
- elseif($like)
- $sender_signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle;
- else
- $sender_signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle;
-
- // Sign the relayable with the top-level owner's signature
- //
- // We'll use the $sender_signed_text that we just created, instead of the $signed_text
- // stored in the database, because that provides the best chance that Diaspora will
- // be able to reconstruct the signed text the same way we did. This is particularly a
- // concern for the comment, whose signed text includes the text of the comment. The
- // smallest change in the text of the comment, including removing whitespace, will
- // make the signature verification fail. Since we translate from BB code to Diaspora's
- // markup at the top of this function, which is AFTER we placed the original $signed_text
- // in the database, it's hazardous to trust the original $signed_text.
-
- $parentauthorsig = base64_encode(rsa_sign($sender_signed_text,$owner['uprvkey'],'sha256'));
-
- $msg = replace_macros($tpl,array(
- '$guid' => xmlify($item['guid']),
- '$parent_guid' => xmlify($parent['guid']),
- '$target_type' =>xmlify($target_type),
- '$authorsig' => xmlify($authorsig),
- '$parentsig' => xmlify($parentauthorsig),
- '$body' => xmlify($text),
- '$positive' => xmlify($positive),
- '$handle' => xmlify($handle)
- ));
-
- logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA);
- logger('send guid '.$item['guid'], LOGGER_DEBUG);
-
- $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
- //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch));
-
- return(diaspora_transmit($owner,$contact,$slap,$public_batch,false,$item['guid']));
+ /**
+ * @brief Sends a retraction (deletion) of a message, like or comment
+ *
+ * @param array $item The item that will be exported
+ * @param array $owner the array of the item owner
+ * @param array $contact Target of the communication
+ * @param bool $public_batch Is it a public post?
+ * @param bool $relay Is the retraction transmitted from a relay?
+ *
+ * @return int The result of the transmission
+ */
+ public static function send_retraction($item, $owner, $contact, $public_batch = false, $relay = false) {