Salut,
J'ai travaillé sur cette extension.
Comme d'habitude petit soucis avec le fichier généré (ici du php) en
dehors des dossiers "apache".
En lisant le "gantt.class.php", j'ai vu qu'un paramètre été prévu pour
enregistrer l'image (buggé, donc corrigé).
Plutôt que d'enregistrer le PHP, j'ai donc enregistré l'image générée.
Le code me semble plus lisible.
J'ai aussi corrigé un petit problème dans la récupération des dates (les
2 derniers caractères sont dans l'heure) :
substr($gdata[$i][3], -2, 2) => substr($gdata[$i][3], 8, 2)
Le résultat semble meilleur (mais je n'ai créé qu'un tout petit projet
test avec 3 tâches).
A tester...
A+
P.S. comment on fait pour modifier une tâche ?
--- projet/inc/gantt.class.php.orig 2007-07-25 14:09:21.000000000 +0200
+++ projet/inc/gantt.class.php 2007-07-25 14:17:05.000000000 +0200
@@ -981,7 +981,7 @@ class gantt {
//generate the image
function draw($image_type= 'png') {
-
+
//echo "ok, chegou até aqui";
if ($this->definitions['image']['type']) {
$image_type = $this->definitions['image']['type'];
@@ -999,12 +999,16 @@ class gantt {
} else {
$foreground = null;
}
-
+
switch ($image_type) {
case 'png':
if (function_exists("imagepng")) {
- header("Content-type: image/png");
- imagepng($this->img,'gantt.png');
+ if (isset($filename)) {
+ imagepng($this->img, $filename);
+ } else {
+ header("Content-type: image/png");
+ imagepng($this->img);
+ }
}
@@ -1041,7 +1045,7 @@ class gantt {
break;
}
- imagepng($this->img);
+ //imagepng($this->img);
imagedestroy($this->img);
}
--- projet/inc/plugin_projet.functions_gantt.php.orig 2007-07-25 13:29:41.000000000 +0200
+++ projet/inc/plugin_projet.functions_gantt.php 2007-07-25 14:29:32.000000000 +0200
@@ -335,74 +335,62 @@ function plugin_projet_tasks_showgantt($
function writeGantt($title,$gdata,$gconst,$gantt_begin_date,$gantt_end_date,$location){
- global $CFG_GLPI,$LANGPROJET;
+ global $CFG_GLPI,$LANGPROJET;
+
+ require ("../inc/gantt.class.php");
+
+ $PathImg = tempnam(GLPI_PLUGIN_DOC_DIR."/projet", "IMG");
- if ($location!=0)
- $Fnm = GLPI_PLUGIN_DOC_DIR."/projet/project_gantt.php";
- else
- $Fnm = GLPI_PLUGIN_DOC_DIR."/projet/global_gantt.php";
-
- $rep_files_projet = GLPI_PLUGIN_DOC_DIR."/projet";
-
- /*if (!is_dir($rep_files_projet))
- mkdir($rep_files_projet);*/
-
- $inF = fopen($Fnm,"w");
- fputs($inF,"<?php"."\n");
- fputs($inF,"include ('../../../plugins/projet/inc/gantt.class.php');"."\n");
-
- if (isset($gantt_begin_date)) fputs($inF,"\$definitions['limit']['start'] = mktime(0,0,0,'".substr($gantt_begin_date, 5, 2)."','".substr($gantt_begin_date, -2, 2)."','".substr($gantt_begin_date, 0, 4)."');"."\n");
- if (isset($gantt_end_date)) fputs($inF,"\$definitions['limit']['end'] = mktime(0,0,0,'".substr($gantt_end_date, 5, 2)."','".substr($gantt_end_date, -2, 2)."','".substr($gantt_end_date, 0, 4)."');"."\n");
+ if (isset($gantt_begin_date)) $definitions['limit']['start'] = mktime(0,0,0,substr($gantt_begin_date, 5, 2),substr($gantt_begin_date, 8, 2),substr($gantt_begin_date, 0, 4));
+ if (isset($gantt_end_date)) $definitions['limit']['end'] = mktime(0,0,0,substr($gantt_end_date, 5, 2),substr($gantt_end_date, 8, 2),substr($gantt_end_date, 0, 4));
- fputs($inF,"\$definitions['locale'] = \"".substr($CFG_GLPI["default_language"],0,2)."\";"."\n");
- fputs($inF,"\$definitions['today']['data']= time();"."\n");
+ $definitions['locale'] = substr($CFG_GLPI["default_language"],0,2);
+ $definitions['today']['data']= time();
- fputs($inF,"\$definitions['title_string'] = '".str_sans_accent((strlen($title)>60) ? substr($title,0,58)."..." : $title)."';"."\n");
- $i=0;
- while ($i<count($gdata)){
+ $definitions['title_string'] = str_sans_accent((strlen($title)>60) ? substr($title,0,58)."..." : $title);
+ for ($i=0 ; $i<count($gdata) ; $i++){
- if ($gdata[$i][0]=='group') { // Groupe
- fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][1]."]['name'] = '".str_sans_accent((strlen($gdata[$i][2])>60) ? substr($gdata[$i][2],0,58)."..." : $gdata[$i][2])."';"."\n");
+ if ($gdata[$i][0]=='group') { // Groupe
+ $definitions['groups']['group'][$gdata[$i][1]]['name'] = str_sans_accent((strlen($gdata[$i][2])>60) ? substr($gdata[$i][2],0,58)."..." : $gdata[$i][2]);
- fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][1]."]['bg_color'] = array(".$gdata[$i][6][0].",".$gdata[$i][6][1].",".$gdata[$i][6][2].");"."\n");
- fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][1]."]['start'] = mktime(0,0,0,'".substr($gdata[$i][3], 5, 2)."','".substr($gdata[$i][3], -2, 2)."','".substr($gdata[$i][3], 0, 4)."');"."\n");
- fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][1]."]['end'] = mktime(0,0,0,'".substr($gdata[$i][4], 5, 2)."','".substr($gdata[$i][4], -2, 2)."','".substr($gdata[$i][4], 0, 4)."');"."\n");
- if (isset($gdata[$i][5])) fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][1]."]['progress'] = ".$gdata[$i][5].";"."\n");
- }
- elseif ($gdata[$i][0]=='phase') { // Tache
- fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][2]."]['phase'][".$gdata[$i][1]."] = ".$gdata[$i][1].";"."\n");
- fputs($inF,"\$definitions['planned']['phase'][".$gdata[$i][1]."]['name'] = '".str_sans_accent((strlen($gdata[$i][3])>60) ? substr($gdata[$i][3],0,58)."..." : $gdata[$i][3])."';"."\n");
- if ($gdata[$i][7]=='1') {
- fputs($inF,"\$definitions['planned']['phase'][".$gdata[$i][1]."]['start'] = mktime(0,0,0,'".substr($gdata[$i][4], 5, 2)."','".substr($gdata[$i][4], -2, 2)."','".substr($gdata[$i][4], 0, 4)."');"."\n");
- fputs($inF,"\$definitions['planned']['phase'][".$gdata[$i][1]."]['end'] = mktime(0,0,0,'".substr($gdata[$i][5], 5, 2)."','".substr($gdata[$i][5], -2, 2)."','".substr($gdata[$i][5], 0, 4)."');"."\n");
- if (isset($gdata[$i][6])) fputs($inF,"\$definitions['planned']['phase'][".$gdata[$i][1]."]['color']=array(".$gdata[$i][6][0].",".$gdata[$i][6][1].",".$gdata[$i][6][2].");"."\n");
- if (isset($gdata[$i][8])) fputs($inF,"\$definitions['progress']['phase'][".$gdata[$i][1]."]['progress']=".$gdata[$i][8].";"."\n");
- } else {
- fputs($inF,"\$definitions['planned_adjusted']['phase'][".$gdata[$i][1]."]['start'] = mktime(0,0,0,'".substr($gdata[$i][4], 5, 2)."','".substr($gdata[$i][4], -2, 2)."','".substr($gdata[$i][4], 0, 4)."');"."\n");
- fputs($inF,"\$definitions['planned_adjusted']['phase'][".$gdata[$i][1]."]['end'] = mktime(0,0,0,'".substr($gdata[$i][5], 5, 2)."','".substr($gdata[$i][5], -2, 2)."','".substr($gdata[$i][5], 0, 4)."');"."\n");
- if (isset($gdata[$i][6])) fputs($inF,"\$definitions['planned_adjusted']['phase'][".$gdata[$i][1]."]['color']=array(".$gdata[$i][6][0].",".$gdata[$i][6][1].",".$gdata[$i][6][2].");"."\n");
- if (isset($gdata[$i][9])) fputs($inF,"\$definitions['real']['phase'][".$gdata[$i][1]."]['start'] = mktime(0,0,0,'".substr($gdata[$i][9], 5, 2)."','".substr($gdata[$i][9], -2, 2)."','".substr($gdata[$i][9], 0, 4)."');"."\n");
- if (isset($gdata[$i][10])) fputs($inF,"\$definitions['real']['phase'][".$gdata[$i][1]."]['end'] = mktime(0,0,0,'".substr($gdata[$i][10], 5, 2)."','".substr($gdata[$i][10], -2, 2)."','".substr($gdata[$i][10], 0, 4)."');"."\n");
- }
- }
- elseif ($gdata[$i][0]=='milestone') { // Point Important
- fputs($inF,"\$definitions['groups']['group'][".$gdata[$i][2]."]['milestone'][".$gdata[$i][1]."]=".$gdata[$i][1].";"."\n");
- fputs($inF,"\$definitions['milestones']['milestone'][".$gdata[$i][1]."]['title']='".str_sans_accent((strlen($gdata[$i][3])>27) ? substr($gdata[$i][3],0,24)."..." : $gdata[$i][3])."';"."\n");
- fputs($inF,"\$definitions['milestones']['milestone'][".$gdata[$i][1]."]['data']= mktime(0,0,0,'".substr($gdata[$i][4], 5, 2)."','".substr($gdata[$i][4], -2, 2)."','".substr($gdata[$i][4], 0, 4)."');"."\n");
- }
- elseif ($gdata[$i][0]=='dependency') { // Dependance
- }
- $i++;
- }
+ $definitions['groups']['group'][$gdata[$i][1]]['bg_color'] = array($gdata[$i][6][0],$gdata[$i][6][1],$gdata[$i][6][2]);
+ $definitions['groups']['group'][$gdata[$i][1]]['start'] = mktime(0,0,0,substr($gdata[$i][3], 5, 2),substr($gdata[$i][3], 8, 2),substr($gdata[$i][3], 0, 4));
+ $definitions['groups']['group'][$gdata[$i][1]]['end'] = mktime(0,0,0,substr($gdata[$i][4], 5, 2),substr($gdata[$i][4], 8, 2),substr($gdata[$i][4], 0, 4));
+ error_log ("Groupe " . $gdata[$i][2] . " du " . $gdata[$i][3] . " au " . $gdata[$i][4]);
+ if (isset($gdata[$i][5])) $definitions['groups']['group'][$gdata[$i][1]]['progress'] = $gdata[$i][5];
+ }
+ elseif ($gdata[$i][0]=='phase') { // Tache
+ $definitions['groups']['group'][$gdata[$i][2]]['phase'][$gdata[$i][1]] = $gdata[$i][1];
+ $definitions['planned']['phase'][$gdata[$i][1]]['name'] = str_sans_accent((strlen($gdata[$i][3])>60) ? substr($gdata[$i][3],0,58)."..." : $gdata[$i][3]);
+ error_log ("Tache " . $gdata[$i][2] . " du " . $gdata[$i][4] . " au " . $gdata[$i][5]);
+ if ($gdata[$i][7]=='1') {
+ $definitions['planned']['phase'][$gdata[$i][1]]['start'] = mktime(0,0,0,substr($gdata[$i][4], 5, 2),substr($gdata[$i][4], 8, 2),substr($gdata[$i][4], 0, 4));
+ $definitions['planned']['phase'][$gdata[$i][1]]['end'] = mktime(0,0,0,substr($gdata[$i][5], 5, 2),substr($gdata[$i][5], 8, 2),substr($gdata[$i][5], 0, 4));
+ $definitions['planned']['phase'][$gdata[$i][1]]['color']=array($gdata[$i][6][0],$gdata[$i][6][1],$gdata[$i][6][2]);
+ if (isset($gdata[$i][8])) $definitions['progress']['phase'][$gdata[$i][1]]['progress']=$gdata[$i][8];
+ } else {
+ $definitions['planned_adjusted']['phase'][$gdata[$i][1]]['start'] = mktime(0,0,0,substr($gdata[$i][4], 5, 2),substr($gdata[$i][4], 8, 2),substr($gdata[$i][4], 0, 4));
+ $definitions['planned_adjusted']['phase'][$gdata[$i][1]]['end'] = mktime(0,0,0,substr($gdata[$i][5], 5, 2),substr($gdata[$i][5], 8, 2),substr($gdata[$i][5], 0, 4));
+ if (isset($gdata[$i][6])) $definitions['planned_adjusted']['phase'][$gdata[$i][1]]['color']=array($gdata[$i][6][0],$gdata[$i][6][1],$gdata[$i][6][2]);
+ if (isset($gdata[$i][9])) $definitions['real']['phase'][$gdata[$i][1]]['start'] = mktime(0,0,0,substr($gdata[$i][9], 5, 2),substr($gdata[$i][9], 8, 2),substr($gdata[$i][9], 0, 4));
+ if (isset($gdata[$i][10])) $definitions['real']['phase'][$gdata[$i][1]]['end'] = mktime(0,0,0,substr($gdata[$i][10], 5, 2),substr($gdata[$i][10], 8, 2),substr($gdata[$i][10], 0, 4));
+ }
+ }
+ elseif ($gdata[$i][0]=='milestone') { // Point Important
+ $definitions['groups']['group'][$gdata[$i][2]]['milestone'][$gdata[$i][1]]=$gdata[$i][1];
+ $definitions['milestones']['milestone'][$gdata[$i][1]]['title']=str_sans_accent((strlen($gdata[$i][3])>27) ? substr($gdata[$i][3],0,24)."..." : $gdata[$i][3]);
+ $definitions['milestones']['milestone'][$gdata[$i][1]]['data']= mktime(0,0,0,substr($gdata[$i][4], 5, 2),substr($gdata[$i][4], 8, 2),substr($gdata[$i][4], 0, 4));
+ }
+ elseif ($gdata[$i][0]=='dependency') { // Dependance
+ }
+ }
- fputs($inF,"\$definitions['image']['type']= 'png'; "."\n"); fputs($inF,"new gantt(\$definitions);"."\n"); fputs($inF,"?>"."\n");
-
- fclose($inF);
- if ($location!=0)
- echo"<img src=\"".$CFG_GLPI["root_doc"]."/files/_plugins/projet/project_gantt.php\" alt=\"\">";//afficher graphique
- else
- echo"<img src=\"".$CFG_GLPI["root_doc"]."/files/_plugins/projet/global_gantt.php\" alt=\"\">";//afficher graphique global
-
+ $definitions['image']['type']= 'png';
+ $definitions['image']['filename'] = $PathImg;
+
+ new gantt($definitions);
+
+ echo "<img src='".$CFG_GLPI["root_doc"]."/front/pluginimage.send.php?plugin=projet&name=".basename($PathImg)."&clean=1' alt='Gantt' />";//afficher graphique
}
@@ -413,4 +401,4 @@ function str_sans_accent($chaine) {
return $chaine;
}
-?>
\ Pas de fin de ligne à la fin du fichier.
+?>
_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev