Move activity_match() to Protocol\Activity::match()
- With tests
This commit is contained in:
@@ -21,6 +21,7 @@ use Friendica\Core\System;
|
||||
use Friendica\Core\Session;
|
||||
use Friendica\Core\Worker;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Protocol\Activity;
|
||||
use Friendica\Protocol\ActivityPub;
|
||||
use Friendica\Protocol\Diaspora;
|
||||
use Friendica\Protocol\OStatus;
|
||||
@@ -1358,13 +1359,16 @@ class Item extends BaseObject
|
||||
$item['parent-uri'] = $item['thr-parent'];
|
||||
}
|
||||
|
||||
/** @var Activity $activity */
|
||||
$activity = self::getClass(Activity::class);
|
||||
|
||||
if (isset($item['gravity'])) {
|
||||
$item['gravity'] = intval($item['gravity']);
|
||||
} elseif ($item['parent-uri'] === $item['uri']) {
|
||||
$item['gravity'] = GRAVITY_PARENT;
|
||||
} elseif (activity_match($item['verb'], ACTIVITY_POST)) {
|
||||
} elseif ($activity->match($item['verb'], ACTIVITY_POST)) {
|
||||
$item['gravity'] = GRAVITY_COMMENT;
|
||||
} elseif (activity_match($item['verb'], ACTIVITY_FOLLOW)) {
|
||||
} elseif ($activity->match($item['verb'], ACTIVITY_FOLLOW)) {
|
||||
$item['gravity'] = GRAVITY_ACTIVITY;
|
||||
} else {
|
||||
$item['gravity'] = GRAVITY_UNKNOWN; // Should not happen
|
||||
|
||||
@@ -21,6 +21,7 @@ use Friendica\Model\Contact;
|
||||
use Friendica\Model\Item;
|
||||
use Friendica\Model\Term;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Protocol\Activity;
|
||||
use Friendica\Util\Crypto;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
use Friendica\Util\Proxy as ProxyUtils;
|
||||
@@ -517,12 +518,17 @@ class Post extends BaseObject
|
||||
Logger::log('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', Logger::DEBUG);
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @var Activity $activity */
|
||||
$activity = self::getClass(Activity::class);
|
||||
|
||||
/*
|
||||
* Only add what will be displayed
|
||||
*/
|
||||
if ($item->getDataValue('network') === Protocol::MAIL && local_user() != $item->getDataValue('uid')) {
|
||||
return false;
|
||||
} elseif (activity_match($item->getDataValue('verb'), ACTIVITY_LIKE) || activity_match($item->getDataValue('verb'), ACTIVITY_DISLIKE)) {
|
||||
} elseif ($activity->match($item->getDataValue('verb'), ACTIVITY_LIKE) ||
|
||||
$activity->match($item->getDataValue('verb'), ACTIVITY_DISLIKE)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
23
src/Protocol/Activity.php
Normal file
23
src/Protocol/Activity.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Friendica\Protocol;
|
||||
|
||||
/**
|
||||
* Base class for the Activity namespace
|
||||
*/
|
||||
final class Activity
|
||||
{
|
||||
/**
|
||||
* Compare activity uri. Knows about activity namespace.
|
||||
*
|
||||
* @param string $haystack
|
||||
* @param string $needle
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function match(string $haystack, string $needle) {
|
||||
return (($haystack === $needle) ||
|
||||
((basename($needle) === $haystack) &&
|
||||
strstr($needle, NAMESPACE_ACTIVITY_SCHEMA)));
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ use DOMDocument;
|
||||
use DOMXPath;
|
||||
use Friendica\App;
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\BaseObject;
|
||||
use Friendica\Content\OEmbed;
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Content\Text\HTML;
|
||||
@@ -2180,24 +2181,27 @@ class DFRN
|
||||
// The functions below are partly used by ostatus.php as well - where we have this variable
|
||||
$contact = Contact::selectFirst([], ['id' => $importer['id']]);
|
||||
|
||||
/** @var Activity $activity */
|
||||
$activity = BaseObject::getClass(Activity::class);
|
||||
|
||||
// Big question: Do we need these functions? They were part of the "consume_feed" function.
|
||||
// This function once was responsible for DFRN and OStatus.
|
||||
if (activity_match($item["verb"], ACTIVITY_FOLLOW)) {
|
||||
if ($activity->match($item["verb"], ACTIVITY_FOLLOW)) {
|
||||
Logger::log("New follower");
|
||||
Contact::addRelationship($importer, $contact, $item);
|
||||
return false;
|
||||
}
|
||||
if (activity_match($item["verb"], ACTIVITY_UNFOLLOW)) {
|
||||
if ($activity->match($item["verb"], ACTIVITY_UNFOLLOW)) {
|
||||
Logger::log("Lost follower");
|
||||
Contact::removeFollower($importer, $contact, $item);
|
||||
return false;
|
||||
}
|
||||
if (activity_match($item["verb"], ACTIVITY_REQ_FRIEND)) {
|
||||
if ($activity->match($item["verb"], ACTIVITY_REQ_FRIEND)) {
|
||||
Logger::log("New friend request");
|
||||
Contact::addRelationship($importer, $contact, $item, true);
|
||||
return false;
|
||||
}
|
||||
if (activity_match($item["verb"], ACTIVITY_UNFRIEND)) {
|
||||
if ($activity->match($item["verb"], ACTIVITY_UNFRIEND)) {
|
||||
Logger::log("Lost sharer");
|
||||
Contact::removeSharer($importer, $contact, $item);
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user