/** * 下载班级报告 */ public function down_class_report($rule_id = 0) { $rule_id = intval($rule_id); $rule_id && ($rule = EvaluateRuleModel::get_evaluate_rule($rule_id)); if (empty($rule)) { message('不存在该评估规则'); } $save_file = realpath(dirname(APPPATH)) . "/cache/down_class_report/" . $rule_id . '.zip'; if (!file_exists($save_file)) { $place_id = $rule['place_id']; $schcls_ids = array(); if ($place_id > 0) { $place = ExamPlaceModel::get_place($place_id); if ($place['place_schclsid']) { $schcls_ids = array($place['place_schclsid']); } } else { $placelist = ExamPlaceModel::get_exam_place_list(array('exam_pid' => $rule['exam_pid']), 1, time()); foreach ($placelist as $item) { if ($item['place_schclsid']) { $schcls_ids[] = $item['place_schclsid']; } } } if (!$schcls_ids) { message('当前评估规则没有关联班级,无法下载班级报告!'); } $cls_list = SchoolModel::schoolClassListInfo(implode(',', $schcls_ids)); $dir_name = realpath(dirname(APPPATH)) . "/cache/down_class_report/" . $rule_id; if (!is_dir($dir_name)) { @mkdir($dir_name, 0777, true); } $pdf_dir = C('html2pdf_path') . '/zeming/report/'; $pdf_ready = false; foreach ($schcls_ids as $cls_id) { $dir = $pdf_dir . "{$rule_id}/class_{$cls_id}"; if (!is_dir($dir)) { continue; } $pdf_ready = true; $cls_name = $cls_list[$cls_id]['schcls_name']; $f = @dir($dir); if ($f) { while (false !== ($entry = $f->read())) { if ($entry != '.' && $entry != '..') { @copy($dir . '/' . $entry, $dir_name . '/' . $cls_name . '_' . $entry); } } } } if ($pdf_ready) { require_once APPPATH . 'libraries/Pclzip.php'; $archive = new PclZip($save_file); //将文件进行压缩 $archive->create($dir_name, PCLZIP_OPT_REMOVE_PATH, realpath(dirname(APPPATH)) . "/cache/down_class_report"); $this->rm_dir($dir_name); } else { message('班级报告PDF文件还未生成,无法下载!'); } } if (file_exists($save_file)) { $exam_name = ExamModel::get_exam($rule['exam_pid'], 'exam_name'); $subject_name = ''; if ($rule['subject_id'] > 0) { $subject_name = $this->_subject_name($rule['exam_pid'], $rule['subject_id']); } $filename = $exam_name . $subject_name . '班级报告'; Func::dumpFile('application/zip', $save_file, $filename . '.zip'); } }