1
0
mirror of https://github.com/e107inc/e107.git synced 2025-02-19 06:02:40 +01:00
php-e107/e107_themes/core/fs_functions.php

313 lines
7.7 KiB
PHP

<?php
global $sql, $pref;
//---------------------------------------------------------------------------------------
function hilite($link,$enabled=''){
global $PLUGINS_DIRECTORY,$tp,$pref;
if(!$enabled){ return FALSE; }
$link = $tp->replaceConstants($link,TRUE);
$tmp = explode("?",$link);
$link_qry = (isset($tmp[1])) ? $tmp[1] : "";
$link_slf = (isset($tmp[0])) ? $tmp[0] : "";
$link_pge = basename($link_slf);
$link_match = strpos(e_SELF,$tmp[0]);
if(e_MENU == "debug" && getperms('0')) {
echo "<br />link= ".$link;
echo "<br />link_q= ".$link_qry;
echo "<br />url= ".e_PAGE;
echo "<br />url_query= ".e_QUERY."<br />";
}
// ----------- highlight overriding - set the link matching in the page itself.
if(defined("HILITE")) {
if(strpos($link,HILITE)) {
return TRUE;
}
}
// --------------- highlighting for 'HOME'. ----------------
global $pref;
list($fp,$fp_q) = explode("?",$pref['frontpage']['all']."?");
if(strpos(e_SELF,"/".$pref['frontpage']['all'])!== FALSE && $fp_q == $tmp[1] && $link == e_HTTP."index.php"){
return TRUE;
}
// --------------- highlighting for plugins. ----------------
if(stristr($link, $PLUGINS_DIRECTORY) !== FALSE && stristr($link, "custompages") === FALSE){
if($link_qry)
{ // plugin links with queries
$subq = explode("?",$link);
if(strpos(e_SELF,$subq[0]) && e_QUERY == $subq[1]){
return TRUE;
}else{
return FALSE;
}
}
else
{ // plugin links without queries
$link = str_replace("../", "", $link);
if(stristr(dirname(e_SELF), dirname($link)) !== FALSE){
return TRUE;
}
}
return FALSE;
}
// --------------- highlight for news items.----------------
// eg. news.php, news.php?list.1 or news.php?cat.2 etc
if(substr(basename($link),0,8) == "news.php")
{
if (strpos($link, "news.php?") !== FALSE && strpos(e_SELF,"/news.php")!==FALSE) {
$lnk = explode(".",$link_qry); // link queries.
$qry = explode(".",e_QUERY); // current page queries.
if($qry[0] == "item")
{
return ($qry[2] == $lnk[1]) ? TRUE : FALSE;
}
if($qry[0] == "all" && $lnk[0] == "all")
{
return TRUE;
}
if($lnk[0] == $qry[0] && $lnk[1] == $qry[1])
{
return TRUE;
}
if($qry[1] == "list" && $lnk[0] == "list" && $lnk[1] == $qry[2])
{
return TRUE;
}
}
elseif (!e_QUERY && e_PAGE == "news.php")
{
return TRUE;
}
return FALSE;
}
// --------------- highlight for Custom Pages.----------------
// eg. page.php?1
if (strpos($link, "page.php?") !== FALSE && strpos(e_SELF,"/page.php")) {
list($custom,$page) = explode(".",$link_qry);
list($q_custom,$q_page) = explode(".",e_QUERY);
if($custom == $q_custom){
return TRUE;
}else{
return FALSE;
}
}
// --------------- highlight default ----------------
if(strpos($link, "?") !== FALSE){
$thelink = str_replace("../", "", $link);
if((strpos(e_SELF,$thelink) !== false) && (strpos(e_QUERY,$link_qry) !== false)){
return true;
}
}
if(!preg_match("/all|item|cat|list/", e_QUERY) && (strpos(e_SELF, str_replace("../", "",$link)) !== false)){
return true;
}
if((!$link_qry && !e_QUERY) && (strpos(e_SELF,$link) !== FALSE)){
return TRUE;
}
if(($link_slf == e_SELF && !link_qry) || (e_QUERY && strpos(e_SELF."?".e_QUERY,$link)!== FALSE) ){
return TRUE;
}
return FALSE;
}
// ----------------------------------------------------
function adnav_cat($cat_title, $cat_link, $cat_id=FALSE, $cat_open=FALSE) {
global $tp;
$cat_link = (strpos($cat_link, '://') === FALSE && strpos($cat_link, 'mailto:') !== 0 ? e_HTTP.$cat_link : $cat_link);
if ($cat_open == 4 || $cat_open == 5){
$dimen = ($cat_open == 4) ? "600,400" : "800,600";
$href = " href=\"javascript:open_window('".$cat_link."',".$dimen.")\"";
} else {
$href = "href='".$cat_link."'";
}
$text = "<a ".$href." ";
if ($cat_open == 1){
$text .= " rel='external' ";
}
if ($cat_id) {
$text .= ">".$tp->toHTML($cat_title,"","defs, no_hook")."</a>";
} else {
$text .= ">".$tp->toHTML($cat_title,"","defs, no_hook")."</a>";
}
return $text;
}
function render_sub($linklist, $id) {
$text = "";
foreach ($linklist['sub_'.$id] as $sub) {
// Filter title for backwards compatibility ---->
if(substr($sub['link_name'],0,8) == "submenu.") {
$tmp = explode(".",$sub['link_name']);
$subname = $tmp[2];
} else {
$subname = $sub['link_name'];
}
if (isset($linklist['sub_'.$sub['link_id']])) { // Has Children.
$sub_ids[] = $sub['link_id'];
$text .= "
<li>".adnav_main($subname, $sub['link_url'], $sub['link_id'],$sub['link_open']);
$text .= "
<ul>";
$temp = $linklist['sub_'.$sub['link_id']];
foreach ($temp as $bla) {
if (isset($linklist['sub_'.$bla['link_id']])) {
$text .= "
<li>".adnav_main($bla['link_name'], $bla['link_url'], $bla['link_id'], $bla['link_open']);
$text .= "
<ul>";
$text .= render_sub($linklist, $bla['link_id']);
$text .= "
</ul></li>";
} else {
$text .= "
<li>".adnav_main($bla['link_name'], $bla['link_url'], null, $bla['link_open']).'</li>';
}
}
$text .= "
</ul>";
$text .= "
</li>";
} else {
$text .= "
<li>".adnav_main($subname, $sub['link_url'], null, $sub['link_open'])."</li>";
}
}
return $text;
}
function adnav_main($cat_title, $cat_link, $cat_id=FALSE, $cat_open=FALSE) {
global $tp;
$cat_link = (strpos($cat_link, '://') === FALSE) ? e_HTTP.$cat_link : $cat_link;
$cat_link = $tp->replaceConstants($cat_link,TRUE);
if ($cat_open == 4 || $cat_open == 5){
$dimen = ($cat_open == 4) ? "600,400" : "800,600";
$href = " href=\"javascript:open_window('".$cat_link."',".$dimen.")\"";
} else {
$href = "href='".$cat_link."'";
}
$text = "<a ".$href." ";
if ($cat_id) {
$text .= "class='sub'";
}
if ($cat_open == 1) {
$text .= " rel='external' ";
}
$text .= ">".$tp->toHTML($cat_title,"","defs, no_hook")."</a>";
return $text;
}
$text .= "
<div class='menuBar'>
<ul id='nav'>";
if (defined('FS_START_SEPARATOR') && FS_START_SEPARATOR != false) {
$text .= "
<li class='fs-linkSep'>".FS_LINK_SEPARATOR."</li>";
}
// Setup Parent/Child Arrays ---->
$link_total = $sql->db_Select("links", "*", "link_class IN (".USERCLASS_LIST.") AND link_category=1 ORDER BY link_order ASC");
while ($row = $sql->db_Fetch()) {
if($row['link_parent'] == 0) {
$linklist['head_menu'][] = $row;
$parents[] = $row['link_id'];
} else {
$pid = $row['link_parent'];
$linklist['sub_'.$pid][] = $row;
}
}
// Loops thru parents.--------->
global $tp;
$sepBr = 1;
$sepCount = count($linklist['head_menu']);
foreach ($linklist['head_menu'] as $lk) {
$lk['link_url'] = $tp -> replaceConstants($lk['link_url'],TRUE);
$main_linkid = $lk['link_id'];
//if (hilite($lk['link_url'],TRUE)) { echo $lk['link_name']; }
if (hilite($lk['link_url'],TRUE)) { $hilite_style = " id='active'"; } else { $hilite_style = ""; }
if (isset($linklist['sub_'.$main_linkid])) { // Has Children.
$text .= "
<li".$hilite_style." class='sub'>".adnav_cat($lk['link_name'], e_SELF.'?'.e_QUERY.'#', $main_linkid)."";
$text .= "
<ul class='sub'>".render_sub($linklist, $main_linkid)."
</ul>
</li>";
} else {
// Display Parent only.
$text .= "
<li".$hilite_style.">".adnav_cat($lk['link_name'], $lk['link_url'], FALSE, $lk['link_open'])."</li>";
}
if (defined('FS_LINK_SEPARATOR')) {
if ($sepBr < $sepCount) {
$text .= "
<li class='fs-linkSep'>".FS_LINK_SEPARATOR."</li>";
}
}
$sepBr++;
}
if (defined('FS_END_SEPARATOR') && FS_END_SEPARATOR != false) {
$text .= "
<li class='fs-linkSep'>".FS_LINK_SEPARATOR."</li>";
}
$text .= "
</ul>
</div>
";
$text .= '
';
?>