config = &$config; $this->remember_params(); $this->build_menu(); } /** * Build up the menu array * */ function build_menu(){ $menu = array(); $menu['Forsiden']['url'] = "index.php"; $menu['Forsiden']['no'] = "Forsiden"; $menu['Forsiden']['en'] = "Front page"; $menu['Forsiden']['heading']['no'] = "Velkommen til Granevang.net!"; $menu['Forsiden']['heading']['en'] = "Welcome to Granevang.net!"; $menu['Roar']['url'] = "Roar.php"; $menu['Roar']['heading']['no'] = "Roar"; $menu['Roar']['heading']['en'] = "Roar"; $menu['Merethe']['sub_menu']['Foto_merethe']['no'] = "Foto"; $menu['Merethe']['sub_menu']['Foto_merethe']['en'] = "Photos"; $menu['Merethe']['sub_menu']['Miniatyrer_merethe']['no'] = "Miniatyrer"; $menu['Merethe']['sub_menu']['Miniatyrer_merethe']['en'] = "Miniatures"; $menu['Merethe']['sub_menu']['Malerier_merethe']['no'] = "Malerier"; $menu['Merethe']['sub_menu']['Malerier_merethe']['en'] = "Paintings"; $menu['Merethe']['sub_menu']['Kode_merethe']['header']['no'] = "Kodeeksempler"; $menu['Merethe']['sub_menu']['Kode_merethe']['header']['en'] = "Code examples"; $menu['Merethe']['sub_menu']['Kode_merethe']['no'] = "Kode"; $menu['Merethe']['sub_menu']['Kode_merethe']['en'] = "Code"; $menu['Merethe']['url'] = "CV_merethe.php"; $menu['Merethe']['heading']['no'] = "Merethes CV"; $menu['Merethe']['heading']['en'] = "Merethe's CV"; $menu['Azrael']['url'] = "Azrael.php"; $menu['Azrael']['sub_menu']['Azrael_bilder']['no'] = "Bilder"; $menu['Azrael']['sub_menu']['Azrael_bilder']['en'] = "Pictures"; $menu['Raistlin']['url'] = "Raistlin.php"; $menu['Raistlin']['sub_menu']['Raistlin_bilder']['no'] = "Bilder"; $menu['Raistlin']['sub_menu']['Raistlin_bilder']['en'] = "Pictures"; $menu['Falke']['no'] = "Falkøye"; $menu['Falke']['sub_menu']['Falke_bilder']['no'] = "Bilder"; $menu['Falke']['sub_menu']['Falke_bilder']['en'] = "Pictures"; $menu['Bryllup']['no'] = "Bryllup"; $menu['Bryllup']['en'] = "Wedding"; $menu['Bryllup']['heading']['no'] = "Vårt bryllup"; $menu['Bryllup']['heading']['en'] = "Our wedding"; $menu['Vinter']['no'] = "
Vinter"; $menu['Vinter']['en'] = "
Winter"; $menu['Vinter']['url'] = $this->url; $menu['Vinter']['param']['design'] = "Vinter"; $menu['Vinter']['param']['design'] = "Vinter"; $menu['Vaar']['no'] = "Vår"; $menu['Vaar']['en'] = "Spring"; $menu['Vaar']['url'] = $this->url; $menu['Vaar']['param']['design'] = "Vaar"; if($this->lang != "en"){ $menu['English']['no'] = "English"; $menu['English']['url'] = $this->url; $menu['English']['param']['language'] = "en"; } if($this->lang != "no"){ $menu['Norsk']['no'] = "Norsk"; $menu['Norsk']['url'] = $this->url; $menu['Norsk']['param']['language'] = "no"; } $menu['Utskrift']['img'] = "printer.png"; $menu['Utskrift']['no'] = "Utskriftsvennlig"; $menu['Utskrift']['en'] = "Printer friendly"; $menu['Utskrift']['url'] = $this->url; $menu['Utskrift']['param']['type'] = "print"; $this->menu = $menu; } /** * Take care of parameters that should be remember through pages * */ function remember_params(){ $this->url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $this->lang = $this->config->get_lang(); if($this->lang == ""){ $this->lang = "no"; } //take care of old parameters $remember_params = array('design', 'language'); //these parameters should be remembered $pattern = '/[\?|&]([^=]*)=([^&]*)/'; preg_match_all($pattern, $this->url, $matches); for($i=0; $iparam[$name] = $value; } } } /** * Return the page heading * * @return String */ function get_heading(){ $heading = $this->selected; $data = $this->get_menu_data($this->selected); if($data['heading'][$this->lang] != ""){ $heading = $data['heading'][$this->lang]; } else if($data[$this->lang] != ""){ $heading = $data[$this->lang]; } return $heading; } /** * Set the selected menu * * @param String $menu */ function set_selected($menu){ $this->selected = $menu; } /** * Get the link for a menu item * * @param String $menu * @param int $level * @return String link */ function get_menu_link($menu, $level=0){ $url = $this->get_menu_url($menu); $menu_name = $this->get_menu_name($menu); $link = ""; if($this->selected == $menu){ $link .= ""; } //Add indent for($i=0; $i<$level; $i++){ $link .= "    "; } if($level > 0){ $link .= "|dot "; } $link .= "$menu_name"; if($this->selected == $menu){ $link .= ""; } return $link; } /** * Get the menu * * @return String */ function get_menu(){ $html = ""; if(!is_array($this->menu)){ return $html; } foreach($this->menu as $menu => $menu_data){ //Try to get the menu name from the selected language //If it is not defined, use the menu index as name $html .= $this->get_menu_link($menu); $html .= "
"; //Display the sub menu $sub_menu = $menu_data['sub_menu']; $show_sub_menu = false; $sub_menu_txt = ""; if(is_array($sub_menu)){ if($this->selected == $menu){ $show_sub_menu = true; } foreach($sub_menu as $sub_menu_id => $data){ $sub_menu_txt .= $this->get_menu_link($sub_menu_id, 1)."
"; if($this->selected == $sub_menu_id){ $show_sub_menu = true; } } } if($show_sub_menu){ $html .= $sub_menu_txt; } } return $html; } /** * Get an array of data data for a menu item * * @param String $menu * @param array $menu_arr * @return array */ function get_menu_data($menu, $menu_arr = "not set"){ if($menu_arr == "not set"){ $menu_arr = $this->menu; } //call this function recursively if the array is deeper $menu_data = $menu_arr[$menu]; if(is_array($menu_data)){ return $menu_data; } if(is_array($menu_arr)){ //array is deeper foreach($menu_arr as $menu_data_arr){ $ret = $this->get_menu_data($menu, $menu_data_arr); if($ret){ return $ret; } } } return false; } /** * Get the url for a menu item * * @param String $menu * @return String */ function get_menu_url($menu){ $menu_data = $this->get_menu_data($menu); $menu_name = $menu_data['url']; if($menu_name == ""){ $menu_name = $menu.".php"; } $url = $menu_name; //insert remembered parameters foreach($this->param as $name => $value){ //don't overwrite with old configs when a new is set if(is_array($menu_data['param'])){ if($menu_data['param'][$name] == ""){ $menu_data['param'][$name] = $value; } else{ //Just remember the old one } } else{ //if no param is set. just remember old ones $menu_data['param'][$name] = $value; } } //Insert parameters if(is_array($menu_data['param'])){ foreach($menu_data['param'] as $name => $value){ //remove the old parameter $url = preg_replace('/&'.$name.'=[^&]*&?/', '', $url); $url = preg_replace('/\?'.$name.'=[^&]*&?/', '?', $url); //add new parameter $extra_url = ""; if(strstr($url, '?')){ $extra_url .= "&"; } else{ $extra_url .= "?"; } $extra_url .= "$name=$value"; $url .= $extra_url; } } $url = str_replace('?&', '?', $url); return $url; } /** * Get the name of a menu item * * @param String $menu * @return String */ function get_menu_name($menu){ $menu_data = $this->get_menu_data($menu); $menu_name = $menu_data[$this->lang]; //if we have an image, return that instead if($menu_data['img'] != ""){ $menu_name = ""; } if($menu_name == ""){ $menu_name = $menu; } return $menu_name; } /** * Replace links in the content with links that includes remembered variables * * @param String $content * @return String replaced content */ function replace_links($content){ //Get links $pattern = '//'; preg_match_all($pattern, $content, $matches); for($i=0; $ireplace_link($link, $content); } return $content; } /** * Replace a given link with a link that includes remembered variables * * @param String $link * @param String $content * @return String replaced content */ function replace_link($link, $content){ //Split up the link into parameters $param = array(); $pattern = '/[\?|&]([^=]*)=([^&]*)/'; preg_match_all($pattern, $link, $matches); for($i=0; $iparam); //TODO: what if one param has the same name as a remembered value? //Build up the new link $end_link = $link_base; foreach($param as $name => $value){ if(strstr($end_link, '?') === false){ $end_link .= "?"; } else{ $end_link .= "&"; } $end_link .= "$name=$value"; } //Replace the link in the content $content = str_replace($link, $end_link, $content); return $content; } } ?>