示例#1
0
 /** Генерирует pdf файлы с тестом с заданным количеством вариантов */
 public function pdfTest(Request $request)
 {
     $question = new Question();
     $test = new Test();
     $test_controller = new TestController($test);
     $question_controller = new QuestionController($question);
     $test_name = $request->input('test');
     $num_var = $request->input('num-variants');
     $query = Test::whereTest_name($test_name)->select('amount', 'id_test')->first();
     $id_test = $query->id_test;
     $amount = $query->amount;
     // кол-во вопрососв в тесте
     $today = date("Y-m-d H-i-s");
     $dir = 'download/pdf_tests/' . $today;
     mkdir($dir);
     define('FPDF_FONTPATH', 'C:\\wamp\\www\\uir\\public\\fonts');
     for ($k = 1; $k <= $num_var; $k++) {
         // генерируем необходимое число вариантов
         $fpdf = new Mypdf();
         $answered_fpdf = new Mypdf();
         $this->headOfPdf($fpdf, $test_name, $k, $amount);
         $this->headOfPdf($answered_fpdf, $test_name, $k, $amount);
         $ser_array = $question_controller->prepareTest($id_test);
         // подготавливаем тест
         for ($i = 0; $i < $amount; $i++) {
             // показываем каждый вопрос из теста
             $id = $question_controller->chooseQuestion($ser_array);
             if (!$test_controller->rybaTest($id)) {
                 //проверка на вопрос по рыбе
                 return view('no_access');
             }
             $this->pdfQuestion($fpdf, $id, $i + 1);
             $this->pdfQuestion($answered_fpdf, $id, $i + 1, true);
             $fpdf->Ln(10);
             $answered_fpdf->Ln(10);
         }
         $fpdf->Output(iconv('utf-8', 'windows-1251', $dir . '/variant' . $k . '.pdf'), 'F');
         $answered_fpdf->Output(iconv('utf-8', 'windows-1251', $dir . '/answered_variant' . $k . '.pdf'), 'F');
     }
     $zip = $this->pdfToZip($dir);
     // создаем архив
     $this->delPdf($dir);
     // удаляем созданную папку с тестами
     $this->download($zip);
     // скачать архив
 }