PHPFusion\SiteLinks::get_SiteLinksData PHP Method

get_SiteLinksData() public static method

Fetches Site Links Hierarchy Data - for a less support complexity
public static get_SiteLinksData ( array $options = [] ) : array
$options array - join - link_position (array) - condition - group - order
return array
    public static function get_SiteLinksData(array $options = array())
    {
        $default_position = array(2, 3);
        $default_link_filter = array('join' => '', 'position_condition' => '(sl.link_position=' . ($options['link_position'] ? implode(' OR sl.link_position=', $options['link_position']) : implode(' OR sl.link_position=', $default_position)) . ')', 'condition' => (multilang_table("SL") ? " AND link_language='" . LANGUAGE . "'" : "") . " AND " . groupaccess('link_visibility'), 'group' => '', 'order' => "link_cat ASC, link_order ASC");
        $options += $default_link_filter;
        $query_replace = "";
        if (!empty($options)) {
            $query_replace = "SELECT sl.* " . (!empty($options['select']) ? ", " . $options['select'] : '') . " ";
            $query_replace .= "FROM " . DB_SITE_LINKS . " sl ";
            $query_replace .= $options['join'] . " ";
            $query_replace .= "WHERE " . $options['position_condition'] . $options['condition'];
            $query_replace .= (!empty($options['group']) ? " GROUP BY " . $options['group'] . " " : "") . " ORDER BY " . $options['order'];
        }
        return (array) dbquery_tree_full(DB_SITE_LINKS, "link_id", "link_cat", "", $query_replace);
    }

