clear("menus_");
}
$menus_equery = explode('.', e_QUERY);
if (isset($_POST['custom_select']))
{
$menus_equery[1] = $_POST['custom_select'];
//header("location:".e_SELF."?".$_POST['custom_select']);
//exit;
}
else if (!isset($menus_equery[1]))
{
$menus_equery[1] = '';
}
if ($menus_equery[1] == '' || $menus_equery[1] == 'default_layout')
{
$menus_header = $HEADER;
$menus_footer = $FOOTER;
}
else if ($menus_equery[1] == 'custom_layout')
{
$menus_header = $CUSTOMHEADER ? $CUSTOMHEADER :
$HEADER;
$menus_footer = $CUSTOMFOOTER ? $CUSTOMFOOTER :
$FOOTER;
}
else if ($menus_equery[1] == 'newsheader_layout')
{
$menus_header = $NEWSHEADER ? $NEWSHEADER :
$HEADER;
$menus_footer = $FOOTER;
}
else
{
$menus_header = $CUSTOMHEADER[$menus_equery[1]] ? $CUSTOMHEADER[$menus_equery[1]] :
$HEADER;
$menus_footer = $CUSTOMFOOTER[$menus_equery[1]] ? $CUSTOMFOOTER[$menus_equery[1]] :
$FOOTER;
}
$layouts_str = $HEADER.$FOOTER;
if ($NEWSHEADER) {
$layouts_str .= $NEWSHEADER;
}
if ($CUSTOMPAGES) {
if (is_array($CUSTOMPAGES)) {
foreach ($CUSTOMPAGES as $custom_extract_key => $custom_extract_value) {
if ($CUSTOMHEADER[$custom_extract_key]) {
$layouts_str .= $CUSTOMHEADER[$custom_extract_key];
}
if ($CUSTOMFOOTER[$custom_extract_key]) {
$layouts_str .= $CUSTOMFOOTER[$custom_extract_key];
}
}
} else {
if ($CUSTOMHEADER) {
$layouts_str .= $CUSTOMHEADER;
}
if ($CUSTOMFOOTER) {
$layouts_str .= $CUSTOMFOOTER;
}
}
}
$menu_array = parseheader($layouts_str, 'check');
sort($menu_array, SORT_NUMERIC);
$menu_check = 'set';
foreach ($menu_array as $menu_value) {
if ($menu_value != $menu_check) {
$menu_areas[] = $menu_value;
}
$menu_check = $menu_value;
}
// Cams Bit ----------- Activate Multiple Menus ---
if($_POST['menuActivate'])
{
foreach ($_POST['menuActivate'] as $k => $v)
{
if (trim($v))
{
$location = $k;
}
}
$menu_count = $sql->db_Count("menus", "(*)", " WHERE menu_location='$location' ");
foreach($_POST['menuselect'] as $sel_mens)
{
$sql->db_Update("menus", "menu_location='$location', menu_order='".($menu_count+1)."' WHERE menu_id='$sel_mens' ");
$menu_count++;
}
}
// =============
if (isset($_POST['menuAct']))
{
foreach ($_POST['menuAct'] as $k => $v)
{
if (trim($v))
{
$id = $k;
list($menu_act, $location, $position, $newloc) = explode(".", $_POST['menuAct'][$k]);
}
}
}
if ($menu_act == 'config') {
if($newloc)
{
$newloc = ".".$newloc;
}
$newurl = $PLUGINS_DIRECTORY.$location."/{$position}{$newloc}.php";
$newurl = SITEURL.str_replace("//", "/", $newurl);
echo " ";
exit;
}
if ($menu_act == "adv") {
require_once(e_HANDLER."userclass_class.php");
$sql->db_Select("menus", "*", "menu_id='$id' ");
$row = $sql->db_Fetch();
extract($row);
$listtype = substr($menu_pages, 0, 1);
$menu_pages = substr($menu_pages, 2);
$menu_pages = str_replace("|", "\n", $menu_pages);
$text = "
";
$caption = MENLAN_7." ".$menu_name;
$ns->tablerender($caption, $text);
}
unset($message);
if ($menu_act == "sv") {
$pagelist = explode("\r\n", $_POST['pagelist']);
for ($i = 0 ; $i < count($pagelist) ; $i++) {
$pagelist[$i] = trim($pagelist[$i]);
}
$plist = implode("|", $pagelist);
$pageparms = $_POST['listtype'].'-'.$plist;
$pageparms = preg_replace("#\|$#", "", $pageparms);
$pageparms = (trim($_POST['pagelist']) == '') ? '' :
$pageparms;
$sql->db_Update("menus", "menu_class='".$_POST['menu_class']."', menu_pages='{$pageparms}' WHERE menu_id='$id' ");
$message = "
".MENLAN_8."
";
}
if ($menu_act == "move") {
$menu_count = $sql->db_Count("menus", "(*)", " WHERE menu_location='$newloc' ");
$sql->db_Update("menus", "menu_location='$newloc', menu_order='".($menu_count+1)."' WHERE menu_id='$id' ");
$sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location='$location' AND menu_order > $position");
}
if ($menu_act == "deac") {
$sql->db_Update("menus", "menu_location='0', menu_order='0' WHERE menu_id='$id' ");
$sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location='$location' AND menu_order > $position");
}
if ($menu_act == "bot") {
$menu_count = $sql->db_Count("menus", "(*)", " WHERE menu_location='$location' ");
$sql->db_Update("menus", "menu_order=".($menu_count+1)." WHERE menu_order='$position' AND menu_location='$location' ");
$sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location='$location' AND menu_order > $position");
}
if ($menu_act == "top") {
$sql->db_Update("menus", "menu_order=menu_order+1 WHERE menu_location='$location' AND menu_order < $position");
$sql->db_Update("menus", "menu_order=1 WHERE menu_id='$id' ");
}
if ($menu_act == "dec") {
$sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_order='".($position+1)."' AND menu_location='$location' ");
$sql->db_Update("menus", "menu_order=menu_order+1 WHERE menu_id='$id' AND menu_location='$location' ");
}
if ($menu_act == "inc") {
$sql->db_Update("menus", "menu_order=menu_order+1 WHERE menu_order='".($position-1)."' AND menu_location='$location' ");
$sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_id='$id' AND menu_location='$location' ");
}
if (strpos(e_QUERY, 'configure') === FALSE)
{ // Scan plugin directories to see if menus to add
$efile = new e_file;
$fileList = $efile->get_files(e_PLUGIN,"_menu\.php$",'standard',2);
foreach($fileList as $file)
{
list($parent_dir) = explode('/',str_replace(e_PLUGIN,"",$file['path']));
$file['path'] = str_replace(e_PLUGIN,"",$file['path']);
$file['fname'] = str_replace(".php","",$file['fname']);
$valid_menu = FALSE;
$existing_menu = $sql->db_Count("menus", "(*)", "WHERE menu_name='{$file['fname']}'");
if (file_exists(e_PLUGIN.$parent_dir."/plugin.php"))
{
include(e_PLUGIN.$parent_dir."/plugin.php");
if ($sql->db_Select("plugin", "*", "plugin_path='".$eplug_folder."' AND plugin_installflag='1' "))
{ // Its a 'new style' plugin with a plugin.php file - ionly include if plugin installed
$valid_menu = TRUE; // Whether new or existing, include in list
}
}
else
{ // Just add the menu anyway
$valid_menu = TRUE;
}
if ($valid_menu)
{
$menustr .= "&".str_replace(".php", "", $file['fname']);
if (!$existing_menu)
{ // New menu to add to list
$sql->db_Insert("menus", " 0, '{$file['fname']}', 0, 0, 0, '' ,'{$file['path']}'");
$message .= "".MENLAN_10." - ".$file['fname']."
";
}
}
}
if (!is_object($sql2)) $sql2 = new db; // Shouldn't be needed
foreach ($menu_areas as $menu_act) {
if ($sql->db_Select("menus", "*", "menu_location='$menu_act' ORDER BY menu_order ASC")) {
$c = 1;
while ($row = $sql->db_Fetch()) {
extract($row);
$sql2->db_Update("menus", "menu_order='$c' WHERE menu_id='$menu_id' ");
$c++;
}
}
}
$sql->db_Select("menus", "*", "menu_path NOT REGEXP('[0-9]+') ");
while (list($menu_id, $menu_name, $menu_location, $menu_order) = $sql->db_Fetch())
{
if (stristr($menustr, $menu_name) === FALSE)
{
$sql2->db_Delete("menus", "menu_name='$menu_name'");
$message .= "".MENLAN_11." - ".$menu_name."
";
}
}
}
foreach ($menu_areas as $menu_act) {
$menus_sql[] = "menu_location!='".$menu_act."'";
}
if ($message != "")
{
echo $ns -> tablerender('Updated', "".$message."
");
}
if (strpos(e_QUERY, 'configure') === FALSE)
{
$cnt = $sql->db_Select("menus", "*", "menu_location='1' ORDER BY menu_name "); // calculate height to remove vertical scroll-bar.
$text = "";
echo $ns -> tablerender(MENLAN_35, $text, 'menus_config');
}
else
{
$menus_query = implode(' && ', $menus_sql);
$sql->db_Update("menus", "menu_location='0', menu_order='0' WHERE ".$menus_query);
if ($CUSTOMPAGES) {
if ($menu_act != 'adv') {
$text = "";
$ns->tablerender(MENLAN_29, $text);
}
}
parseheader($menus_header);
echo "";
echo $frm->form_open("post", e_SELF."?configure.".$menus_equery[1], "menuActivation");
$text = "
";
$sql->db_Select("menus", "*", "menu_location='0' ORDER BY menu_name ");
$text .= "".MENLAN_36."... | ...".MENLAN_37." |
";
$text .= "";
$text .= "";
$text .= "
".MENLAN_38."";
$text .= " | ";
foreach ($menu_areas as $menu_act) {
$text .= "
\n";
}
$text .= " | ";
$text .= "
";
echo $ns -> tablerender(MENLAN_22, $text);
echo $frm->form_close();
echo "
";
parseheader($menus_footer);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
function parseheader($LAYOUT, $check = FALSE) {
$tmp = explode("\n", $LAYOUT);
for ($c = 0; $c < count($tmp); $c++) {
if (preg_match("/[\{|\}]/", $tmp[$c])) {
if ($check) {
if (strstr($tmp[$c], "{MENU=")) {
$str[] = preg_replace("/\{MENU=(.*?)(:.*?)?\}/si", "\\1", $tmp[$c]);
}
} else {
checklayout($tmp[$c]);
}
} else {
if (!$check) {
echo $tmp[$c];
}
}
}
if ($check) {
return $str;
}
}
function checklayout($str)
{ // Displays a basic representation of the theme
global $pref, $menu_areas, $ns, $PLUGINS_DIRECTORY, $frm, $sc_style, $tp, $menus_equery;
if (strstr($str, "LOGO"))
{
echo $tp -> parseTemplate("{LOGO}");
}
else if(strstr($str, "SITENAME"))
{
echo "[SiteName]
";
}
else if (strstr($str, "SITETAG"))
{
echo "[SiteTag]
";
}
else if (strstr($str, "SITELINKS"))
{
echo "[SiteLinks]
";
}
else if (strstr($str, "LANGUAGELINKS"))
{
echo "[Language]
";
}
else if (strstr($str, "CUSTOM"))
{
$cust = preg_replace("/\W*\{CUSTOM=(.*?)(\+.*)?\}\W*/si", "\\1", $str);
echo "[".$cust."]
";
}
// Display embedded Plugin information.
else if (strstr($str, "PLUGIN"))
{
$plug = preg_replace("/\{PLUGIN=(.*?)\}/si", "\\1", $str);
$plug = trim($plug);
if (file_exists((e_PLUGIN."{$plug}/{$plug}_config.php")))
{
$link = e_PLUGIN."{$plug}/{$plug}_config.php";
}
if(file_exists((e_PLUGIN.$plug."/config.php")))
{
$link = e_PLUGIN.$plug."/config.php";
}
$plugtext = ($link) ? "(".MENLAN_34.":".MENLAN_16.")" : "(".MENLAN_34.")" ;
echo "
";
$ns -> tablerender($plug, $plugtext);
}
else if (strstr($str, "MENU"))
{
$ns = new e107table;
$menu = preg_replace("/\{MENU=(.*?)(:.*?)?\}/si", "\\1", $str);
if (isset($sc_style['MENU']['pre']) && strpos($str, 'ret') !== false)
{
echo $sc_style['MENU']['pre'];
}
echo "
";
$text = " ";
$sql9 = new db;
if ($sql9->db_Count("menus", "(*)", " WHERE menu_location='$menu' "))
{
unset($text);
echo $frm->form_open("post", e_SELF."?configure.".$menus_equery[1], "frm_menu_".intval($menu));
$sql9->db_Select("menus", "*", "menu_location='$menu' ORDER BY menu_order");
$menu_count = $sql9->db_Rows();
while (list($menu_id, $menu_name, $menu_location, $menu_order, $menu_class, $menu_pages, $menu_path) = $sql9->db_Fetch()) {
$menu_name = preg_replace("#_menu#i", "", $menu_name);
$vis = ($menu_class || strlen($menu_pages) > 1) ? " * " :
"";
$caption = "{$menu_name}{$vis}
";
$menu_info = "{$menu_location}.{$menu_order}";
$text = "";
$conf = '';
if (file_exists(e_PLUGIN."{$menu_path}/{$menu_name}_menu_config.php"))
{
$conf = "config.{$menu_path}.{$menu_name}_menu_config";
}
if($conf == '' && file_exists(e_PLUGIN."{$menu_path}/config.php"))
{
$conf = "config.{$menu_path}.config";
}
$text .= "