3 namespace Friendica\Protocol;
5 use Friendica\Protocol\Activity\Namespaces;
8 * Base class for the Activity constants and match method
12 const LIKE = Namespaces::ACTIVITY_SCHEMA . 'like';
14 const DISLIKE = Namespaces::DFRN . '/dislike';
15 const ATTEND = Namespaces::ZOT . '/activity/attendyes';
16 const ATTENDNO = Namespaces::ZOT . '/activity/attendno';
17 const ATTENDMAYBE = Namespaces::ZOT . '/activity/attendmaybe';
18 const OBJ_HEART = Namespaces::DFRN . '/heart';
20 const FRIEND = Namespaces::ACTIVITY_SCHEMA . 'make-friend';
21 const REQ_FRIEND = Namespaces::ACTIVITY_SCHEMA . 'request-friend';
22 const UNFRIEND = Namespaces::ACTIVITY_SCHEMA . 'remove-friend';
23 const FOLLOW = Namespaces::ACTIVITY_SCHEMA . 'follow';
24 const UNFOLLOW = Namespaces::ACTIVITY_SCHEMA . 'stop-following';
25 const JOIN = Namespaces::ACTIVITY_SCHEMA . 'join';
26 const POST = Namespaces::ACTIVITY_SCHEMA . 'post';
27 const UPDATE = Namespaces::ACTIVITY_SCHEMA . 'update';
28 const TAG = Namespaces::ACTIVITY_SCHEMA . 'tag';
29 const FAVORITE = Namespaces::ACTIVITY_SCHEMA . 'favorite';
30 const UNFAVORITE = Namespaces::ACTIVITY_SCHEMA . 'unfavorite';
31 const SHARE = Namespaces::ACTIVITY_SCHEMA . 'share';
32 const DELETE = Namespaces::ACTIVITY_SCHEMA . 'delete';
33 const ANNOUNCE = Namespaces::ACTIVITY2 . 'Announce';
35 const POKE = Namespaces::ZOT . '/activity/poke';
37 const OBJ_BOOKMARK = Namespaces::ACTIVITY_SCHEMA . 'bookmark';
38 const OBJ_COMMENT = Namespaces::ACTIVITY_SCHEMA . 'comment';
39 const OBJ_NOTE = Namespaces::ACTIVITY_SCHEMA . 'note';
40 const OBJ_PERSON = Namespaces::ACTIVITY_SCHEMA . 'person';
41 const OBJ_IMAGE = Namespaces::ACTIVITY_SCHEMA . 'image';
42 const OBJ_PHOTO = Namespaces::ACTIVITY_SCHEMA . 'photo';
43 const OBJ_VIDEO = Namespaces::ACTIVITY_SCHEMA . 'video';
44 const OBJ_P_PHOTO = Namespaces::ACTIVITY_SCHEMA . 'profile-photo';
45 const OBJ_ALBUM = Namespaces::ACTIVITY_SCHEMA . 'photo-album';
46 const OBJ_EVENT = Namespaces::ACTIVITY_SCHEMA . 'event';
47 const OBJ_GROUP = Namespaces::ACTIVITY_SCHEMA . 'group';
48 const OBJ_TAGTERM = Namespaces::DFRN . '/tagterm';
49 const OBJ_PROFILE = Namespaces::DFRN . '/profile';
51 const OBJ_QUESTION = 'http://activityschema.org/object/question';
54 * likes (etc.) can apply to other things besides posts. Check if they are post children,
55 * in which case we handle them specially
57 * Hidden activities, which doesn't need to be shown
59 const HIDDEN_ACTIVITIES = [
60 Activity::LIKE, Activity::DISLIKE,
61 Activity::ATTEND, Activity::ATTENDNO, Activity::ATTENDMAYBE,
67 * Checks if the given activity is a hidden activity
69 * @param string $activity The current activity
71 * @return bool True, if the activity is hidden
73 public function isHidden(string $activity)
75 foreach (self::HIDDEN_ACTIVITIES as $hiddenActivity) {
76 if ($this->match($activity, $hiddenActivity)) {
85 * Compare activity uri. Knows about activity namespace.
87 * @param string $haystack
88 * @param string $needle
92 public function match(string $haystack, string $needle)
94 return (($haystack === $needle) ||
95 ((basename($needle) === $haystack) &&
96 strstr($needle, Namespaces::ACTIVITY_SCHEMA)));