From 6436c8ab0e6754d54e048666035b810d3b21e6b5 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Wed, 21 Mar 2018 15:10:34 +0100 Subject: [PATCH] FIX #240 & #242 check crontab value for notifications scheduler --- ...otifications-administration.component.html | 6 +- ...ons-schedule-administration.component.html | 20 ----- .../administration-routing.module.ts | 2 - .../administration/administration.module.ts | 2 - .../notifications-administration.component.ts | 40 +++++----- ...tions-schedule-administration.component.ts | 75 ------------------- .../js/angular/lang/lang-fr.ts | 2 +- .../NotificationScheduleController.php | 12 +-- .../NotificationScheduleModelAbstract.php | 27 ++++--- 9 files changed, 43 insertions(+), 143 deletions(-) delete mode 100644 apps/maarch_entreprise/Views/notifications-schedule-administration.component.html delete mode 100644 apps/maarch_entreprise/js/angular/app/administration/notifications-schedule-administration.component.ts diff --git a/apps/maarch_entreprise/Views/notifications-administration.component.html b/apps/maarch_entreprise/Views/notifications-administration.component.html index 53859764778..e296b43adbb 100644 --- a/apps/maarch_entreprise/Views/notifications-administration.component.html +++ b/apps/maarch_entreprise/Views/notifications-administration.component.html @@ -79,9 +79,6 @@ </mat-sidenav-content> <mat-sidenav #snav2 [mode]="mobileQuery.matches ? 'over' : 'side'" [fixedInViewport]="mobileQuery.matches" fixedTopGap="56" position='end' [opened]="mobileQuery.matches ? false : false"> - <div class="alert alert-info" role="alert" style="margin:15px;"> - {{lang.NotificationScheduleInfo}} - </div> <mat-list> <h3 mat-subheader>{{lang.notificationSchedule}}</h3> <form class="form-horizontal" #notifForm="ngForm" style="overflow:hidden;"> @@ -149,6 +146,9 @@ </form> </mat-list> <mat-divider></mat-divider> + <div class="alert alert-info" role="alert" style="margin:15px;"> + {{lang.NotificationScheduleInfo}} + </div> <mat-list> <h3 mat-subheader>{{lang.activeCron}}</h3> <mat-chip-list #chipList class="mat-chip-list-stacked"> diff --git a/apps/maarch_entreprise/Views/notifications-schedule-administration.component.html b/apps/maarch_entreprise/Views/notifications-schedule-administration.component.html deleted file mode 100644 index b9c3f901a58..00000000000 --- a/apps/maarch_entreprise/Views/notifications-schedule-administration.component.html +++ /dev/null @@ -1,20 +0,0 @@ -<div class="page-header"> - <h1>{{lang.notificationsSchedule}} - </h1> -</div> -<div *ngIf="loading"> - <mat-spinner style="margin:auto;"></mat-spinner> -</div> - -<div *ngIf="!loading" class="container-fluid"> - <div class="col-md-12"> - <div class="example-container"> - {{lang.NotificationScheduleInfo}} - - <div *ngFor="let crontabLine of crontab"> - {{crontabLine}} - </div> - {{authorizedNotification}} - </div> - </div> -</div> diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts index b3d28aba005..ec8ce2c4284 100644 --- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts @@ -23,7 +23,6 @@ import { PriorityAdministrationComponent } from './priority-adminis import { ReportsAdministrationComponent } from './reports-administration.component'; import { NotificationsAdministrationComponent } from './notifications-administration.component'; import { NotificationAdministrationComponent } from './notification-administration.component'; -import { NotificationsScheduleAdministrationComponent } from './notifications-schedule-administration.component'; import { HistoryAdministrationComponent } from './history-administration.component'; import { BatchHistoryAdministrationComponent } from './batchHistory-administration.component'; import { UpdateStatusAdministrationComponent } from './update-status-administration.component'; @@ -62,7 +61,6 @@ import { UpdateStatusAdministrationComponent } from './update-status-ad { path: 'administration/actions/:id', component: ActionAdministrationComponent }, { path: 'administration/notifications', component: NotificationsAdministrationComponent }, { path: 'administration/notifications/new', component: NotificationAdministrationComponent }, - { path: 'administration/notifications/schedule', component: NotificationsScheduleAdministrationComponent }, { path: 'administration/notifications/:identifier', component: NotificationAdministrationComponent }, { path: 'administration/history', component: HistoryAdministrationComponent }, { path: 'administration/historyBatch', component: BatchHistoryAdministrationComponent }, diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts index ee9fc0af4a8..5a2bd8f8931 100644 --- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts @@ -32,7 +32,6 @@ import { HistoryAdministrationComponent } from './history-administ import { BatchHistoryAdministrationComponent } from './batchHistory-administration.component'; import { UpdateStatusAdministrationComponent } from './update-status-administration.component'; import { NotificationsAdministrationComponent } from './notifications-administration.component'; -import { NotificationsScheduleAdministrationComponent } from './notifications-schedule-administration.component'; import { NotificationAdministrationComponent } from './notification-administration.component'; @NgModule({ @@ -69,7 +68,6 @@ import { NotificationAdministrationComponent } from './notification-adm BatchHistoryAdministrationComponent, UpdateStatusAdministrationComponent, NotificationsAdministrationComponent, - NotificationsScheduleAdministrationComponent, NotificationAdministrationComponent, UsersAdministrationRedirectModalComponent, EntitiesAdministrationRedirectModalComponent, diff --git a/apps/maarch_entreprise/js/angular/app/administration/notifications-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/notifications-administration.component.ts index b4996220ef0..dea6b863433 100644 --- a/apps/maarch_entreprise/js/angular/app/administration/notifications-administration.component.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/notifications-administration.component.ts @@ -113,31 +113,31 @@ export class NotificationsAdministrationComponent implements OnInit { this.months = [ {label:this.lang.eachMonth,value:'*'}, - {label:this.lang.january,value:"0"}, - {label:this.lang.february,value:"1"}, - {label:this.lang.march,value:"2"}, - {label:this.lang.april,value:"3"}, - {label:this.lang.may,value:"4"}, - {label:this.lang.june,value:"5"}, - {label:this.lang.july,value:"6"}, - {label:this.lang.august,value:"7"}, - {label:this.lang.september,value:"8"}, - {label:this.lang.october,value:"9"}, - {label:this.lang.november,value:"10"}, - {label:this.lang.december,value:"11"} + {label:this.lang.january,value:"1"}, + {label:this.lang.february,value:"2"}, + {label:this.lang.march,value:"3"}, + {label:this.lang.april,value:"4"}, + {label:this.lang.may,value:"5"}, + {label:this.lang.june,value:"6"}, + {label:this.lang.july,value:"7"}, + {label:this.lang.august,value:"8"}, + {label:this.lang.september,value:"9"}, + {label:this.lang.october,value:"10"}, + {label:this.lang.november,value:"11"}, + {label:this.lang.december,value:"12"} ] this.dom = [{label:this.lang.notUsed,value:'*'}]; this.dow = [ {label:this.lang.eachDay,value:'*'}, - {label:this.lang.monday,value:"0"}, - {label:this.lang.thuesday,value:"1"}, - {label:this.lang.wednesday,value:"2"}, - {label:this.lang.thursday,value:"3"}, - {label:this.lang.friday,value:"4"}, - {label:this.lang.saturday,value:"5"}, - {label:this.lang.sunday,value:"6"} + {label:this.lang.monday,value:"1"}, + {label:this.lang.thuesday,value:"2"}, + {label:this.lang.wednesday,value:"3"}, + {label:this.lang.thursday,value:"4"}, + {label:this.lang.friday,value:"5"}, + {label:this.lang.saturday,value:"6"}, + {label:this.lang.sunday,value:"7"} ]; this.newCron = { @@ -157,7 +157,7 @@ export class NotificationsAdministrationComponent implements OnInit { this.minutes.push({label:i,value:String(i)}); } - for (var i = 0; i <= 31; i++) { + for (var i = 1; i <= 31; i++) { this.dom.push({label:i,value:String(i)}); } diff --git a/apps/maarch_entreprise/js/angular/app/administration/notifications-schedule-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/notifications-schedule-administration.component.ts deleted file mode 100644 index b11c9ef68b5..00000000000 --- a/apps/maarch_entreprise/js/angular/app/administration/notifications-schedule-administration.component.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ChangeDetectorRef, Component, ViewChild, OnInit } from '@angular/core'; -import { MediaMatcher } from '@angular/cdk/layout'; -import { HttpClient } from '@angular/common/http'; -import { Router, ActivatedRoute } from '@angular/router'; -import { LANG } from '../translate.component'; -import { NotificationService } from '../notification.service'; -// import { MatPaginator, MatTableDataSource, MatSort, MatDialog, MatDialogConfig, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material'; - - -declare function $j(selector: any): any; - -declare var angularGlobals: any; - - -@Component({ - templateUrl: "../../../../Views/notifications-schedule-administration.component.html", - providers: [NotificationService] -}) -export class NotificationsScheduleAdministrationComponent implements OnInit { - mobileQuery: MediaQueryList; - private _mobileQueryListener: () => void; - coreUrl: string; - - crontab: any[] = []; - authorizedNotification: any[] = []; - loading: boolean = false; - lang: any = LANG; - - constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private router: Router, private notify: NotificationService) { - $j("link[href='merged_css.php']").remove(); - this.mobileQuery = media.matchMedia('(max-width: 768px)'); - this._mobileQueryListener = () => changeDetectorRef.detectChanges(); - this.mobileQuery.addListener(this._mobileQueryListener); - } - - ngOnDestroy(): void { - this.mobileQuery.removeListener(this._mobileQueryListener); - } - - ngOnInit(): void { - this.updateBreadcrumb(angularGlobals.applicationName); - - this.coreUrl = angularGlobals.coreUrl; - this.loading = true; - - this.http.get(this.coreUrl + 'rest/notifications/schedule') - .subscribe((data: any) => { - this.crontab = data.crontab; - this.authorizedNotification = data.authorizedNotification; - this.loading = false; - }, (err) => { - this.notify.error(err.error.errors); - }); - } - - updateBreadcrumb(applicationName: string) { - if ($j('#ariane')[0]) { - $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + - "</a> > <a onclick='location.hash = \"/administration\"' style='cursor: pointer'>" + this.lang.administration + - "</a> > <a onclick='location.hash = \"/administration/notifications\"' style='cursor: pointer'>" + this.lang.notifications + - "</a> > " + this.lang.notificationsSchedule; - } - } - - onSubmit() { - this.http.post(this.coreUrl + 'rest/notifications/schedule', this.crontab) - .subscribe((data: any) => { - this.router.navigate(['/administration/notifications']); - this.notify.success(this.lang.NotificationScheduleUpdated); - }, (err) => { - this.notify.error(err.error.errors); - }); - } - -} diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts index e70fbb47706..213a889ea36 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts +++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts @@ -222,7 +222,7 @@ export const LANG_FR = { "notificationModification" : "Modification de la notification", "notifications" : "Notification(s)", "notificationSchedule" : "Planifier les notifications", - "NotificationScheduleInfo" : "Pour Rappel,\n\nformat de la crontab : [minute] [heure] [jour dans le mois] [mois] [jour de la semaine]", + "NotificationScheduleInfo" : "Pour rappel,\n\nformat de la crontab : [minute] [heure] [jour dans le mois] [mois] [jour de la semaine]", "notificationScheduleUpdated" : "Tâche(s) planifié(s) mise à jour", "notificationsSchedule" : "Planification des notifications", "NotificationToEnable" : "Activer", diff --git a/src/app/notification/controllers/NotificationScheduleController.php b/src/app/notification/controllers/NotificationScheduleController.php index 0b94394f989..48fe00bdce4 100644 --- a/src/app/notification/controllers/NotificationScheduleController.php +++ b/src/app/notification/controllers/NotificationScheduleController.php @@ -32,7 +32,7 @@ class NotificationScheduleController } return $response->withJson([ - 'crontab' => NotificationScheduleModel::getCrontab(), + 'crontab' => NotificationScheduleModel::getCrontab(), 'authorizedNotification' => self::getAuthorizedNotifications(), ]); } @@ -49,7 +49,7 @@ class NotificationScheduleController return $response->withStatus(500)->withJson(['errors' => 'Problem with crontab']); } - foreach ($data as $id => $cronValue) { + foreach ($data as $cronValue) { foreach ($cronValue as $key => $value) { if (($key == 'cmd' || $key == 'state') && !Validator::notEmpty()->validate($value)) { $errors[] = $key.' is empty'; @@ -101,10 +101,10 @@ class NotificationScheduleController protected static function checkCrontab($crontabToSave) { - $customId = CoreConfigModel::getCustomId(); + $customId = CoreConfigModel::getCustomId(); $crontabBeforeSave = NotificationScheduleModel::getCrontab(); - $corePath = str_replace('custom/'.$customId.'/src/app/notification/controllers', '', __DIR__); - $corePath = str_replace('src/app/notification/controllers', '', $corePath); + $corePath = str_replace('custom/'.$customId.'/src/app/notification/controllers', '', __DIR__); + $corePath = str_replace('src/app/notification/controllers', '', $corePath); foreach ($crontabToSave as $id => $cronValue) { if ($cronValue['state'] != 'hidden' && $crontabBeforeSave[$id]['state'] == 'hidden') { $returnValue = false; @@ -154,7 +154,7 @@ class NotificationScheduleController } $notification_sid = $data['notification_sid']; - $notification_id = $data['notification_id']; + $notification_id = $data['notification_id']; NotificationScheduleModel::createScriptNotification(['notification_sid' => $notification_sid, 'notification_id' => $notification_id]); diff --git a/src/app/notification/models/NotificationScheduleModelAbstract.php b/src/app/notification/models/NotificationScheduleModelAbstract.php index f875e730a08..a047e1bca0a 100644 --- a/src/app/notification/models/NotificationScheduleModelAbstract.php +++ b/src/app/notification/models/NotificationScheduleModelAbstract.php @@ -50,10 +50,10 @@ class NotificationScheduleModelAbstract HistoryController::add([ 'tableName' => 'notifications', - 'recordId' => $GLOBALS['userId'], + 'recordId' => $GLOBALS['userId'], 'eventType' => 'UP', - 'eventId' => 'notificationadd', - 'info' => _NOTIFICATION_SCHEDULE_UPDATED, + 'eventId' => 'notificationadd', + 'info' => _NOTIFICATION_SCHEDULE_UPDATED, ]); return true; @@ -104,14 +104,14 @@ class NotificationScheduleModelAbstract $filename = explode('/', $cmd); $data[] = array( - 'm' => $m, - 'h' => $h, - 'dom' => $dom, - 'mon' => $mon, - 'dow' => $dow, - 'cmd' => $cmd, + 'm' => $m, + 'h' => $h, + 'dom' => $dom, + 'mon' => $mon, + 'dow' => $dow, + 'cmd' => $cmd, 'description' => end($filename), - 'state' => $state, + 'state' => $state, ); } @@ -123,7 +123,6 @@ class NotificationScheduleModelAbstract ValidatorModel::notEmpty($aArgs, ['notification_sid', 'notification_id']); ValidatorModel::intVal($aArgs, ['notification_sid']); - $notification_sid = $aArgs['notification_sid']; $notification_id = $aArgs['notification_id']; //Creer le script sh pour les notifications @@ -183,10 +182,10 @@ class NotificationScheduleModelAbstract HistoryController::add([ 'tableName' => 'notifications', - 'recordId' => $notification_id, + 'recordId' => $notification_id, 'eventType' => 'ADD', - 'eventId' => 'notificationadd', - 'info' => _NOTIFICATION_SCRIPT_ADDED, + 'eventId' => 'notificationadd', + 'info' => _NOTIFICATION_SCRIPT_ADDED, ]); return true; -- GitLab