| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | 
							- <?php
 
- global $_,$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;
 
- }
 
- ?>
 
 
  |