/** * Return groups id by user id * * @param integer $user_id * @return array */ private function getGroupsIdByUserId($user_id) { $return = []; $members = UserGroupMember::finder()->filter(['USER_ID' => $user_id])->all(); foreach ($members as $member) { $return[] = $member->group_id; } return $return; }
/** * Delete user * * @param integer $id * @return boolean */ public function delete($id) { $repo = $this->store()->getRepository('user'); $entity = $this->finder()->filter(['ID' => $id])->get(); if ($entity === false) { $repo->rollback(); throw new \RuntimeException("User is not found."); } $event = $this->store()->getEvent(); if ($this->string()->length($event) > 0) { $event_post = 'OnPost' . $this->string()->ucwords($event) . 'Delete'; Event::on($event_post, function ($id) { if (!UserGroupMember::deleteAllByUserId($id)) { throw new \RuntimeException("Error delete groups member."); } }); $event_after = 'OnAfter' . $this->string()->ucwords($event) . 'Delete'; Event::on($event_after, function () { Cache::clearByTags('user'); }); } return $this->store()->delete($repo, $entity); }