2424namespace OCA \Files_Sharing \Activity \Providers ;
2525
2626use OCP \Activity \IEvent ;
27+ use OCP \Activity \IManager ;
28+ use OCP \IGroup ;
29+ use OCP \IGroupManager ;
30+ use OCP \IURLGenerator ;
31+ use OCP \IUserManager ;
32+ use OCP \L10N \IFactory ;
2733
2834class Groups extends Base {
2935
@@ -32,6 +38,24 @@ class Groups extends Base {
3238 const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self ' ;
3339 const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by ' ;
3440
41+ /** @var IGroupManager */
42+ protected $ groupManager ;
43+
44+ /** @var string[] */
45+ protected $ groupDisplayNames = [];
46+
47+ /**
48+ * @param IFactory $languageFactory
49+ * @param IURLGenerator $url
50+ * @param IManager $activityManager
51+ * @param IUserManager $userManager
52+ * @param IGroupManager $groupManager
53+ */
54+ public function __construct (IFactory $ languageFactory , IURLGenerator $ url , IManager $ activityManager , IUserManager $ userManager , IGroupManager $ groupManager ) {
55+ parent ::__construct ($ languageFactory , $ url , $ activityManager , $ userManager );
56+ $ this ->groupManager = $ groupManager ;
57+ }
58+
3559 /**
3660 * @param IEvent $event
3761 * @return IEvent
@@ -103,24 +127,44 @@ protected function getParsedParameters(IEvent $event) {
103127 case self ::SUBJECT_UNSHARED_GROUP_BY :
104128 return [
105129 'file ' => $ this ->getFile ($ parameters [0 ], $ event ),
106- 'group ' => [
107- 'type ' => 'group ' ,
108- 'id ' => $ parameters [2 ],
109- 'name ' => $ parameters [2 ],
110- ],
130+ 'group ' => $ this ->generateGroupParameter ($ parameters [2 ]),
111131 'actor ' => $ this ->getUser ($ parameters [1 ]),
112132 ];
113133 case self ::SUBJECT_SHARED_GROUP_SELF :
114134 case self ::SUBJECT_UNSHARED_GROUP_SELF :
115135 return [
116136 'file ' => $ this ->getFile ($ parameters [0 ], $ event ),
117- 'group ' => [
118- 'type ' => 'group ' ,
119- 'id ' => $ parameters [1 ],
120- 'name ' => $ parameters [1 ],
121- ],
137+ 'group ' => $ this ->generateGroupParameter ($ parameters [1 ]),
122138 ];
123139 }
124140 return [];
125141 }
142+
143+ /**
144+ * @param string $gid
145+ * @return array
146+ */
147+ protected function generateGroupParameter ($ gid ) {
148+ if (!isset ($ this ->groupDisplayNames [$ gid ])) {
149+ $ this ->groupDisplayNames [$ gid ] = $ this ->getGroupDisplayName ($ gid );
150+ }
151+
152+ return [
153+ 'type ' => 'group ' ,
154+ 'id ' => $ gid ,
155+ 'name ' => $ this ->groupDisplayNames [$ gid ],
156+ ];
157+ }
158+
159+ /**
160+ * @param string $gid
161+ * @return string
162+ */
163+ protected function getGroupDisplayName ($ gid ) {
164+ $ group = $ this ->groupManager ->get ($ gid );
165+ if ($ group instanceof IGroup) {
166+ return $ group ->getDisplayName ();
167+ }
168+ return $ gid ;
169+ }
126170}
0 commit comments