postRequestCustomMenu(); $this->postRequestExistingMenu(); return $this->getAllOptionsPagesAndFields(); } /** * @return mixed */ public function getAllOptionsPagesAndFields() { $data = Data::getAllFromPageValueColumn(); $postRequest = Data::getPostRequest(); if (isset($postRequest['menu_id'])) { $data = $data->whereNotIn('menu_id', [$postRequest['menu_id']]); } return $data->map(function ($item) { if (isset($item['menu'])) { (new MenuPage())->run($item['menu']); } return $item['pages']; })->flatten(1)->filter(function ($page) { (new SingleOptionsPage())->run($page); $requestUri = isset($_SERVER['REQUEST_URI']) ? sanitize_text_field( wp_unslash($_SERVER['REQUEST_URI']) ) : ''; $cleanSlug = strtok($requestUri, '?'); $prefix = wp_parse_url(site_url(), PHP_URL_PATH) !== null ? wp_parse_url(site_url(), PHP_URL_PATH) : ''; $getRequest = Data::getRequest(); if (!isset($getRequest['page']) && $cleanSlug !== $prefix . '/wp-admin/options.php') { return null; } if (!isset($getRequest['page']) && !isset($getRequest['option_page'])) { return null; } return $getRequest['page'] === $page['menu_slug'] || $cleanSlug === $prefix . '/wp-admin/options.php'; })->map(function ($page) { return (new OptionsFields())->run($page['fields'], $page); }); } /** * @return Collection|void */ public function postRequestCustomMenu() { $postRequest = Data::getPostRequest(); if (!isset($postRequest['menu']) || !isset($postRequest['pages'])) { return; } $validate = new Validation(); if (!$validate->customMenu()) { return; } (new MenuPage())->run((new Input())->menuPageForCustomMenu($validate)); return Collection::make($postRequest['pages'])->map(function ($subpage, $key) use ($validate, $postRequest) { $validatedSubpageTab = isset($subpage['subpage_tab']) && $subpage['subpage_tab'] === '1'; $validatedParentSlug = $validate->alphanumericDashesAll($postRequest['pages'][0]['subpage_slug']); $validatedMenuSlug = ($key === 0) ? $validatedParentSlug : $validate->alphanumericDashesAll($subpage['subpage_slug']); (new SingleOptionsPage())->run([ 'parent_slug' => $validatedParentSlug, 'menu_title' => $validate->textField($subpage['menu_title']), 'capability' => $validate->capabilityPage($subpage['role']), 'menu_slug' => $validatedMenuSlug, 'include_tab' => $validatedSubpageTab, 'select_title' => $validate->textField($subpage['select_title']), 'subpage_position' => $validate->integerOrEmpty($subpage['subpage_position']) ]); }); } /** * @return Collection|void */ public function postRequestExistingMenu() { $postRequest = Data::getPostRequest(); if (!isset($postRequest['existing_menu']) || !isset($postRequest['pages'])) { return; } $validate = new Validation(); return Collection::make($postRequest['pages'])->map(function ($subpage, $key) use ($validate, $postRequest) { $validatedSubpageTab = isset($subpage['subpage_tab']) && $subpage['subpage_tab'] === '1'; $validatedParentSlug = $postRequest['existing_menu']['menu_slug']; (new SingleOptionsPage())->run([ 'parent_slug' => $validatedParentSlug, 'menu_title' => $validate->textField($subpage['menu_title']), 'capability' => $validate->capabilityPage($subpage['role']), 'menu_slug' => $validate->alphanumericDashesAll($subpage['subpage_slug']), 'include_tab' => $validatedSubpageTab, 'select_title' => $validate->textField($subpage['select_title']), 'subpage_position' => $validate->integerOrEmpty($subpage['subpage_position']) ]); }); } }