| 
<?php// H:\dev_web\htdocs\t_oci8\ACXE2\equip_graph_img_cre.php
 /* Create JPEG image of equipment allocation statistics
 Don't have any text or white space before the "<?php" tag
 because it will be incorporated into image stream and corrupt picture.
 call web service and create a graph.
 Change below web service URL to match your system.
 */
 define('WEB_SERVICE_URL', "http://dev:8083/t_oci8/ACXE2/equip_getjson_count.php");
 
 session_start();
 require('_02autoload.php');
 //require('Session.php');
 //require('Page.php');
 
 $sess = new \Equipment\Session;
 $sess->getSession();
 if (!isset($sess->username) || empty($sess->username)
 || !$sess->isPrivilegedUser()) {
 header('Location: index.php');
 exit;
 }
 $data = callservice($sess);
 do_graph("Equipment Count", 600, $data);
 
 // Functions
 function callservice($sess) {
 // Call web "service" to get the Equipment statistics
 $calldata = array('username' => $sess->username);
 $options = array(
 'http' => array(
 'method'  => 'POST',
 'header'  => 'Content-type: application/x-www-form-urlencoded',
 'content' => http_build_query($calldata)
 )
 );
 $ctx = stream_context_create($options);
 $result = file_get_contents(WEB_SERVICE_URL, false, $ctx);
 if (!$result) {
 $data = null;
 } else {
 $data = json_decode($result, true);
 
 // Sort an array by keys using an anonymous function
 uksort($data, function($a, $b) {
 if ($a == $b)
 return 0;
 else
 return ($a < $b) ? -1 : 1;
 });
 }
 return($data);
 }
 
 function do_graph($title, $width, $items) {
 $border = 50;             // border space around bars
 $caption_gap = 4;         // space between bar and its caption
 $bar_width = 20;          // width of each bar
 $bar_gap = 40;            // space between each bar
 $title_font_id = 5;       // font id for the main title
 $bar_caption_font_id = 5; // font id for each bar's title
 
 // Image height depends on number of items
 $height = (2 * $border) + (count($items) * $bar_width) +
 ((count($items) - 1) * $bar_gap);
 
 // Find horizontal distance unit for one item
 $unit = ($width - (2 * $border)) / max($items);
 
 // Create image and add the title
 $im = ImageCreate($width, $height);
 if (!$im) {
 trigger_error("Cannot create image<br />\n", E_USER_ERROR);
 }
 $background_col = ImageColorAllocate($im, 255, 255, 255); // white
 $bar_col = ImageColorAllocate($im, 0, 64, 128);           // blue
 $letter_col = ImageColorAllocate($im, 0, 0, 0);           // black
 ImageFilledRectangle($im, 0, 0, $width, $height, $background_col);
 ImageString($im, $title_font_id, $border, 4, $title, $letter_col);
 // Draw each bar and add a caption
 $start_y = $border;
 foreach ($items as $caption => $value) {
 $end_x = $border + ($value * $unit);
 $end_y = $start_y + $bar_width;
 ImageFilledRectangle($im, $border, $start_y, $end_x, $end_y, $bar_col);
 ImageString($im, $bar_caption_font_id, $border,
 $start_y + $bar_width + $caption_gap, $caption, $letter_col);
 $start_y = $start_y + ($bar_width + $bar_gap);
 }
 
 // Output complete image.
 // Any text, error message or even white space that appears before
 // this (including any white space before "<?php" tag) will corrupt
 // image data.  Comment out "header" line to debug any issues.
 header("Content-type: image/jpg");
 ImageJpeg($im);
 ImageDestroy($im);
 }
 
 
 ?>
 
 
 |