| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | <?phpglobal $_,$conf;switch($_['action']){	/** MENUITEM **/		//Récuperation d'une liste de menuitem	case 'navigation_menuitem_search':		Action::write(function(&$response){			global $myUser,$_;			if (!$myUser->connected()) return;			if(!$myUser->can('navigation','read')) return;			require_once(__DIR__.SLASH.'MenuItem.class.php');			$items = MenuItem::staticQuery('SELECT * FROM {{table}} WHERE user="" OR user=? ORDER BY sort',array($myUser->login),true);			$mainMenu = array();			Plugin::callHook("menu_main", array(&$mainMenu));			foreach ($mainMenu as $item) {				foreach ($items as $key=>$existingitem) {					if(isset($item['parent'])){						if(isset($existingitem->slug) && $item['parent'] == $existingitem->slug){							if(!isset($existingitem->childs)) $existingitem->childs = array();							$existingitem->childs[] = $item;							$items[$key] = $existingitem;						}					}				}			}			foreach($items as $menuitem){				$response['rows'][] = $menuitem;			}		});	break;		case 'navigation_menuitem_move':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('navigation','edit')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'MenuItem.class.php');			if(isset($_['sort']) && !empty($_['sort'])){				foreach ($_['sort'] as $sort => $id) {					$item = MenuItem::getById($id);					$item->sort = $sort;					$item->save();				}			}		});	break;	//Ajout ou modification d'élément menuitem	case 'navigation_menuitem_save':		Action::write(function(&$response){			global $myUser,$_,$conf;			if(!$myUser->can('navigation','edit')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'MenuItem.class.php');			if(!isset($_['url']) || empty($_['url'])) throw new Exception("Adresse web obligatoire");			if(!$conf->get('navigation_allow_custom_menu') && !$myUser->superadmin)  throw new Exception("La configuration du plugin n'autorise pas l'ajout de menu custom");			$item = MenuItem::provide();			if(!$item->editable && !$myUser->superadmin) throw new Exception("Ce menu n'est pas éditable");			$item->icon = $_['icon'];			$item->label = $_['label'];			$item->url = str_replace(ROOT_URL.'/','',$_['url']);			$item->target = $_['target'];			$item->user = $myUser->login;			if(isset($_['public']) && $_['public']=='1' && $myUser->can('navigation','configure'))				$item->user = '';			if($item->id==0){				$item->slug = slugify($item->label);				if(MenuItem::rowCount(array('slug'=>$item->slug)) <0 )					$item->slug .='_'.time();			}			//$item->parent = $_['parent'];			$item->save();		});	break;		//Récuperation ou edition d'élément menuitem	case 'navigation_menuitem_edit':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('navigation','edit')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'MenuItem.class.php');			$response = MenuItem::getById($_['id']);		});	break;	//Suppression d'élement menuitem	case 'navigation_menuitem_delete':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('navigation','delete')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'MenuItem.class.php');						MenuItem::deleteById($_['id']);			// Décommenter pour une suppression logique			// $item = MenuItem::getById($_['id']);			// $item->state = MenuItem::INACTIVE;			// $item->save();		});	break;	//Sauvegarde des configurations de navigation	case 'navigation_setting_save':		Action::write(function(&$response){			global $myUser,$_,$conf;			if(!$myUser->can('navigation','configure')) throw new Exception("Permissions insuffisantes",403);			foreach(Configuration::setting('navigation') as $key=>$value){				if(!is_array($value)) continue;				$allowed[] = $key;			}			foreach ($_['fields'] as $key => $value)				if(in_array($key, $allowed)) $conf->put($key,$value);		});	break;}?>
 |