/** * Получить роли по идентификатору задачи выбранного сотрудника * @param CUserRole $key * @param CUser $user * @return CArrayList */ public static function getRolesByTaskByUser(CUserRole $key, CUser $user) { $roles = new CArrayList(); $users = new CArrayList(); foreach (CActiveRecordProvider::getWithCondition(TABLE_USER_IN_GROUPS, "user_id = '" . $user->getId() . "'")->getItems() as $item) { $user = new CUser($item); $users->add($user->getId(), $user); } foreach (CStaffManager::getRolesByTask($key)->getItems() as $role) { foreach ($users->getItems() as $user) { if ($role->user_group_id == $user->group_id) { $roles->add($role->getId(), $role); self::getCacheRolesGroups()->add($role->id, $role); } } } return $roles; }