all(); Guard::requireLogin(); Guard::requireAbilityOrForbidden(\MintyPHP\Module\AddressBook\AddressBookAuthorizationPolicy::ABILITY_VIEW); $filterSchema = require __DIR__ . '/filter-schema.php'; $query = requestInput()->queryAll(); $currentUserId = (int) ($session['user']['id'] ?? 0); $addressBookService = app(AddressBookService::class); $context = $addressBookService->buildIndexContext($currentUserId, $query); $activeTenants = $context['activeTenants'] ?? []; $activeRoles = $context['activeRoles'] ?? []; $activeDepartments = $context['activeDepartments'] ?? []; $tenantItems = $context['tenantItems'] ?? []; $departments = $context['departments'] ?? []; $roles = $context['roles'] ?? []; $customFieldFilterDefinitions = $context['customFieldFilterDefinitions'] ?? []; $customFieldFilterQuery = $context['customFieldFilterQuery'] ?? []; $tenantDepartmentMap = $context['tenantDepartmentMap'] ?? []; $toolbarOptionSets = [ 'tenant_items' => (array) $tenantItems, 'department_items' => (array) $departments, 'role_items' => (array) $roles, ]; $toolbarFilterStateOverrides = [ 'search' => (string) gridQueryString($query, 'search', ''), 'tenants' => array_map('strval', (array) $activeTenants), 'departments' => array_map('strval', (array) $activeDepartments), 'roles' => array_map('strval', (array) $activeRoles), ]; $listFilterContext = gridBuildListFilterContext($filterSchema, [ 'query' => $query, 'search_keys' => ['search'], 'toolbar_state_overrides' => $toolbarFilterStateOverrides, 'toolbar_option_sets' => $toolbarOptionSets, ]); $toolbarFilterSchema = $listFilterContext['toolbarFilterSchema']; $toolbarFilterState = $listFilterContext['toolbarFilterState']; $searchToolbarFilterSchema = $listFilterContext['searchToolbarFilterSchema']; $drawerToolbarFilterSchema = $listFilterContext['drawerToolbarFilterSchema']; $toolbarOptionSets = $listFilterContext['toolbarOptionSets']; $clientFilterSchema = $listFilterContext['clientFilterSchema']; $searchConfig = $listFilterContext['searchConfig']; $customFieldChipMeta = $addressBookService->buildCustomFieldChipMeta($customFieldFilterDefinitions); $filterChipMeta = [ 'search' => [ 'label' => t('Search'), 'type' => 'text', ], 'tenants' => [ 'label' => t('Tenants'), 'type' => 'multi_csv', 'options' => gridOptionMapFromItems((array) $tenantItems), ], 'departments' => [ 'label' => t('Departments'), 'type' => 'multi_csv', 'options' => gridOptionMapFromItems((array) $departments), ], 'roles' => [ 'label' => t('Roles'), 'type' => 'multi_csv', 'options' => gridOptionMapFromItems((array) $roles), ], 'custom_fields' => $customFieldChipMeta, ]; $csrfKey = Session::$csrfSessionKey; $csrfToken = $session[$csrfKey] ?? ''; Buffer::set('title', t('Address book')); $breadcrumbs = [ ['label' => t('Home'), 'path' => 'admin'], ['label' => t('Address book')], ]; Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); Buffer::set( 'grid_csrf', json_encode(['key' => $csrfKey, 'token' => $csrfToken], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) );