| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 | <?phpglobal $_,$conf;switch($_['action']){	/** DASHBOARD **/	//Récuperation d'une liste de dashboard	case 'dashboard_dashboard_search':	Action::write(function(&$response){		global $myUser,$_;		if(!$myUser->can('dashboard','read')) throw new Exception("Permissions insuffisantes",403);		require_once(__DIR__.SLASH.'Dashboard.class.php');		foreach(Dashboard::populate() as $dashboard){			$response['rows'][] = $dashboard;		}	});	break;		//Ajout ou modification d'élément dashboard	case 'dashboard_dashboard_save':	Action::write(function(&$response){		global $myUser,$_;		if(!$myUser->can('dashboard','edit')) throw new Exception("Permissions insuffisantes",403);		require_once(__DIR__.SLASH.'Dashboard.class.php');		$item = Dashboard::provide();		$item->user = $myUser->login;		$item->label = $_['label'];		$item->icon = $_['icon'];		$item->default = $_['default'];		$item->save();	});	break;		//Récuperation ou edition d'élément dashboard	case 'dashboard_dashboard_edit':	Action::write(function(&$response){		global $myUser,$_;		if(!$myUser->can('dashboard','edit')) throw new Exception("Permissions insuffisantes",403);		require_once(__DIR__.SLASH.'Dashboard.class.php');		$response = Dashboard::getById($_['id']);	});	break;	//Suppression d'élement dashboard	case 'dashboard_dashboard_delete':	Action::write(function(&$response){		global $myUser,$_;		if(!$myUser->can('dashboard','delete')) throw new Exception("Permissions insuffisantes",403);		require_once(__DIR__.SLASH.'Dashboard.class.php');		Dashboard::deleteById($_['id']);	});	break;		//Sauvegarde des configurations de dashboard	case 'dashboard_setting_save':	Action::write(function(&$response){		global $myUser,$_,$conf;		if(!$myUser->can('dashboard','configure')) throw new Exception("Permissions insuffisantes",403);		foreach(Configuration::setting('dashboard') 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;		/** DASHBOARDWIDGET **/	//Récuperation d'une liste de dashboardwidget	case 'dashboard_dashboardwidget_search':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','read')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'DashboardWidget.class.php');			$models = array();			Plugin::callHook('widget',array(&$models));			foreach($models as $model):				$models[$model->model] = $model;			endforeach;			$widgets = DashboardWidget::loadAll(array('dashboard'=>$_['dashboard']),array('position'));						foreach($widgets as $widget):				if(!isset($models[$widget->model])) continue;				$model = clone $models[$widget->model];				$model->id = $widget->id;				$model->position = $widget->position;				$model->minified = $widget->minified;				$model->dashboard = $widget->dashboard;				$response['rows'][] = $model;			endforeach;		});	break;		//Ajout ou modification d'élément dashboardwidget	case 'dashboard_dashboardwidget_save':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','edit')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'DashboardWidget.class.php');			$item = DashboardWidget::provide();			$item->model = $_['model'];			$item->data = $_['data'];			$item->position = $_['position'];			$item->minified = $_['minified'];			$item->dashboard = $_['dashboard'];			$item->save();		});	break;		//Récuperation ou edition d'élément dashboardwidget	case 'dashboard_dashboardwidget_edit':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','edit')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'DashboardWidget.class.php');			$response = DashboardWidget::getById($_['id']);		});	break;	//Suppression d'élement dashboardwidget	case 'dashboard_dashboardwidget_delete':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','delete')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'DashboardWidget.class.php');			require_once(__DIR__.SLASH.'Dashboard.class.php');			if(!$myUser->can('widget','delete')) throw new Exception("Permissions insuffisantes",403);			$widget = DashboardWidget::getById($_['widget']);			$dashboard = Dashboard::getById($_['dashboard']);			if($widget->dashboard!=$dashboard->id || $dashboard->user!=$myUser->login) 				throw new Exception("Vous ne pouvez supprimer que vos propres widgets");			$widget->deleteById($widget->id);			$response['message'] = 'Widget supprimé';		});	break;	case 'dashboard_dashboardwidget_refresh':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','read')) throw new Exception("Permissions insuffisantes",403);			$widgets = array();			Plugin::callHook('widget_refresh',array(&$widgets));			$response['rows'] = $widgets;		});	break;		//Sauvegarde des configurations de dashboard	case 'dashboard_setting_save':		Action::write(function(&$response){			global $myUser,$_,$conf;			if(!$myUser->can('dashboard','configure')) throw new Exception("Permissions insuffisantes",403);			foreach(Configuration::setting('dashboard') 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;	case 'dashboard_dashboardwidget_add':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','edit')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'DashboardWidget.class.php');			$widget = new DashboardWidget();			$widget->model = $_['widget'];			$widget->position = 666;			$widget->minified = false;			$widget->dashboard = $_['dashboard'];			$widget->save();			$response['message'] = 'Widget ajouté';		});	break;	case 'dashboard_dashboardwidget_save_position':		Action::write(function(&$response){			global $myUser,$_;			if(!$myUser->can('dashboard','update')) throw new Exception("Permissions insuffisantes",403);			require_once(__DIR__.SLASH.'Dashboard.class.php');			require_once(__DIR__.SLASH.'DashboardWidget.class.php');			$dashboard = Dashboard::getById($_['dashboard']);			if( $dashboard->user!=$myUser->login) 				throw new Exception("Vous ne pouvez modifier que vos propres widgets");			$dashboard_widgets = DashboardWidget::loadAll( array('dashboard' => $dashboard->id ) );			foreach($_['positions'] as $move){				foreach($dashboard_widgets as $dashboard_widget){					if($dashboard_widget->id!=$move['id']) continue;					$dashboard_widget->position = $move['position'];					$dashboard_widget->save();				}			}		});	break;	case 'dashboard_widget_clock_load':		require_once('DashboardWidget.class.php');		$widget = DashboardWidget::current();		$widget->title = 'Horloge';		$widget->content = '<div class="clockContainer">		<div class="clock" id="clock"></div>		</div>';		echo json_encode($widget);	break;	case 'dashboard_widget_log_load':		global $myUser;		require_once('DashboardWidget.class.php');		if(!$myUser->can('log','read')) throw new Exception("Permissions insuffisantes",403);		$widget = DashboardWidget::current();		$logs = Log::loadAll(array(),array('created DESC'),array(30));		$widget->title = '30 derniers logs';		$widget->content = '<table class="table table-stripped table-hover">';		$widget->content .= '<tr><th style="width:90px">Date</th><th>Libellé</th><th>Utilisateur</th></tr>';		foreach($logs as $log){			$widget->content .= '<tr><td><i class="fa fa-calendar-o"></i> '.date('d-m-y',$log->created).'<i class="fa fa-clock-o"></i> '.date('H:i:s',$log->created).'</td><td>'.$log->label().'</td><td><i class="fa fa-user"></i> '.$log->creator.'</td></tr>';		}		$widget->content .= '</ul>';		echo json_encode($widget);	break;	case 'dashboard_widget_profile_load':		global $myUser;		require_once('DashboardWidget.class.php');		$widget = DashboardWidget::current();		$widget->title = 'Profile';		$widget->content = '<div class="profileContainer">		<div class="profileHeader"></div>		<a href="account.php" class="profileImage"><img class="avatar-mini" src="'.$myUser->getAvatar().'"></a>		<h3>'.$myUser->fullname().'</h3>		<small>'.$myUser->function.'</small>		<a href="account.php" class="btn btn-dark block ml-2  mr-2" ><i class="far fa-meh-blank"></i> Editer mon profil</a>		</div>';		echo json_encode($widget);	break;}?>
 |