public function sqlConditionAndPlaceholderValueForUserId($user_id) { $user_obj = User::factory($user_id); if ($user_obj->getHasFullAccess()) { return ['', []]; // do not filter } $current_user_usertogroup_ids_arr = UserToGroup::getIdsArrForUserIdByCreatedAtDesc($user_id); $current_user_groups_ids_arr = []; foreach ($current_user_usertogroup_ids_arr as $usertogroup_id) { $usertogroup_obj = UserToGroup::factory($usertogroup_id); $current_user_groups_ids_arr[] = $usertogroup_obj->getGroupId(); } $placeholder_values_arr = []; $where = ' ('; $where .= '(owner_user_id = ?)'; $placeholder_values_arr[] = $user_id; if (count($current_user_groups_ids_arr) > 0) { $user_groups_placeholders_arr = array_fill(0, count($current_user_groups_ids_arr), '?'); $where .= ' or (owner_group_id in (' . implode($user_groups_placeholders_arr) . '))'; $placeholder_values_arr = array_merge($placeholder_values_arr, $current_user_groups_ids_arr); } $where .= ') '; return [$where, $placeholder_values_arr]; }
public static function userInGroupsTable($user_id) { if (!Operator::currentOperatorHasAnyOfPermissions([Permissions::PERMISSION_PHPAUTH_MANAGE_GROUPS])) { return ''; } $html = ''; $html .= '<h2>В составе групп</h2>'; $new_user_to_group_obj = new UserToGroup(); $new_user_to_group_obj->setUserId($user_id); $html .= CRUDTable::html(UserToGroup::class, CRUDForm::html($new_user_to_group_obj, [new CRUDFormInvisibleRow(new CRUDFormWidgetInput(UserToGroup::_USER_ID)), new CRUDFormRow('Группа', new CRUDFormWidgetReferenceAjax(UserToGroup::_GROUP_ID, Group::class, Group::_TITLE, (new GroupsListAjaxAction())->url(), (new GroupEditAction('REFERENCED_ID'))->url(), true))]), [new CRUDTableColumn('Группа', new CRUDTableWidgetTextWithLink('{' . Group::class . '.{this->' . UserToGroup::_GROUP_ID . '}->' . Group::_TITLE . '}', (new GroupEditAction('{this->' . UserToGroup::_GROUP_ID . '}'))->url())), new CRUDTableColumn('Удалить', new CRUDTableWidgetDelete())], [new CRUDTableFilterEqualInvisible(UserToGroup::_USER_ID, $user_id)]); return $html; }
public static function usersInGroupTable($group_id) { if (!Operator::currentOperatorHasAnyOfPermissions([Permissions::PERMISSION_PHPAUTH_MANAGE_USERS])) { return ''; } $html = '<h2>Пользователи в группе</h2>'; $new_user_to_group_obj = new UserToGroup(); $new_user_to_group_obj->setGroupId($group_id); $html .= CRUDTable::html(UserToGroup::class, CRUDForm::html($new_user_to_group_obj, [new CRUDFormInvisibleRow(new CRUDFormWidgetInput(UserToGroup::_GROUP_ID)), new CRUDFormRow('Пользователь', new CRUDFormWidgetReferenceAjax(UserToGroup::_USER_ID, User::class, User::_LOGIN, (new UsersListAjaxAction())->url(), (new UserEditAction('REFERENCED_ID'))->url(), true))]), [new CRUDTableColumn('Логин', new \OLOG\CRUD\CRUDTableWidgetTextWithLink('{' . User::class . '.{this->' . UserToGroup::_USER_ID . '}->' . User::_LOGIN . '}', (new UserEditAction('{this->' . UserToGroup::_USER_ID . '}'))->url())), new CRUDTableColumn('Удалить', new CRUDTableWidgetDelete())], [new CRUDTableFilterEqualInvisible(UserToGroup::_GROUP_ID, $group_id)]); return $html; }