123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?php
- //Cette fonction va generer un nouvel element dans le menu
- function stats_plugin_menu(&$menuItems){
- global $myUser;
- if(!$myUser->can('statistic','read')) return;
- $menuItems[] = array(
- 'sort'=>100,
- 'url'=>'index.php?module=statistic',
- 'label'=>'Statistiques',
- 'color'=>'#607d8b',
- 'icon'=>'fas fa-chart-bar',
- 'parent' => 'statistics'
- );
- }
- //Cette fonction va generer une page quand on clique sur Modele dans menu
- function stats_plugin_page(){
- global $_;
- if(!isset($_['module']) || $_['module']!='statistic') return;
- User::check_access('statistic', 'read');
- $page = !isset($_['page']) ? 'reports' : $_['page'];
- $page = str_replace('..','',$page);
- $file = __DIR__.SLASH.'page.'.$page.'.php';
- if(!file_exists($file)) throw new Exception("Page ".$page." inexistante");
- require_once($file);
- }
- function stats_plugin_install($id){
- if($id != 'fr.core.statistic') return;
- Entity::install(__DIR__);
- Entity::install(__DIR__.SLASH.'element');
- $default = new Connection();
- $default->label = 'Base locale';
- $default->handler = 'Sqlite';
- $default->meta = '{"name":".database"}';
- $default->save();
- }
- function stats_plugin_uninstall($id){
- if($id != 'fr.core.statistic') return;
- Entity::uninstall(__DIR__);
- Entity::uninstall(__DIR__.SLASH.'element');
- }
- //Droits global sur les statistiques
- Right::register('statistic',array('label'=>'Gestion des droits sur le plugin Statistiques'));
- //Droits ciblés sur un rapport
- Right::register('statistic_report',array(
- 'label'=>'Gestion des droits sur un rapport de statistiques (ciblé entité)',
- 'global'=> false,
- 'check' => function($action,$right){
- global $myUser;
- if($right->uid <= 0) throw new Exception('Id widget non spécifié');
- require_once(__DIR__.SLASH.'StatisticReport.class.php');
- $report = StatisticReport::getById($right->uid);
- if($myUser->login != $report->creator) throw new Exception('Seul le créateur de ce rapport ('.$report->creator.') peut définir des droits pour celui-çi');
- }
- ));
- //Droits ciblés sur les widgets
- Right::register('statistic_widget',array(
- 'label'=>'Gestion des droits sur les widgets de statistiques (ciblé entité)',
- 'global'=> false,
- 'check' => function($action,$right){
- global $myUser;
- if($right->uid <= 0) throw new Exception('Id widget non spécifié');
- require_once(__DIR__.SLASH.'Widget.class.php');
- $widget = Widget::getById($right->uid);
- if($myUser->login != $widget->creator) throw new Exception('Seul le créateur de ce widget ('.$widget->creator.') peut définir des droits pour celui-çi');
- }
- ));
- //Droits ciblés sur les filtres
- Right::register('statistic_filter',array(
- 'label'=>'Gestion des droits sur les filtres de statistiques (ciblé entité)',
- 'global'=> false,
- 'check' => function($action,$right){
- global $myUser;
- if($right->uid <= 0) throw new Exception('Id widget non spécifié');
- require_once(__DIR__.SLASH.'StatisticReport.class.php');
- $report = StatisticReport::getById($right->uid);
- if($myUser->login != $report->creator) throw new Exception('Seul le créateur de ce rapport ('.$report->creator.') peut définir des droits pour celui-çi');
- }
- ));
- // comprend toutes les actions du plugin qui ne nécessitent pas de vue html
- require_once(__DIR__.SLASH.'action.php');
- function stats_plugin_menu_setting(&$settingMenu){
- global $myUser;
- if($myUser->can('statistic', 'configure')){
- $settingMenu[]= array(
- 'sort' =>0,
- 'url' => 'setting.php?section=statistic',
- 'icon' => 'fas fa-angle-right',
- 'label' => 'Statistiques'
- );
- }
- }
- function stats_plugin_content_setting(){
- global $_;
- if(in_array($_['section'],array('statistic')) && file_exists(__DIR__.SLASH.'setting.'.$_['section'].'.php'))
- require_once(__DIR__.SLASH.'setting.'.$_['section'].'.php');
- }
- function stats_widget(&$widgets){
- require_once(__DIR__.SLASH.'..'.SLASH.'dashboard'.SLASH.'DashboardWidget.class.php');
- $modelWidget = new DashboardWidget();
- $modelWidget->model = 'stats';
- $modelWidget->title = 'Statistiques';
- $modelWidget->icon = 'fas fa-chart-line';
- $modelWidget->background = '#a29bfe';
- $modelWidget->load = 'action.php?action=stats_widget_load';
- $modelWidget->js = [Plugin::url().'/js/main.js?v=1',Plugin::url().'/js/widget.js?v=3'];
- $modelWidget->css = [Plugin::url().'/css/widget.css?v=0'];
- $modelWidget->configure = 'action.php?action=stats_widget_configure';
- $modelWidget->configure_callback = 'stats_widget_configure_save';
- $modelWidget->configure_init = 'stats_widget_configure_init';
- $modelWidget->description = "Affiche une graphique de rapport de statistiques";
- $widgets[] = $modelWidget;
- }
- Plugin::addCss("/css/main.css");
- Plugin::addCss("/css/codemirror.css");
- Plugin::addCss("/css/monokai.css");
- Plugin::addCss("/css/gridstack.min.css");
- Plugin::addJs("/js/main.js");
- Plugin::addJs("/js/codemirror.js");
- //Gestion du DataTables
- Plugin::addCss("/css/datatables.min.css");
- Plugin::addJs("/js/datatables.min.js");
- foreach (glob(__DIR__.'/js/codemirror/*.js') as $path) {
- Plugin::addJs("/js/codemirror/".basename($path));
- }
- Plugin::addJs("/js/lodash.min.js");
- Plugin::addJs("/js/gridstack.min.js");
- Plugin::addJs("/js/gridstack.jQueryUI.min.js");
- //Mapping hook / fonctions
- Plugin::addHook("widget", "stats_widget");
- Plugin::addHook("install", "stats_plugin_install");
- Plugin::addHook("uninstall", "stats_plugin_uninstall");
- Plugin::addHook("menu_main", "stats_plugin_menu");
- Plugin::addHook("page", "stats_plugin_page");
- Plugin::addHook("menu_setting", "stats_plugin_menu_setting");
- Plugin::addHook("content_setting", "stats_plugin_content_setting");
- ?>
|