mirror of
https://github.com/e107inc/e107.git
synced 2025-08-05 06:07:32 +02:00
Fixes #2183 - Added table-order auto-correcting and reduced database queries.
This commit is contained in:
@@ -24,6 +24,7 @@ class e_menuManager {
|
|||||||
var $debug;
|
var $debug;
|
||||||
var $menuMessage;
|
var $menuMessage;
|
||||||
var $style = 'default';
|
var $style = 'default';
|
||||||
|
private $menuData = array();
|
||||||
|
|
||||||
function __construct($dragdrop=FALSE)
|
function __construct($dragdrop=FALSE)
|
||||||
{
|
{
|
||||||
@@ -71,6 +72,9 @@ class e_menuManager {
|
|||||||
$this->menuId = (isset($_POST['menu_id'])) ? intval($_POST['menu_id']) : intval($_GET['id']);
|
$this->menuId = (isset($_POST['menu_id'])) ? intval($_POST['menu_id']) : intval($_GET['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (/*$menu_act == "sv" || */isset($_POST['class_submit']))
|
if (/*$menu_act == "sv" || */isset($_POST['class_submit']))
|
||||||
{
|
{
|
||||||
$this->menuSaveVisibility();
|
$this->menuSaveVisibility();
|
||||||
@@ -90,6 +94,8 @@ class e_menuManager {
|
|||||||
$this->menuGoConfig();
|
$this->menuGoConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->menuGrabLayout();
|
$this->menuGrabLayout();
|
||||||
|
|
||||||
$menu_array = $this->parseheader($HEADER.$FOOTER, 'check');
|
$menu_array = $this->parseheader($HEADER.$FOOTER, 'check');
|
||||||
@@ -110,6 +116,8 @@ class e_menuManager {
|
|||||||
|
|
||||||
$this->menuModify();
|
$this->menuModify();
|
||||||
|
|
||||||
|
$this->loadMenuData();
|
||||||
|
|
||||||
if(vartrue($_POST['menuActivate']))
|
if(vartrue($_POST['menuActivate']))
|
||||||
{
|
{
|
||||||
$menuActivate = $tp->filter($_POST['menuActivate']);
|
$menuActivate = $tp->filter($_POST['menuActivate']);
|
||||||
@@ -134,6 +142,53 @@ class e_menuManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the Menu Table data for the current layout.
|
||||||
|
*/
|
||||||
|
private function loadMenuData()
|
||||||
|
{
|
||||||
|
$menu_qry = 'SELECT * FROM #menus WHERE menu_location > 0 AND menu_layout = "'.$this->dbLayout.'" ORDER BY menu_location,menu_order';
|
||||||
|
|
||||||
|
$sql = e107::getDb();
|
||||||
|
|
||||||
|
$eMenuArea = array();
|
||||||
|
|
||||||
|
if($rows = $sql->retrieve($menu_qry, true))
|
||||||
|
{
|
||||||
|
|
||||||
|
$lastLoc = -1;
|
||||||
|
$c = 0;
|
||||||
|
foreach($rows as $row)
|
||||||
|
{
|
||||||
|
$loc = intval($row['menu_location']);
|
||||||
|
|
||||||
|
if($lastLoc != $loc)
|
||||||
|
{
|
||||||
|
$c = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($c !== intval($row['menu_order'])) // fix the order if it is off..
|
||||||
|
{
|
||||||
|
if($sql->update('menus', "menu_order= ".$c." WHERE menu_id = ".$row['menu_id']." LIMIT 1"))
|
||||||
|
{
|
||||||
|
$row['menu_order'] = $c;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$eMenuArea[$loc][] = $row;
|
||||||
|
|
||||||
|
$lastLoc = $loc;
|
||||||
|
$c++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->menuData = $eMenuArea;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
function menuRenderIframe($url='')
|
function menuRenderIframe($url='')
|
||||||
@@ -1008,11 +1063,11 @@ class e_menuManager {
|
|||||||
if(!$sql->select('menus', 'menu_id', "menu_name='{$row['menu_name']}' AND menu_location = ".$this->menuNewLoc." AND menu_layout='".$this->dbLayout ."' LIMIT 1"))
|
if(!$sql->select('menus', 'menu_id', "menu_name='{$row['menu_name']}' AND menu_location = ".$this->menuNewLoc." AND menu_layout='".$this->dbLayout ."' LIMIT 1"))
|
||||||
{
|
{
|
||||||
$menu_count = $sql->count("menus", "(*)", " WHERE menu_location=".$this->menuNewLoc);
|
$menu_count = $sql->count("menus", "(*)", " WHERE menu_location=".$this->menuNewLoc);
|
||||||
$sql->db_Update("menus", "menu_location='{$this->menuNewLoc}', menu_order=".($menu_count+1)." WHERE menu_id=".$this->menuId);
|
$sql->update("menus", "menu_location='{$this->menuNewLoc}', menu_order=".($menu_count+1)." WHERE menu_id=".$this->menuId);
|
||||||
|
|
||||||
if(isset($location) && isset($position))
|
if(isset($location) && isset($position))
|
||||||
{
|
{
|
||||||
$sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location='{$location}' AND menu_order > {$position} AND menu_layout='".$this->dbLayout ."' ");
|
$sql->update("menus", "menu_order=menu_order-1 WHERE menu_location='{$location}' AND menu_order > {$position} AND menu_layout='".$this->dbLayout ."' ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e107::getLog()->add('MENU_03',$row['menu_name'].'[!br!]'.$this->menuNewLoc.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
|
e107::getLog()->add('MENU_03',$row['menu_name'].'[!br!]'.$this->menuNewLoc.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
|
||||||
@@ -1443,20 +1498,23 @@ class e_menuManager {
|
|||||||
|
|
||||||
$menuText .= "<div class='menu-panel-header' >" . MENLAN_14 . " " . $menu . "</div>\n\n";
|
$menuText .= "<div class='menu-panel-header' >" . MENLAN_14 . " " . $menu . "</div>\n\n";
|
||||||
|
|
||||||
$sql9 = new db();
|
// $sql9 = new db();
|
||||||
// $sql9 = e107::getDb('sql9');
|
// $sql9 = e107::getDb('sql9');
|
||||||
if($sql9->count("menus", "(*)", " WHERE menu_location='$menu' AND menu_layout = '" . $this->dbLayout . "' "))
|
// if($sql9->count("menus", "(*)", " WHERE menu_location='$menu' AND menu_layout = '" . $this->dbLayout . "' "))
|
||||||
|
if(!empty($this->menuData[$menu]))
|
||||||
{
|
{
|
||||||
unset($text);
|
unset($text);
|
||||||
$menuText .= $rs->form_open("post", e_SELF . "?configure=" . $this->curLayout, "frm_menu_" . intval($menu));
|
$menuText .= $rs->form_open("post", e_SELF . "?configure=" . $this->curLayout, "frm_menu_" . intval($menu));
|
||||||
|
|
||||||
$rows = $sql9->retrieve("menus", "*", "menu_location='$menu' AND menu_layout='" . $this->dbLayout . "' ORDER BY menu_order",true);
|
// $rows = $sql9->retrieve("menus", "*", "menu_location='$menu' AND menu_layout='" . $this->dbLayout . "' ORDER BY menu_order",true);
|
||||||
|
$rows = $this->menuData[$menu];
|
||||||
// $menu_count = $sql9->db_Rows();
|
// $menu_count = $sql9->db_Rows();
|
||||||
$menu_count = count($rows);
|
$menu_count = count($rows);
|
||||||
|
|
||||||
if(!empty($_GET['debug']))
|
if(!empty($_GET['debug']))
|
||||||
{
|
{
|
||||||
print_a($rows);
|
print_a($rows);
|
||||||
|
// print_a($this->menuData[$menu]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cl = ($this->dragDrop) ? "'portlet" : "regularMenu";
|
$cl = ($this->dragDrop) ? "'portlet" : "regularMenu";
|
||||||
|
Reference in New Issue
Block a user