[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <? 2 $_GET["sessid"] = isset( $_POST["sessid"] ) ? $_POST["sessid"] : $_GET["sessid"]; 3 if( isset($_GET["sessid"])){ 4 session_id($_GET["sessid"]); 5 session_start(); 6 7 if( !isset($_SESSION["loggeduser"]) ) { 8 die("FORBIDDEN"); 9 } 10 } 11 else 12 die("FORBIDDEN"); 13 14 require ('preferences.php'); 15 16 if( isset($_GET["delsucc"]) ) { 17 18 $resSupp = mysql_query("DELETE FROM devices WHERE name='DOWNLOAD' AND tvalue LIKE 'SUCCESS%' AND 19 ivalue = (SELECT id FROM download_enable WHERE fileid='".$_GET["stat"]."')", $_SESSION["writeServer"]); 20 } 21 22 $resStats = mysql_query("SELECT COUNT(id) as 'nb', tvalue as 'txt' FROM devices d, download_enable e WHERE e.fileid='".$_GET["stat"]."' 23 AND e.id=d.ivalue AND name='DOWNLOAD' GROUP BY tvalue", $_SESSION["readServer"]); 24 25 if( @mysql_num_rows( $resStats ) == 0 ) { 26 echo "<center>".$l->g(526)."</center>"; 27 die(); 28 } 29 30 if( ! function_exists( "imagefontwidth") ) { 31 echo "<br><center><font color=red><b>ERROR: GD for PHP is not properly installed.<br>Try uncommenting \";extension=php_gd2.dll\" (windows) by removing the semicolon in file php.ini, or try installing the php4-gd package.</b></font></center>"; 32 die(); 33 } 34 else if( isset($_GET["generatePic"]) ) { 35 $tot = 0; 36 $quartiers = array(); 37 $coul = array( 0x0091C3, 0xFFCB03 ,0x33CCCC, 0xFF9900, 0x969696, 0x339966, 0xFF99CC, 0x99CC00); 38 $i = 0; 39 while( $valStats = mysql_fetch_array( $resStats ) ) { 40 $tot += $valStats["nb"]; 41 if( $valStats["txt"] =="" ) 42 $valStats["txt"] = $l->g(482); 43 $quartiers[] = array( $valStats["nb"], $coul[ $i ], $valStats["txt"]." (".$valStats["nb"].")" ); 44 $i++; 45 if( $i > sizeof( $coul ) ) 46 $i=0; 47 } 48 camembert($quartiers); 49 } 50 else { 51 ?> 52 <html> 53 <head> 54 <TITLE>OCS Inventory Stats</TITLE> 55 <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 56 <META HTTP-EQUIV="Expires" CONTENT="-1"> 57 <LINK REL='StyleSheet' TYPE='text/css' HREF='css/ocsreports.css'> 58 </HEAD> 59 <BODY> 60 61 <? 62 63 $resStats = mysql_query("SELECT COUNT(DISTINCT HARDWARE_ID) as 'nb' FROM devices d, download_enable e WHERE e.fileid='".$_GET["stat"]."' 64 AND e.id=d.ivalue AND name='DOWNLOAD'", $_SESSION["readServer"]); 65 66 $valStats = mysql_fetch_array( $resStats ); 67 68 echo "<br><img src='tele_stats.php?generatePic=1&sessid=".$_GET["sessid"]."&stat=".$_GET["stat"]."'>"; 69 echo "<center><b>".$l->g(28).": ".$valStats["nb"]."</b><br><br><a href='tele_stats.php?delsucc=1&sessid=".$_GET["sessid"]."&stat=".$_GET["stat"]."'>".$l->g(483)."</a>"; 70 ?> 71 </BODY> 72 </HTML> 73 <? 74 } 75 76 function camembert($arr) 77 { 78 $size=3; /* taille de la police, largeur du caractère */ 79 $ifw=imagefontwidth($size); 80 81 $w=800; /* largeur de l'image */ 82 $h=500; /* hauteur de l'image */ 83 $a=200; /* grand axe du camembert */ 84 $b=$a/2; /* 60 : petit axe du camembert */ 85 $d=$a/2; /* 60 : "épaisseur" du camembert */ 86 $cx=$w/2-1; /* abscisse du "centre" du camembert */ 87 $cy=($h-$d)/2; /* 95 : ordonnée du "centre" du camembert */ 88 89 $A=138+80; /* grand axe de l'ellipse "englobante" */ 90 $B=102+80; /* petit axe de l'ellipse "englobante" */ 91 $oy=-$d/2; /* -30 : du "centre" du camembert à celui de l'ellipse "englobante"*/ 92 93 $img=imagecreate($w,$h); 94 $bgcolor=imagecolorallocate($img,0xCD,0xCD,0xCD); 95 imagecolortransparent($img,$bgcolor); 96 $black=imagecolorallocate($img,0,0,0); 97 /* calcule la somme des données */ 98 for ($i=$sum=0,$n=count($arr);$i<$n;$i++) $sum+=$arr[$i][0]; 99 100 /* fin des préliminaires : on peut vraiment commencer! */ 101 for ($i=$v[0]=0,$x[0]=$cx+$a,$y[0]=$cy,$doit=true;$i<$n;$i++) { 102 for ($j=0,$k=16;$j<3;$j++,$k-=8) $t[$j]=($arr[$i][1]>>$k) & 0xFF; 103 /* détermine les "vraies" couleurs */ 104 $color[$i]=imagecolorallocate($img,$t[0],$t[1],$t[2]); 105 /* calcule l'angle des différents "secteurs" */ 106 $v[$i+1]=$v[$i]+round($arr[$i][0]*360/$sum); 107 108 if ($doit) { /* détermine les couleurs "ombrées" */ 109 $shade[$i]=imagecolorallocate($img,max(0,$t[0]-50),max(0,$t[1]-50),max(0,$t[2]-50)); 110 111 if ($v[$i+1]<180) { /* calcule les coordonnées des différents parallélogrammes */ 112 $x[$i+1]=$cx+$a*cos($v[$i+1]*M_PI/180); 113 $y[$i+1]=$cy+$b*sin($v[$i+1]*M_PI/180); 114 } 115 else { 116 $m=$i+1; 117 $x[$m]=$cx-$a; /* c'est comme si on remplaçait $v[$i+1] par 180° */ 118 $y[$m]=$cy; 119 $doit=false; /* indique qu'il est inutile de continuer! */ 120 } 121 } 122 } 123 124 /* dessine la "base" du camembert */ 125 for ($i=0;$i<$m;$i++) imagefilledarc($img,$cx,$cy+$d,2*$a,2*$b,$v[$i],$v[$i+1],$shade[$i],IMG_ARC_PIE); 126 127 /* dessine la partie "verticale" du camembert */ 128 for ($i=0;$i<$m;$i++) { 129 $area=array($x[$i],$y[$i]+$d,$x[$i],$y[$i],$x[$i+1],$y[$i+1],$x[$i+1],$y[$i+1]+$d); 130 imagefilledpolygon($img,$area,4,$shade[$i]); 131 } 132 133 /* dessine le dessus du camembert */ 134 for ($i=0;$i<$n;$i++) imagefilledarc($img,$cx,$cy,2*$a,2*$b,$v[$i],$v[$i+1],$color[$i],IMG_ARC_PIE); 135 136 /*imageellipse($img,$cx,$cy-$oy,2*$A,2*$B,$black); // dessine l'ellipse "englobante" */ 137 138 /* dessine les "flêches" et met en place le texte */ 139 for ($i=0,$AA=$A*$A,$BB=$B*$B;$i<$n;$i++) if ($arr[$i][0]) { 140 $phi=($v[$i+1]+$v[$i])/2; 141 /* intersection des "flêches" avec l'ellipse "englobante" */ 142 $px=$a*3*cos($phi*M_PI/180)/4; 143 $py=$b*3*sin($phi*M_PI/180)/4; 144 /* équation du 2ème degré avec 2 racines réelles et distinctes */ 145 $U=$AA*$py*$py+$BB*$px*$px; 146 $V=$AA*$oy*$px*$py; 147 $W=$AA*$px*$px*($oy*$oy-$BB); 148 /* calcule le pourcentage à afficher */ 149 $value=number_format(100*$arr[$i][0]/$sum,2,",","")."%"; 150 /* écrit le texte à droite */ 151 if ($phi<=90 || $phi>270) { 152 $root=(-$V+sqrt($V*$V-$U*$W))/$U; 153 imageline($img,$px+$cx,$py+$cy,$qx=$root+$cx,$qy=$root*$py/$px+$cy,$black); 154 imageline($img,$qx,$qy,$qx+10,$qy,$black); 155 156 imagestring($img,$size,$qx+14,$qy-12,$arr[$i][2],$black); 157 imagestring($img,$size,$qx+14,$qy-2,$value,$black); 158 } 159 else { /* écrit le texte à gauche */ 160 $root=(-$V-sqrt($V*$V-$U*$W))/$U; 161 imageline($img,$px+$cx,$py+$cy,$qx=$root+$cx,$qy=$root*$py/$px+$cy,$black); 162 imageline($img,$qx,$qy,$qx-10,$qy,$black); 163 164 imagestring($img,$size,$qx-12-$ifw*strlen($arr[$i][2]),$qy-12,$arr[$i][2],$black); 165 imagestring($img,$size,$qx-12-$ifw*strlen($value),$qy-2,$value,$black); 166 } 167 } 168 169 header("Content-type: image/png"); 170 imagepng($img); 171 imagedestroy($img); 172 } 173 174 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |