Completed
Push — master ( fde08a...208e38 )
by Blizzz
17:49
created
lib/private/Group/MetaData.php 1 patch
Indentation   +168 added lines, -168 removed lines patch added patch discarded remove patch
@@ -30,172 +30,172 @@
 block discarded – undo
30 30
 use OCP\IUserSession;
31 31
 
32 32
 class MetaData {
33
-	const SORT_NONE = 0;
34
-	const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends
35
-	const SORT_GROUPNAME = 2;
36
-
37
-	/** @var string */
38
-	protected $user;
39
-	/** @var bool */
40
-	protected $isAdmin;
41
-	/** @var array */
42
-	protected $metaData = array();
43
-	/** @var \OCP\IGroupManager */
44
-	protected $groupManager;
45
-	/** @var bool */
46
-	protected $sorting = false;
47
-	/** @var IUserSession */
48
-	protected $userSession;
49
-
50
-	/**
51
-	 * @param string $user the uid of the current user
52
-	 * @param bool $isAdmin whether the current users is an admin
53
-	 * @param \OCP\IGroupManager $groupManager
54
-	 * @param IUserSession $userSession
55
-	 */
56
-	public function __construct(
57
-			$user,
58
-			$isAdmin,
59
-			\OCP\IGroupManager $groupManager,
60
-			IUserSession $userSession
61
-			) {
62
-		$this->user = $user;
63
-		$this->isAdmin = (bool)$isAdmin;
64
-		$this->groupManager = $groupManager;
65
-		$this->userSession = $userSession;
66
-	}
67
-
68
-	/**
69
-	 * returns an array with meta data about all available groups
70
-	 * the array is structured as follows:
71
-	 * [0] array containing meta data about admin groups
72
-	 * [1] array containing meta data about unprivileged groups
73
-	 * @param string $groupSearch only effective when instance was created with
74
-	 * isAdmin being true
75
-	 * @param string $userSearch the pattern users are search for
76
-	 * @return array
77
-	 */
78
-	public function get($groupSearch = '', $userSearch = '') {
79
-		$key = $groupSearch . '::' . $userSearch;
80
-		if(isset($this->metaData[$key])) {
81
-			return $this->metaData[$key];
82
-		}
83
-
84
-		$adminGroups = array();
85
-		$groups = array();
86
-		$sortGroupsIndex = 0;
87
-		$sortGroupsKeys = array();
88
-		$sortAdminGroupsIndex = 0;
89
-		$sortAdminGroupsKeys = array();
90
-
91
-		foreach($this->getGroups($groupSearch) as $group) {
92
-			$groupMetaData = $this->generateGroupMetaData($group, $userSearch);
93
-			if (strtolower($group->getGID()) !== 'admin') {
94
-				$this->addEntry(
95
-					$groups,
96
-					$sortGroupsKeys,
97
-					$sortGroupsIndex,
98
-					$groupMetaData);
99
-			} else {
100
-				//admin group is hard coded to 'admin' for now. In future,
101
-				//backends may define admin groups too. Then the if statement
102
-				//has to be adjusted accordingly.
103
-				$this->addEntry(
104
-					$adminGroups,
105
-					$sortAdminGroupsKeys,
106
-					$sortAdminGroupsIndex,
107
-					$groupMetaData);
108
-			}
109
-		}
110
-
111
-		//whether sorting is necessary is will be checked in sort()
112
-		$this->sort($groups, $sortGroupsKeys);
113
-		$this->sort($adminGroups, $sortAdminGroupsKeys);
114
-
115
-		$this->metaData[$key] = array($adminGroups, $groups);
116
-		return $this->metaData[$key];
117
-	}
118
-
119
-	/**
120
-	 * sets the sort mode, see SORT_* constants for supported modes
121
-	 *
122
-	 * @param int $sortMode
123
-	 */
124
-	public function setSorting($sortMode) {
125
-		switch ($sortMode) {
126
-			case self::SORT_USERCOUNT:
127
-			case self::SORT_GROUPNAME:
128
-				$this->sorting = $sortMode;
129
-				break;
130
-
131
-			default:
132
-				$this->sorting = self::SORT_NONE;
133
-		}
134
-	}
135
-
136
-	/**
137
-	 * adds an group entry to the resulting array
138
-	 * @param array $entries the resulting array, by reference
139
-	 * @param array $sortKeys the sort key array, by reference
140
-	 * @param int $sortIndex the sort key index, by reference
141
-	 * @param array $data the group's meta data as returned by generateGroupMetaData()
142
-	 */
143
-	private function addEntry(&$entries, &$sortKeys, &$sortIndex, $data) {
144
-		$entries[] = $data;
145
-		if ($this->sorting === self::SORT_USERCOUNT) {
146
-			$sortKeys[$sortIndex] = $data['usercount'];
147
-			$sortIndex++;
148
-		} else if ($this->sorting === self::SORT_GROUPNAME) {
149
-			$sortKeys[$sortIndex] = $data['name'];
150
-			$sortIndex++;
151
-		}
152
-	}
153
-
154
-	/**
155
-	 * creates an array containing the group meta data
156
-	 * @param \OCP\IGroup $group
157
-	 * @param string $userSearch
158
-	 * @return array with the keys 'id', 'name' and 'usercount'
159
-	 */
160
-	private function generateGroupMetaData(\OCP\IGroup $group, $userSearch) {
161
-		return array(
162
-				'id' => $group->getGID(),
163
-				'name' => $group->getDisplayName(),
164
-				'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
165
-			);
166
-	}
167
-
168
-	/**
169
-	 * sorts the result array, if applicable
170
-	 * @param array $entries the result array, by reference
171
-	 * @param array $sortKeys the array containing the sort keys
172
-	 * @param return null
173
-	 */
174
-	private function sort(&$entries, $sortKeys) {
175
-		if ($this->sorting === self::SORT_USERCOUNT) {
176
-			array_multisort($sortKeys, SORT_DESC, $entries);
177
-		} else if ($this->sorting === self::SORT_GROUPNAME) {
178
-			array_multisort($sortKeys, SORT_ASC, $entries);
179
-		}
180
-	}
181
-
182
-	/**
183
-	 * returns the available groups
184
-	 * @param string $search a search string
185
-	 * @return \OCP\IGroup[]
186
-	 */
187
-	protected function getGroups($search = '') {
188
-		if($this->isAdmin) {
189
-			return $this->groupManager->search($search);
190
-		} else {
191
-			$userObject = $this->userSession->getUser();
192
-			if($userObject !== null) {
193
-				$groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($userObject);
194
-			} else {
195
-				$groups = [];
196
-			}
197
-
198
-			return $groups;
199
-		}
200
-	}
33
+    const SORT_NONE = 0;
34
+    const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends
35
+    const SORT_GROUPNAME = 2;
36
+
37
+    /** @var string */
38
+    protected $user;
39
+    /** @var bool */
40
+    protected $isAdmin;
41
+    /** @var array */
42
+    protected $metaData = array();
43
+    /** @var \OCP\IGroupManager */
44
+    protected $groupManager;
45
+    /** @var bool */
46
+    protected $sorting = false;
47
+    /** @var IUserSession */
48
+    protected $userSession;
49
+
50
+    /**
51
+     * @param string $user the uid of the current user
52
+     * @param bool $isAdmin whether the current users is an admin
53
+     * @param \OCP\IGroupManager $groupManager
54
+     * @param IUserSession $userSession
55
+     */
56
+    public function __construct(
57
+            $user,
58
+            $isAdmin,
59
+            \OCP\IGroupManager $groupManager,
60
+            IUserSession $userSession
61
+            ) {
62
+        $this->user = $user;
63
+        $this->isAdmin = (bool)$isAdmin;
64
+        $this->groupManager = $groupManager;
65
+        $this->userSession = $userSession;
66
+    }
67
+
68
+    /**
69
+     * returns an array with meta data about all available groups
70
+     * the array is structured as follows:
71
+     * [0] array containing meta data about admin groups
72
+     * [1] array containing meta data about unprivileged groups
73
+     * @param string $groupSearch only effective when instance was created with
74
+     * isAdmin being true
75
+     * @param string $userSearch the pattern users are search for
76
+     * @return array
77
+     */
78
+    public function get($groupSearch = '', $userSearch = '') {
79
+        $key = $groupSearch . '::' . $userSearch;
80
+        if(isset($this->metaData[$key])) {
81
+            return $this->metaData[$key];
82
+        }
83
+
84
+        $adminGroups = array();
85
+        $groups = array();
86
+        $sortGroupsIndex = 0;
87
+        $sortGroupsKeys = array();
88
+        $sortAdminGroupsIndex = 0;
89
+        $sortAdminGroupsKeys = array();
90
+
91
+        foreach($this->getGroups($groupSearch) as $group) {
92
+            $groupMetaData = $this->generateGroupMetaData($group, $userSearch);
93
+            if (strtolower($group->getGID()) !== 'admin') {
94
+                $this->addEntry(
95
+                    $groups,
96
+                    $sortGroupsKeys,
97
+                    $sortGroupsIndex,
98
+                    $groupMetaData);
99
+            } else {
100
+                //admin group is hard coded to 'admin' for now. In future,
101
+                //backends may define admin groups too. Then the if statement
102
+                //has to be adjusted accordingly.
103
+                $this->addEntry(
104
+                    $adminGroups,
105
+                    $sortAdminGroupsKeys,
106
+                    $sortAdminGroupsIndex,
107
+                    $groupMetaData);
108
+            }
109
+        }
110
+
111
+        //whether sorting is necessary is will be checked in sort()
112
+        $this->sort($groups, $sortGroupsKeys);
113
+        $this->sort($adminGroups, $sortAdminGroupsKeys);
114
+
115
+        $this->metaData[$key] = array($adminGroups, $groups);
116
+        return $this->metaData[$key];
117
+    }
118
+
119
+    /**
120
+     * sets the sort mode, see SORT_* constants for supported modes
121
+     *
122
+     * @param int $sortMode
123
+     */
124
+    public function setSorting($sortMode) {
125
+        switch ($sortMode) {
126
+            case self::SORT_USERCOUNT:
127
+            case self::SORT_GROUPNAME:
128
+                $this->sorting = $sortMode;
129
+                break;
130
+
131
+            default:
132
+                $this->sorting = self::SORT_NONE;
133
+        }
134
+    }
135
+
136
+    /**
137
+     * adds an group entry to the resulting array
138
+     * @param array $entries the resulting array, by reference
139
+     * @param array $sortKeys the sort key array, by reference
140
+     * @param int $sortIndex the sort key index, by reference
141
+     * @param array $data the group's meta data as returned by generateGroupMetaData()
142
+     */
143
+    private function addEntry(&$entries, &$sortKeys, &$sortIndex, $data) {
144
+        $entries[] = $data;
145
+        if ($this->sorting === self::SORT_USERCOUNT) {
146
+            $sortKeys[$sortIndex] = $data['usercount'];
147
+            $sortIndex++;
148
+        } else if ($this->sorting === self::SORT_GROUPNAME) {
149
+            $sortKeys[$sortIndex] = $data['name'];
150
+            $sortIndex++;
151
+        }
152
+    }
153
+
154
+    /**
155
+     * creates an array containing the group meta data
156
+     * @param \OCP\IGroup $group
157
+     * @param string $userSearch
158
+     * @return array with the keys 'id', 'name' and 'usercount'
159
+     */
160
+    private function generateGroupMetaData(\OCP\IGroup $group, $userSearch) {
161
+        return array(
162
+                'id' => $group->getGID(),
163
+                'name' => $group->getDisplayName(),
164
+                'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
165
+            );
166
+    }
167
+
168
+    /**
169
+     * sorts the result array, if applicable
170
+     * @param array $entries the result array, by reference
171
+     * @param array $sortKeys the array containing the sort keys
172
+     * @param return null
173
+     */
174
+    private function sort(&$entries, $sortKeys) {
175
+        if ($this->sorting === self::SORT_USERCOUNT) {
176
+            array_multisort($sortKeys, SORT_DESC, $entries);
177
+        } else if ($this->sorting === self::SORT_GROUPNAME) {
178
+            array_multisort($sortKeys, SORT_ASC, $entries);
179
+        }
180
+    }
181
+
182
+    /**
183
+     * returns the available groups
184
+     * @param string $search a search string
185
+     * @return \OCP\IGroup[]
186
+     */
187
+    protected function getGroups($search = '') {
188
+        if($this->isAdmin) {
189
+            return $this->groupManager->search($search);
190
+        } else {
191
+            $userObject = $this->userSession->getUser();
192
+            if($userObject !== null) {
193
+                $groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($userObject);
194
+            } else {
195
+                $groups = [];
196
+            }
197
+
198
+            return $groups;
199
+        }
200
+    }
201 201
 }
Please login to merge, or discard this patch.
settings/Controller/GroupsController.php 1 patch
Indentation   +108 added lines, -108 removed lines patch added patch discarded remove patch
@@ -38,120 +38,120 @@
 block discarded – undo
38 38
  * @package OC\Settings\Controller
39 39
  */
