Example #1
0
 /**
  * 下载班级报告
  */
 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');
     }
 }