menu_builder_setup_instance === null){ $this->menu_builder_setup_instance = new MenuBuilderSetup(); } } public function get_static_pages_list($lang): string { return $this->render_static_page_list($this->menu_builder_setup_instance->static_pages_list(),$lang); } /** * @throws \Exception */ public function get_post_type_page_list($lang): string { return $this->render_dynamic_pages_list($this->menu_builder_setup_instance->register_dynamic_menus(),$lang); } public static function render_static_page_list($static_page_list,$lang ): string { $output = ''; $default_language_slug = $lang ?? LanguageHelper::default_slug(); foreach ($static_page_list as $page){ $page_name = MenuBuilderSetup::multilang() ? '_page_'.$default_language_slug.'_name' : '_page_name'; $static_field_data = StaticOption::whereIn('option_name',[$page.'_page_slug',$page.$page_name]) ->get() ->mapWithKeys(function ($item) { return [$item->option_name => $item->option_value];}) ->toArray(); $output .= '
  • '; $output .= '
  • '; } return $output; } /** * @throws \Exception */ public function render_dynamic_pages_list($dynamic_page_list,$lang): string { $output = ''; $default_language_slug = $lang ?? LanguageHelper::default_slug(); foreach ($dynamic_page_list as $key => $page_details){ //enable when = give a static page name here if (isset($page_details['enable_when']) && empty(get_static_option($page_details['enable_when']))){ continue; } //query type = old_lang|new_lang $random_number = random_int(999,9999999); $output .= '
    '; $output .= '

    '; $output .= '

    '; $output .= '
    '; $output .= '
      '; $query = new $page_details['model'](); $query = $query->query(); if ($page_details['query'] === 'old_lang'){ $query->where(['lang' => $default_language_slug,'status' => 'publish']); }elseif($page_details['query'] === 'new_lang'){ $query->with(['lang_query' => function ($query) use ($default_language_slug){ $query->where('lang',$default_language_slug); }])->where(['status' => 'publish']); }else{ $query->where(['status' => 'publish']); } $all_items = $query->get(); foreach ($all_items as $item){ $output .= '
    • '; $output .= '
    • '; } //menu item will be there $output .= '
    '; $output .= '
    '; $output .= ''; $output .= '
    '; } return $output; } private function dynamic_page_name($name,$lang){ return get_static_option(htmlspecialchars(strip_tags(str_replace('[lang]',$lang,$name)))); } }