40 40
 class GroupsController extends Controller {
41
-	/** @var IGroupManager */
42
-	private $groupManager;
43
-	/** @var IL10N */
44
-	private $l10n;
45
-	/** @var IUserSession */
46
-	private $userSession;
47
-	/** @var bool */
48
-	private $isAdmin;
41
+    /** @var IGroupManager */
42
+    private $groupManager;
43
+    /** @var IL10N */
44
+    private $l10n;
45
+    /** @var IUserSession */
46
+    private $userSession;
47
+    /** @var bool */
48
+    private $isAdmin;
49 49
 
50
-	/**
51
-	 * @param string $appName
52
-	 * @param IRequest $request
53
-	 * @param IGroupManager $groupManager
54
-	 * @param IUserSession $userSession
55
-	 * @param bool $isAdmin
56
-	 * @param IL10N $l10n
57
-	 */
58
-	public function __construct($appName,
59
-								IRequest $request,
60
-								IGroupManager $groupManager,
61
-								IUserSession $userSession,
62
-								$isAdmin,
63
-								IL10N $l10n) {
64
-		parent::__construct($appName, $request);
65
-		$this->groupManager = $groupManager;
66
-		$this->userSession = $userSession;
67
-		$this->isAdmin = $isAdmin;
68
-		$this->l10n = $l10n;
69
-	}
50
+    /**
51
+     * @param string $appName
52
+     * @param IRequest $request
53
+     * @param IGroupManager $groupManager
54
+     * @param IUserSession $userSession
55
+     * @param bool $isAdmin
56
+     * @param IL10N $l10n
57
+     */
58
+    public function __construct($appName,
59
+                                IRequest $request,
60
+                                IGroupManager $groupManager,
61
+                                IUserSession $userSession,
62
+                                $isAdmin,
63
+                                IL10N $l10n) {
64
+        parent::__construct($appName, $request);
65
+        $this->groupManager = $groupManager;
66
+        $this->userSession = $userSession;
67
+        $this->isAdmin = $isAdmin;
68
+        $this->l10n = $l10n;
69
+    }
70 70
 
71
-	/**
72
-	 * @NoAdminRequired
73
-	 *
74
-	 * @param string $pattern
75
-	 * @param bool $filterGroups
76
-	 * @param int $sortGroups
77
-	 * @return DataResponse
78
-	 */
79
-	public function index($pattern = '', $filterGroups = false, $sortGroups = MetaData::SORT_USERCOUNT) {
80
-		$groupPattern = $filterGroups ? $pattern : '';
71
+    /**
72
+     * @NoAdminRequired
73
+     *
74
+     * @param string $pattern
75
+     * @param bool $filterGroups
76
+     * @param int $sortGroups
77
+     * @return DataResponse
78
+     */
79
+    public function index($pattern = '', $filterGroups = false, $sortGroups = MetaData::SORT_USERCOUNT) {
80
+        $groupPattern = $filterGroups ? $pattern : '';
81 81
 
82
-		$groupsInfo = new MetaData(
83
-			$this->userSession->getUser()->getUID(),
84
-			$this->isAdmin,
85
-			$this->groupManager,
86
-			$this->userSession
87
-		);
88
-		$groupsInfo->setSorting($sortGroups);
89
-		list($adminGroups, $groups) = $groupsInfo->get($groupPattern, $pattern);
82
+        $groupsInfo = new MetaData(
83
+            $this->userSession->getUser()->getUID(),
84
+            $this->isAdmin,
85
+            $this->groupManager,
86
+            $this->userSession
87
+        );
88
+        $groupsInfo->setSorting($sortGroups);
89
+        list($adminGroups, $groups) = $groupsInfo->get($groupPattern, $pattern);
90 90
 
91
-		return new DataResponse(
92
-			array(
93
-				'data' => array('adminGroups' => $adminGroups, 'groups' => $groups)
94
-			)
95
-		);
96
-	}
91
+        return new DataResponse(
92
+            array(
93
+                'data' => array('adminGroups' => $adminGroups, 'groups' => $groups)
94
+            )
95
+        );
96
+    }
97 97
 
98
-	/**
99
-	 * @PasswordConfirmationRequired
100
-	 * @param string $id
101
-	 * @return DataResponse
102
-	 */
103
-	public function create($id) {
104
-		if($this->groupManager->groupExists($id)) {
105
-			return new DataResponse(
106
-				array(
107
-					'message' => (string)$this->l10n->t('Group already exists.')
108
-				),
109
-				Http::STATUS_CONFLICT
110
-			);
111
-		}
112
-		$group = $this->groupManager->createGroup($id);
113
-		if($group instanceof IGroup) {
114
-			return new DataResponse(['groupname' => $group->getDisplayName()], Http::STATUS_CREATED);
115
-		}
98
+    /**
99
+     * @PasswordConfirmationRequired
100
+     * @param string $id
101
+     * @return DataResponse
102
+     */
103
+    public function create($id) {
104
+        if($this->groupManager->groupExists($id)) {
105
+            return new DataResponse(
106
+                array(
107
+                    'message' => (string)$this->l10n->t('Group already exists.')
108
+                ),
109
+                Http::STATUS_CONFLICT
110
+            );
111
+        }
112
+        $group = $this->groupManager->createGroup($id);
113
+        if($group instanceof IGroup) {
114
+            return new DataResponse(['groupname' => $group->getDisplayName()], Http::STATUS_CREATED);
115
+        }
116 116
 
117
-		return new DataResponse(
118
-			array(
119
-				'status' => 'error',
120
-				'data' => array(
121
-					'message' => (string)$this->l10n->t('Unable to add group.')
122
-				)
123
-			),
124
-			Http::STATUS_FORBIDDEN
125
-		);
126
-	}
117
+        return new DataResponse(
118
+            array(
119
+                'status' => 'error',
120
+                'data' => array(
121
+                    'message' => (string)$this->l10n->t('Unable to add group.')
122
+                )
123
+            ),
124
+            Http::STATUS_FORBIDDEN
125
+        );
126
+    }
127 127
 
128
-	/**
129
-	 * @PasswordConfirmationRequired
130
-	 * @param string $id
131
-	 * @return DataResponse
132
-	 */
133
-	public function destroy($id) {
134
-		$group = $this->groupManager->get($id);
135
-		if ($group) {
136
-			if ($group->delete()) {
137
-				return new DataResponse(
138
-					array(
139
-						'status' => 'success',
140
-						'data' => ['groupname' => $group->getDisplayName()]
141
-					),
142
-					Http::STATUS_NO_CONTENT
143
-				);
144
-			}
145
-		}
146
-		return new DataResponse(
147
-			array(
148
-				'status' => 'error',
149
-				'data' => array(
150
-					'message' => (string)$this->l10n->t('Unable to delete group.')
151
-				),
152
-			),
153
-			Http::STATUS_FORBIDDEN
154
-		);
155
-	}
128
+    /**
129
+     * @PasswordConfirmationRequired
130
+     * @param string $id
131
+     * @return DataResponse
132
+     */
133
+    public function destroy($id) {
134
+        $group = $this->groupManager->get($id);
135
+        if ($group) {
136
+            if ($group->delete()) {
137
+                return new DataResponse(
138
+                    array(
139
+                        'status' => 'success',
140
+                        'data' => ['groupname' => $group->getDisplayName()]
141
+                    ),
142
+                    Http::STATUS_NO_CONTENT
143
+                );
144
+            }
145
+        }
146
+        return new DataResponse(
147
+            array(
148
+                'status' => 'error',
149
+                'data' => array(
150
+                    'message' => (string)$this->l10n->t('Unable to delete group.')
151
+                ),
152
+            ),
153
+            Http::STATUS_FORBIDDEN
154
+        );
155
+    }
156 156
 
157 157
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Providers/Groups.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -33,138 +33,138 @@
 block discarded – undo
33 33
 
34 34
 class Groups extends Base {
35 35
 
36
-	const SUBJECT_SHARED_GROUP_SELF = 'shared_group_self';
37
-	const SUBJECT_RESHARED_GROUP_BY = 'reshared_group_by';
38
-	const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self';
39
-	const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by';
40
-
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
-
59
-	/**
60
-	 * @param IEvent $event
61
-	 * @return IEvent
62
-	 * @throws \InvalidArgumentException
63
-	 * @since 11.0.0
64
-	 */
65
-	public function parseShortVersion(IEvent $event) {
66
-		$parsedParameters = $this->getParsedParameters($event);
67
-
68
-		if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
69
-			$subject = $this->l->t('Shared with group {group}');
70
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
71
-			$subject = $this->l->t('Removed share for group {group}');
72
-		} else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
73
-			$subject = $this->l->t('{actor} shared with group {group}');
74
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
75
-			$subject = $this->l->t('{actor} removed share for group {group}');
76
-		} else {
77
-			throw new \InvalidArgumentException();
78
-		}
79
-
80
-		if ($this->activityManager->getRequirePNG()) {
81
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.png')));
82
-		} else {
83
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
84
-		}
85
-		$this->setSubjects($event, $subject, $parsedParameters);
86
-
87
-		return $event;
88
-	}
89
-
90
-	/**
91
-	 * @param IEvent $event
92
-	 * @return IEvent
93
-	 * @throws \InvalidArgumentException
94
-	 * @since 11.0.0
95
-	 */
96
-	public function parseLongVersion(IEvent $event) {
97
-		$parsedParameters = $this->getParsedParameters($event);
98
-
99
-		if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
100
-			$subject = $this->l->t('You shared {file} with group {group}');
101
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
102
-			$subject = $this->l->t('You removed group {group} from {file}');
103
-		} else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
104
-			$subject = $this->l->t('{actor} shared {file} with group {group}');
105
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
106
-			$subject = $this->l->t('{actor} removed group {group} from {file}');
107
-		} else {
108
-			throw new \InvalidArgumentException();
109
-		}
110
-
111
-		if ($this->activityManager->getRequirePNG()) {
112
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.png')));
113
-		} else {
114
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
115
-		}
116
-		$this->setSubjects($event, $subject, $parsedParameters);
117
-
118
-		return $event;
119
-	}
120
-
121
-	protected function getParsedParameters(IEvent $event) {
122
-		$subject = $event->getSubject();
123
-		$parameters = $event->getSubjectParameters();
124
-
125
-		switch ($subject) {
126
-			case self::SUBJECT_RESHARED_GROUP_BY:
127
-			case self::SUBJECT_UNSHARED_GROUP_BY:
128
-				return [
129
-					'file' => $this->getFile($parameters[0], $event),
130
-					'group' => $this->generateGroupParameter($parameters[2]),
131
-					'actor' => $this->getUser($parameters[1]),
132
-				];
133
-			case self::SUBJECT_SHARED_GROUP_SELF:
134
-			case self::SUBJECT_UNSHARED_GROUP_SELF:
135
-				return [
136
-					'file' => $this->getFile($parameters[0], $event),
137
-					'group' => $this->generateGroupParameter($parameters[1]),
138
-				];
139
-		}
140
-		return [];
141
-	}
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
-	}
36
+    const SUBJECT_SHARED_GROUP_SELF = 'shared_group_self';
37
+    const SUBJECT_RESHARED_GROUP_BY = 'reshared_group_by';
38
+    const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self';
39
+    const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by';
40
+
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
+
59
+    /**
60
+     * @param IEvent $event
61
+     * @return IEvent
62
+     * @throws \InvalidArgumentException
63
+     * @since 11.0.0
64
+     */
65
+    public function parseShortVersion(IEvent $event) {
66
+        $parsedParameters = $this->getParsedParameters($event);
67
+
68
+        if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
69
+            $subject = $this->l->t('Shared with group {group}');
70
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
71
+            $subject = $this->l->t('Removed share for group {group}');
72
+        } else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
73
+            $subject = $this->l->t('{actor} shared with group {group}');
74
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
75
+            $subject = $this->l->t('{actor} removed share for group {group}');
76
+        } else {
77
+            throw new \InvalidArgumentException();
78
+        }
79
+
80
+        if ($this->activityManager->getRequirePNG()) {
81
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.png')));
82
+        } else {
83
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
84
+        }
85
+        $this->setSubjects($event, $subject, $parsedParameters);
86
+
87
+        return $event;
88
+    }
89
+
90
+    /**
91
+     * @param IEvent $event
92
+     * @return IEvent
93
+     * @throws \InvalidArgumentException
94
+     * @since 11.0.0
95
+     */
96
+    public function parseLongVersion(IEvent $event) {
97
+        $parsedParameters = $this->getParsedParameters($event);
98
+
99
+        if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
100
+            $subject = $this->l->t('You shared {file} with group {group}');
101
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
102
+            $subject = $this->l->t('You removed group {group} from {file}');
103
+        } else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
104
+            $subject = $this->l->t('{actor} shared {file} with group {group}');
105
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
106
+            $subject = $this->l->t('{actor} removed group {group} from {file}');
107
+        } else {
108
+            throw new \InvalidArgumentException();
109
+        }
110
+
111
+        if ($this->activityManager->getRequirePNG()) {
112
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.png')));
113
+        } else {
114
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
115
+        }
116
+        $this->setSubjects($event, $subject, $parsedParameters);
117
+
118
+        return $event;
119
+    }
120
+
121
+    protected function getParsedParameters(IEvent $event) {
122
+        $subject = $event->getSubject();
123
+        $parameters = $event->getSubjectParameters();
124
+
125
+        switch ($subject) {
126
+            case self::SUBJECT_RESHARED_GROUP_BY:
127
+            case self::SUBJECT_UNSHARED_GROUP_BY:
128
+                return [
129
+                    'file' => $this->getFile($parameters[0], $event),
130
+                    'group' => $this->generateGroupParameter($parameters[2]),
131
+                    'actor' => $this->getUser($parameters[1]),
132
+                ];
133
+            case self::SUBJECT_SHARED_GROUP_SELF:
134
+            case self::SUBJECT_UNSHARED_GROUP_SELF:
135
+                return [
136
+                    'file' => $this->getFile($parameters[0], $event),
137
+                    'group' => $this->generateGroupParameter($parameters[1]),
138
+                ];
139
+        }
140
+        return [];
141
+    }
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
+    }
170 170
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Provider/Base.php 1 patch
Indentation   +143 added lines, -143 removed lines patch added patch discarded remove patch
@@ -34,147 +34,147 @@
 block discarded – undo
