0 ? intval($_GET["page_id"]) : CFG_HOMEPAGE_ID ) : CFG_HOMEPAGE_ID; $lid = isset($_GET["lid"]) ? intval($_GET["lid"]) : 1; $cid = isset($_GET["cid"]) ? intval($_GET["cid"]) : 0; $cmd = isset($_GET["cmd"]) ? preg_replace("/[^0-9a-zA-Z_]/", "", $_GET["cmd"]) : ""; $error = isset($_GET["error"]) ? $_GET["error"] : false; /****************************************************************************** * read language file *****************************************************************************/ // get language details $language = get_details("language", $lid); // check if there is a language file if (is_file("include/lang_" . $language["short"] . ".inc")){ $textblocks = parse_ini_file("include/lang_" . $language["short"] . ".inc"); } else { $textblocks = parse_ini_file("include/lang_it.inc"); } /****************************************************************************** * read page data *****************************************************************************/ if (!$page = get_page_content($page_id)){ $error= "notexisting"; $page = get_page_content(CFG_HOMEPAGE_ID); } /****************************************************************************** * get user rights *****************************************************************************/ // check for user if (isset($_SESSION[CFG_APP_NAME]["member"])){ $member = $_SESSION[CFG_APP_NAME]["member"]; if ($member["is_admin"]){ // an admin has privilege 1 and $is_admin = true $is_admin = true; $privilege = 1; } else { // check if user has access rights on category of the page if (in_array($page["category_id"], $member["privileges"])){ $privilege = 2; } else { $privilege = 0; } $is_admin = false; } } else { $member = false; $is_admin = false; $privilege = 0; } $membermenue = ""; //get_membermeue($member); /****************************************************************************** * write statistics *****************************************************************************/ $sql="insert into sys_statistics (page_id, lid, cid, cmd, date_day, date_time, user_id, ip, session) values ($page_id, $lid, $cid, '$cmd', current_date, current_time, " . ( $member ? $member["user_id"] : "NULL") . ", '" . $_SERVER["REMOTE_ADDR"] . "', '" . session_id() . "')"; $result = mysql_query($sql); if (!$result){ send_error("Statistics query failed", $sql); } /****************************************************************************** * evaluate page content *****************************************************************************/ switch ($page["page_type"]){ case "script": $script="modules/" . $page["content_script"] ; if (!is_file($script)){ $error="module"; } break; case "internal": if ($page["link_int"]==""){ $page_content=""; } else { header("Location: " . CFG_ENGINE . "?page_id=" . $page["link_int"] . "&lid=" . $lid . "&cid=" . $cid); die; } break; case "external": if ($page["link_ext"]==""){ $error = "url_undefined"; } else { header("Location: $page[link_ext]" ); die; } break; default: $page_content= empty($page["content_html"]) ? "

" . $textblocks["under_construction"]. "

" : $page["content_html"]; } // if page title is empty, page title = page name if (empty($page["title"])){ $page["title"]= $page["name"]; } // do not show page if status is offline and the visitor is not an admin! if ($page["online_status"]==0){ if ($privilege > 0){ $page["name"] .= " [offline!]"; $page["title"] .= " [offline!]"; } else { $error="offline"; } } // do not show page if it requires a login and the visitor is not loged in if ($page["req_login"] and $member==false){ $error="login"; } // define constant SCRIPT_SELF define("SCRIPT_SELF", CFG_ENGINE . "?page_id=" . $page["page_id"] . "&lid=" . $lid . (CFG_CID ? "&cid=" . $cid : "") ); /****************************************************************************** * create navigation *****************************************************************************/ $mainnavi = get_navi(CFG_HOMEPAGE_ID); $whereami = get_pathnavi($page["lft"], $page["rgt"], $page["root_id"]); $sidenavi= get_navi("Sidenavigation", false); $langnavi = get_langnavi(); /****************************************************************************** * create attachment *****************************************************************************/ $attachment = get_attachment($page_id); /****************************************************************************** * create box *****************************************************************************/ // more boxes could be created! just increase the number value $box = get_box($page["category_id"], 3); // check for errors to display if ($error){ print_error($error); } // call template include("template.php"); /****************************************************************************** * sub-functions *****************************************************************************/ /** * returns string for boxes * @param int $category_id id of category, that the box should have * @param int $num number of boxes that should be displayed */ function get_box($category_id="", $num=1){ global $lid, $member, $cfg_images_sizes, $textblocks; // define if the user is logged in $req_login = $member ? "" : "and req_login=0"; $sql = "select * from box where (category_id= " . (empty($category_id)?"NULL":$category_id). " or category_id=1) and online_status=1 and language_id=" . $lid . " " . $req_login . " order by rand() limit 0," . $num; $result = mysql_query($sql); $box = ""; // if there are boxes of the given category if (mysql_num_rows($result)>0){ while ($row = mysql_fetch_array($result)){ $box .= "\n
\n"; $box .= "

