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

Reply via email to