34 34
 
35 35
 abstract class Base implements IProvider {
36 36
 
37
-	/** @var IUserManager */
38
-	protected $userManager;
39
-
40
-	/** @var string[]  */
41
-	protected $userDisplayNames = [];
42
-
43
-	/** @var IGroupManager */
44
-	protected $groupManager;
45
-
46
-	/** @var string[] */
47
-	protected $groupDisplayNames = [];
48
-
49
-	/**
50
-	 * @param IUserManager $userManager
51
-	 * @param IGroupManager $groupManager
52
-	 */
53
-	public function __construct(IUserManager $userManager, IGroupManager $groupManager) {
54
-		$this->userManager = $userManager;
55
-		$this->groupManager = $groupManager;
56
-	}
57
-
58
-	/**
59
-	 * @param IEvent $event
60
-	 * @param string $subject
61
-	 * @param array $parameters
62
-	 */
63
-	protected function setSubjects(IEvent $event, $subject, array $parameters) {
64
-		$placeholders = $replacements = [];
65
-		foreach ($parameters as $placeholder => $parameter) {
66
-			$placeholders[] = '{' . $placeholder . '}';
67
-			$replacements[] = $parameter['name'];
68
-		}
69
-
70
-		$event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
71
-			->setRichSubject($subject, $parameters);
72
-	}
73
-
74
-	/**
75
-	 * @param array $eventData
76
-	 * @return array
77
-	 */
78
-	protected function generateObjectParameter($eventData) {
79
-		if (!is_array($eventData) || !isset($eventData['id']) || !isset($eventData['name'])) {
80
-			throw new \InvalidArgumentException();
81
-		}
82
-
83
-		return [
84
-			'type' => 'calendar-event',
85
-			'id' => $eventData['id'],
86
-			'name' => $eventData['name'],
87
-		];
88
-	}
89
-
90
-	/**
91
-	 * @param array $data
92
-	 * @param IL10N $l
93
-	 * @return array
94
-	 */
95
-	protected function generateCalendarParameter($data, IL10N $l) {
96
-		if ($data['uri'] === CalDavBackend::PERSONAL_CALENDAR_URI &&
97
-			$data['name'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
98
-			return [
99
-				'type' => 'calendar',
100
-				'id' => $data['id'],
101
-				'name' => $l->t('Personal'),
102
-			];
103
-		}
104
-
105
-		return [
106
-			'type' => 'calendar',
107
-			'id' => $data['id'],
108
-			'name' => $data['name'],
109
-		];
110
-	}
111
-
112
-	/**
113
-	 * @param int $id
114
-	 * @param string $name
115
-	 * @return array
116
-	 */
117
-	protected function generateLegacyCalendarParameter($id, $name) {
118
-		return [
119
-			'type' => 'calendar',
120
-			'id' => $id,
121
-			'name' => $name,
122
-		];
123
-	}
124
-
125
-	/**
126
-	 * @param string $uid
127
-	 * @return array
128
-	 */
129
-	protected function generateUserParameter($uid) {
130
-		if (!isset($this->userDisplayNames[$uid])) {
131
-			$this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
132
-		}
133
-
134
-		return [
135
-			'type' => 'user',
136
-			'id' => $uid,
137
-			'name' => $this->userDisplayNames[$uid],
138
-		];
139
-	}
140
-
141
-	/**
142
-	 * @param string $uid
143
-	 * @return string
144
-	 */
145
-	protected function getUserDisplayName($uid) {
146
-		$user = $this->userManager->get($uid);
147
-		if ($user instanceof IUser) {
148
-			return $user->getDisplayName();
149
-		}
150
-		return $uid;
151
-	}
152
-
153
-	/**
154
-	 * @param string $gid
155
-	 * @return array
156
-	 */
157
-	protected function generateGroupParameter($gid) {
158
-		if (!isset($this->groupDisplayNames[$gid])) {
159
-			$this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
160
-		}
161
-
162
-		return [
163
-			'type' => 'group',
164
-			'id' => $gid,
165
-			'name' => $this->groupDisplayNames[$gid],
166
-		];
167
-	}
168
-
169
-	/**
170
-	 * @param string $gid
171
-	 * @return string
172
-	 */
173
-	protected function getGroupDisplayName($gid) {
174
-		$group = $this->groupManager->get($gid);
175
-		if ($group instanceof IGroup) {
176
-			return $group->getDisplayName();
177
-		}
178
-		return $gid;
179
-	}
37
+    /** @var IUserManager */
38
+    protected $userManager;
39
+
40
+    /** @var string[]  */
41
+    protected $userDisplayNames = [];
42
+
43
+    /** @var IGroupManager */
44
+    protected $groupManager;
45
+
46
+    /** @var string[] */
47
+    protected $groupDisplayNames = [];
48
+
49
+    /**
50
+     * @param IUserManager $userManager
51
+     * @param IGroupManager $groupManager
52
+     */
53
+    public function __construct(IUserManager $userManager, IGroupManager $groupManager) {
54
+        $this->userManager = $userManager;
55
+        $this->groupManager = $groupManager;
56
+    }
57
+
58
+    /**
59
+     * @param IEvent $event
60
+     * @param string $subject
61
+     * @param array $parameters
62
+     */
63
+    protected function setSubjects(IEvent $event, $subject, array $parameters) {
64
+        $placeholders = $replacements = [];
65
+        foreach ($parameters as $placeholder => $parameter) {
66
+            $placeholders[] = '{' . $placeholder . '}';
67
+            $replacements[] = $parameter['name'];
68
+        }
69
+
70
+        $event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
71
+            ->setRichSubject($subject, $parameters);
72
+    }
73
+
74
+    /**
75
+     * @param array $eventData
76
+     * @return array
77
+     */
78
+    protected function generateObjectParameter($eventData) {
79
+        if (!is_array($eventData) || !isset($eventData['id']) || !isset($eventData['name'])) {
80
+            throw new \InvalidArgumentException();
81
+        }
82
+
83
+        return [
84
+            'type' => 'calendar-event',
85
+            'id' => $eventData['id'],
86
+            'name' => $eventData['name'],
87
+        ];
88
+    }
89
+
90
+    /**
91
+     * @param array $data
92
+     * @param IL10N $l
93
+     * @return array
94
+     */
95
+    protected function generateCalendarParameter($data, IL10N $l) {
96
+        if ($data['uri'] === CalDavBackend::PERSONAL_CALENDAR_URI &&
97
+            $data['name'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
98
+            return [
99
+                'type' => 'calendar',
100
+                'id' => $data['id'],
101
+                'name' => $l->t('Personal'),
102
+            ];
103
+        }
104
+
105
+        return [
106
+            'type' => 'calendar',
107
+            'id' => $data['id'],
108
+            'name' => $data['name'],
109
+        ];
110
+    }
111
+
112
+    /**
113
+     * @param int $id
114
+     * @param string $name
115
+     * @return array
116
+     */
117
+    protected function generateLegacyCalendarParameter($id, $name) {
118
+        return [
119
+            'type' => 'calendar',
120
+            'id' => $id,
121
+            'name' => $name,
122
+        ];
123
+    }
124
+
125
+    /**
126
+     * @param string $uid
127
+     * @return array
128
+     */
129
+    protected function generateUserParameter($uid) {
130
+        if (!isset($this->userDisplayNames[$uid])) {
131
+            $this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
132
+        }
133
+
134
+        return [
135
+            'type' => 'user',
136
+            'id' => $uid,
137
+            'name' => $this->userDisplayNames[$uid],
138
+        ];
139
+    }
140
+
141
+    /**
142
+     * @param string $uid
143
+     * @return string
144
+     */
145
+    protected function getUserDisplayName($uid) {
146
+        $user = $this->userManager->get($uid);
147
+        if ($user instanceof IUser) {
148
+            return $user->getDisplayName();
149
+        }
150
+        return $uid;
151
+    }
152
+
153
+    /**
154
+     * @param string $gid
155
+     * @return array
156
+     */
157
+    protected function generateGroupParameter($gid) {
158
+        if (!isset($this->groupDisplayNames[$gid])) {
159
+            $this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
160
+        }
161
+
162
+        return [
163
+            'type' => 'group',
164
+            'id' => $gid,
165
+            'name' => $this->groupDisplayNames[$gid],
166
+        ];
167
+    }
168
+
169
+    /**
170
+     * @param string $gid
171
+     * @return string
172
+     */
173
+    protected function getGroupDisplayName($gid) {
174
+        $group = $this->groupManager->get($gid);
175
+        if ($group instanceof IGroup) {
176
+            return $group->getDisplayName();
177
+        }
178
+        return $gid;
179
+    }
180 180
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Provider/Event.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -34,138 +34,138 @@
 block discarded – undo
34 34
 
35 35
 class Event extends Base {
36 36
 
37
-	const SUBJECT_OBJECT_ADD = 'object_add';
38
-	const SUBJECT_OBJECT_UPDATE = 'object_update';
39
-	const SUBJECT_OBJECT_DELETE = 'object_delete';
40
-
41
-	/** @var IFactory */
42
-	protected $languageFactory;
43
-
44
-	/** @var IL10N */
45
-	protected $l;
46
-
47
-	/** @var IURLGenerator */
48
-	protected $url;
49
-
50
-	/** @var IManager */
51
-	protected $activityManager;
52
-
53
-	/** @var IEventMerger */
54
-	protected $eventMerger;
55
-
56
-	/**
57
-	 * @param IFactory $languageFactory
58
-	 * @param IURLGenerator $url
59
-	 * @param IManager $activityManager
60
-	 * @param IUserManager $userManager
61
-	 * @param IGroupManager $groupManager
62
-	 * @param IEventMerger $eventMerger
63
-	 */
64
-	public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager, IEventMerger $eventMerger) {
65
-		parent::__construct($userManager, $groupManager);
66
-		$this->languageFactory = $languageFactory;
67
-		$this->url = $url;
68
-		$this->activityManager = $activityManager;
69
-		$this->eventMerger = $eventMerger;
70
-	}
71
-
72
-	/**
73
-	 * @param string $language
74
-	 * @param IEvent $event
75
-	 * @param IEvent|null $previousEvent
76
-	 * @return IEvent
77
-	 * @throws \InvalidArgumentException
78
-	 * @since 11.0.0
79
-	 */
80
-	public function parse($language, IEvent $event, IEvent $previousEvent = null) {
81
-		if ($event->getApp() !== 'dav' || $event->getType() !== 'calendar_event') {
82
-			throw new \InvalidArgumentException();
83
-		}
84
-
85
-		$this->l = $this->languageFactory->get('dav', $language);
86
-
87
-		if ($this->activityManager->getRequirePNG()) {
88
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.png')));
89
-		} else {
90
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.svg')));
91
-		}
92
-
93
-		if ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event') {
94
-			$subject = $this->l->t('{actor} created event {event} in calendar {calendar}');
95
-		} else if ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event_self') {
96
-			$subject = $this->l->t('You created event {event} in calendar {calendar}');
97
-		} else if ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event') {
98
-			$subject = $this->l->t('{actor} deleted event {event} from calendar {calendar}');
99
-		} else if ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event_self') {
100
-			$subject = $this->l->t('You deleted event {event} from calendar {calendar}');
101
-		} else if ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event') {
102
-			$subject = $this->l->t('{actor} updated event {event} in calendar {calendar}');
103
-		} else if ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event_self') {
104
-			$subject = $this->l->t('You updated event {event} in calendar {calendar}');
105
-		} else {
106
-			throw new \InvalidArgumentException();
107
-		}
108
-
109
-		$parsedParameters = $this->getParameters($event);
110
-		$this->setSubjects($event, $subject, $parsedParameters);
111
-
112
-		$event = $this->eventMerger->mergeEvents('event', $event, $previousEvent);
113
-
114
-		return $event;
115
-	}
116
-
117
-	/**
118
-	 * @param IEvent $event
119
-	 * @return array
120
-	 */
121
-	protected function getParameters(IEvent $event) {
122
-		$subject = $event->getSubject();
123
-		$parameters = $event->getSubjectParameters();
124
-
125
-		// Nextcloud 13+
126
-		if (isset($parameters['calendar'])) {
127
-			switch ($subject) {
128
-				case self::SUBJECT_OBJECT_ADD . '_event':
129
-				case self::SUBJECT_OBJECT_DELETE . '_event':
130
-				case self::SUBJECT_OBJECT_UPDATE . '_event':
131
-					return [
132
-						'actor' => $this->generateUserParameter($parameters['actor']),
133
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
134
-						'event' => $this->generateObjectParameter($parameters['object']),
135
-					];
136
-				case self::SUBJECT_OBJECT_ADD . '_event_self':
137
-				case self::SUBJECT_OBJECT_DELETE . '_event_self':
138
-				case self::SUBJECT_OBJECT_UPDATE . '_event_self':
139
-					return [
140
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
141
-						'event' => $this->generateObjectParameter($parameters['object']),
142
-					];
143
-			}
144
-		}
145
-
146
-		// Legacy - Do NOT Remove unless necessary
147
-		// Removing this will break parsing of activities that were created on
148
-		// Nextcloud 12, so we should keep this as long as it's acceptable.
149
-		// Otherwise if people upgrade over multiple releases in a short period,
150
-		// they will get the dead entries in their stream.
151
-		switch ($subject) {
152
-			case self::SUBJECT_OBJECT_ADD . '_event':
153
-			case self::SUBJECT_OBJECT_DELETE . '_event':
154
-			case self::SUBJECT_OBJECT_UPDATE . '_event':
155
-				return [
156
-					'actor' => $this->generateUserParameter($parameters[0]),
157
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
158
-					'event' => $this->generateObjectParameter($parameters[2]),
159
-				];
160
-			case self::SUBJECT_OBJECT_ADD . '_event_self':
161
-			case self::SUBJECT_OBJECT_DELETE . '_event_self':
162
-			case self::SUBJECT_OBJECT_UPDATE . '_event_self':
163
-				return [
164
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
165
-					'event' => $this->generateObjectParameter($parameters[2]),
166
-				];
167
-		}
168
-
169
-		throw new \InvalidArgumentException();
170
-	}
37
+    const SUBJECT_OBJECT_ADD = 'object_add';
38
+    const SUBJECT_OBJECT_UPDATE = 'object_update';
39
+    const SUBJECT_OBJECT_DELETE = 'object_delete';
40
+
41
+    /** @var IFactory */
42
+    protected $languageFactory;
43
+
44
+    /** @var IL10N */
45
+    protected $l;
46
+
47
+    /** @var IURLGenerator */
48
+    protected $url;
49
+
50
+    /** @var IManager */
51
+    protected $activityManager;
52
+
53
+    /** @var IEventMerger */
54
+    protected $eventMerger;
55
+
56
+    /**
57
+     * @param IFactory $languageFactory
58
+     * @param IURLGenerator $url
59
+     * @param IManager $activityManager
60
+     * @param IUserManager $userManager
61
+     * @param IGroupManager $groupManager
62
+     * @param IEventMerger $eventMerger
63
+     */
64
+    public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager, IEventMerger $eventMerger) {
65
+        parent::__construct($userManager, $groupManager);
66
+        $this->languageFactory = $languageFactory;
67
+        $this->url = $url;
68
+        $this->activityManager = $activityManager;
69
+        $this->eventMerger = $eventMerger;
70
+    }
71
+
72
+    /**
73
+     * @param string $language
74
+     * @param IEvent $event
75
+     * @param IEvent|null $previousEvent
76
+     * @return IEvent
77
+     * @throws \InvalidArgumentException
78
+     * @since 11.0.0
79
+     */
80
+    public function parse($language, IEvent $event, IEvent $previousEvent = null) {
81
+        if ($event->getApp() !== 'dav' || $event->getType() !== 'calendar_event') {
82
+            throw new \InvalidArgumentException();
83
+        }
84
+
85
+        $this->l = $this->languageFactory->get('dav', $language);
86
+
87
+        if ($this->activityManager->getRequirePNG()) {
88
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.png')));
89
+        } else {
90
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.svg')));
91
+        }
92
+
93
+        if ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event') {
94
+            $subject = $this->l->t('{actor} created event {event} in calendar {calendar}');
95
+        } else if ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event_self') {
96
+            $subject = $this->l->t('You created event {event} in calendar {calendar}');
97
+        } else if ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event') {
98
+            $subject = $this->l->t('{actor} deleted event {event} from calendar {calendar}');
99
+        } else if ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event_self') {
100
+            $subject = $this->l->t('You deleted event {event} from calendar {calendar}');
101
+        } else if ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event') {
102
+            $subject = $this->l->t('{actor} updated event {event} in calendar {calendar}');
103
+        } else if ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event_self') {
104
+            $subject = $this->l->t('You updated event {event} in calendar {calendar}');
105
+        } else {
106
+            throw new \InvalidArgumentException();
107
+        }
108
+
109
+        $parsedParameters = $this->getParameters($event);
110
+        $this->setSubjects($event, $subject, $parsedParameters);
111
+
112
+        $event = $this->eventMerger->mergeEvents('event', $event, $previousEvent);
113
+
114
+        return $event;
115
+    }
116
+
117
+    /**
118
+     * @param IEvent $event
119
+     * @return array
120
+     */
121
+    protected function getParameters(IEvent $event) {
122
+        $subject = $event->getSubject();
123
+        $parameters = $event->getSubjectParameters();
124
+
125
+        // Nextcloud 13+
126
+        if (isset($parameters['calendar'])) {
127
+            switch ($subject) {
128
+                case self::SUBJECT_OBJECT_ADD . '_event':
129
+                case self::SUBJECT_OBJECT_DELETE . '_event':
130
+                case self::SUBJECT_OBJECT_UPDATE . '_event':
131
+                    return [
132
+                        'actor' => $this->generateUserParameter($parameters['actor']),
133
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
134
+                        'event' => $this->generateObjectParameter($parameters['object']),
135
+                    ];
136
+                case self::SUBJECT_OBJECT_ADD . '_event_self':
137
+                case self::SUBJECT_OBJECT_DELETE . '_event_self':
138
+                case self::SUBJECT_OBJECT_UPDATE . '_event_self':
139
+                    return [
140
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
141
+                        'event' => $this->generateObjectParameter($parameters['object']),
142
+                    ];
143
+            }
144
+        }
145
+
146
+        // Legacy - Do NOT Remove unless necessary
147
+        // Removing this will break parsing of activities that were created on
148
+        // Nextcloud 12, so we should keep this as long as it's acceptable.
149
+        // Otherwise if people upgrade over multiple releases in a short period,
150
+        // they will get the dead entries in their stream.
151
+        switch ($subject) {
152
+            case self::SUBJECT_OBJECT_ADD . '_event':
153
+            case self::SUBJECT_OBJECT_DELETE . '_event':
154
+            case self::SUBJECT_OBJECT_UPDATE . '_event':
155
+                return [
156
+                    'actor' => $this->generateUserParameter($parameters[0]),
157
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
158
+                    'event' => $this->generateObjectParameter($parameters[2]),
159
+                ];
160
+            case self::SUBJECT_OBJECT_ADD . '_event_self':
161
+            case self::SUBJECT_OBJECT_DELETE . '_event_self':
162
+            case self::SUBJECT_OBJECT_UPDATE . '_event_self':
163
+                return [
164
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
165
+                    'event' => $this->generateObjectParameter($parameters[2]),
166
+                ];
167
+        }
168
+
169
+        throw new \InvalidArgumentException();
170
+    }
171 171
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Provider/Calendar.php 1 patch
Indentation   +208 added lines, -208 removed lines patch added patch discarded remove patch
@@ -34,233 +34,233 @@
 block discarded – undo
