Files
thetool/lib/mvcfronk/mfMenu/mfMenuController.php
Frank Schubert 4ea4927931 Initial commit
2021-03-29 23:04:42 +02:00

90 lines
2.1 KiB
PHP

<?php
class mfMenuController implements Iterator {
private $db;
private $items;
private $Iindex;
private $user;
// override mfBaseController's constructor
public function __construct() {
if(!defined("MFMENUTABLE")) define("MFMENUTABLE","mfMenu");
// load logging facility
$this->log = mfLoghandler::singleton();
$this->db=new FronkDB();
$this->user=mfUser::Singleton();
$this->items=$this->loadMenu();
}
private function loadMenu() {
$permgroup="";
if($this->user->id>0) {
$permgroup=$this->user->Permgroup;
}
$menu=array();
$res=$this->db->select(MFMENUTABLE,"*","Menuitem_Parent=0 AND Menuitem_Permgroup >= $permgroup ORDER BY Menuitem_Order");
if($this->db->num_rows($res)) {
while($data=$this->db->fetch_object($res)) {
$item=new mfMenu($data);
$subres=$this->db->select(MFMENUTABLE,"*","Menuitem_Parent=".$data->Menuitem_id." AND Menuitem_Permgroup >= $permgroup ORDER BY Menuitem_Order");
if($this->db->num_rows($subres)) {
while($subdata=$this->db->fetch_object($subres)) {
$item->addChild(new mfMenu($subdata));
}
}
$menu[]=$item;
}
}
return $menu;
}
// produces url for generating links
public static function getUrl($mod,$action) {
if(!$mod) {
return "";
}
$url="?action=$mod";
if($action) {
$url.="_$action";
}
return $url;
}
// Iterator functions
public function rewind() {
$this->Iindex = 0;
}
public function current() {
$k = array_keys($this->items);
$var = $this->items[$k[$this->Iindex]];
return $var;
}
public function key() {
$k = array_keys($this->items);
$var = $k[$this->Iindex];
return $var;
}
public function next() {
$k = array_keys($this->items);
if (isset($k[++$this->Iindex])) {
$var = $this->items[$k[$this->Iindex]];
return $var;
} else {
return false;
}
}
public function valid() {
$k = array_keys($this->items);
$var = isset($k[$this->Iindex]);
return $var;
}
}