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 Glpi-dev@gna.org https://mail.gna.org/listinfo/glpi-dev