34 34
 
35 35
 class Calendar extends Base {
36 36
 
37
-	const SUBJECT_ADD = 'calendar_add';
38
-	const SUBJECT_UPDATE = 'calendar_update';
39
-	const SUBJECT_DELETE = 'calendar_delete';
40
-	const SUBJECT_PUBLISH = 'calendar_publish';
41
-	const SUBJECT_UNPUBLISH = 'calendar_unpublish';
42
-	const SUBJECT_SHARE_USER = 'calendar_user_share';
43
-	const SUBJECT_SHARE_GROUP = 'calendar_group_share';
44
-	const SUBJECT_UNSHARE_USER = 'calendar_user_unshare';
45
-	const SUBJECT_UNSHARE_GROUP = 'calendar_group_unshare';
37
+    const SUBJECT_ADD = 'calendar_add';
38
+    const SUBJECT_UPDATE = 'calendar_update';
39
+    const SUBJECT_DELETE = 'calendar_delete';
40
+    const SUBJECT_PUBLISH = 'calendar_publish';
41
+    const SUBJECT_UNPUBLISH = 'calendar_unpublish';
42
+    const SUBJECT_SHARE_USER = 'calendar_user_share';
43
+    const SUBJECT_SHARE_GROUP = 'calendar_group_share';
44
+    const SUBJECT_UNSHARE_USER = 'calendar_user_unshare';
45
+    const SUBJECT_UNSHARE_GROUP = 'calendar_group_unshare';
46 46
 
47
-	/** @var IFactory */
48
-	protected $languageFactory;
47
+    /** @var IFactory */
48
+    protected $languageFactory;
49 49
 
50
-	/** @var IL10N */
51
-	protected $l;
50
+    /** @var IL10N */
51
+    protected $l;
52 52
 
53
-	/** @var IURLGenerator */
54
-	protected $url;
53
+    /** @var IURLGenerator */
54
+    protected $url;
55 55
 
56
-	/** @var IManager */
57
-	protected $activityManager;
56
+    /** @var IManager */
57
+    protected $activityManager;
58 58
 
59
-	/** @var IEventMerger */
60
-	protected $eventMerger;
59
+    /** @var IEventMerger */
60
+    protected $eventMerger;
61 61
 
62
-	/**
63
-	 * @param IFactory $languageFactory
64
-	 * @param IURLGenerator $url
65
-	 * @param IManager $activityManager
66
-	 * @param IUserManager $userManager
67
-	 * @param IGroupManager $groupManager
68
-	 * @param IEventMerger $eventMerger
69
-	 */
70
-	public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager, IEventMerger $eventMerger) {
71
-		parent::__construct($userManager, $groupManager);
72
-		$this->languageFactory = $languageFactory;
73
-		$this->url = $url;
74
-		$this->activityManager = $activityManager;
75
-		$this->eventMerger = $eventMerger;
76
-	}
62
+    /**
63
+     * @param IFactory $languageFactory
64
+     * @param IURLGenerator $url
65
+     * @param IManager $activityManager
66
+     * @param IUserManager $userManager
67
+     * @param IGroupManager $groupManager
68
+     * @param IEventMerger $eventMerger
69
+     */
70
+    public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager, IEventMerger $eventMerger) {
71
+        parent::__construct($userManager, $groupManager);
72
+        $this->languageFactory = $languageFactory;
73
+        $this->url = $url;
74
+        $this->activityManager = $activityManager;
75
+        $this->eventMerger = $eventMerger;
76
+    }
77 77
 
78
-	/**
79
-	 * @param string $language
80
-	 * @param IEvent $event
81
-	 * @param IEvent|null $previousEvent
82
-	 * @return IEvent
83
-	 * @throws \InvalidArgumentException
84
-	 * @since 11.0.0
85
-	 */
86
-	public function parse($language, IEvent $event, IEvent $previousEvent = null) {
87
-		if ($event->getApp() !== 'dav' || $event->getType() !== 'calendar') {
88
-			throw new \InvalidArgumentException();
89
-		}
78
+    /**
79
+     * @param string $language
80
+     * @param IEvent $event
81
+     * @param IEvent|null $previousEvent
82
+     * @return IEvent
83
+     * @throws \InvalidArgumentException
84
+     * @since 11.0.0
85
+     */
86
+    public function parse($language, IEvent $event, IEvent $previousEvent = null) {
87
+        if ($event->getApp() !== 'dav' || $event->getType() !== 'calendar') {
88
+            throw new \InvalidArgumentException();
89
+        }
90 90
 
91
-		$this->l = $this->languageFactory->get('dav', $language);
91
+        $this->l = $this->languageFactory->get('dav', $language);
92 92
 
93
-		if ($this->activityManager->getRequirePNG()) {
94
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.png')));
95
-		} else {
96
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.svg')));
97
-		}
93
+        if ($this->activityManager->getRequirePNG()) {
94
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.png')));
95
+        } else {
96
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.svg')));
97
+        }
98 98
 
99
-		if ($event->getSubject() === self::SUBJECT_ADD) {
100
-			$subject = $this->l->t('{actor} created calendar {calendar}');
101
-		} else if ($event->getSubject() === self::SUBJECT_ADD . '_self') {
102
-			$subject = $this->l->t('You created calendar {calendar}');
103
-		} else if ($event->getSubject() === self::SUBJECT_DELETE) {
104
-			$subject = $this->l->t('{actor} deleted calendar {calendar}');
105
-		} else if ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
106
-			$subject = $this->l->t('You deleted calendar {calendar}');
107
-		} else if ($event->getSubject() === self::SUBJECT_UPDATE) {
108
-			$subject = $this->l->t('{actor} updated calendar {calendar}');
109
-		} else if ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
110
-			$subject = $this->l->t('You updated calendar {calendar}');
99
+        if ($event->getSubject() === self::SUBJECT_ADD) {
100
+            $subject = $this->l->t('{actor} created calendar {calendar}');
101
+        } else if ($event->getSubject() === self::SUBJECT_ADD . '_self') {
102
+            $subject = $this->l->t('You created calendar {calendar}');
103
+        } else if ($event->getSubject() === self::SUBJECT_DELETE) {
104
+            $subject = $this->l->t('{actor} deleted calendar {calendar}');
105
+        } else if ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
106
+            $subject = $this->l->t('You deleted calendar {calendar}');
107
+        } else if ($event->getSubject() === self::SUBJECT_UPDATE) {
108
+            $subject = $this->l->t('{actor} updated calendar {calendar}');
109
+        } else if ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
110
+            $subject = $this->l->t('You updated calendar {calendar}');
111 111
 
