Exemplo n.º 1
0
 protected function cheating_core($from_secord, $to_secord)
 {
     #$period_secord > 3600s, 1h.
     #$stepNum for now 60, never > 100.
     #so, $step_secord > 36s.
     $stepNum = Variables::getStepNum();
     $period_secord = $from_secord - $to_secord;
     $step_secord = (int) ($period_secord / $stepNum);
     $now = time();
     #_tp means time point.
     $beforebefore_tp = $now - $from_secord;
     $before_tp = $now - $to_secord;
     $res = Variables::chartjs_line_four_inited_with_time($beforebefore_tp, $step_secord, $stepNum, 'try', 'fine', 'cheating', 'other');
     $tasks = Task::period3($beforebefore_tp, $before_tp, 4);
     $cheatings = array();
     foreach ($tasks as $tk) {
         #$task_tp = $tk['time'];
         #$task_code = $tk['code'];
         #$task_zid = $tk['zid'];
         $task_tp = $tk->time;
         $task_code = $tk->code;
         $task_zid = $tk->zid;
         $i = (int) (($task_tp - $beforebefore_tp) / $step_secord);
         if ($i == $stepNum) {
             $i -= 1;
         }
         if ($task_code == -1) {
             $res['datasets'][0]['data'][$i] += 1;
         } elseif ($task_code == 0) {
             $res['datasets'][1]['data'][$i] += 1;
         } elseif ($task_code == 1) {
             $res['datasets'][2]['data'][$i] += 1;
             $cheatings[] = $task_zid;
         } else {
             $res['datasets'][3]['data'][$i] += 1;
         }
     }
     $res = json_encode($res);
     $url = action('TaskController@ccstep', ['']);
     return compact('res', 'from_secord', 'to_secord', 'url', 'cheatings');
 }