123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 |
- <?php
- /** DASHBOARD **/
- //Récuperation d'une liste de dashboard
- Action::register('dashboard_dashboard_search',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'Dashboard.class.php');
- $filters = array();
- if(!$myUser->can('dashboard','configure')) $filters['creator'] = $myUser->login;
- foreach(Dashboard::loadAll($filters,array('label','creator')) as $dashboard){
- $userName = User::byLogin($dashboard->user)->fullName();
- $dashboard->user = !empty($userName) ? $userName : $dashboard->user;
- $dashboard->mandatory = $dashboard->mandatory == 1;
- $dashboard->default = $dashboard->default == 1;
- $response['rows'][] = $dashboard;
- }
- });
- //Ajout ou modification d'élément dashboard
- Action::register('dashboard_dashboard_save',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- if($_['mandatory']==1 && !$myUser->can('dashboard','configure')) throw new Exception("Vous n'avez pas les droits pour rendre ce dashboard obigatoire",403);
- require_once(__DIR__.SLASH.'Dashboard.class.php');
- $item = Dashboard::provide();
- if(!isset($_['user']) || empty($_['user'])) $_['user'] = $myUser->login;
- if($myUser->login!=$item->creator && !$myUser->can('dashboard','configure') && $item->id!=0) throw new Exception("Vous n'avez pas les droits pour éditer le dashboard d'un autre utilisateur",403);
- if($myUser->login!=$_['user'] && !$myUser->can('dashboard','configure')) throw new Exception("Vous n'avez pas les droits pour créer un dashboard à un autre utilisateur");
- $item->user = $_['user'];
- $item->label = $_['label'];
- $item->icon = $_['icon'];
- $item->default = $_['default'];
- if($item->default) Dashboard::change(array('default'=>0), array('user'=>$item->user));
- $item->mandatory = $_['mandatory'];
- if($item->mandatory) Dashboard::change(array('mandatory'=>0));
- $item->save();
- });
- //Récuperation ou edition d'élément dashboard
- Action::register('dashboard_dashboard_edit',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- require_once(__DIR__.SLASH.'Dashboard.class.php');
- $response = Dashboard::getById($_['id']);
- });
- //Suppression d'élement dashboard
- Action::register('dashboard_dashboard_delete',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','delete');
- require_once(__DIR__.SLASH.'Dashboard.class.php');
- $item = Dashboard::provide();
- if($myUser->login!=$item->creator && !$myUser->can('dashboard','configure')) throw new Exception("Vous n'avez pas les droits pour supprimer le dashboard d'un autre utilisateur",403);
- Dashboard::deleteById($_['id']);
- });
- //Sauvegarde des configurations de dashboard
- Action::register('dashboard_setting_save',function(&$response){
- global $myUser,$_,$conf;
- User::check_access('dashboard','configure');
- 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);
- });
- /** DASHBOARDWIDGET **/
- //Récuperation d'une liste de dashboardwidget
- Action::register('dashboard_dashboardwidget_search',function(&$response){
-
- global $myUser,$myFirm,$_;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- require_once(__DIR__.SLASH.'DashboardWidgetShare.class.php');
- $models = DashboardWidget::models();
- $ranksId = $myUser->getRanksId($myFirm->id);
- $widgetsQry = "SELECT {{table}}.*,ds.mandatory,ds.sort as sort
- FROM {{table}}
- LEFT JOIN ".DashboardWidgetShare::tableName()." ds ON ds.widget={{table}}.id
- WHERE dashboard=?
- OR {{table}}.id IN (
- SELECT widget FROM ".DashboardWidgetShare::tableName()." WHERE (entity=? AND uid=?) OR (entity=? and uid IN (".str_repeat('?,', count($ranksId) - 1) . '?'.")) OR (entity IS NULL)
- )
- ORDER BY sort, position DESC";
- $widgets = DashboardWidget::staticQuery($widgetsQry,array_merge(array($_['dashboard'],'user',$myUser->login,'rank'),$ranksId),true);
- foreach($widgets as $widget){
- if(!isset($models[$widget->model])) continue;
- $model = clone $models[$widget->model];
- $row = $model->toArray();
- $row['id'] = $widget->id;
- $row['width'] = !empty($widget->width) && $widget->width>0 ? $widget->width : $model->defaultWidth;
- $row['position'] = $widget->position;
- $row['minified'] = $widget->minified;
- $row['dashboard'] = $widget->dashboard;
- if(!empty($widget->foreign('mandatory'))) $row['mandatory'] = $widget->foreign('mandatory');
- if(!empty($widget->foreign('sort'))) $row['position'] = $widget->foreign('sort');
- $response['rows'][] = $row;
- }
- if(isset($response['rows'])){
- usort($response['rows'],function($a,$b){
- return $a['position'] - $b['position'];
- });
- }
- });
- //Ajout ou modification d'élément dashboardwidget
- Action::register('dashboard_dashboardwidget_save',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- 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();
- });
- //Récuperation ou edition d'élément dashboardwidget
- Action::register('dashboard_dashboardwidget_edit',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $response = DashboardWidget::getById($_['id']);
- });
- //Suppression d'élement dashboardwidget
- Action::register('dashboard_dashboardwidget_delete',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','delete');
- require_once(__DIR__.SLASH.'Dashboard.class.php');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $widget = DashboardWidget::getById($_['widget']);
- if(!$widget) return;
- $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é';
- });
- //Resize largeur d'élement dashboardwidget
- Action::register('dashboard_dashboardwidget_resize',function(&$response){
- global $myUser,$_;
- require_once(__DIR__.SLASH.'Dashboard.class.php');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- User::check_access('dashboard','edit');
- $widget = DashboardWidget::getById($_['widget']);
- $dashboard = Dashboard::getById($widget->dashboard);
- if($widget->dashboard!=$dashboard->id || $dashboard->user!=$myUser->login)
- throw new Exception("Vous ne pouvez redimenssioner que vos propres widgets");
- $widget->width = $_['width'];
- $widget->save();
- });
- Action::register('dashboard_dashboardwidget_refresh',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','read');
- $widgets = array();
- Plugin::callHook('widget_refresh',array(&$widgets));
- $response['rows'] = $widgets;
- });
- Action::register('dashboard_dashboardwidget_add',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $widget = new DashboardWidget();
- $widget->model = $_['widget'];
- $widget->position = 666;
- $widget->minified = false;
- $widget->width = $widget->width> 0 ? $widget->width: $widget->defaultWidth ;
- $widget->dashboard = $_['dashboard'];
- $widget->save();
- $response['message'] = 'Widget ajouté';
- });
- Action::register('dashboard_dashboardwidget_save_position',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- 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();
- }
- }
- });
- /* CLOCK */
- Action::register('dashboard_widget_clock_load',function(&$response){
- global $myUser;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $widget = DashboardWidget::current();
- ob_start();
- require_once(__DIR__.SLASH.'widget.clock.php');
- $widget->content = ob_get_clean();
- echo json_encode($widget);
- exit;
- });
- /* LOGS */
- Action::register('dashboard_widget_log_load',function(&$response){
- global $myUser;
- require_once('DashboardWidget.class.php');
- User::check_access('log','read');
- $widget = DashboardWidget::current();
- $widget->title = '30 derniers logs';
- ob_start();
- require_once(__DIR__.SLASH.'widget.logs.php');
- $widget->content = ob_get_clean();
- echo json_encode($widget);
- exit;
- });
- /* PROFILE */
- Action::register('dashboard_widget_profile_load',function(&$response){
- global $myUser;
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- User::check_access('dashboard','read');
- $widget = DashboardWidget::current();
- if(!empty($widget->data('background-color'))) $widget->background = $widget->data('background-color');
- ob_start();
- require_once(__DIR__.SLASH.'widget.profile.php');
- $widget->content = ob_get_clean();
- echo json_encode($widget);
- exit;
- });
- Action::register('dashboard_widget_profile_configure',function(&$response){
- global $myUser;
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- User::check_access('dashboard','read');
- $widget = DashboardWidget::current();
- ob_start();
- require_once(__DIR__.SLASH.'widget.profile.configure.php');
- $content = ob_get_clean();
- echo $content ;
- exit;
- });
- Action::register('dashboard_widget_profile_configure_save',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $widget = DashboardWidget::getById($_['id']);
- $widget->data('background-color',$_['widget-profile-background-color']);
- $widget->save();
- });
- /* HTML */
- Action::register('dashboard_widget_html_load',function(&$response){
- global $myUser;
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- User::check_access('dashboard','read');
- $widget = DashboardWidget::current();
- $widget->title = $widget->data('title') != "" ? $widget->data('title') : 'Bloc HTML';
- if($widget->data('color') != "") $widget->background = $widget->data('color');
- ob_start();
- require_once(__DIR__.SLASH.'widget.html.php');
- $widget->content = ob_get_clean();
- echo json_encode($widget);
- exit;
- });
- Action::register( 'dashboard_widget_html_configure',function(&$response){
- global $myUser;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $widget = DashboardWidget::current();
- ob_start();
- require_once(__DIR__.SLASH.'widget.html.configure.php');
- $content = ob_get_clean();
- echo $content ;
- exit;
- });
- Action::register('dashboard_widget_html_configure_save',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $widget = DashboardWidget::getById($_['id']);
- $widget->data('html',html_entity_decode($_['widget-html-content']));
- $widget->data('title',$_['widget-html-title']);
- $widget->data('color',$_['widget-html-color']);
- $widget->save();
- });
- /* DASHBOARD SHARE */
- /** DASHBOARDWIDGETSHARE **/
- //Récuperation d'une liste de dashboardwidgetshare
- Action::register('dashboard_widget_share_search',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','read');
- require_once(__DIR__.SLASH.'DashboardWidgetShare.class.php');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $dashboardwidgetshares = DashboardWidgetShare::loadAll(array(), null, null,array('*'), 1);
- foreach($dashboardwidgetshares as $dashboardwidgetshare){
- $row = $dashboardwidgetshare->toArray();
- $row['widget'] = $dashboardwidgetshare->join('widget')->toArray();
- $row['for'] = 'Tout le monde';
- if($row['entity'] == 'rank' ) $row['for'] = 'Rang: '. Rank::getById($row['uid'] )->label;
- if($row['entity'] == 'user' ) $row['for'] ='Utilisateur: '. User::byLogin($row['uid'] )->fullName();
- $response['rows'][] = $row;
- }
- });
- //Ajout ou modification d'élément dashboardwidgetshare
- Action::register('dashboard_widget_share_save',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- require_once(__DIR__.SLASH.'DashboardWidgetShare.class.php');
- //DashboardWidgetShare::create();
- $item = DashboardWidgetShare::provide();
- if(!isset( $_['widget']) || !is_numeric($_['widget'])) throw new Exception("Widget non spécifié ou invalide");
- $item->widget = $_['widget'];
- $item->mandatory = 1;//$_['mandatory'];
- if(isset($_['entity'])){
- $item->entity = $_['entity'];
- $item->uid = $_['uid'];
- }
- $item->sort = !isset($_['sort']) ? 0 : $_['sort'];
- $item->save();
- });
- //Récuperation ou edition d'élément dashboardwidgetshare
- Action::register('dashboard_widget_share_edit',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','edit');
- require_once(__DIR__.SLASH.'DashboardWidgetShare.class.php');
- require_once(__DIR__.SLASH.'DashboardWidget.class.php');
- $response = DashboardWidgetShare::getById($_['id'],1)->toArray();
- });
- //Suppression d'élement dashboardwidgetshare
- Action::register('dashboard_widget_share_delete',function(&$response){
- global $myUser,$_;
- User::check_access('dashboard','delete');
- require_once(__DIR__.SLASH.'DashboardWidgetShare.class.php');
- DashboardWidgetShare::deleteById($_['id']);
- });
- ?>
|