/**
  * Erzeugt ein PDF auf Basis der übergebenen Funktion.
  * @param $module
  * @param $action
  * @param $param
  * @param null $filename falls kein Dateiname angegeben wird, wird das PDF direkt im Browser ausgegeben
  * @throws \Exception
  */
 public static function generate($module, $action, $param, $filename = null, $template = true, $margin = 0)
 {
     $druckinhalt = new WrapperControl(null, 'druck');
     $druckinhalt->setModule($module)->setAction($action)->addParams($param);
     $pdf = new \mPDF('de-DE', 'A4');
     $pdf->SetDisplayMode('fullpage');
     // Zeigt eine ganze Seite an, wenn das PDF in Acrobat geöffnet wird
     if ($margin > 0) {
         $pdf->SetTopMargin($margin);
     }
     $pdf->SetFooter('Seite {PAGENO} / {nb}');
     //file_get_contents('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css') .
     $stylesheet = file_get_contents('templates/print/css/default.css');
     $pdf->WriteHTML($stylesheet, 1);
     if ($template && file_exists('site/Print.template.html')) {
         $vars = ['heading' => Application::getCurrentResponse()->getMetadata()->getHeading()];
         $header = Parser::parse(null, null, $vars, file_get_contents('site/Print.template.html'));
         $pdf->WriteHTML($header, 2);
     }
     $pdf->WriteHTML($druckinhalt->toHtml(), 2);
     if ($filename === null) {
         $pdf->Output($module . $action . '.pdf', 'I');
     } else {
         //$filename = Files::validateFilename($filename);
         $pdf->Output($filename, 'F');
     }
     unset($pdf);
 }
 public function explainQuery()
 {
     if (!Debug::isEnabled()) {
         FlashMessage::danger('Zugriff verweigert');
         Application::getCurrentResponse()->redirectToFrontpage();
     }
     // TODO
 }
 public function showPage()
 {
     if (!isset($this->page)) {
         $this->site = new Site($this->request->site);
     } else {
         $this->site = new Site($this->page->pa_site);
     }
     Routing::resetBreadcrumbs();
     Routing::addBreadcrumb('Struktur');
     Routing::addBreadcrumb($this->site->si_bezeichnung, '/site/showPage/site' . $this->site->id);
     Application::getCurrentResponse()->heading = 'Seiten';
 }
 /**
  * Setzt die Informationen der geöffneten Seite den Request und Response
  * Objekten.
  *
  * @param Request $request
  * @param Page $page
  */
 public function setCurrentPage(&$request, $page)
 {
     Profiler::startSection('Routing.setCurrentPage');
     Application::getInstance()->setCurrentPage($page);
     $response = Application::getCurrentResponse();
     $request->module = $page->pa_module;
     $request->action = $page->pa_action;
     $request->innerTemplate = $page->pa_innertemplate;
     $request->parseParameter($page->pa_parameter);
     $this->generateBreadcrumbsForPage($page);
     Profiler::endSection('Routing.setCurrentPage');
 }
 public function indexUser()
 {
     Application::getCurrentResponse()->heading = 'Benutzer';
 }
 public function show()
 {
     $_SESSION['articleId'] = $this->request->id;
     $this->artikel = new CmsArtikel($this->request->id);
     $this->kategorie = new CmsKategorie($this->artikel->ca_kategorie);
     Application::getCurrentResponse()->heading = $this->artikel->titel;
 }
 public function indexHistorie()
 {
     Application::getCurrentResponse()->heading = 'Historie';
 }
 public function showDokumente()
 {
     $this->kollektion = Kollektion::loadByBezeichnung($this->request->bezeichnung);
     Application::getCurrentResponse()->heading = (string) $this->kollektion;
 }
 public function editEntity()
 {
     $this->current = Modules::getModule($this->request->current);
     $this->entity = $this->current->getEntity($this->request->id);
     Application::getCurrentResponse()->heading = $this->current;
 }
 /**
  * Wechselt die Identität des angemeldeten Benutzers
  * ACHTUNG! Besondere Sorgfalt bei der Berechtigungsprüfung von Nöten!
  */
 public function doAnmeldenAls()
 {
     // TODO: Berechtigung prüfen
     // TODO: DTV!
     $darfWechsel = Application::isAdmin() || Security::hatRolle('DTV-GS');
     if (!$darfWechsel) {
         FlashMessage::danger('Für diese Aktion haben Sie keine Berechtigung');
         Application::getCurrentResponse()->redirectToFrontpage();
     }
     $this->user = User::loadByBenutzername($this->request->benutzer);
     if ($this->user != null) {
         Security::loginUser($this->user);
         FlashMessage::success('Sie sind jetzt angemeldet als ' . $this->user);
     } else {
         FlashMessage::danger('Benutzername nicht bekannt');
     }
     Application::getCurrentResponse()->redirectToFrontpage();
 }
 public function indexImportprotokoll()
 {
     $this->import = new Import($this->request->import);
     Application::getCurrentResponse()->heading = 'Protokoll für ' . $this->import;
     Routing::resetBreadcrumbs();
     Routing::addBreadcrumb('Importe', EntityLinks::index($this->import));
     Routing::addBreadcrumb($this->import);
 }