112
-		} else if ($event->getSubject() === self::SUBJECT_PUBLISH . '_self') {
113
-			$subject = $this->l->t('You shared calendar {calendar} as public link');
114
-		} else if ($event->getSubject() === self::SUBJECT_UNPUBLISH . '_self') {
115
-			$subject = $this->l->t('You removed public link for calendar {calendar}');
112
+        } else if ($event->getSubject() === self::SUBJECT_PUBLISH . '_self') {
113
+            $subject = $this->l->t('You shared calendar {calendar} as public link');
114
+        } else if ($event->getSubject() === self::SUBJECT_UNPUBLISH . '_self') {
115
+            $subject = $this->l->t('You removed public link for calendar {calendar}');
116 116
 
117
-		} else if ($event->getSubject() === self::SUBJECT_SHARE_USER) {
118
-			$subject = $this->l->t('{actor} shared calendar {calendar} with you');
119
-		} else if ($event->getSubject() === self::SUBJECT_SHARE_USER . '_you') {
120
-			$subject = $this->l->t('You shared calendar {calendar} with {user}');
121
-		} else if ($event->getSubject() === self::SUBJECT_SHARE_USER . '_by') {
122
-			$subject = $this->l->t('{actor} shared calendar {calendar} with {user}');
123
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER) {
124
-			$subject = $this->l->t('{actor} unshared calendar {calendar} from you');
125
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_you') {
126
-			$subject = $this->l->t('You unshared calendar {calendar} from {user}');
127
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_by') {
128
-			$subject = $this->l->t('{actor} unshared calendar {calendar} from {user}');
129
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_self') {
130
-			$subject = $this->l->t('{actor} unshared calendar {calendar} from themselves');
117
+        } else if ($event->getSubject() === self::SUBJECT_SHARE_USER) {
118
+            $subject = $this->l->t('{actor} shared calendar {calendar} with you');
119
+        } else if ($event->getSubject() === self::SUBJECT_SHARE_USER . '_you') {
120
+            $subject = $this->l->t('You shared calendar {calendar} with {user}');
121
+        } else if ($event->getSubject() === self::SUBJECT_SHARE_USER . '_by') {
122
+            $subject = $this->l->t('{actor} shared calendar {calendar} with {user}');
123
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER) {
124
+            $subject = $this->l->t('{actor} unshared calendar {calendar} from you');
125
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_you') {
126
+            $subject = $this->l->t('You unshared calendar {calendar} from {user}');
127
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_by') {
128
+            $subject = $this->l->t('{actor} unshared calendar {calendar} from {user}');
129
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_self') {
130
+            $subject = $this->l->t('{actor} unshared calendar {calendar} from themselves');
131 131
 
132
-		} else if ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_you') {
133
-			$subject = $this->l->t('You shared calendar {calendar} with group {group}');
134
-		} else if ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_by') {
135
-			$subject = $this->l->t('{actor} shared calendar {calendar} with group {group}');
136
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_you') {
137
-			$subject = $this->l->t('You unshared calendar {calendar} from group {group}');
138
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_by') {
139
-			$subject = $this->l->t('{actor} unshared calendar {calendar} from group {group}');
140
-		} else {
141
-			throw new \InvalidArgumentException();
142
-		}
132
+        } else if ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_you') {
133
+            $subject = $this->l->t('You shared calendar {calendar} with group {group}');
134
+        } else if ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_by') {
135
+            $subject = $this->l->t('{actor} shared calendar {calendar} with group {group}');
136
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_you') {
137
+            $subject = $this->l->t('You unshared calendar {calendar} from group {group}');
138
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_by') {
139
+            $subject = $this->l->t('{actor} unshared calendar {calendar} from group {group}');
140
+        } else {
141
+            throw new \InvalidArgumentException();
142
+        }
143 143
 
144
-		$parsedParameters = $this->getParameters($event);
145
-		$this->setSubjects($event, $subject, $parsedParameters);
144
+        $parsedParameters = $this->getParameters($event);
145
+        $this->setSubjects($event, $subject, $parsedParameters);
146 146
 
147
-		$event = $this->eventMerger->mergeEvents('calendar', $event, $previousEvent);
147
+        $event = $this->eventMerger->mergeEvents('calendar', $event, $previousEvent);
148 148
 
149
-		if ($event->getChildEvent() === null) {
150
-			if (isset($parsedParameters['user'])) {
151
-				// Couldn't group by calendar, maybe we can group by users
152
-				$event = $this->eventMerger->mergeEvents('user', $event, $previousEvent);
153
-			} else if (isset($parsedParameters['group'])) {
154
-				// Couldn't group by calendar, maybe we can group by groups
155
-				$event = $this->eventMerger->mergeEvents('group', $event, $previousEvent);
156
-			}
157
-		}
149
+        if ($event->getChildEvent() === null) {
150
+            if (isset($parsedParameters['user'])) {
151
+                // Couldn't group by calendar, maybe we can group by users
152
+                $event = $this->eventMerger->mergeEvents('user', $event, $previousEvent);
153
+            } else if (isset($parsedParameters['group'])) {
154
+                // Couldn't group by calendar, maybe we can group by groups
155
+                $event = $this->eventMerger->mergeEvents('group', $event, $previousEvent);
156
+            }
157
+        }
158 158
 
159
-		return $event;
160
-	}
159
+        return $event;
160
+    }
161 161
 
162
-	/**
163
-	 * @param IEvent $event
164
-	 * @return array
165
-	 */
166
-	protected function getParameters(IEvent $event) {
167
-		$subject = $event->getSubject();
168
-		$parameters = $event->getSubjectParameters();
162
+    /**
163
+     * @param IEvent $event
164
+     * @return array
165
+     */
166
+    protected function getParameters(IEvent $event) {
167
+        $subject = $event->getSubject();
168
+        $parameters = $event->getSubjectParameters();
169 169
 
170
-		// Nextcloud 13+
171
-		if (isset($parameters['calendar'])) {
172
-			switch ($subject) {
173
-				case self::SUBJECT_ADD:
174
-				case self::SUBJECT_ADD . '_self':
175
-				case self::SUBJECT_DELETE:
176
-				case self::SUBJECT_DELETE . '_self':
177
-				case self::SUBJECT_UPDATE:
178
-				case self::SUBJECT_UPDATE . '_self':
179
-				case self::SUBJECT_SHARE_USER:
180
-				case self::SUBJECT_UNSHARE_USER:
181
-				case self::SUBJECT_UNSHARE_USER . '_self':
182
-					return [
183
-						'actor' => $this->generateUserParameter($parameters['actor']),
184
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
185
-					];
186
-				case self::SUBJECT_SHARE_USER . '_you':
187
-				case self::SUBJECT_UNSHARE_USER . '_you':
188
-					return [
189
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
190
-						'user' => $this->generateUserParameter($parameters['user']),
191
-					];
192
-				case self::SUBJECT_SHARE_USER . '_by':
193
-				case self::SUBJECT_UNSHARE_USER . '_by':
194
-					return [
195
-						'actor' => $this->generateUserParameter($parameters['actor']),
196
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
197
-						'user' => $this->generateUserParameter($parameters['user']),
198
-					];
199
-				case self::SUBJECT_SHARE_GROUP . '_you':
200
-				case self::SUBJECT_UNSHARE_GROUP . '_you':
201
-					return [
202
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
203
-						'group' => $this->generateGroupParameter($parameters['group']),
204
-					];
205
-				case self::SUBJECT_SHARE_GROUP . '_by':
206
-				case self::SUBJECT_UNSHARE_GROUP . '_by':
207
-					return [
208
-						'actor' => $this->generateUserParameter($parameters['actor']),
209
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
210
-						'group' => $this->generateGroupParameter($parameters['group']),
211
-					];
212
-			}
213
-		}
170
+        // Nextcloud 13+
171
+        if (isset($parameters['calendar'])) {
172
+            switch ($subject) {
173
+                case self::SUBJECT_ADD:
174
+                case self::SUBJECT_ADD . '_self':
175
+                case self::SUBJECT_DELETE:
176
+                case self::SUBJECT_DELETE . '_self':
177
+                case self::SUBJECT_UPDATE:
178
+                case self::SUBJECT_UPDATE . '_self':
179
+                case self::SUBJECT_SHARE_USER:
180
+                case self::SUBJECT_UNSHARE_USER:
181
+                case self::SUBJECT_UNSHARE_USER . '_self':
182
+                    return [
183
+                        'actor' => $this->generateUserParameter($parameters['actor']),
184
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
185
+                    ];
186
+                case self::SUBJECT_SHARE_USER . '_you':
187
+                case self::SUBJECT_UNSHARE_USER . '_you':
188
+                    return [
189
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
190
+                        'user' => $this->generateUserParameter($parameters['user']),
191
+                    ];
192
+                case self::SUBJECT_SHARE_USER . '_by':
193
+                case self::SUBJECT_UNSHARE_USER . '_by':
194
+                    return [
195
+                        'actor' => $this->generateUserParameter($parameters['actor']),
196
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
197
+                        'user' => $this->generateUserParameter($parameters['user']),
198
+                    ];
199
+                case self::SUBJECT_SHARE_GROUP . '_you':
200
+                case self::SUBJECT_UNSHARE_GROUP . '_you':
201
+                    return [
202
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
203
+                        'group' => $this->generateGroupParameter($parameters['group']),
204
+                    ];
205
+                case self::SUBJECT_SHARE_GROUP . '_by':
206
+                case self::SUBJECT_UNSHARE_GROUP . '_by':
207
+                    return [
208
+                        'actor' => $this->generateUserParameter($parameters['actor']),
209
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
210
+                        'group' => $this->generateGroupParameter($parameters['group']),
211
+                    ];
212
+            }
213
+        }
214 214
 
215
-		// Legacy - Do NOT Remove unless necessary
216
-		// Removing this will break parsing of activities that were created on
217
-		// Nextcloud 12, so we should keep this as long as it's acceptable.
218
-		// Otherwise if people upgrade over multiple releases in a short period,
219
-		// they will get the dead entries in their stream.
220
-		switch ($subject) {
221
-			case self::SUBJECT_ADD:
222
-			case self::SUBJECT_ADD . '_self':
223
-			case self::SUBJECT_DELETE:
224
-			case self::SUBJECT_DELETE . '_self':
225
-			case self::SUBJECT_UPDATE:
226
-			case self::SUBJECT_UPDATE . '_self':
227
-			case self::SUBJECT_PUBLISH . '_self':
228
-			case self::SUBJECT_UNPUBLISH . '_self':
229
-			case self::SUBJECT_SHARE_USER:
230
-			case self::SUBJECT_UNSHARE_USER:
231
-			case self::SUBJECT_UNSHARE_USER . '_self':
232
-				return [
233
-					'actor' => $this->generateUserParameter($parameters[0]),
234
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
235
-				];
236
-			case self::SUBJECT_SHARE_USER . '_you':
237
-			case self::SUBJECT_UNSHARE_USER . '_you':
238
-				return [
239
-					'user' => $this->generateUserParameter($parameters[0]),
240
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
241
-				];
242
-			case self::SUBJECT_SHARE_USER . '_by':
243
-			case self::SUBJECT_UNSHARE_USER . '_by':
244
-				return [
245
-					'user' => $this->generateUserParameter($parameters[0]),
246
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
247
-					'actor' => $this->generateUserParameter($parameters[2]),
248
-				];
249
-			case self::SUBJECT_SHARE_GROUP . '_you':
250
-			case self::SUBJECT_UNSHARE_GROUP . '_you':
251
-				return [
252
-					'group' => $this->generateGroupParameter($parameters[0]),
253
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
254
-				];
255
-			case self::SUBJECT_SHARE_GROUP . '_by':
256
-			case self::SUBJECT_UNSHARE_GROUP . '_by':
257
-				return [
258
-					'group' => $this->generateGroupParameter($parameters[0]),
259
-					'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
260
-					'actor' => $this->generateUserParameter($parameters[2]),
261
-				];
262
-		}
215
+        // Legacy - Do NOT Remove unless necessary
216
+        // Removing this will break parsing of activities that were created on
217
+        // Nextcloud 12, so we should keep this as long as it's acceptable.
218
+        // Otherwise if people upgrade over multiple releases in a short period,
219
+        // they will get the dead entries in their stream.
220
+        switch ($subject) {
221
+            case self::SUBJECT_ADD:
222
+            case self::SUBJECT_ADD . '_self':
223
+            case self::SUBJECT_DELETE:
224
+            case self::SUBJECT_DELETE . '_self':
225
+            case self::SUBJECT_UPDATE:
226
+            case self::SUBJECT_UPDATE . '_self':
227
+            case self::SUBJECT_PUBLISH . '_self':
228
+            case self::SUBJECT_UNPUBLISH . '_self':
229
+            case self::SUBJECT_SHARE_USER:
230
+            case self::SUBJECT_UNSHARE_USER:
231
+            case self::SUBJECT_UNSHARE_USER . '_self':
232
+                return [
233
+                    'actor' => $this->generateUserParameter($parameters[0]),
234
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
235
+                ];
236
+            case self::SUBJECT_SHARE_USER . '_you':
237
+            case self::SUBJECT_UNSHARE_USER . '_you':
238
+                return [
239
+                    'user' => $this->generateUserParameter($parameters[0]),
240
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
241
+                ];
242
+            case self::SUBJECT_SHARE_USER . '_by':
243
+            case self::SUBJECT_UNSHARE_USER . '_by':
244
+                return [
245
+                    'user' => $this->generateUserParameter($parameters[0]),
246
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
247
+                    'actor' => $this->generateUserParameter($parameters[2]),
248
+                ];
249
+            case self::SUBJECT_SHARE_GROUP . '_you':
250
+            case self::SUBJECT_UNSHARE_GROUP . '_you':
251
+                return [
252
+                    'group' => $this->generateGroupParameter($parameters[0]),
253
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
254
+                ];
255
+            case self::SUBJECT_SHARE_GROUP . '_by':
256
+            case self::SUBJECT_UNSHARE_GROUP . '_by':
257
+                return [
258
+                    'group' => $this->generateGroupParameter($parameters[0]),
259
+                    'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
260
+                    'actor' => $this->generateUserParameter($parameters[2]),
261
+                ];
262
+        }
263 263
 
264
-		throw new \InvalidArgumentException();
265
-	}
264
+        throw new \InvalidArgumentException();
265
+    }
266 266
 }
Please login to merge, or discard this patch.
settings/templates/users/main.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -7,24 +7,24 @@
 block discarded – undo
7 7
  */
8 8
 
9 9
 script('settings', [
10
-	'users/deleteHandler',
11
-	'users/filter',
12
-	'users/users',
13
-	'users/groups'
10
+    'users/deleteHandler',
11
+    'users/filter',
12
+    'users/users',
13
+    'users/groups'
14 14
 ]);
