protected static function _on3render($section = "") { $args = func_get_args(); if (isset($args[1])) { $menu = $args[1]; } else { $menu = false; } if (isset($args[2])) { $sect = $args[2]; } else { $sect = ""; } if (isset($args[3])) { $node = $args[3]; } else { $node = 0; } if (!$menu) { return; } /* //временный билдер меню if($menu==1) { $ar=serialize(array("class"=>"phpbb","method"=>"menuGen")); db::q("UPDATE ".db::tnm(self::$class."_entries")." SET `ext`='".addslashes($ar)."' WHERE `id` IN (5,6)",false); } $ar=serialize(array("class"=>"blog","method"=>"menuGen")); db::q("UPDATE ".db::tnm(self::$class."_entries")." SET `extchilds`='{$extdata}' WHERE `id` in (3, 4, 5, 6)",true); */ /* //загрузка из кэша $cache=cache::get(self::$class,"menu".$menu,self::$cacheTTL,false); if($cache!==false) { self::$items[$menu]=@unserialize($cache); if(!is_array(self::$items[$menu]))unset(self::$items[$menu]); } */ if (0 + $menu > 0) { $where = " `id`=" . (0 + $menu); } else { $where = " `alias`='" . self::qe($menu) . "'"; } $q = "SELECT `id`,`cache`,`lvls`,`showtitle`,`alias`,`title` FROM " . self::tb(self::$class) . " WHERE" . $where . " AND `act`=1"; $r = self::q($q, true); $row = self::qf($r); if (!$row) { return; } $alias = $row["alias"]; if (!$sect) { $sect = $alias; } $t = self::tplGet($sect); if ($t->error()) { return; } $menu = 0 + $row["id"]; if (is_string($node) && 0 + $node === 0) { $q = "SELECT `id` FROM " . self::tb(self::$class . "_entries") . " WHERE `mid`=" . $menu . " AND `vis`=1 AND `link` LIKE '%/" . $node . "'"; $r1 = self::q($q, true); $row1 = @mysql_fetch_assoc($r1); if (!$row1) { $node = 0; } else { $node = 0 + $row1["id"]; } } self::$items[$menu] = array(); self::$items[$menu]["id"] = $node; self::$items[$menu]["cache"] = 0 + $row["cache"]; self::$items[$menu]["lvls"] = 0 + $row["lvls"]; self::$items[$menu]["showtitle"] = 0 + $row["showtitle"]; self::$items[$menu]["alias"] = $alias; self::$items[$menu]["title"] = $row["title"]; self::$items[$menu]["lvlcur"] = 0; self::$items[$menu]["map"] = array(); self::$items[$menu]["pathcur"] = array(); self::$items[$menu]["entries"] = array(); self::_entriesLoad($menu, self::$items[$menu]); $chain = self::pathFindQueryMatch($menu); $cnt = count(self::$items[$menu]["entries"]); if (self::$items[$menu]["showtitle"]) { $t->setVar("menu-show", "show"); $t->setVar("menu-title", self::$items[$menu]["title"]); } if (!$cnt) { $t->setArrayCycle("entries", array()); $t->_render(); if (self::$items[$menu]["cache"]) { self::cacheSet("menu" . $menu, self::$cacheTTL, @serialize(self::$items[$menu])); } return; } $data = array(); $cur = 0; $itemAct = false; $itemAct1 = false; self::$uriSimbolic = self::path("simbolic"); foreach (self::$items[$menu]["entries"] as $key => $props) { if (!$props["vis"]) { continue; } $cur++; $item = array(); $item["alias"] = $props["alias"]; $item["link"] = $props["link"]; $item["title"] = $props["title"]; $item["ord"] = $props["ord"]; $item["par1"] = $props["par1"]; $item["par2"] = $props["par2"]; $item["par3"] = $props["par3"]; if ($chain !== false) { $act = $props["id"] == $chain[0]; } elseif (self::pathHasNode($menu, $props)) { $act = true; } else { $act = strpos($_SERVER["REQUEST_URI"], $item["link"]) === 0; } $item["class"] = ""; if ($act) { $item["class"] = " act"; $itemAct = $item["title"]; } if ($cur == $cnt) { $item["class"] .= " last"; } $item["nochilds"] = " nochilds"; if (self::$items[$menu]["lvls"] > 0) { $item["childs"] = array(); if (isset($props["entries"])) { $cur1 = 0; $cnt1 = count($props["entries"]); foreach ($props["entries"] as $key1 => $props1) { $cur1++; $subitem = array(); $subitem["child-alias"] = $props1["alias"]; $subitem["child-link"] = $props1["link"]; $subitem["child-title"] = $props1["title"]; $subitem["child-ord"] = $props1["ord"]; $subitem["child-par1"] = $props1["par1"]; $subitem["child-par2"] = $props1["par2"]; $subitem["child-par3"] = $props1["par3"]; if ($chain !== false) { $act1 = $props["id"] == $chain[1]; } elseif (self::pathHasNode($menu, $props1)) { $act = true; } else { $act1 = strpos($_SERVER["REQUEST_URI"], $subitem["child-link"]) === 0; } $subitem["child-class"] = ""; if ($act1) { $subitem["child-class"] = " act"; $itemAct1 = $subitem["child-title"]; } if ($cur1 == $cnt1) { $subitem["child-class"] .= " last"; } $item["childs"][] = $subitem; } if ($cur1 > 0) { $item["nochilds"] = " haschilds"; } } } $data[] = $item; } if ($itemAct) { $t->setVar("section-cur-title", $itemAct); } $t->setArrayCycle("entries", $data); $t->_render(); }
public static function _render() { $menu = func_get_arg(0); /* временный билдер меню if($menu==1) { $ar=serialize(array("class"=>"phpbb","method"=>"menuGen")); db::q("UPDATE ".db::tnm(self::$class."_entries")." SET `ext`='".addslashes($ar)."' WHERE `id` IN (5,6)",false); } $ar=serialize(array("class"=>"blog","method"=>"menuGen")); db::q("UPDATE ".db::tnm(self::$class."_entries")." SET `extchilds`='{$extdata}' WHERE `id` in (3, 4, 5, 6)",true); */ if (is_null($menu)) { return; } $menu = 0 + $menu; /* $cache=cache::get(self::$class,"menu".$menu,self::$cacheTTL,false); if($cache!==false) { self::$items[$menu]=@unserialize($cache); if(!is_array(self::$items[$menu]))unset(self::$items[$menu]); } */ if (!isset(self::$items[$menu])) { $q = "SELECT `cache`,`lvls`,`showtitle`,`alias`,`title` FROM " . db::tnm(self::$class) . " WHERE `id`=" . $menu . " AND `act`=1"; $r = db::q($q, true); $row = @mysql_fetch_assoc($r); if (!$row) { return; } self::$items[$menu]["cache"] = 0 + $row["cache"]; self::$items[$menu]["lvls"] = 0 + $row["lvls"]; self::$items[$menu]["showtitle"] = 0 + $row["showtitle"]; self::$items[$menu]["alias"] = $row["alias"]; self::$items[$menu]["title"] = $row["title"]; self::$items[$menu]["lvlcur"] = 0; self::$items[$menu]["map"] = array(); self::$items[$menu]["pathcur"] = array(); self::$items[$menu]["entries"] = array(); self::_entriesLoad($menu, self::$items[$menu]); } $cnt = count(self::$items[$menu]["entries"]); $t = tpl::get(self::$class, self::$items[$menu]["alias"]); if (self::$items[$menu]["showtitle"]) { $t->setVar("menu-show", "show"); $t->setVar("menu-title", self::$items[$menu]["title"]); } if (!$cnt) { $t->setArrayCycle("entries", array()); $t->_echo(); if (self::$items[$menu]["cache"]) { cache::set(self::$class, "menu" . $menu, self::$cacheTTL, @serialize(self::$items[$menu])); } return; } $data = array(); $cur = 0; $itemAct = false; $itemAct1 = false; self::$uriSimbolic = self::$c->path("simbolic"); foreach (self::$items[$menu]["entries"] as $key => $props) { $cur++; $item = array(); $item["alias"] = $props["alias"]; $item["link"] = $props["link"]; $item["title"] = $props["title"]; $item["par1"] = $props["par1"]; $item["par2"] = $props["par2"]; $item["par3"] = $props["par3"]; $act = self::pathHasNode($menu, $props); $item["class"] = ""; if ($act) { $item["class"] = " act"; $itemAct = $item["title"]; } if ($cur == $cnt) { $item["class"] .= " last"; } $item["nochilds"] = " nochilds"; if (self::$items[$menu]["lvls"] > 0) { $item["childs"] = array(); if (isset($props["entries"])) { $cur1 = 0; $cnt1 = count($props["entries"]); foreach ($props["entries"] as $key1 => $props1) { $cur1++; $subitem = array(); $subitem["child-alias"] = $props1["alias"]; $subitem["child-link"] = $props1["link"]; $subitem["child-title"] = $props1["title"]; $subitem["child-par1"] = $props1["par1"]; $subitem["child-par2"] = $props1["par2"]; $subitem["child-par3"] = $props1["par3"]; $act1 = self::pathHasNode($menu, $props1); $subitem["child-class"] = ""; if ($act1) { $subitem["child-class"] = " act"; $itemAct1 = $subitem["child-title"]; } if ($cur1 == $cnt1) { $subitem["child-class"] .= " last"; } $item["childs"][] = $subitem; } if ($cur1 > 0) { $item["nochilds"] = " haschilds"; } } } $data[] = $item; } if ($itemAct) { $t->setVar("section-cur-title", $itemAct); } $t->setArrayCycle("entries", $data); $t->_echo(); if (self::$items[$menu]["cache"]) { cache::set(self::$class, "menu" . $menu, self::$cacheTTL, @serialize(self::$items[$menu])); } }