/** * 获取某期考试 按照地域分类,从高->低 * note: * 关联表: rd_exam_place rd_school */ private static function _get_exam_papers($exam_pid = 0) { $exam_pid = intval($exam_pid); if (!$exam_pid) { return array(); } if (self::$_exam_paper_data) { return self::$_exam_paper_data; } $db = Fn::db(); $sql = "SELECT * FROM v_summary_region_exam_paper\n WHERE exam_pid={$exam_pid}\n "; $query = $db->query($sql); $data = array(); //自由考试根据评估规则对比等级生成统计信息 $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); } while ($item = $query->fetch(PDO::FETCH_ASSOC)) { self::$_exam_paper_ids[] = $item['paper_id']; if ($comparison_level) { $tmp_arr = array(); if (in_array(0, $comparison_level) || in_array(-1, $comparison_level)) { $tmp_arr[] = 1; } if (in_array(1, $comparison_level)) { $tmp_arr[] = $item['province']; } if (in_array(2, $comparison_level)) { $tmp_arr[] = $item['city']; } if (in_array(3, $comparison_level)) { $tmp_arr[] = $item['area']; } if (in_array(100, $comparison_level)) { $tmp_arr[] = 'school' . $item['school_id']; } $data[$item['exam_id']][$item['paper_id']][] = $tmp_arr; } else { $arr = array(0 => 1, 1 => $item['province'], 2 => $item['city'], 3 => $item['area'], 4 => 'school' . $item['school_id']); if ($item['place_schclsid'] > 0) { $arr[5] = 'class' . $item['place_schclsid']; } $data[$item['exam_id']][$item['paper_id']][] = $arr; } } self::$_exam_paper_data = $data; return $data; }