From 4e77321be807ef249cfa868c47d1eb5db739561d Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Dec 2019 06:42:10 +0000 Subject: [PATCH] Replaced all preg calls in the calls with the new function --- src/Protocol/ActivityPub/Transmitter.php | 19 ++------- src/Protocol/Diaspora.php | 54 +++++------------------- src/Protocol/OStatus.php | 33 ++------------- 3 files changed, 19 insertions(+), 87 deletions(-) diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index a9f5ed20a1..5bb03a8517 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1401,23 +1401,12 @@ class Transmitter */ public static function getAnnounceArray($item) { - if (!preg_match("/(.*?)\[share(.*?)\]\s?.*?\s?\[\/share\]\s?/ism", $item['body'], $matches)) { + $reshared = Item::getShareArray($item); + if (empty($reshared['guid'])) { return []; } - $attributes = $matches[2]; - $comment = $matches[1]; - - preg_match("/guid='(.*?)'/ism", $attributes, $matches); - if (empty($matches[1])) { - preg_match('/guid="(.*?)"/ism', $attributes, $matches); - } - - if (empty($matches[1])) { - return []; - } - - $reshared_item = Item::selectFirst([], ['guid' => $matches[1]]); + $reshared_item = Item::selectFirst([], ['guid' => $reshared['guid']]); if (!DBA::isResult($reshared_item)) { return []; } @@ -1431,7 +1420,7 @@ class Transmitter return []; } - return ['object' => $reshared_item, 'actor' => $profile, 'comment' => trim($comment)]; + return ['object' => $reshared_item, 'actor' => $profile, 'comment' => $reshared['comment']]; } /** diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index cf53d2fc26..c52213972e 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -3391,69 +3391,37 @@ class Diaspora { $body = trim($body); + $reshared = Item::getShareArray(['body' => $body]); + if (empty($reshared)) { + return false; + } + // Skip if it isn't a pure repeated messages // Does it start with a share? - if ((strpos($body, "[share") > 0) && $complete) { + if (!empty($reshared['comment']) && $complete) { return false; } - // Does it end with a share? - if (strlen($body) > (strrpos($body, "[/share]") + 8)) { - return false; - } - - $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism", "$1", $body); - // Skip if there is no shared message in there - if ($body == $attributes) { - return false; - } - - // If we don't do the complete check we quit here - - $guid = ""; - preg_match("/guid='(.*?)'/ism", $attributes, $matches); - if (!empty($matches[1])) { - $guid = $matches[1]; - } - - preg_match('/guid="(.*?)"/ism', $attributes, $matches); - if (!empty($matches[1])) { - $guid = $matches[1]; - } - - if (($guid != "") && $complete) { - $condition = ['guid' => $guid, 'network' => [Protocol::DFRN, Protocol::DIASPORA]]; + if (!empty($reshared['guid']) && $complete) { + $condition = ['guid' => $reshared['guid'], 'network' => [Protocol::DFRN, Protocol::DIASPORA]]; $item = Item::selectFirst(['contact-id'], $condition); if (DBA::isResult($item)) { $ret = []; $ret["root_handle"] = self::handleFromContact($item["contact-id"]); - $ret["root_guid"] = $guid; + $ret["root_guid"] = $reshared['guid']; return $ret; } elseif ($complete) { // We are resharing something that isn't a DFRN or Diaspora post. // So we have to return "false" on "$complete" to not trigger a reshare. return false; } - } elseif (($guid == "") && $complete) { + } elseif (empty($reshared['guid']) && $complete) { return false; } - $ret["root_guid"] = $guid; - - $profile = ""; - preg_match("/profile='(.*?)'/ism", $attributes, $matches); - if (!empty($matches[1])) { - $profile = $matches[1]; - } - - preg_match('/profile="(.*?)"/ism', $attributes, $matches); - if (!empty($matches[1])) { - $profile = $matches[1]; - } - $ret = []; - if (!empty($profile) && ($cid = Contact::getIdForURL($profile))) { + if (!empty($reshared['profile']) && ($cid = Contact::getIdForURL($reshared['profile']))) { $contact = DBA::selectFirst('contact', ['addr'], ['id' => $cid]); if (!empty($contact['addr'])) { $ret['root_handle'] = $contact['addr']; diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 597645a8ec..a63b12731d 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1199,37 +1199,12 @@ class OStatus */ private static function getResharedGuid(array $item) { - $body = trim($item["body"]); - - // Skip if it isn't a pure repeated messages - // Does it start with a share? - if (strpos($body, "[share") > 0) { - return ""; + $reshared = Item::getShareArray($item); + if (empty($reshared['guid']) || !empty($reshared['comment'])) { + return ''; } - // Does it end with a share? - if (strlen($body) > (strrpos($body, "[/share]") + 8)) { - return ""; - } - - $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism", "$1", $body); - // Skip if there is no shared message in there - if ($body == $attributes) { - return false; - } - - $guid = ""; - preg_match("/guid='(.*?)'/ism", $attributes, $matches); - if (!empty($matches[1])) { - $guid = $matches[1]; - } - - preg_match('/guid="(.*?)"/ism', $attributes, $matches); - if (!empty($matches[1])) { - $guid = $matches[1]; - } - - return $guid; + return $reshared['guid']; } /**