15 15
 script('core', [
16
-	'multiselect',
17
-	'singleselect'
16
+    'multiselect',
17
+    'singleselect'
18 18
 ]);
19 19
 style('settings', 'settings');
20 20
 
21 21
 $userlistParams = array();
22 22
 $allGroups=array();
23 23
 foreach($_["adminGroup"] as $group) {
24
-	$allGroups[$group['id']] = array('displayName' => $group['name']);
24
+    $allGroups[$group['id']] = array('displayName' => $group['name']);
25 25
 }
26 26
 foreach($_["groups"] as $group) {
27
-	$allGroups[$group['id']] = array('displayName' => $group['name']);
27
+    $allGroups[$group['id']] = array('displayName' => $group['name']);
28 28
 }
29 29
 $userlistParams['subadmingroups'] = $allGroups;
30 30
 $userlistParams['allGroups'] = json_encode($allGroups);
Please login to merge, or discard this patch.
lib/private/SubAdmin.php 1 patch
Indentation   +256 added lines, -256 removed lines patch added patch discarded remove patch
@@ -37,262 +37,262 @@
 block discarded – undo
37 37
 
38 38
 class SubAdmin extends PublicEmitter {
39 39
 
40
-	/** @var IUserManager */
41
-	private $userManager;
42
-
43
-	/** @var IGroupManager */
44
-	private $groupManager;
45
-
46
-	/** @var IDBConnection */
47
-	private $dbConn;
48
-
49
-	/**
50
-	 * @param IUserManager $userManager
51
-	 * @param IGroupManager $groupManager
52
-	 * @param IDBConnection $dbConn
53
-	 */
54
-	public function __construct(IUserManager $userManager,
55
-	                            IGroupManager $groupManager,
56
-								IDBConnection $dbConn) {
57
-		$this->userManager = $userManager;
58
-		$this->groupManager = $groupManager;
59
-		$this->dbConn = $dbConn;
60
-
61
-		$this->userManager->listen('\OC\User', 'postDelete', function($user) {
62
-			$this->post_deleteUser($user);
63
-		});
64
-		$this->groupManager->listen('\OC\Group', 'postDelete', function($group) {
65
-			$this->post_deleteGroup($group);
66
-		});
67
-	}
68
-
69
-	/**
70
-	 * add a SubAdmin
71
-	 * @param IUser $user user to be SubAdmin
72
-	 * @param IGroup $group group $user becomes subadmin of
73
-	 * @return bool
74
-	 */
75
-	public function createSubAdmin(IUser $user, IGroup $group) {
76
-		$qb = $this->dbConn->getQueryBuilder();
77
-
78
-		$qb->insert('group_admin')
79
-			->values([
80
-				'gid' => $qb->createNamedParameter($group->getGID()),
81
-				'uid' => $qb->createNamedParameter($user->getUID())
82
-			])
83
-			->execute();
84
-
85
-		$this->emit('\OC\SubAdmin', 'postCreateSubAdmin', [$user, $group]);
86
-		\OC_Hook::emit("OC_SubAdmin", "post_createSubAdmin", ["gid" => $group->getGID()]);
87
-		return true;
88
-	}
89
-
90
-	/**
91
-	 * delete a SubAdmin
92
-	 * @param IUser $user the user that is the SubAdmin
93
-	 * @param IGroup $group the group
94
-	 * @return bool
95
-	 */
96
-	public function deleteSubAdmin(IUser $user, IGroup $group) {
97
-		$qb = $this->dbConn->getQueryBuilder();
98
-
99
-		$qb->delete('group_admin')
100
-			->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
101
-			->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
102
-			->execute();
103
-
104
-		$this->emit('\OC\SubAdmin', 'postDeleteSubAdmin', [$user, $group]);
105
-		\OC_Hook::emit("OC_SubAdmin", "post_deleteSubAdmin", ["gid" => $group->getGID()]);
106
-		return true;
107
-	}
108
-
109
-	/**
110
-	 * get groups of a SubAdmin
111
-	 * @param IUser $user the SubAdmin
112
-	 * @return IGroup[]
113
-	 */
114
-	public function getSubAdminsGroups(IUser $user) {
115
-		$qb = $this->dbConn->getQueryBuilder();
116
-
117
-		$result = $qb->select('gid')
118
-			->from('group_admin')
119
-			->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
120
-			->execute();
121
-
122
-		$groups = [];
123
-		while($row = $result->fetch()) {
124
-			$group = $this->groupManager->get($row['gid']);
125
-			if(!is_null($group)) {
126
-				$groups[$group->getGID()] = $group;
127
-			}
128
-		}
129
-		$result->closeCursor();
130
-
131
-		return $groups;
132
-	}
133
-
134
-	/**
135
-	 * get an array of groupid and displayName for a user
136
-	 * @param IUser $user
137
-	 * @return array ['displayName' => displayname]
138
-	 */
139
-	public function getSubAdminsGroupsName(IUser $user) {
140
-		return array_map(function($group) {
141
-			return array('displayName' => $group->getDisplayName());
142
-		}, $this->getSubAdminsGroups($user));
143
-	}
144
-
145
-	/**
146
-	 * get SubAdmins of a group
147
-	 * @param IGroup $group the group
148
-	 * @return IUser[]
149
-	 */
150
-	public function getGroupsSubAdmins(IGroup $group) {
151
-		$qb = $this->dbConn->getQueryBuilder();
152
-
153
-		$result = $qb->select('uid')
154
-			->from('group_admin')
155
-			->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
156
-			->execute();
157
-
158
-		$users = [];
159
-		while($row = $result->fetch()) {
160
-			$user = $this->userManager->get($row['uid']);
161
-			if(!is_null($user)) {
162
-				$users[] = $user;
163
-			}
164
-		}
165
-		$result->closeCursor();
166
-
167
-		return $users;
168
-	}
169
-
170
-	/**
171
-	 * get all SubAdmins
172
-	 * @return array
173
-	 */
174
-	public function getAllSubAdmins() {
175
-		$qb = $this->dbConn->getQueryBuilder();
176
-
177
-		$result = $qb->select('*')
178
-			->from('group_admin')
179
-			->execute();
180
-
181
-		$subadmins = [];
182
-		while($row = $result->fetch()) {
183
-			$user = $this->userManager->get($row['uid']);
184
-			$group = $this->groupManager->get($row['gid']);
185
-			if(!is_null($user) && !is_null($group)) {
186
-				$subadmins[] = [
187
-					'user'  => $user,
188
-					'group' => $group
189
-				];
190
-			}
191
-		}
192
-		$result->closeCursor();
193
-
194
-		return $subadmins;
195
-	}
196
-
197
-	/**
198
-	 * checks if a user is a SubAdmin of a group
199
-	 * @param IUser $user
200
-	 * @param IGroup $group
201
-	 * @return bool
202
-	 */
203
-	public function isSubAdminOfGroup(IUser $user, IGroup $group) {
204
-		$qb = $this->dbConn->getQueryBuilder();
205
-
206
-		/*
40
+    /** @var IUserManager */
41
+    private $userManager;
42
+
43
+    /** @var IGroupManager */
44
+    private $groupManager;
45
+
46
+    /** @var IDBConnection */
47
+    private $dbConn;
48
+
49
+    /**
50
+     * @param IUserManager $userManager
51
+     * @param IGroupManager $groupManager
52
+     * @param IDBConnection $dbConn
53
+     */
54
+    public function __construct(IUserManager $userManager,
55
+                                IGroupManager $groupManager,
56
+                                IDBConnection $dbConn) {
57
+        $this->userManager = $userManager;
58
+        $this->groupManager = $groupManager;
59
+        $this->dbConn = $dbConn;
60
+
61
+        $this->userManager->listen('\OC\User', 'postDelete', function($user) {
62
+            $this->post_deleteUser($user);
63
+        });
64
+        $this->groupManager->listen('\OC\Group', 'postDelete', function($group) {
65
+            $this->post_deleteGroup($group);
66
+        });
67
+    }
68
+
69
+    /**
70
+     * add a SubAdmin
71
+     * @param IUser $user user to be SubAdmin
72
+     * @param IGroup $group group $user becomes subadmin of
73
+     * @return bool
74
+     */
75
+    public function createSubAdmin(IUser $user, IGroup $group) {
76
+        $qb = $this->dbConn->getQueryBuilder();
77
+
78
+        $qb->insert('group_admin')
79
+            ->values([
80
+                'gid' => $qb->createNamedParameter($group->getGID()),
81
+                'uid' => $qb->createNamedParameter($user->getUID())
82
+            ])
83
+            ->execute();
84
+
85
+        $this->emit('\OC\SubAdmin', 'postCreateSubAdmin', [$user, $group]);
86
+        \OC_Hook::emit("OC_SubAdmin", "post_createSubAdmin", ["gid" => $group->getGID()]);
87
+        return true;
88
+    }
89
+
90
+    /**
91
+     * delete a SubAdmin
92
+     * @param IUser $user the user that is the SubAdmin
93
+     * @param IGroup $group the group
94
+     * @return bool
95
+     */
96
+    public function deleteSubAdmin(IUser $user, IGroup $group) {
97
+        $qb = $this->dbConn->getQueryBuilder();
98
+
99
+        $qb->delete('group_admin')
100
+            ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
101
+            ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
102
+            ->execute();
103
+
104
+        $this->emit('\OC\SubAdmin', 'postDeleteSubAdmin', [$user, $group]);
105
+        \OC_Hook::emit("OC_SubAdmin", "post_deleteSubAdmin", ["gid" => $group->getGID()]);
106
+        return true;
107
+    }
108
+
109
+    /**
110
+     * get groups of a SubAdmin
111
+     * @param IUser $user the SubAdmin
112
+     * @return IGroup[]
113
+     */
114
+    public function getSubAdminsGroups(IUser $user) {
115
+        $qb = $this->dbConn->getQueryBuilder();
116
+
117
+        $result = $qb->select('gid')
118
+            ->from('group_admin')
119
+            ->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
120
+            ->execute();
121
+
122
+        $groups = [];
123
+        while($row = $result->fetch()) {
124
+            $group = $this->groupManager->get($row['gid']);
125
+            if(!is_null($group)) {
126
+                $groups[$group->getGID()] = $group;
127
+            }
128
+        }
129
+        $result->closeCursor();
130
+
131
+        return $groups;
132
+    }
133
+
134
+    /**
135
+     * get an array of groupid and displayName for a user
136
+     * @param IUser $user
137
+     * @return array ['displayName' => displayname]
138
+     */
139
+    public function getSubAdminsGroupsName(IUser $user) {
140
+        return array_map(function($group) {
141
+            return array('displayName' => $group->getDisplayName());
142
+        }, $this->getSubAdminsGroups($user));
143
+    }
144
+
145
+    /**
146
+     * get SubAdmins of a group
147
+     * @param IGroup $group the group
148
+     * @return IUser[]
149
+     */
150
+    public function getGroupsSubAdmins(IGroup $group) {
151
+        $qb = $this->dbConn->getQueryBuilder();
152
+
153
+        $result = $qb->select('uid')
154
+            ->from('group_admin')
155
+            ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
156
+            ->execute();
157
+
158
+        $users = [];
159
+        while($row = $result->fetch()) {
160
+            $user = $this->userManager->get($row['uid']);
161
+            if(!is_null($user)) {
162
+                $users[] = $user;
163
+            }
164
+        }
165
+        $result->closeCursor();
166
+
167
+        return $users;
168
+    }
169
+
170
+    /**
171
+     * get all SubAdmins
172
+     * @return array
173
+     */
174
+    public function getAllSubAdmins() {
175
+        $qb = $this->dbConn->getQueryBuilder();
176
+
177
+        $result = $qb->select('*')
178
+            ->from('group_admin')
179
+            ->execute();
180
+
181
+        $subadmins = [];
182
+        while($row = $result->fetch()) {
183
+            $user = $this->userManager->get($row['uid']);
184
+            $group = $this->groupManager->get($row['gid']);
185
+            if(!is_null($user) && !is_null($group)) {
186
+                $subadmins[] = [
187
+                    'user'  => $user,
188
+                    'group' => $group
189
+                ];
190
+            }
191
+        }
192
+        $result->closeCursor();
193
+
194
+        return $subadmins;
195
+    }
196
+
197
+    /**
198
+     * checks if a user is a SubAdmin of a group
199
+     * @param IUser $user
200
+     * @param IGroup $group
201
+     * @return bool
202
+     */
203
+    public function isSubAdminOfGroup(IUser $user, IGroup $group) {
204
+        $qb = $this->dbConn->getQueryBuilder();
205
+
206
+        /*
207 207
 		 * Primary key is ('gid', 'uid') so max 1 result possible here
208 208
 		 */
209
-		$result = $qb->select('*')
210
-			->from('group_admin')
211
-			->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
212
-			->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
213
-			->execute();
214
-
215
-		$fetch =  $result->fetch();
216
-		$result->closeCursor();
217
-		$result = !empty($fetch) ? true : false;
218
-
219
-		return $result;
220
-	}
221
-
222
-	/**
223
-	 * checks if a user is a SubAdmin
224
-	 * @param IUser $user
225
-	 * @return bool
226
-	 */
227
-	public function isSubAdmin(IUser $user) {
228
-		// Check if the user is already an admin
229
-		if ($this->groupManager->isAdmin($user->getUID())) {
230
-			return true;
231
-		}
232
-
233
-		$qb = $this->dbConn->getQueryBuilder();
234
-
235
-		$result = $qb->select('gid')
236
-			->from('group_admin')
237
-			->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
238
-			->setMaxResults(1)
239
-			->execute();
240
-
241
-		$isSubAdmin = $result->fetch();
242
-		$result->closeCursor();
243
-
244
-		return $isSubAdmin !== false;
245
-	}
246
-
247
-	/**
248
-	 * checks if a user is a accessible by a subadmin
249
-	 * @param IUser $subadmin
250
-	 * @param IUser $user
251
-	 * @return bool
252
-	 */
253
-	public function isUserAccessible($subadmin, $user) {
254
-		if(!$this->isSubAdmin($subadmin)) {
255
-			return false;
256
-		}
257
-		if($this->groupManager->isAdmin($user->getUID())) {
258
-			return false;
259
-		}
260
-		$accessibleGroups = $this->getSubAdminsGroups($subadmin);
261
-		foreach($accessibleGroups as $accessibleGroup) {
262
-			if($accessibleGroup->inGroup($user)) {
263
-				return true;
264
-			}
265
-		}
266
-		return false;
267
-	}
268
-
269
-	/**
270
-	 * delete all SubAdmins by $user
271
-	 * @param IUser $user
272
-	 * @return boolean
273
-	 */
274
-	private function post_deleteUser($user) {
275
-		$qb = $this->dbConn->getQueryBuilder();
276
-
277
-		$qb->delete('group_admin')
278
-			->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
279
-			->execute();
280
-
281
-		return true;
282
-	}
283
-
284
-	/**
285
-	 * delete all SubAdmins by $group
286
-	 * @param IGroup $group
287
-	 * @return boolean
288
-	 */
289
-	private function post_deleteGroup($group) {
290
-		$qb = $this->dbConn->getQueryBuilder();
291
-
292
-		$qb->delete('group_admin')
293
-			->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
294
-			->execute();
295
-
296
-		return true;
297
-	}
209
+        $result = $qb->select('*')
210
+            ->from('group_admin')
211
+            ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
212
+            ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
213
+            ->execute();
214
+
215
+        $fetch =  $result->fetch();
216
+        $result->closeCursor();
217
+        $result = !empty($fetch) ? true : false;
218
+
219
+        return $result;
220
+    }
221
+
222
+    /**
223
+     * checks if a user is a SubAdmin
224
+     * @param IUser $user
225
+     * @return bool
226
+     */
227
+    public function isSubAdmin(IUser $user) {
228
+        // Check if the user is already an admin
229
+        if ($this->groupManager->isAdmin($user->getUID())) {
230
+            return true;
231
+        }
232
+
233
+        $qb = $this->dbConn->getQueryBuilder();
234
+
235
+        $result = $qb->select('gid')
236
+            ->from('group_admin')
237
+            ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
238
+            ->setMaxResults(1)
239
+            ->execute();
240
+
241
+        $isSubAdmin = $result->fetch();
242
+        $result->closeCursor();
243
+
244
+        return $isSubAdmin !== false;
245
+    }
246
+
247
+    /**
248
+     * checks if a user is a accessible by a subadmin
249
+     * @param IUser $subadmin
250
+     * @param IUser $user
251
+     * @return bool
252
+     */
253
+    public function isUserAccessible($subadmin, $user) {
254
+        if(!$this->isSubAdmin($subadmin)) {
255
+            return false;
256
+        }
257
+        if($this->groupManager->isAdmin($user->getUID())) {
258
+            return false;
259
+        }
260
+        $accessibleGroups = $this->getSubAdminsGroups($subadmin);
261
+        foreach($accessibleGroups as $accessibleGroup) {
262
+            if($accessibleGroup->inGroup($user)) {
263
+                return true;
264
+            }
265
+        }
266
+        return false;
267
+    }
268
+
269
+    /**
270
+     * delete all SubAdmins by $user
271
+     * @param IUser $user
272
+     * @return boolean
273
+     */
274
+    private function post_deleteUser($user) {
275
+        $qb = $this->dbConn->getQueryBuilder();
276
+
277
+        $qb->delete('group_admin')
278
+            ->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())))
279
+            ->execute();
280
+
281
+        return true;
282
+    }
283
+
284
+    /**
285
+     * delete all SubAdmins by $group
286
+     * @param IGroup $group
287
+     * @return boolean
288
+     */
289
+    private function post_deleteGroup($group) {
290
+        $qb = $this->dbConn->getQueryBuilder();
291
+
292
+        $qb->delete('group_admin')
293
+            ->where($qb->expr()->eq('gid', $qb->createNamedParameter($group->getGID())))
294
+            ->execute();
295
+
296
+        return true;
297
+    }
298 298
 }
