]> git.mjollnir.org Git - moodle.git/commitdiff
more fixing on reports
authormjollnir_ <mjollnir_>
Sun, 24 Sep 2006 03:15:52 +0000 (03:15 +0000)
committermjollnir_ <mjollnir_>
Sun, 24 Sep 2006 03:15:52 +0000 (03:15 +0000)
course/report/stats/graph.php
course/report/stats/report.php
lib/statslib.php

index 4b764ced34b46fb7e84bfa855494d7e88efad5e9..b048341b3e590344a02ebe3957da965c954f604c 100644 (file)
@@ -37,7 +37,7 @@
     }
 
     $sql = 'SELECT '.((empty($param->fieldscomplete)) ? 'id,roleid,timeend,' : '').$param->fields
-    .' FROM '.$CFG->prefix.'stats_'.$param->table.' WHERE '
+    .' FROM '.$CFG->prefix.'stats_'.$param->table.'_tmp WHERE '
     .(($course->id == SITEID) ? '' : ' courseid = '.$course->id.' AND ')
      .((!empty($userid)) ? ' userid = '.$userid.' AND ' : '')
      .((!empty($roleid)) ? ' roleid = '.$roleid.' AND ' : '')
         $data = array();
         $times = array();
         $roles = array();
+        $missedlines = array();
         foreach ($stats as $stat) {
             $data[$stat->roleid][$stat->timeend] = $stat->line1;
-            if (!array_key_exists($stat->roleid,$roles)) {
-                $roles[$stat->roleid] = get_field('role','name','id',$stat->roleid);
+            if (!empty($stat->zerofixed)) {
+                $missedlines[] = $stat->timeend;
+            }
+            if ($stat->roleid != 0) {
+                if (!array_key_exists($stat->roleid,$roles)) {
+                    $roles[$stat->roleid] = get_field('role','name','id',$stat->roleid);
+                }
             }
             if (!array_key_exists($stat->timeend,$times)) {
                 $times[$stat->timeend] = userdate($stat->timeend,get_string('strftimedate'),$CFG->timezone);
             }
         }
+        $nonzeroroleid = 0;
         foreach (array_keys($data) as $roleid) {
+            if ($roleid == 0) {
+                continue;
+            }
             $graph->y_order[] = $roleid;
             $graph->y_format[$roleid] = array('colour' => $c[$roleid], 'line' => 'line','legend' => $roles[$roleid]);
+            $nonzeroroleid = $roleid;
         }
-        foreach (array_keys($data[$roleid]) as $time) {
+        foreach (array_keys($data[$nonzeroroleid]) as $time) {
             $graph->x_data[] = $times[$time];
         }
         foreach ($data as $roleid => $t) {
+            if ($roleid == 0) {
+                continue;
+            }
             foreach ($t as $time => $data) {
                 $graph->y_data[$roleid][] = $data;
             }
index f6da778f74525aad0f4b14c367e834e1ada46370..e862d50a1cbd0f817c8b485a3ba24eb62d1eb9a3 100644 (file)
@@ -41,7 +41,6 @@
                     WHERE u.id = ra.userid 
                           AND ra.contextid '.get_related_contexts_string($context);
         }
-
         if (!$us = get_records_sql($sql)) {
             error('Cannot enter detailed view: No users found for this course.');
         }
             $param->table = 'user_'.$param->table;
         }
         $sql = 'SELECT '.((empty($param->fieldscomplete)) ? 'id,roleid,timeend,' : '').$param->fields
-            .' FROM '.$CFG->prefix.'stats_'.$param->table.' WHERE '
+            .' FROM '.$CFG->prefix.'stats_'.$param->table.'_tmp WHERE '
             .(($course->id == SITEID) ? '' : ' courseid = '.$course->id.' AND ')
             .((!empty($userid)) ? ' userid = '.$userid.' AND ' : '')
             .((!empty($roleid)) ? ' roleid = '.$roleid.' AND ' : '')
             .' timeend >= '.$param->timeafter
             .' '.$param->extras
             .' ORDER BY timeend DESC';
-        error_log($sql);
+
         $stats = get_records_sql($sql);
 
         if (empty($stats)) {
             $data = array();
             $roles = array();
             $times = array();
+            $missedlines = array();
             foreach ($stats as $stat) {
+                if (!empty($stat->zerofixed)) {
+                    $missedlines[] = $stat->timeend;
+                }
                 $data[$stat->timeend][$stat->roleid] = $stat->line1;
-                if (!array_key_exists($stat->roleid,$roles)) {
-                    $roles[$stat->roleid] = get_field('role','name','id',$stat->roleid);
+                if ($stat->roleid != 0) {
+                    if (!array_key_exists($stat->roleid,$roles)) {
+                        $roles[$stat->roleid] = get_field('role','name','id',$stat->roleid);
+                    }
                 }
                 if (!array_key_exists($stat->timeend,$times)) {
                     $times[$stat->timeend] = userdate($stat->timeend,get_string('strftimedate'),$CFG->timezone);
                 }
             }
             foreach ($data as $time => $rolesdata) {
+                if (in_array($time,$missedlines)) {
+                    $rolesdata = array();
+                    foreach ($roles as $roleid => $guff) {
+                        if ($roleid == 0 ) {
+                            continue;
+                        }
+                        $rolesdata[$roleid] = 0;
+                    }
+                }
                 krsort($rolesdata); 
                 $row = array_merge(array($times[$time]),$rolesdata);
                 if (empty($CFG->loglifetime) || ($stat->timeend-(60*60*24)) >= (time()-60*60*24*$CFG->loglifetime)) {
index 50e1821fc68cad4de6ed9b7702239a08691b7ca8..97a7f4f9217f9efb1a2c412a9eb4c9a73d1bc0a7 100644 (file)
@@ -963,6 +963,7 @@ function stats_fix_zeros($stats,$timeafter,$timestr,$line2=true,$line3=false) {
     foreach ($stats as $s) {
         $actualtimes[] = $s->timeend;
     }
+
     $timeafter = array_pop($actualtimes);
 
     while ($timeafter < $now) {
@@ -983,6 +984,7 @@ function stats_fix_zeros($stats,$timeafter,$timestr,$line2=true,$line3=false) {
             $newobj = new StdClass;
             $newobj->timeend = $time;
             $newobj->id = 0;
+            $newobj->roleid = 0;
             $newobj->line1 = 0;
             if (!empty($line2)) {
                 $newobj->line2 = 0;
@@ -990,6 +992,7 @@ function stats_fix_zeros($stats,$timeafter,$timestr,$line2=true,$line3=false) {
             if (!empty($line3)) {
                 $newobj->line3 = 0;
             }
+            $newobj->zerofixed = true;
             $stats[] = $newobj;
         }
     }