private function bookOverview() { $loanHelper = new \Babesk\Schbas\Loan($this->_dataContainer); $schoolyear = $this->_em->getRepository('DM:SystemSchoolyears')->findOneByActive(true); $gradeId = filter_input(INPUT_POST, 'grade'); if (!$gradeId) { $this->_interface->dieError('Keine Klasse übergeben'); } $grade = $this->_em->find('DM:SystemGrades', $gradeId); $query = $this->_em->createQuery('SELECT u FROM DM:SystemUsers u INNER JOIN u.attendances a INNER JOIN a.schoolyear s WITH s = :schoolyear INNER JOIN a.grade g WITH g = :grade ORDER BY u.name, u.forename '); $query->setParameter('grade', $grade); $query->setParameter('schoolyear', $schoolyear); $users = $query->getResult(); // The only difference between the PDF for booksToReturn and // booksToLoan is the title and the included books $pdfTitle = ''; $syName = $schoolyear->getLabel(); $gradename = $grade->getGradelevel() . $grade->getLabel(); // [{ user: {<userdata>}, books: [{<bookdata>}] }] $usersWithBooks = []; if (isset($_POST['booksToReturn'])) { $pdfTitle = "Abzugebende Bücher für {$gradename} ({$syName})"; foreach ($users as $user) { $books = $loanHelper->lendBooksToReturnOfUserGet($user, $schoolyear); $usersWithBooks[] = ['user' => $user, 'books' => $books]; } } else { if (isset($_POST['booksToLoan'])) { $pdfTitle = "Noch auszuleihende Bücher für {$gradename} ({$syName})"; foreach ($users as $user) { $books = $loanHelper->loanBooksOfUserGet($user, ['schoolyear' => $schoolyear]); $usersWithBooks[] = ['user' => $user, 'books' => $books]; } } } $date = date('d.m.Y H:i:s'); $this->_smarty->assign('grade', $grade); $this->_smarty->assign('date', $date); $this->_smarty->assign('usersWithBooks', $usersWithBooks); $this->_smarty->assign('pdfTitle', $pdfTitle); $pdfContent = $this->_smarty->fetch(PATH_SMARTY_TPL . '/pdf/schbas-books-overview.pdf.tpl'); $pdf = new GeneralPdf($this->_pdo); $pdf->create($pdfTitle, $pdfContent); $pdf->output(); }