Usage Example

 /**
  * Displays Site Links Navigation Bar
  * @param string $sep     - Custom seperator text
  * @param string $class   - Class
  * @param array  $options -
  *
  * Default $options parameters:
  * id - unique navbar id
  * container - true for container mode
  * navbar_class - switch between navbar-default, navbar-inverse or custom class
  * item_class - the default li class
  * separator - default li separator
  * callback_data - replace default data callback
  *
  * @param int    $id      - 0 for root , Sitelink_ID to show child only
  * @return string
  */
 function showsublinks($sep = "", $class = "", array $options = array(), $id = 0)
 {
     $default_options = array("id" => "", "container" => FALSE, "navbar_class" => "navbar-default", "item_class" => $class, "separator" => $sep, "callback_data" => array(), "links_per_page" => fusion_get_settings("links_per_page"), "grouping" => fusion_get_settings("links_grouping"), "show_banner" => false, "show_header" => false);
     $options += $default_options;
     if (empty($options['id'])) {
         $options['id'] = md5(str_shuffle(str_replace(" ", "_", fusion_get_settings("sitename"))));
     }
     $pageInfo = pathinfo($_SERVER['REQUEST_URI']);
     $start_page = $pageInfo['dirname'] !== "/" ? ltrim($pageInfo['dirname'], "/") . "/" : "";
     $site_path = ltrim(fusion_get_settings("site_path"), "/");
     $start_page = str_replace($site_path, "", $start_page);
     $start_page .= $pageInfo['basename'];
     if (fusion_get_settings("site_seo") && defined('IN_PERMALINK') && !isset($_GET['aid'])) {
         global $filepath;
         $start_page = $filepath;
     }
     $res =& $res;
     if (empty($data) && empty($options['callback_data'])) {
         $data = \PHPFusion\SiteLinks::get_SiteLinksData(array('link_position' => array(2, 3)));
         // Is Equivalent to:
         //$data = dbquery_tree_full(DB_SITE_LINKS, "link_id", "link_cat", "WHERE link_position >= 2".(multilang_table("SL") ? " AND link_language='".LANGUAGE."'" : "")." AND ".groupaccess('link_visibility')." ORDER BY link_cat ASC, link_order ASC");
     } else {
         $data = $options['callback_data'];
     }
     /**
      * Change hierarchy data when grouping is on
      */
     if ($options['grouping'] == true) {
         if (count($data[0]) > $options['links_per_page']) {
             $more_index = 9 * 10000000;
             $base_data = $data[0];
             $data[$more_index] = array_slice($base_data, $options['links_per_page'], 9, TRUE);
             $data[0] = array_slice($base_data, 0, $options['links_per_page'], TRUE);
             $more[$more_index] = array("link_id" => $more_index, "link_cat" => 0, "link_name" => fusion_get_locale("global_700"), "link_url" => "#", "link_icon" => "", "link_visibility" => 0, "link_position" => 2, "link_window" => 0, "link_order" => $options['links_per_page'], "link_language" => LANGUAGE);
             $data[0] += $more;
         }
     }
     $banner = fusion_get_settings("sitebanner") && $options['show_banner'] == true ? "<img src='" . BASEDIR . fusion_get_settings("sitebanner") . "' alt='" . fusion_get_settings("sitename") . "'/>" : fusion_get_settings("sitename");
     if (empty($id)) {
         $res = "<div id='" . $options['id'] . "' class='navbar " . $options['navbar_class'] . "' role='navigation'>\n";
         $res .= $options['container'] ? "<div class='container'>\n" : "";
         $res .= "<div class='navbar-header'>\n";
         $res .= "<!---Menu Header Start--->\n";
         $res .= "<button type='button' class='navbar-toggle collapsed' data-toggle='collapse' data-target='#phpfusion-menu' aria-expanded='false'>\n\t\t\t\t\t<span class='sr-only'>Toggle navigation</span>\n\t\t\t\t\t<span class='icon-bar'></span>\n\t\t\t\t\t<span class='icon-bar'></span>\n\t\t\t\t\t<span class='icon-bar'></span>\n      \t\t\t</button>\n";
         if ($options['show_header']) {
             $res .= "<a class='navbar-brand' href='" . BASEDIR . fusion_get_settings('opening_page') . "'>{$banner}</a>\n";
         } else {
             $res .= "<a class='navbar-brand visible-xs hidden-sm hidden-md hidden-lg' href='" . BASEDIR . fusion_get_settings('opening_page') . "'>" . fusion_get_settings("sitename") . "</a>\n";
         }
         $res .= "<!---Menu Header End--->\n";
         $res .= "</div>\n";
         $res .= "<div class='navbar-collapse collapse' id='" . $id . "-menu'>\n";
         $res .= "<ul " . (fusion_get_settings("bootstrap") ? "class='nav navbar-nav primary'" : "id='main-menu' class='primary sm sm-simple'") . ">\n";
         $res .= "<!---Menu Item Start--->\n";
     }
     if (!empty($data)) {
         $i = 0;
         $default_link_data = array("link_id" => 0, "link_name" => "", "link_cat" => 0, "link_url" => "", "link_icon" => "", "link_active" => FALSE, "link_title" => FALSE, "link_disabled" => FALSE, "link_window" => FALSE);
         foreach ($data[$id] as $link_id => $link_data) {
             $link_data += $default_link_data;
             $link_data['link_name'] = parsesmileys(parseubb($link_data['link_name']));
             $li_class = $options['item_class'];
             if ($link_data['link_disabled']) {
                 $li_class = "disabled";
             } else {
                 if ($link_data['link_title'] == TRUE) {
                     $li_class = "dropdown-header";
                 }
             }
             // Attempt to calculate a relative link
             $secondary_active = FALSE;
             if ($start_page !== $link_data['link_url']) {
                 $link_instance = \PHPFusion\BreadCrumbs::getInstance();
                 $link_instance->showHome(FALSE);
                 $reference = $link_instance->toArray();
                 if (!empty($reference)) {
                     foreach ($reference as $refData) {
                         if (!empty($link_data['link_url']) && !empty($refData['link']) && $link_data['link_url'] !== "index.php") {
                             if (stristr($refData['link'], str_replace("index.php", "", $link_data['link_url']))) {
                                 $secondary_active = TRUE;
                             }
                             break;
                             // match found
                         }
                     }
                 }
             }
             if ($link_data['link_name'] != "---" && $link_data['link_name'] != "===") {
                 $link_target = $link_data['link_window'] == "1" ? " target='_blank'" : "";
                 if ($i == 0 && $id > 0) {
                     $li_class .= ($li_class ? " " : "") . "first-link";
                 }
                 if ($start_page == $link_data['link_url'] || fusion_get_settings('site_path') . $start_page == $link_data['link_url'] || $secondary_active == TRUE || $start_page == fusion_get_settings("opening_page") && $i == 0 && $id === 0) {
                     $li_class .= ($li_class ? " " : "") . "current-link active";
                 }
                 $itemlink = BASEDIR . $link_data['link_url'];
                 if (preg_match("!^(ht|f)tp(s)?://!i", $link_data['link_url']) || !empty(BASEDIR) && stristr($link_data['link_url'], BASEDIR)) {
                     $itemlink = $link_data['link_url'];
                 }
                 $has_child = false;
                 $l_1 = "";
                 $l_2 = "";
                 $tab_index = "";
                 if (isset($data[$link_id])) {
                     $has_child = true;
                     $l_1 = "class='dropdown-toggle' data-toggle='dropdown' ";
                     $l_1 .= empty($id) && $has_child ? "data-submenu " : "";
                     $l_2 = empty($id) ? " <i class='caret'></i>\n" : "";
                     $li_class .= !empty($id) ? " dropdown-submenu" : " dropdown";
                     $tab_index .= !empty($id) ? "tabindex='0'" : "";
                 }
                 $res .= "<li" . ($li_class ? " class='" . $li_class . "'" : "") . ">" . $sep . "\n";
                 $res .= "<a " . $l_1 . "href='" . $itemlink . "'" . $link_target . " {$tab_index}>\n";
                 $res .= !empty($link_data['link_icon']) ? "<i class='" . $link_data['link_icon'] . "'></i>" : "";
                 $res .= $link_data['link_name'] . $l_2 . "</a>\n";
                 if ($has_child) {
                     $res .= "<ul" . (fusion_get_settings("bootstrap") ? " class='dropdown-menu'" : "") . ">\n";
                     if (!empty($link_data['link_url']) and $link_data['link_url'] !== "#") {
                         $res .= "<li>" . $options['separator'] . "\n";
                         $res .= "<a href='" . $itemlink . "'" . $link_target . ">\n";
                         $res .= !empty($link_data['link_icon']) ? "<i class='" . $link_data['link_icon'] . "'></i>" : "";
                         $res .= $link_data['link_name'] . "</a>\n";
                         $res .= "</li>\n";
                     }
                     $res .= showsublinks($sep, $class, $options, $link_data['link_id']);
                     $res .= "</ul>\n";
                 }
                 $res .= "</li>\n";
             } elseif ($link_data['link_cat'] > 0) {
                 $res .= "<li class='divider'></li>";
             }
             $i++;
         }
     }
     if (empty($id)) {
         $res .= "<!---Menu Item End--->\n";
         $res .= "</ul>\n";
         $res .= $options['container'] ? "</div>\n" : "";
         $res .= "</div>\n</div>\n";
     }
     return $res;
 }