source: spip-zone/_plugins_/jpgraph/jpgraph_fonctions.php @ 32334

Last change on this file since 32334 was 32334, checked in by erational@…, 11 years ago

on renseigne les alt pour l'accessiblite
merci a olivier gautier pour la suggestion

File size: 4.5 KB
Line 
1<?php
2
3if (!defined('_DIR_LIB')) define('_DIR_LIB', _DIR_RACINE . 'lib/');
4define('_DIR_JPGRAPH_LIB', _DIR_LIB . 'jpgraph-3.0.6/');
5
6
7//
8// cree un hash unique
9// (a ameliorer activer le cache de jpgraph ou celui de spip ?)
10function jpgraph_name_hash($type="graph",$largeur,$hauteur,$donnee) {
11    // repertoire IMG/jpgraph dispo ?
12    if (!is_dir(_DIR_IMG."jpgraph/")) {                                     
13                   if (!mkdir (_DIR_IMG."jpgraph/", 0777)) // on essaie de le creer 
14                        spip_log("plugin jgraph: impossible de creer le reperoitre image");
15    }
16
17    // creer le nom unique
18    $donnee[] = $largeur;
19    $donnee[] = $hauteur;
20    $hash = md5(serialize($donnee));
21    return _DIR_IMG."jpgraph/$type-$hash.png";
22}
23
24
25//
26// filtre pour creer des courbes simples
27//
28function filtre_jpgraph($str,$type_graphe="courbe",$donnee="",$legende="",$largeur=400,$hauteur=300,$titre="",$couleur="orange"){
29   
30    // traiter les donnees
31    $type_graphe = strtolower(trim($type_graphe));  // pour pb avec les modeles si du blanc en fin de ligne
32    $couleur = trim($couleur);   
33    $donnee =  explode(";", $donnee);   
34    foreach ($donnee as $key => $value)
35         $donnee[$key] = (float) $value;   
36    if (count($donnee)<2) 
37        $donnee[] = "1";   // securite pour empecher les erreurs si donnnee pas renseigne 
38   
39    $legende =  explode(";", $legende); 
40    foreach ($legende as $key => $value) 
41            $legende[$key] = utf8_decode($value);
42    $largeur = (int) $largeur;    if ($largeur<=0) $largeur = 400;
43    $hauteur = (int) $hauteur;    if ($hauteur<=0) $hauteur = 300;
44   
45    // retrouver jpgraph
46        $cwd = getcwd();
47        chdir(realpath(_DIR_JPGRAPH_LIB));
48    require_once ('src/jpgraph.php');
49    switch($type_graphe) {
50        case "courbe":      require_once ('src/jpgraph_line.php'); break;
51        case "barre":       require_once ('src/jpgraph_bar.php');  break;
52        case "camembert":   require_once ('src/jpgraph_pie.php');  break;
53        default:            $type_graphe = "courbe";
54                            require_once ('src/jpgraph_line.php'); 
55                            break;       
56    }
57    chdir($cwd);
58   
59   
60    // creation du graphe
61    switch($type_graphe) {
62        case "courbe":      $graph = new Graph($largeur,$hauteur);
63                            $graph->SetScale('textlin');
64                            // Create the linear plot
65                            $plot=new LinePlot($donnee);
66                            $plot->SetColor($couleur);
67                            // titre & legende
68                            $graph->title->Set(utf8_decode($titre));
69                            if (count($legende)>1) 
70                                $graph->xaxis->SetTickLabels($legende); 
71                            break;
72                           
73        case "barre":       $graph = new Graph($largeur,$hauteur);
74                            $graph->SetScale('textlin');
75                            // Create the linear plot
76                            $plot = new BarPlot($donnee);
77                            $plot->SetFillColor($couleur);   
78                            // titre & legende
79                            $graph->title->Set(utf8_decode($titre));
80                            if (count($legende)>1)
81                                $graph->xaxis->SetTickLabels($legende);                                                     
82                            break;
83                           
84         case "camembert":  $graph = new PieGraph($largeur,$hauteur);   
85                            // Create the linear plot
86                            $plot = new PiePlot($donnee);
87                            $plot->SetTheme("earth");   
88                            // titre & legende
89                            $graph->title->Set(utf8_decode($titre));
90                            if (count($legende)>1) 
91                                $plot->SetLegends($legende);       
92                            break;
93    }
94   
95    // Attacher le trace au graph
96    $graph->Add($plot); 
97   
98    // export du graphe dans un fichier   
99    $filename = jpgraph_name_hash($type_graphe,$largeur,$hauteur,$donnee);
100    @unlink($filename); // http://jpgraph.intellit.nl/index.php?topic=4547.msg11823
101    $graph->Stroke($filename);
102   
103    $titre = str_replace("'","&#039",$titre);   
104    return "<span class='spip_documents jgraph'><img src='$filename' alt='$titre' width='$largeur' height='$hauteur' /></span>";
105
106}
107
108
109?>
Note: See TracBrowser for help on using the repository browser.