Please login to merge, or discard this patch.
lib/private/Group/Manager.php 1 patch
Indentation   +344 added lines, -344 removed lines patch added patch discarded remove patch
@@ -61,348 +61,348 @@
 block discarded – undo
61 61
  * @package OC\Group
62 62
  */
63 63
 class Manager extends PublicEmitter implements IGroupManager {
64
-	/**
65
-	 * @var GroupInterface[] $backends
66
-	 */
67
-	private $backends = array();
68
-
69
-	/**
70
-	 * @var \OC\User\Manager $userManager
71
-	 */
72
-	private $userManager;
73
-
74
-	/**
75
-	 * @var \OC\Group\Group[]
76
-	 */
77
-	private $cachedGroups = array();
78
-
79
-	/**
80
-	 * @var \OC\Group\Group[]
81
-	 */
82
-	private $cachedUserGroups = array();
83
-
84
-	/** @var \OC\SubAdmin */
85
-	private $subAdmin = null;
86
-
87
-	/** @var ILogger */
88
-	private $logger;
89
-
90
-	/**
91
-	 * @param \OC\User\Manager $userManager
92
-	 * @param ILogger $logger
93
-	 */
94
-	public function __construct(\OC\User\Manager $userManager, ILogger $logger) {
95
-		$this->userManager = $userManager;
96
-		$this->logger = $logger;
97
-		$cachedGroups = & $this->cachedGroups;
98
-		$cachedUserGroups = & $this->cachedUserGroups;
99
-		$this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
100
-			/**
101
-			 * @var \OC\Group\Group $group
102
-			 */
103
-			unset($cachedGroups[$group->getGID()]);
104
-			$cachedUserGroups = array();
105
-		});
106
-		$this->listen('\OC\Group', 'postAddUser', function ($group) use (&$cachedUserGroups) {
107
-			/**
108
-			 * @var \OC\Group\Group $group
109
-			 */
110
-			$cachedUserGroups = array();
111
-		});
112
-		$this->listen('\OC\Group', 'postRemoveUser', function ($group) use (&$cachedUserGroups) {
113
-			/**
114
-			 * @var \OC\Group\Group $group
115
-			 */
116
-			$cachedUserGroups = array();
117
-		});
118
-	}
119
-
120
-	/**
121
-	 * Checks whether a given backend is used
122
-	 *
123
-	 * @param string $backendClass Full classname including complete namespace
124
-	 * @return bool
125
-	 */
126
-	public function isBackendUsed($backendClass) {
127
-		$backendClass = strtolower(ltrim($backendClass, '\\'));
128
-
129
-		foreach ($this->backends as $backend) {
130
-			if (strtolower(get_class($backend)) === $backendClass) {
131
-				return true;
132
-			}
133
-		}
134
-
135
-		return false;
136
-	}
137
-
138
-	/**
139
-	 * @param \OCP\GroupInterface $backend
140
-	 */
141
-	public function addBackend($backend) {
142
-		$this->backends[] = $backend;
143
-		$this->clearCaches();
144
-	}
145
-
146
-	public function clearBackends() {
147
-		$this->backends = array();
148
-		$this->clearCaches();
149
-	}
150
-
151
-	/**
152
-	 * Get the active backends
153
-	 * @return \OCP\GroupInterface[]
154
-	 */
155
-	public function getBackends() {
156
-		return $this->backends;
157
-	}
158
-
159
-
160
-	protected function clearCaches() {
161
-		$this->cachedGroups = array();
162
-		$this->cachedUserGroups = array();
163
-	}
164
-
165
-	/**
166
-	 * @param string $gid
167
-	 * @return \OC\Group\Group
168
-	 */
169
-	public function get($gid) {
170
-		if (isset($this->cachedGroups[$gid])) {
171
-			return $this->cachedGroups[$gid];
172
-		}
173
-		return $this->getGroupObject($gid);
174
-	}
175
-
176
-	/**
177
-	 * @param string $gid
178
-	 * @param string $displayName
179
-	 * @return \OCP\IGroup
180
-	 */
181
-	protected function getGroupObject($gid, $displayName = null) {
182
-		$backends = array();
183
-		foreach ($this->backends as $backend) {
184
-			if ($backend->implementsActions(\OC\Group\Backend::GROUP_DETAILS)) {
185
-				$groupData = $backend->getGroupDetails($gid);
186
-				if (is_array($groupData)) {
187
-					// take the display name from the first backend that has a non-null one
188
-					if (is_null($displayName) && isset($groupData['displayName'])) {
189
-						$displayName = $groupData['displayName'];
190
-					}
191
-					$backends[] = $backend;
192
-				}
193
-			} else if ($backend->groupExists($gid)) {
194
-				$backends[] = $backend;
195
-			}
196
-		}
197
-		if (count($backends) === 0) {
198
-			return null;
199
-		}
200
-		$this->cachedGroups[$gid] = new Group($gid, $backends, $this->userManager, $this, $displayName);
201
-		return $this->cachedGroups[$gid];
202
-	}
203
-
204
-	/**
205
-	 * @param string $gid
206
-	 * @return bool
207
-	 */
208
-	public function groupExists($gid) {
209
-		return $this->get($gid) instanceof IGroup;
210
-	}
211
-
212
-	/**
213
-	 * @param string $gid
214
-	 * @return \OC\Group\Group
215
-	 */
216
-	public function createGroup($gid) {
217
-		if ($gid === '' || $gid === null) {
218
-			return false;
219
-		} else if ($group = $this->get($gid)) {
220
-			return $group;
221
-		} else {
222
-			$this->emit('\OC\Group', 'preCreate', array($gid));
223
-			foreach ($this->backends as $backend) {
224
-				if ($backend->implementsActions(\OC\Group\Backend::CREATE_GROUP)) {
225
-					$backend->createGroup($gid);
226
-					$group = $this->getGroupObject($gid);
227
-					$this->emit('\OC\Group', 'postCreate', array($group));
228
-					return $group;
229
-				}
230
-			}
231
-			return null;
232
-		}
233
-	}
234
-
235
-	/**
236
-	 * @param string $search
237
-	 * @param int $limit
238
-	 * @param int $offset
239
-	 * @return \OC\Group\Group[]
240
-	 */
241
-	public function search($search, $limit = null, $offset = null) {
242
-		$groups = array();
243
-		foreach ($this->backends as $backend) {
244
-			$groupIds = $backend->getGroups($search, $limit, $offset);
245
-			foreach ($groupIds as $groupId) {
246
-				$aGroup = $this->get($groupId);
247
-				if ($aGroup instanceof IGroup) {
248
-					$groups[$groupId] = $aGroup;
249
-				} else {
250
-					$this->logger->debug('Group "' . $groupId . '" was returned by search but not found through direct access', ['app' => 'core']);
251
-				}
252
-			}
253
-			if (!is_null($limit) and $limit <= 0) {
254
-				return array_values($groups);
255
-			}
256
-		}
257
-		return array_values($groups);
258
-	}
259
-
260
-	/**
261
-	 * @param IUser|null $user
262
-	 * @return \OC\Group\Group[]
263
-	 */
264
-	public function getUserGroups(IUser $user= null) {
265
-		if (!$user instanceof IUser) {
266
-			return [];
267
-		}
268
-		return $this->getUserIdGroups($user->getUID());
269
-	}
270
-
271
-	/**
272
-	 * @param string $uid the user id
273
-	 * @return \OC\Group\Group[]
274
-	 */
275
-	public function getUserIdGroups($uid) {
276
-		if (isset($this->cachedUserGroups[$uid])) {
277
-			return $this->cachedUserGroups[$uid];
278
-		}
279
-		$groups = array();
280
-		foreach ($this->backends as $backend) {
281
-			$groupIds = $backend->getUserGroups($uid);
282
-			if (is_array($groupIds)) {
283
-				foreach ($groupIds as $groupId) {
284
-					$aGroup = $this->get($groupId);
285
-					if ($aGroup instanceof IGroup) {
286
-						$groups[$groupId] = $aGroup;
287
-					} else {
288
-						$this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
289
-					}
290
-				}
291
-			}
292
-		}
293
-		$this->cachedUserGroups[$uid] = $groups;
294
-		return $this->cachedUserGroups[$uid];
295
-	}
296
-
297
-	/**
298
-	 * Checks if a userId is in the admin group
299
-	 * @param string $userId
300
-	 * @return bool if admin
301
-	 */
302
-	public function isAdmin($userId) {
303
-		foreach ($this->backends as $backend) {
304
-			if ($backend->implementsActions(\OC\Group\Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
305
-				return true;
306
-			}
307
-		}
308
-		return $this->isInGroup($userId, 'admin');
309
-	}
310
-
311
-	/**
312
-	 * Checks if a userId is in a group
313
-	 * @param string $userId
314
-	 * @param string $group
315
-	 * @return bool if in group
316
-	 */
317
-	public function isInGroup($userId, $group) {
318
-		return array_key_exists($group, $this->getUserIdGroups($userId));
319
-	}
320
-
321
-	/**
322
-	 * get a list of group ids for a user
323
-	 * @param IUser $user
324
-	 * @return array with group ids
325
-	 */
326
-	public function getUserGroupIds(IUser $user) {
327
-		return array_map(function($value) {
328
-			return (string) $value;
329
-		}, array_keys($this->getUserGroups($user)));
330
-	}
331
-
332
-	/**
333
-	 * get an array of groupid and displayName for a user
334
-	 * @param IUser $user
335
-	 * @return array ['displayName' => displayname]
336
-	 */
337
-	public function getUserGroupNames(IUser $user) {
338
-		return array_map(function($group) {
339
-			return array('displayName' => $group->getDisplayName());
340
-		}, $this->getUserGroups($user));
341
-	}
342
-
343
-	/**
344
-	 * get a list of all display names in a group
345
-	 * @param string $gid
346
-	 * @param string $search
347
-	 * @param int $limit
348
-	 * @param int $offset
349
-	 * @return array an array of display names (value) and user ids (key)
350
-	 */
351
-	public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
352
-		$group = $this->get($gid);
353
-		if(is_null($group)) {
354
-			return array();
355
-		}
356
-
357
-		$search = trim($search);
358
-		$groupUsers = array();
359
-
360
-		if(!empty($search)) {
361
-			// only user backends have the capability to do a complex search for users
362
-			$searchOffset = 0;
363
-			$searchLimit = $limit * 100;
364
-			if($limit === -1) {
365
-				$searchLimit = 500;
366
-			}
367
-
368
-			do {
369
-				$filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
370
-				foreach($filteredUsers as $filteredUser) {
371
-					if($group->inGroup($filteredUser)) {
372
-						$groupUsers[]= $filteredUser;
373
-					}
374
-				}
375
-				$searchOffset += $searchLimit;
376
-			} while(count($groupUsers) < $searchLimit+$offset && count($filteredUsers) >= $searchLimit);
377
-
378
-			if($limit === -1) {
379
-				$groupUsers = array_slice($groupUsers, $offset);
380
-			} else {
381
-				$groupUsers = array_slice($groupUsers, $offset, $limit);
382
-			}
383
-		} else {
384
-			$groupUsers = $group->searchUsers('', $limit, $offset);
385
-		}
386
-
387
-		$matchingUsers = array();
388
-		foreach($groupUsers as $groupUser) {
389
-			$matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
390
-		}
391
-		return $matchingUsers;
392
-	}
393
-
394
-	/**
395
-	 * @return \OC\SubAdmin
396
-	 */
397
-	public function getSubAdmin() {
398
-		if (!$this->subAdmin) {
399
-			$this->subAdmin = new \OC\SubAdmin(
400
-				$this->userManager,
401
-				$this,
402
-				\OC::$server->getDatabaseConnection()
403
-			);
404
-		}
405
-
406
-		return $this->subAdmin;
407
-	}
64
+    /**
65
+     * @var GroupInterface[] $backends
66
+     */
67
+    private $backends = array();
68
+
69
+    /**
70
+     * @var \OC\User\Manager $userManager
71
+     */
72
+    private $userManager;
73
+
74
+    /**
75
+     * @var \OC\Group\Group[]
76
+     */
77
+    private $cachedGroups = array();
78
+
79
+    /**
80
+     * @var \OC\Group\Group[]
81
+     */
82
+    private $cachedUserGroups = array();
83
+
84
+    /** @var \OC\SubAdmin */
85
+    private $subAdmin = null;
86
+
87
+    /** @var ILogger */
88
+    private $logger;
89
+
90
+    /**
91
+     * @param \OC\User\Manager $userManager
92
+     * @param ILogger $logger
93
+     */
94
+    public function __construct(\OC\User\Manager $userManager, ILogger $logger) {
95
+        $this->userManager = $userManager;
96
+        $this->logger = $logger;
97
+        $cachedGroups = & $this->cachedGroups;
98
+        $cachedUserGroups = & $this->cachedUserGroups;
99
+        $this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
100
+            /**
101
+             * @var \OC\Group\Group $group
102
+             */
103
+            unset($cachedGroups[$group->getGID()]);
104
+            $cachedUserGroups = array();
105
+        });
106
+        $this->listen('\OC\Group', 'postAddUser', function ($group) use (&$cachedUserGroups) {
107
+            /**
108
+             * @var \OC\Group\Group $group
109
+             */
110
+            $cachedUserGroups = array();
111
+        });
112
+        $this->listen('\OC\Group', 'postRemoveUser', function ($group) use (&$cachedUserGroups) {
113
+            /**
114
+             * @var \OC\Group\Group $group
115
+             */
116
+            $cachedUserGroups = array();
117
+        });
118
+    }
119
+
120
+    /**
121
+     * Checks whether a given backend is used
122
+     *
123
+     * @param string $backendClass Full classname including complete namespace
124
+     * @return bool
125
+     */
126
+    public function isBackendUsed($backendClass) {
127
+        $backendClass = strtolower(ltrim($backendClass, '\\'));
128
+
129
+        foreach ($this->backends as $backend) {
130
+            if (strtolower(get_class($backend)) === $backendClass) {
131
+                return true;
132
+            }
133
+        }
134
+
135
+        return false;
136
+    }
137
+
138
+    /**
139
+     * @param \OCP\GroupInterface $backend
140
+     */
141
+    public function addBackend($backend) {
142
+        $this->backends[] = $backend;
143
+        $this->clearCaches();
144
+    }
145
+
146
+    public function clearBackends() {
147
+        $this->backends = array();
148
+        $this->clearCaches();
149
+    }
150
+
151
+    /**
152
+     * Get the active backends
153
+     * @return \OCP\GroupInterface[]
154
+     */
155
+    public function getBackends() {
156
+        return $this->backends;
157
+    }
158
+
159
+
160
+    protected function clearCaches() {
161
+        $this->cachedGroups = array();
162
+        $this->cachedUserGroups = array();
163
+    }
164
+
165
+    /**
166
+     * @param string $gid
167
+     * @return \OC\Group\Group
168
+     */
169
+    public function get($gid) {
170
+        if (isset($this->cachedGroups[$gid])) {
171
+            return $this->cachedGroups[$gid];
172
+        }
173
+        return $this->getGroupObject($gid);
174
+    }
175
+
176
+    /**
177
+     * @param string $gid
178
+     * @param string $displayName
179
+     * @return \OCP\IGroup
180
+     */
181
+    protected function getGroupObject($gid, $displayName = null) {
182
+        $backends = array();
183
+        foreach ($this->backends as $backend) {
184
+            if ($backend->implementsActions(\OC\Group\Backend::GROUP_DETAILS)) {
185
+                $groupData = $backend->getGroupDetails($gid);
186
+                if (is_array($groupData)) {
187
+                    // take the display name from the first backend that has a non-null one
188
+                    if (is_null($displayName) && isset($groupData['displayName'])) {
189
+                        $displayName = $groupData['displayName'];
190
+                    }
191
+                    $backends[] = $backend;
192
+                }
193
+            } else if ($backend->groupExists($gid)) {
194
+                $backends[] = $backend;
195
+            }
196
+        }
197
+        if (count($backends) === 0) {
198
+            return null;
199
+        }
200
+        $this->cachedGroups[$gid] = new Group($gid, $backends, $this->userManager, $this, $displayName);
201
+        return $this->cachedGroups[$gid];
202
+    }
203
+
204
+    /**
205
+     * @param string $gid
206
+     * @return bool
207
+     */
208
+    public function groupExists($gid) {
209
+        return $this->get($gid) instanceof IGroup;
210
+    }
211
+
212
+    /**
213
+     * @param string $gid
214
+     * @return \OC\Group\Group
215
+     */
216
+    public function createGroup($gid) {
217
+        if ($gid === '' || $gid === null) {
218
+            return false;
219
+        } else if ($group = $this->get($gid)) {
220
+            return $group;
221
+        } else {
222
+            $this->emit('\OC\Group', 'preCreate', array($gid));
223
+            foreach ($this->backends as $backend) {
224
+                if ($backend->implementsActions(\OC\Group\Backend::CREATE_GROUP)) {
225
+                    $backend->createGroup($gid);
226
+                    $group = $this->getGroupObject($gid);
227
+                    $this->emit('\OC\Group', 'postCreate', array($group));
228
+                    return $group;
229
+                }
230
+            }
231
+            return null;
232
+        }
233
+    }
234
+
235
+    /**
236
+     * @param string $search
237
+     * @param int $limit
238
+     * @param int $offset
239
+     * @return \OC\Group\Group[]
240
+     */
241
+    public function search($search, $limit = null, $offset = null) {
242
+        $groups = array();
243
+        foreach ($this->backends as $backend) {
244
+            $groupIds = $backend->getGroups($search, $limit, $offset);
245
+            foreach ($groupIds as $groupId) {
246
+                $aGroup = $this->get($groupId);
247
+                if ($aGroup instanceof IGroup) {
248
+                    $groups[$groupId] = $aGroup;
249
+                } else {
250
+                    $this->logger->debug('Group "' . $groupId . '" was returned by search but not found through direct access', ['app' => 'core']);
251
+                }
252
+            }
253
+            if (!is_null($limit) and $limit <= 0) {
254
+                return array_values($groups);
255
+            }
256
+        }
257
+        return array_values($groups);
258
+    }
259
+
260
+    /**
261
+     * @param IUser|null $user
262
+     * @return \OC\Group\Group[]
263
+     */
264
+    public function getUserGroups(IUser $user= null) {
265
+        if (!$user instanceof IUser) {
266
+            return [];
267
+        }
268
+        return $this->getUserIdGroups($user->getUID());
269
+    }
270
+
271
+    /**
272
+     * @param string $uid the user id
273
+     * @return \OC\Group\Group[]
274
+     */
275
+    public function getUserIdGroups($uid) {
276
+        if (isset($this->cachedUserGroups[$uid])) {
277
+            return $this->cachedUserGroups[$uid];
278
+        }
279
+        $groups = array();
280
+        foreach ($this->backends as $backend) {
281
+            $groupIds = $backend->getUserGroups($uid);
282
+            if (is_array($groupIds)) {
283
+                foreach ($groupIds as $groupId) {
284
+                    $aGroup = $this->get($groupId);
285
+                    if ($aGroup instanceof IGroup) {
286
+                        $groups[$groupId] = $aGroup;
287
+                    } else {
288
+                        $this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
289
+                    }
290
+                }
291
+            }
292
+        }
293
+        $this->cachedUserGroups[$uid] = $groups;
294
+        return $this->cachedUserGroups[$uid];
295
+    }
296
+
297
+    /**
298
+     * Checks if a userId is in the admin group
299
+     * @param string $userId
300
+     * @return bool if admin
301
+     */
302
+    public function isAdmin($userId) {
303
+        foreach ($this->backends as $backend) {
304
+            if ($backend->implementsActions(\OC\Group\Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
305
+                return true;
306
+            }
307
+        }
308
+        return $this->isInGroup($userId, 'admin');
309
+    }
310
+
311
+    /**
312
+     * Checks if a userId is in a group
313
+     * @param string $userId
314
+     * @param string $group
315
+     * @return bool if in group
316
+     */
317
+    public function isInGroup($userId, $group) {
318
+        return array_key_exists($group, $this->getUserIdGroups($userId));
319
+    }
320
+
321
+    /**
322
+     * get a list of group ids for a user
323
+     * @param IUser $user
324
+     * @return array with group ids
325
+     */
326
+    public function getUserGroupIds(IUser $user) {
327
+        return array_map(function($value) {
328
+            return (string) $value;
329
+        }, array_keys($this->getUserGroups($user)));
330
+    }
331
+
332
+    /**
333
+     * get an array of groupid and displayName for a user
334
+     * @param IUser $user
335
+     * @return array ['displayName' => displayname]
336
+     */
337
+    public function getUserGroupNames(IUser $user) {
338
+        return array_map(function($group) {
339
+            return array('displayName' => $group->getDisplayName());
340
+        }, $this->getUserGroups($user));
341
+    }
342
+
343
+    /**
344
+     * get a list of all display names in a group
345
+     * @param string $gid
346
+     * @param string $search
347
+     * @param int $limit
348
+     * @param int $offset
349
+     * @return array an array of display names (value) and user ids (key)
350
+     */
351
+    public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
352
+        $group = $this->get($gid);
353
+        if(is_null($group)) {
354
+            return array();
355
+        }
356
+
357
+        $search = trim($search);
358
+        $groupUsers = array();
359
+
360
+        if(!empty($search)) {
361
+            // only user backends have the capability to do a complex search for users
362
+            $searchOffset = 0;
363
+            $searchLimit = $limit * 100;
364
+            if($limit === -1) {
365
+                $searchLimit = 500;
366
+            }
367
+
368
+            do {
369
+                $filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
370
+                foreach($filteredUsers as $filteredUser) {
371
+                    if($group->inGroup($filteredUser)) {
372
+                        $groupUsers[]= $filteredUser;
373
+                    }
374
+                }
375
+                $searchOffset += $searchLimit;
376
+            } while(count($groupUsers) < $searchLimit+$offset && count($filteredUsers) >= $searchLimit);
377
+
378
+            if($limit === -1) {
379
+                $groupUsers = array_slice($groupUsers, $offset);
380
+            } else {
381
+                $groupUsers = array_slice($groupUsers, $offset, $limit);
382
+            }
383
+        } else {
384
+            $groupUsers = $group->searchUsers('', $limit, $offset);
385
+        }
386
+
387
+        $matchingUsers = array();
388
+        foreach($groupUsers as $groupUser) {
389
+            $matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
390
+        }
391
+        return $matchingUsers;
392
+    }
393
+
394
+    /**
395
+     * @return \OC\SubAdmin
396
+     */
397
+    public function getSubAdmin() {
398
+        if (!$this->subAdmin) {
399
+            $this->subAdmin = new \OC\SubAdmin(
400
+                $this->userManager,
401
+                $this,
402
+                \OC::$server->getDatabaseConnection()
403
+            );
404
+        }
405
+
406
+        return $this->subAdmin;
407
+    }
408 408
 }
Please login to merge, or discard this patch.