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