" . $row["name"] . "

\n"; switch ($row["box_type"]){ case "script": $box_content = ""; include_once ("modules/" . $row["content_script"]); $box .= $box_content ; break; case "image": $image = "\"\""; if ($row["link_type"]!="no link"){ $box .= "" . $image . ""; } else { $box .= $image; } break; case "flash": // get js library to display flash $box .= ""; $box .= "
\n"; $box .= "

" . $textblocks["p_flash_error"] . "

\n"; $box .= "
\n"; $box .= "\n"; break; default: $box .= "
" . $row["content_html"] . "
\n"; } if ($row["link_type"]!="no link" and $row["box_type"]!="image"){ $box .= "
" . $textblocks["more"] . "
\n"; } $box .= "
\n"; // update statistcs mysql_query("update box set viewed=".($row["viewed"]+1). " where box_id=".$row["box_id"]); } return $box; } else { return ""; } } /** * gets page content * @param int $page_id id of page */ function get_page_content($page_id){ global $lid; $sql= "select p1.*, count(*) as level, t.name as t_name, t.title as t_title, t.content_html as t_content from page as p1 left join translation t on p1.page_id=t.page_id and t.language_id=" . $lid . ", page as p2 where p1.page_id= " . $page_id . " and p1.root_id=p2.root_id and p1.lft between p2.lft and p2.rgt group by p1.lft"; $result = mysql_query($sql); if(!$result or mysql_num_rows($result)==0){ return false; } $page = mysql_fetch_assoc($result); // if another language is active, get translation if ($lid>1){ $page["name"] = (empty($page["t_name"])?$page["name"]:$page["t_name"]); $page["title"] = (empty($page["t_title"])?$page["title"]:$page["t_title"]); $page["content_html"] = (empty($page["t_content"])?$page["content_html"]:$page["t_content"]); } $page["content_html"] = str_replace("_link.php?" , "_link.php?eng=" . CFG_ENGINE . "&", $page["content_html"]); return $page; } /** * creates a navigation menu * @param int $root_id root_id of the navigation branch * @param bool $show_home desides of the root-knot should be displayed **/ function get_navi($root_id, $show_home=false){ global $page, $page_id, $lid, $cid, $is_admin, $member; // if root_id is a name instead of an id, get the root_id from the db! if (intval($root_id)< 1){ $root_id = get_id("page", $root_id); if (!$root_id){ return ""; } } $level_col = 'count(distinct p2.page_id) as level'; $req_login_check = $member? "": " * (1 - p2.req_login)"; $levels_shown_col = 'sum(p2.online_status * p2.visible'.$req_login_check.') as levels_shown'; $open_levels_col = ''; $levels_to_show_check = ''; if ($root_id == $page["root_id"]) { // Selection ($page) is below root. Consider selection. $open_levels_col = 'sum('.$page["lft"].' >= p2.lft and '.$page["rgt"].' <= p2.rgt) as open_levels'; $levels_to_show_check = '(level = levels_shown) and (level - open_levels <= 1)'; } else { // Selection ($page) is not below root. Show children of root (they have level 2). $open_levels_col = 'count(distinct p2.page_id) as open_levels'; // Not really relevant. $levels_to_show_check = '(level <= 2)'; } if (!$show_home) { // Root (level=1) is not shown. Start displaying at level 2. $levels_to_show_check .= ' and (level > 1)'; } // if the user is logged in get only pages, where the user has at least read access if ($member){ $levels_to_show_check .= $member["is_admin"] ? "" : " and (p1.req_login=0 or (p1.req_login=1 and p1.category_id in (" . implode(",", array_merge(array("null", 0), $member["read_cats"])) . ")))" ; } else { $levels_to_show_check .= " and p1.req_login=0"; } $sql= "select p1.page_id, p1.name, $level_col, $levels_shown_col, $open_levels_col, p1.online_status, p1.lft, p1.rgt, p1.root_id, p1.visible, p1.req_login, p1.category_id, p1.page_type, p1.link_int, t.name as t_name from page as p1 left join translation t on (t.page_id=p1.page_id and t.language_id=" . $lid . "), page as p2 where p1.root_id=$root_id and p2.root_id=$root_id and p1.online_status=1 and p1.lft between p2.lft and p2.rgt group by p1.lft having($levels_to_show_check)"; $result = mysql_query($sql); if(!$result){ send_error("Cound not create navigation", $sql); return "

Error: could not create Navigation.

