plot(\@data)->png;
-undef $MyGraph;
-binmode(STDOUT);
-open IMG,"|pngtopnm|ppmtogif"; # convert into a gif image
-print IMG $BinaryData; # output image
-$|=1; # be sure to flush before closing
-close IMG;
+graph.png
+=head1 SYNOPSIS
+produces plots from data stored in users environment.
+=head1 DESCRIPTION
+graph.png is a cgi-bin script which produces plots based on data stored
+in the users environment. The users cookie is checked prior to producing
+a plot. The query string is expected to be an identifier, $id.
+The parameters defining the plot must be stored in the environment as
+$ENV{'cgi.'.$id.'.'.$dataname}. Two types of plots can be produced, 'bar'
+and 'xy'. The 'xy' graph can will 1 or 2 y-axes if the parameter
+'two_axes' is set to false or true respectively. See perldoc GD::Graph and
+loncommon::DrawBarGraph, loncommon::DrawXYGraph, and loncommon::DrawXYYGraph.
+=cut
+use strict;
+use lib '/home/httpd/lib/perl';
+use GD::Graph::bars;
+use GD::Graph::lines;
+use GD::Graph::colour;
+use GD::Graph::Data;
+use LONCAPA::loncgi;
+sub unescape {
+ my $str=shift;
+ $str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
+ return $str;
+}
+
+sub error {
+ my ($error) = @_;
+ my $Str = <<"END";
+Content-type: text/html
+
+
+Bad Graph
+
+
+There was an error producing the graph you requested.
+
+$error
+
+
+
+END
+ return $Str;
+}
+my $id = $ENV{'QUERY_STRING'};
+#
+# usage: &get_env($name,$default)
+sub get_env {
+ my $key = 'cgi.'.$id.'.'.(shift());
+ return shift if (! exists($env{$key}));
+ return $env{$key};
+}
+
+if (! &LONCAPA::loncgi::check_cookie_and_load_env()) {
+ print <
+Bad Cookie
+
+Your cookie information is incorrect.
+
+