Esempio n. 1
0
 /**
  * 获取某期考试 按照地域 归档的考生id
  * note:
  * 		关联表:  rd_exam_place rd_school
  */
 private static function _get_exam_students($exam_pid = 0, $uid = 0)
 {
     $exam_pid = intval($exam_pid);
     if (!$exam_pid) {
         return array();
     }
     if (self::$_exam_student_data) {
         return self::$_exam_student_data;
     }
     $data = array();
     $db = Fn::db();
     //自由考试根据评估规则对比等级生成统计信息
     $sql = "SELECT comparison_level FROM rd_evaluate_rule er\n                LEFT JOIN rd_exam e ON e.exam_id = er.exam_pid\n                WHERE er.exam_pid = {$exam_pid} AND e.exam_isfree = 1";
     $comparison_level = $db->fetchOne($sql);
     if (strlen($comparison_level) > 0) {
         $comparison_level = explode(',', $comparison_level);
     } else {
         $sql = "SELECT eps.uid, ep.place_schclsid FROM rd_exam_place ep\n                    LEFT JOIN rd_exam_place_student eps ON eps.place_id = ep.place_id\n                    WHERE exam_pid = {$exam_pid} AND ep.place_schclsid > 0\n                    " . ($uid ? "AND eps.uid = {$uid}" : '');
         $uid_class = $db->fetchPairs($sql);
     }
     $sql = "SELECT * FROM v_summary_region_exam_student\n                WHERE exam_pid={$exam_pid}\n                " . ($uid ? "AND uid = {$uid}" : '');
     $query = $db->query($sql);
     while ($item = $query->fetch(PDO::FETCH_ASSOC)) {
         if ($comparison_level) {
             if (in_array(0, $comparison_level) || in_array(-1, $comparison_level)) {
                 $data[$item['exam_id']][1][] = $item['uid'];
             }
             if (in_array(1, $comparison_level)) {
                 $data[$item['exam_id']][$item['province']][] = $item['uid'];
             }
             if (in_array(2, $comparison_level)) {
                 $data[$item['exam_id']][$item['city']][] = $item['uid'];
             }
             if (in_array(3, $comparison_level)) {
                 $data[$item['exam_id']][$item['area']][] = $item['uid'];
             }
             if (in_array(100, $comparison_level)) {
                 $data[$item['exam_id']]['school' . $item['school_id']][] = $item['uid'];
             }
         } else {
             $data[$item['exam_id']][1][] = $item['uid'];
             $data[$item['exam_id']][$item['province']][] = $item['uid'];
             $data[$item['exam_id']][$item['city']][] = $item['uid'];
             $data[$item['exam_id']][$item['area']][] = $item['uid'];
             $data[$item['exam_id']]['school' . $item['school_id']][] = $item['uid'];
             if (isset($uid_class[$item['uid']]) && $uid_class[$item['uid']] > 0) {
                 $data[$item['exam_id']]['class' . $uid_class[$item['uid']]][] = $item['uid'];
             }
         }
     }
     self::$_exam_student_data = $data;
     return $data;
 }