function get($id = 0) { if (self::$cached_links != null) { if ($id == 0) { return self::$cached_links; } else { return self::$cached_links_index[$id]; } } global $user; //$this->db->query("select * from be_links where id in (select link_id as id from be_link_permissions where group_id in(1,3))"); $this->db->from("be_link_permissions"); $this->db->where('be_link_permissions.group_id in (' . implode(',', $user->groups) . ')'); $this->db->join('be_links', 'be_links.id = be_link_permissions.link_id', 'inner'); $this->db->group_by('be_links.id'); $this->db->order_by("be_links.order", "ASC"); $data = $this->db->get(); $links = array(); $links_index = array(); $results = $data->result(); //print_r($results); //die(); foreach ($results as $link_entry) { if ($link_entry->parent != 0 && $id == 0) { continue; } $link['id'] = $link_entry->id; $link['name'] = $link_entry->name; $link['target'] = $link_entry->target; $link['title'] = $link_entry->title; $link['tags'] = trim(str_replace("|", ",", $link_entry->tags), ","); $link['parent'] = $link_entry->parent; $link['order'] = $link_entry->order; $link['childs'] = array(); foreach ($results as $sublink_entry) { if ($sublink_entry->parent == 0 || $sublink_entry->parent != $link_entry->id) { continue; } $sublink['id'] = $sublink_entry->id; $sublink['name'] = $sublink_entry->name; $sublink['target'] = $sublink_entry->target; $sublink['title'] = $sublink_entry->title; $sublink['tags'] = trim(str_replace("|", ",", $sublink_entry->tags), ","); $sublink['parent'] = $sublink_entry->parent; $sublink['order'] = $sublink_entry->order; array_push($link['childs'], $sublink); $links_index[$sublink_entry->id] = $sublink; } $links[$link_entry->id] = $link; $links_index[$link_entry->id] = $link; } /*foreach($results as $link_entry) { if(!array_key_exists($link_entry->id, $links)){ $links[$link_entry->id] = array(); $links[$link_entry->id]['groups'] = array(); $links[$link_entry->id]['childs'] = array(); } $links[$link_entry->id]['id'] = $link_entry->id; $links[$link_entry->id]['name'] = $link_entry->name; $links[$link_entry->id]['target'] = $link_entry->target; $links[$link_entry->id]['title'] = $link_entry->title; $links[$link_entry->id]['tags'] = trim(str_replace("|", ",", $link_entry->tags), ","); $links[$link_entry->id]['parent'] = $link_entry->parent; $links[$link_entry->id]['order'] = $link_entry->order; if($link_entry->parent != 0){ $links[$link_entry->parent]['childs'][$link_entry->id] = $links[$link_entry->id]; if(!array_key_exists('groups', $links[$link_entry->parent])) $links[$link_entry->parent]['groups'] = array(); } array_push($links[$link_entry->id]['groups'], intval($link_entry->group_id)); }*/ foreach ($links as $key => $link) { $links[$key] = (object) $links[$key]; } foreach ($links_index as $key => $link) { $links_index[$key] = (object) $links_index[$key]; } self::$cached_links = $links; self::$cached_links_index = $links_index; if ($id == 0) { return self::$cached_links; } else { return self::$cached_links[$id]; } }