]> git.mxchange.org Git - friendica.git/blob - src/Protocol/Activity.php
ddbfce1b7315db01fdcfbe353f2cf23a00563deb
[friendica.git] / src / Protocol / Activity.php
1 <?php
2
3 namespace Friendica\Protocol;
4
5 use Friendica\Protocol\Activity\Namespaces;
6
7 /**
8  * Base class for the Activity constants and match method
9  */
10 final class Activity
11 {
12         const LIKE         = Namespaces::ACTIVITY_SCHEMA . 'like';
13
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';
19
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';
34
35         const POKE         = Namespaces::ZOT             . '/activity/poke';
36
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';
50
51         const OBJ_QUESTION = 'http://activityschema.org/object/question';
52
53         /**
54          * likes (etc.) can apply to other things besides posts. Check if they are post children,
55          * in which case we handle them specially
56          *
57          * Hidden activities, which doesn't need to be shown
58          */
59         const HIDDEN_ACTIVITIES = [
60                 Activity::LIKE, Activity::DISLIKE,
61                 Activity::ATTEND, Activity::ATTENDNO, Activity::ATTENDMAYBE,
62                 Activity::FOLLOW,
63                 Activity::ANNOUNCE,
64         ];
65
66         /**
67          * Checks if the given activity is a hidden activity
68          *
69          * @param string $activity The current activity
70          *
71          * @return bool True, if the activity is hidden
72          */
73         public function isHidden(string $activity)
74         {
75                 foreach (self::HIDDEN_ACTIVITIES as $hiddenActivity) {
76                         if ($this->match($activity, $hiddenActivity)) {
77                                 return true;
78                         }
79                 }
80
81                 return false;
82         }
83
84         /**
85          * Compare activity uri. Knows about activity namespace.
86          *
87          * @param string $haystack
88          * @param string $needle
89          *
90          * @return boolean
91          */
92         public function match(string $haystack, string $needle)
93         {
94                 return (($haystack === $needle) ||
95                         ((basename($needle) === $haystack) &&
96                          strstr($needle, Namespaces::ACTIVITY_SCHEMA)));
97         }
98 }