N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
Voici mon dernier plugin pour Mantis Bugtracker.
L’objectif de celui-ci est d’envoyer en début de semaine à chaque développeur un récapitulatif des bugs à traiter.
Ce module se base sur le traitement des échéances des bugs ( champ due_date )
(C’est un module très basique, il est possible d’optimiser encore pleins de points 😉 )
Nous allons l’appeller « Reminder »
Voici le mode opératoire de création de ce module.
Pour commencer nous allons créer un dossier « Reminder » dans le dossier « plugins » de mantis BugtrackerVoici le fichier de déclaration du module « Reminder.php »
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** Plugin Reminder pour Mantis BugTracker : - Envoi d'un email récapitulatif des échéances de la semaine aux développeurs @version 0.1.0 - 2013-07-23 @autor Hervé Hennes <[email protected]> */ class ReminderPlugin extends MantisPlugin { function register() { $this->name = 'ReminderPlugin'; $this->description = 'Envoi d\'un email récapitulatif des échéances de la semaine aux développeurs'; $this->version = '0.1.0'; $this->requires = array('MantisCore' => '1.2.0',); $this->author = 'Hennes Hervé'; $this->url = 'http://www.h-hennes.fr'; } } |
Nous allons ensuite créer une page qui devra être appellée via une tâche cron tous les lundi matin pour envoyer le récapitulatif à chaque développeur pour bien commencer la semaine 🙂
Nous nommerons cette page reminder-cron.php et la plaçons cette page dans le dossier « pages » du module.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /** Plugin Reminder pour Mantis BugTracker : Page appellée via cron de manière hebdomadaire pour envoyer un récapitulatif des bugs en attente de traitement @version 0.1.0 - 2013-07-23 @autor Hervé Hennes <[email protected]> */ include('../../../config_inc.php'); try { $db = new PDO('mysql:host='.$g_hostname.';dbname='.$g_database_name,$g_db_username,$g_db_password); } catch (Exception $e) { die($e->getMessage()); } #Recherche des informations sur les bugs $query = $db->query('SELECT b.id,b.handler_id,b.summary,b.due_date,u.enabled,u.email,t.name FROM mantis_bug_table b LEFT JOIN mantis_user_table u ON ( b.handler_id = u.id ) LEFT JOIN mantis_project_table t ON ( t.id = b.project_id) WHERE b.due_date <> 1 AND b.status < 80'); $t_results = $query->fetchAll(PDO::FETCH_ASSOC); $t_date_now = date('Y-m-d'); $t_date_var = explode('-',$t_date_now); $t_date_7_days = date('Y-m-d',mktime($t_date_var[1], $t_date_var[2], $t_date_var[0])+ 24*3600*7); $t_developpers_reminder_bugs = array(); #traitement des bugs foreach ( $t_results as $t_result ) { $t_bug_date = date('Y-m-d',$t_result['due_date']); $t_result['date_formated'] = $t_bug_date; #Bug avec une échéance dépassée if ( $t_bug_date < $t_date_now ) { #On groupe les bugs par utilisateurs uniquement si ils sont actifs if ( $t_result['enabled'] == 1 ) $t_developpers_reminder_bugs[$t_result['handler_id']]['overdue'][] = $t_result; } #Bug avec une échéance à venir dans les 7 prochains jours if ( $t_bug_date >= $t_date_now && $t_bug_date <= $t_date_7_days) { #On groupe les bugs par utilisateurs uniquement si ils sont actifs if ( $t_result['enabled'] == 1 ) $t_developpers_reminder_bugs[$t_result['handler_id']]['to_come'][] = $t_result; } } #envoi des emails récapitulatifs #@todo : Voir pour historiser les envois dans une table sql pour éviter les envois multiples foreach ( $t_developpers_reminder_bugs as $t_user_id => $t_bugs_arrays ) { $message = '<html> <head> <title>Récapitulatif Hebdommadaire</title> </head> <body>Bonjour,<br /><br /> Voici le récapitulatif des bugs à traiter cette semaine : <br />'; if ( sizeof($t_bugs_arrays['overdue']) ) { $message .= '<br /><strong>Bugs dont la date d\'échéance est dépassée : </strong> <ul>'; foreach ($t_bugs_arrays['overdue'] as $t_overdue_bug ) $message .= '<li>'.$t_overdue_bug['id'].'('.$t_overdue_bug['name'].') '.$t_overdue_bug['summary'].' - '.$t_overdue_bug['date_formated'].'</li>'; $message .= '</ul>'; $t_user_email = $t_bugs_arrays['overdue'][0]['email']; } if ( sizeof($t_bugs_arrays['to_come']) ) { $message .= '<br /><strong>Bugs dont l\'échéance est cette semaine : </strong> <ul>'; foreach ($t_bugs_arrays['to_come'] as $t_coming_bug ) $message .= '<li> '.$t_coming_bug['id'].' - ('.$t_coming_bug['name'].') '.$t_coming_bug['summary'].' - '.$t_coming_bug['date_formated'].'</li>'; $message .= '</ul>'; $t_user_email = $t_bugs_arrays['to_come'][0]['email']; } $message .= '<br />Cordialement,<br /> <br /> </body></html>'; #Envoi d'un email $t_from_email = 'Dev Europe Internet <[email protected]>'; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: ' .$t_from_email. "\r\n"; mail($t_user_email, 'Récapitulatif Hebdommadaire des bugs', $message, $headers); } |
Pour télécharger ce module : Reminder-0.1.0
Une fois le module installé n’oubliez pas de programmer une tâche cron hebdomadaire pour exécuter cette page 😉
Bug avec Mantis 1.2.19
J’ai commencé à debug un peu.
L19 du fichier config.php
– gpc_get(‘updated’)
+ gpc_get(‘updated’, 0) == 1
Bonjour,
Merci de votre correctif, celui-ci a été mis en place.
Cordialement,
Hervé