Example #1
0
        $hours[$i] = $i;
    }
    $rawlogs = report_log_userday($user->id, $courseselect, $daystart, $logreader);
    if (empty($rawlogs)) {
        return;
    }
    foreach ($rawlogs as $rawlog) {
        $logs[$rawlog->hour] = $rawlog->num;
    }
    $graph = new graph(750, 400);
    $a = new stdClass();
    $a->coursename = format_string($course->shortname, true, array('context' => $coursecontext));
    $a->username = fullname($user, true);
    $graph->parameter['title'] = get_string("hitsoncoursetoday", "", $a);
    $graph->x_data = $hours;
    $graph->y_data['logs'] = $logs;
    $graph->y_order = array('logs');
    if (!empty($CFG->preferlinegraphs)) {
        $graph->y_format['logs'] = array('colour' => 'blue', 'line' => 'line');
    } else {
        $graph->y_format['logs'] = array('colour' => 'blue', 'bar' => 'fill', 'bar_size' => 0.9);
    }
    $graph->parameter['y_label_left'] = get_string("hits");
    $graph->parameter['label_size'] = "12";
    $graph->parameter['x_axis_angle'] = 0;
    $graph->parameter['x_label_angle'] = 0;
    $graph->parameter['shadow'] = 'none';
    error_reporting(5);
    // Ignore most warnings such as font problems etc.
    $graph->draw_stack();
}
Example #2
0
 /**
  * Draw a graph image. Staked area
  * @param $title string : title of graph
  * @param $x_label string : x label
  * @param $y_label string : y label
  * @param $legends array : array of strings, values are the names of every serie
  * @param $x_data array : x labels
  * @param $y_data matrix : array of array of numbers first array is indexed by legend.
  * @return nothing
  */
 public static function draw($title, $x_label, $y_label, $x_data, $y_data, $legends = null, $type_bar = false)
 {
     $graph = new graph(750, 400);
     $graph->parameter['title'] = $title;
     $graph->parameter['x_label'] = $x_label;
     $graph->parameter['y_label_left'] = $y_label;
     $graph->x_data = $x_data;
     if ($legends == null) {
         $graph->parameter['shadow'] = 'gray66';
         $graph->y_data = array('default_serie' => $y_data);
         $legends = array('default_serie');
         $cn = 0;
     } else {
         $graph->parameter['shadow'] = 'none';
         $graph->y_data = $y_data;
         $cn = 1;
     }
     $graph->y_order = $legends;
     $graph->y_format = array();
     $are_ints = true;
     $max_value = 0;
     foreach ($legends as $name) {
         $graph->y_format[$name] = array('colour' => self::$colors[$cn++ % count(self::$colors)]);
         if ($name != 'default_serie') {
             $graph->y_format[$name]['legend'] = $name;
         }
         if ($type_bar) {
             $graph->y_format[$name]['bar'] = 'fill';
             $graph->y_format[$name]['bar_size'] = 0.9;
         } else {
             $graph->y_format[$name]['area'] = 'fill';
         }
         foreach ($graph->y_data[$name] as $value) {
             $max_value = max($max_value, $value);
             $are_ints = $are_ints && (int) ($value * 100) % 100 == 0;
         }
     }
     if ($are_ints && $max_value <= 14) {
         $graph->parameter['y_axis_gridlines'] = $max_value + 1;
         $graph->parameter['y_decimal_left'] = 0;
     } else {
         $range = 0.1;
         for ($i = 0; $i < 30; $i++) {
             if ($range * 15 > $max_value) {
                 break;
             }
             $range = $range * 2.5;
             if ($range * 15 > $max_value) {
                 break;
             }
             $range *= 2;
             if ($range * 15 > $max_value) {
                 break;
             }
             $range *= 2;
         }
         $rem = $max_value - (int) ($max_value / $range) * $range;
         if ($rem > 0) {
             $max_value = $max_value + $range - $rem;
         }
         $gridlines = (int) ($max_value / $range) + 1;
         $graph->parameter['y_axis_gridlines'] = $gridlines;
         $graph->parameter['y_max_left'] = $max_value;
         $graph->parameter['y_min_left'] = 0;
         if ($max_value >= 1) {
             $graph->parameter['y_resolution_left'] = 4;
             //Don't ajust y_max
         } else {
             $graph->parameter['y_resolution_left'] = 0;
         }
         if ((int) $range == $range) {
             $graph->parameter['y_decimal_left'] = 0;
         } elseif ((int) ($range * 10) == 10 * $range) {
             $graph->parameter['y_decimal_left'] = 1;
         } else {
             $graph->parameter['y_decimal_left'] = 2;
         }
     }
     $graph->parameter['label_size'] = "12";
     $graph->parameter['legend_size'] = "10";
     $graph->parameter['x_label_angle'] = 0;
     $graph->parameter['tick_length'] = 0;
     $graph->parameter['legend'] = 'inside-top';
     $graph->parameter['shadow_offset'] = 5;
     $graph->parameter['shadow_below_axis'] = false;
     error_reporting(5);
     // ignore warnings
     $graph->draw_stack();
 }