"; } $navi = ""; $start_level = $show_home? 1: 2; $prev_level = $start_level; while($row = mysql_fetch_array($result)){ $selected = $row["page_id"] == $page["page_id"]; $level = $row["level"]; $show_open = (($row["level"] == $row["open_levels"]) and (($row["lft"] + 1) != $row["rgt"])); $address = "" . (empty($row["t_name"]) ? $row["name"] : $row["t_name"]) . ""; if ($level == $prev_level) { // Same level. if (!empty($navi)) { $navi .= ""; } $navi .= "
  • " . $address; } else if ($level > $prev_level) { // Down one level. $navi .= "\n\n"; } $navi .= "
  • " . $address; } } // end while if (!empty($navi)){ while ($prev_level > $start_level) { $prev_level--; $navi .= "
  • \n"; } return "\n"; } else { return ""; } } /** * returns a bread crumb navigation * @param int $lft left value of current page * @param int $rgt right value of current page * @param int $root_id root_id value of current page */ function get_pathnavi($lft, $rgt, $root_id){ global $page, $lid, $cid, $textblocks; $navigation = "
  • " . $textblocks["home"] . "
  • \n"; $sql = "SELECT page_id, name, visible FROM `page` WHERE lft <= $lft AND rgt >= $rgt AND root_id = $root_id and page_id != root_id ORDER BY lft"; $result = mysql_query($sql); while ($row = mysql_fetch_row($result)){ if ($row[2]== 1){ $navigation .= "
  • > " . $row[1] . "
  • \n"; } } // end while return "\n"; } /** * creates membermenu or loginform * @param array $member */ function get_membermeue($member){ global $page_id, $cid, $lid, $is_admin, $textblocks; if (isset($_GET["login_msg"])){ $login_msg = get_loginmsg($_GET["login_msg"]); } else { $login_msg = ""; } if ($member){ // eingeloggt $title = $textblocks["mm_member_menu"]; $content = "

    User: " . $member["name"] . "

    \n" . "\n"; } else { // nicht eingeloggt $title = $textblocks["mm_member_login"]; $content = "
    " . "
    " . "\n" . "\n" . "
    \n" . "\n" . "
    \n" . "\n" . "
    \n" . "
    \n" // uncomment the following lines, if you have a registration and a login help module! // . "\n"; ; } $menue = "\n\n

    " . $title . "

    \n"; if (!empty($login_msg)){ $menue .= "

    ". $login_msg ."

    \n"; } $menue .= $content . "\n\n"; return $menue; } /** * creates a menu with all selectable languages */ function get_langnavi(){ global $page_id, $cid, $lid; $navi=""; $sql="select * from language where online_status=1"; $result = mysql_query($sql); if (!$result){ send_error("Can't get Language navigation", $sql); return false; } while ($row=mysql_fetch_array($result)){ $navi .= "" . $row["name"] . "\n"; } if (!empty($navi)){ $navi = "\n"; } return $navi; } /** * gets media attachments of page * @param int $page_id id of current page */ function get_attachment($page_id){ global $member, $lid; $attachment = ""; $sql= "select m.* from media_page mp join media m on mp.media_id=m.media_id where page_id = " . $page_id . " and m.language_id=" . $lid . " order by order_nb"; $result = mysql_query($sql); if (!$result){ send_error("Can't get attachments", $sql); return "

    Error: can't get attachments.

    \n"; } while ($row = mysql_fetch_array($result)){ $name = (empty($row["name"])?$row["file_original"]:$row["name"]); $temp = explode(".", $row["file_original"]); $type = strtolower(array_pop($temp)); if (!in_array($type, array('doc', 'gif', 'jpg', 'pdf', 'ppt', 'xls', 'txt'))){ $type = "div"; } $attachment .= "
    " . $row["name"] . "
    \n"; if (!empty($row["description"])){ $attachment .= "
    " . $row["description"] . "
    \n"; } } return ($attachment == ""? "" : "\n
    \n" . $attachment . "
    \n"); } /** * prints an error message * @param string $error_type type of error */ function print_error($error_type){ global $page, $page_content, $attachment, $cid, $lid, $textblocks; $page["name"]="Fehler"; $page["title"] = "Fehler"; $page["page_type"]="html"; if (!isset($textblocks["p_error_" . $error_type])){ $textblocks["p_error_general"] = str_replace("{error}", $error_type, $textblocks["p_error_general"]); $error_type = "general"; } $page_content = "

    " . $textblocks["p_error_" . $error_type] . "

    \n" . "

    " . str_replace("{webmaster}", return_emaillink(CFG_WEBMASTER_MAIL, $textblocks["p_webmaster"]), $textblocks["p_error_questions"]) . "

    \n" . "

    " . $textblocks["p_error_back"] . " " . "" . $textblocks["p_error_home"] ."

    "; // empty attachment $attachment=""; return; } ?>