X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FActivity.php;h=bba7909fdf062f2eca6549eb7c080ba86691b6e2;hb=cc8491223ec17bd12b7f37d5b2cc16b58184291e;hp=64253b0652ecba91226a6305de401d61e81be93d;hpb=ee1954f2944f3996f4320a48b68fad7e2174da34;p=friendica.git diff --git a/src/Protocol/Activity.php b/src/Protocol/Activity.php index 64253b0652..bba7909fdf 100644 --- a/src/Protocol/Activity.php +++ b/src/Protocol/Activity.php @@ -1,12 +1,212 @@ . + * + */ namespace Friendica\Protocol; +use Friendica\Protocol\ActivityNamespace; + /** - * Base class for the Activity namespace + * Base class for the Activity Verbs */ final class Activity { + /** + * Indicates that the actor marked the object as an item of special interest. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const LIKE = ActivityNamespace::ACTIVITY_SCHEMA . 'like'; + /** + * Dislike a message ("I don't like the post") + * + * @see http://purl.org/macgirvin/dfrn/1.0/dislike + * @var string + */ + const DISLIKE = ActivityNamespace::DFRN . '/dislike'; + + /** + * Attend an event + * + * @see https://github.com/friendica/friendica/wiki/ActivityStreams#activity_attend + * @var string + */ + const ATTEND = ActivityNamespace::ZOT . '/activity/attendyes'; + /** + * Don't attend an event + * + * @see https://github.com/friendica/friendica/wiki/ActivityStreams#activity_attendno + * @var string + */ + const ATTENDNO = ActivityNamespace::ZOT . '/activity/attendno'; + /** + * Attend maybe an event + * + * @see https://github.com/friendica/friendica/wiki/ActivityStreams#activity_attendmaybe + * @var string + */ + const ATTENDMAYBE = ActivityNamespace::ZOT . '/activity/attendmaybe'; + + /** + * Indicates the creation of a friendship that is reciprocated by the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const FRIEND = ActivityNamespace::ACTIVITY_SCHEMA . 'make-friend'; + /** + * Indicates the creation of a friendship that has not yet been reciprocated by the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const REQ_FRIEND = ActivityNamespace::ACTIVITY_SCHEMA . 'request-friend'; + /** + * Indicates that the actor has removed the object from the collection of friends. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const UNFRIEND = ActivityNamespace::ACTIVITY_SCHEMA . 'remove-friend'; + /** + * Indicates that the actor began following the activity of the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const FOLLOW = ActivityNamespace::ACTIVITY_SCHEMA . 'follow'; + /** + * Indicates that the actor has stopped following the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const UNFOLLOW = ActivityNamespace::ACTIVITY_SCHEMA . 'stop-following'; + /** + * Indicates that the actor has become a member of the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const JOIN = ActivityNamespace::ACTIVITY_SCHEMA . 'join'; + /** + * Implementors SHOULD use verbs such as post where the actor is adding new items to a collection or similar. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const POST = ActivityNamespace::ACTIVITY_SCHEMA . 'post'; + /** + * The "update" verb indicates that the actor has modified the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const UPDATE = ActivityNamespace::ACTIVITY_SCHEMA . 'update'; + /** + * Indicates that the actor has identified the presence of a target inside another object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const TAG = ActivityNamespace::ACTIVITY_SCHEMA . 'tag'; + /** + * Indicates that the actor marked the object as an item of special interest. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const FAVORITE = ActivityNamespace::ACTIVITY_SCHEMA . 'favorite'; + /** + * Indicates that the actor has removed the object from the collection of favorited items. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const UNFAVORITE = ActivityNamespace::ACTIVITY_SCHEMA . 'unfavorite'; + /** + * Indicates that the actor has called out the object to readers. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const SHARE = ActivityNamespace::ACTIVITY_SCHEMA . 'share'; + /** + * Indicates that the actor has deleted the object. + * + * @see http://activitystrea.ms/head/activity-schema.html#verbs + * @var string + */ + const DELETE = ActivityNamespace::ACTIVITY_SCHEMA . 'delete'; + /** + * Indicates that the actor is calling the target's attention the object. + * + * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-announce + * @var string + */ + const ANNOUNCE = ActivityNamespace::ACTIVITY2 . 'Announce'; + + /** + * Pokes an user. + * + * @see https://github.com/friendica/friendica/wiki/ActivityStreams#activity_poke + * @var string + */ + const POKE = ActivityNamespace::ZOT . '/activity/poke'; + + + const O_UNFOLLOW = ActivityNamespace::OSTATUS . '/unfollow'; + const O_UNFAVOURITE = ActivityNamespace::OSTATUS . '/unfavorite'; + + /** + * likes (etc.) can apply to other things besides posts. Check if they are post children, + * in which case we handle them specially + * + * Hidden activities, which doesn't need to be shown + */ + const HIDDEN_ACTIVITIES = [ + Activity::LIKE, Activity::DISLIKE, + Activity::ATTEND, Activity::ATTENDNO, Activity::ATTENDMAYBE, + Activity::FOLLOW, + Activity::ANNOUNCE, + ]; + + /** + * Checks if the given activity is a hidden activity + * + * @param string $activity The current activity + * + * @return bool True, if the activity is hidden + */ + public function isHidden(string $activity) + { + foreach (self::HIDDEN_ACTIVITIES as $hiddenActivity) { + if ($this->match($activity, $hiddenActivity)) { + return true; + } + } + + return false; + } + /** * Compare activity uri. Knows about activity namespace. * @@ -15,9 +215,10 @@ final class Activity * * @return boolean */ - public function match(string $haystack, string $needle) { + public function match(string $haystack, string $needle) + { return (($haystack === $needle) || ((basename($needle) === $haystack) && - strstr($needle, NAMESPACE_ACTIVITY_SCHEMA))); + strstr($needle, ActivityNamespace::ACTIVITY_SCHEMA))); } }