[TheFreeNetwork][fix_duplicates.php] Don't die because you couldn't federate an undo follow

This commit is contained in:
Diogo Cordeiro 2020-08-04 13:03:33 +01:00 committed by Diogo Peralta Cordeiro
parent f81b578a37
commit 4dfa7f374a
4 changed files with 41 additions and 24 deletions

View File

@ -80,25 +80,35 @@ function fix_duplicates(string $profile_class, array &$seen): void
// Have we seen this profile before? // Have we seen this profile before?
if (array_key_exists($uri, $seen)) { if (array_key_exists($uri, $seen)) {
// Was it on a previous protocol? Keep the highest preference protocol's one try {
if ($seen[$uri] !== $id) { // Was it on a previous protocol? Keep the highest preference protocol's one
printfnq("Deleting Profile with id = {$id}\n"); if ($seen[$uri] !== $id) {
$profile = Profile::getByID($id); printfnq("Deleting Profile with id = {$id}\n");
$profile->delete(); $profile = Profile::getByID($id);
} else { $profile->delete();
printfnq("Deleting {$profile_class} with id = {$id}\n"); } else {
$protocol_profile->delete(); printfnq("Deleting {$profile_class} with id = {$id}\n");
$protocol_profile->delete();
}
} catch (Exception $e) {
// Let it go
printfnq('FWIW: ' . $e->getMessage() . "\n");
} }
} elseif (array_key_exists($uri, $seen_local)) { } elseif (array_key_exists($uri, $seen_local)) {
// Was it in this protocol? Delete the older record. try {
if ($seen_local[$uri] !== $id) { // Was it in this protocol? Delete the older record.
printfnq("Deleting Profile with id = {$seen_local[$uri]}\n"); if ($seen_local[$uri] !== $id) {
$profile = Profile::getByID($seen_local[$uri]); printfnq("Deleting Profile with id = {$seen_local[$uri]}\n");
$profile->delete(); $profile = Profile::getByID($seen_local[$uri]);
} else { $profile->delete();
printfnq("Deleting {$profile_class} with id = {$seen_local[$uri]}\n"); } else {
$profile = $profile_class::getKV('profile_id', $seen_local[$uri]); printfnq("Deleting {$profile_class} with id = {$seen_local[$uri]}\n");
$profile->delete(); $profile = $profile_class::getKV('profile_id', $seen_local[$uri]);
$profile->delete();
}
} catch (Exception $e) {
// Let it go
printfnq('FWIW: ' . $e->getMessage() . "\n");
} }
// Update the profile id for this URI. // Update the profile id for this URI.
$seen_local[$uri] = $id; $seen_local[$uri] = $id;
@ -107,6 +117,8 @@ function fix_duplicates(string $profile_class, array &$seen): void
$seen_local[$uri] = $id; $seen_local[$uri] = $id;
} }
} }
$protocol_profile->free();
unset($protocol_profile);
// Merge the findings inside this protocol with the global seen to be used on the next protocol of the list. // Merge the findings inside this protocol with the global seen to be used on the next protocol of the list.
$seen = array_merge($seen, $seen_local); $seen = array_merge($seen, $seen_local);

View File

@ -710,7 +710,7 @@ class OStatusPlugin extends Plugin
* @param Profile $profile subscriber * @param Profile $profile subscriber
* @param Profile $other subscribee * @param Profile $other subscribee
* *
* @return hook return code * @return bool hook return code
* *
* @throws Exception * @throws Exception
*/ */
@ -735,7 +735,7 @@ class OStatusPlugin extends Plugin
* @param Profile $profile subscriber * @param Profile $profile subscriber
* @param Profile $other subscribee * @param Profile $other subscribee
* *
* @return hook return code * @return bool hook return code
* *
* @throws Exception * @throws Exception
*/ */

View File

@ -385,7 +385,7 @@ class Ostatus_profile extends Managed_DataObject
* *
* @param mixed $entry XML string, Notice, or Activity * @param mixed $entry XML string, Notice, or Activity
* @param Profile $actor * @param Profile $actor
* @return boolean success * @return bool success
*/ */
public function notifyActivity($entry, Profile $actor) public function notifyActivity($entry, Profile $actor)
{ {

View File

@ -43,11 +43,16 @@ class Salmon
* *
* @param string $endpoint_uri * @param string $endpoint_uri
* @param string $xml string representation of payload * @param string $xml string representation of payload
* @param Profile $user profile whose keys we sign with (must be a local user) * @param Profile $actor profile whose keys we sign with (must be a local user)
* @return boolean success * @param Profile|null $target
* @return bool success
*/ */
public static function post($endpoint_uri, $xml, Profile $actor, Profile $target=null) public static function post(
{ $endpoint_uri,
$xml,
Profile $actor,
?Profile $target = null
) {
if (empty($endpoint_uri)) { if (empty($endpoint_uri)) {
common_debug('No endpoint URI for Salmon post to '.$actor->getUri()); common_debug('No endpoint URI for Salmon post to '.$actor->getUri());
return false; return false;