classes/bfw/core/View.php
author Markus Bröker<broeker.markus@googlemail.com>
Sat, 12 Dec 2015 12:36:24 +0100
changeset 28 29a3e34acf64
parent 25 7fddaf017915
child 31 3a5ee3ba6006
permissions -rw-r--r--
Umstellung auf Netbeans: Quellcode mit NB neu formatiert
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
     1
<?php
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
     2
7
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
     3
/**
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
     4
 * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
     5
 *
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
     6
 */
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
     7
7
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
     8
namespace bfw\core;
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
     9
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    10
use Smarty;
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    11
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    12
require_once 'library/smarty/libs/Smarty.class.php';
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    13
9
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    14
class View {
28
29a3e34acf64 Umstellung auf Netbeans: Quellcode mit NB neu formatiert
Markus Bröker<broeker.markus@googlemail.com>
parents: 25
diff changeset
    15
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    16
    /**
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    17
     * Statische Referenz auf die reale Template Engine, hier Smarty
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    18
     *
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    19
     * @var Smarty
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    20
     */
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    21
    private static $tpl = null;
28
29a3e34acf64 Umstellung auf Netbeans: Quellcode mit NB neu formatiert
Markus Bröker<broeker.markus@googlemail.com>
parents: 25
diff changeset
    22
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    23
    /**
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    24
     * @var Model
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    25
     */
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    26
    private $model;
28
29a3e34acf64 Umstellung auf Netbeans: Quellcode mit NB neu formatiert
Markus Bröker<broeker.markus@googlemail.com>
parents: 25
diff changeset
    27
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    28
    /**
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    29
     * @var Controller
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    30
     */
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    31
    private $controller;
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    32
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    33
    /**
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    34
     * View constructor.
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    35
     *
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    36
     * @param Controller $controller
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    37
     * @param Model $model
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    38
     */
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    39
    public function __construct(Controller $controller, Model $model) {
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    40
        $this->controller = $controller;
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    41
        $this->model = $model;
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    42
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    43
        self::$tpl = self::getTemplateEngine();
25
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
    44
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
    45
        $request = $controller->getRequest();
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
    46
        $this->assign('controller', $request->get('controller', 'home'));
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
    47
        $this->assign('action', $request->get('action', 'index'));
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    48
    }
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    49
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    50
    /**
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    51
     * <b>Liefert ein statisches Handle auf die aktuelle Template Engine zurück</b>
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    52
     *
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    53
     * Das Singleton Pattern garantiert genau eine Instanz der Template Engine im Speicher.
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    54
     *
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    55
     *  <b>Verschiedene Skripte können so nacheinander Variablen zuweisen und diese bei Bedarf auslesen</b>
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    56
     *
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    57
     * @return Smarty
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    58
     */
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    59
    private static function getTemplateEngine() {
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    60
        if (self::$tpl == null) {
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    61
            self::$tpl = new Smarty();
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    62
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    63
            $tpl = self::$tpl;
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    64
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    65
            $tpl->setCompileDir('./data/templates_c/');
7
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
    66
            $tpl->setTemplateDir('./classes/bfw/mvc/view/');
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    67
        }
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    68
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    69
        return self::$tpl;
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    70
    }
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    71
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    72
    /**
9
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    73
     * @param $template
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    74
     * @return string
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    75
     */
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    76
    public function fetch($template) {
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    77
        return self::$tpl->fetch($template);
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    78
    }
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    79
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    80
    /**
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    81
     * <b>Anzeige der komplett gerenderten Seite mit dem Layout $layout</b>
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    82
     *
9
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    83
     * @param string $layout
28
29a3e34acf64 Umstellung auf Netbeans: Quellcode mit NB neu formatiert
Markus Bröker<broeker.markus@googlemail.com>
parents: 25
diff changeset
    84
     * @return int
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    85
     */
9
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
    86
    public function display($layout = 'layout.tpl') {
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    87
        $request = $this->controller->getRequest();
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    88
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    89
        $controller = $this->controller;
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    90
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    91
        $response = $controller->getResponse();
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
    92
        $this->assign('response', $response);
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
    93
18
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
    94
        $this->assign('request', $request);
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
    95
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
    96
        $model = $controller->getModel();
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
    97
        $user = $model->getUser();
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
    98
        $group = $model->getGroup();
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
    99
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
   100
        if ($request->getKey('isLoggedIn')) {
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
   101
            $user->find($request->getKey('user_id'));
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
   102
        }
95e61b581061 Vereinfachte Model
Markus Bröker <broeker.markus@googlemail.com>
parents: 9
diff changeset
   103
7
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
   104
        $this->assign('user', $user);
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
   105
        $this->assign('group', $group);
3ed6f90e97d9 Überarbeitete MVC-Struktur, die ich jetzt auch nachvollziehen kann.
Markus Bröker <broeker.markus@googlemail.com>
parents: 1
diff changeset
   106
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   107
        try {
9
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   108
            self::$tpl->display($layout);
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   109
        } catch (SmartyException $se) {
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   110
            $response->setStatusCode(404);
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
   111
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   112
            self::$tpl->display('layout.tpl');
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
   113
        }
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
   114
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   115
        // Msg wieder auf Null setzen...
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   116
        $request->setKey('msg', '');
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   117
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   118
        // Fehler wieder auf Null setzen...
25
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
   119
        $request->setKey('error', '');
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
   120
7fddaf017915 Die View erzeugt das UI und nicht mehr der Dispatcher
Markus Bröker <broeker.markus@googlemail.com>
parents: 18
diff changeset
   121
        return http_response_code();
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
   122
    }
1
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   123
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   124
    public function assign($key, $value) {
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   125
        self::$tpl->assign($key, $value);
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   126
    }
56e0dbd5c243 Aktualisierung des Frameworks
Markus Bröker <broeker.markus@googlemail.com>
parents: 0
diff changeset
   127
9
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   128
    /**
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   129
     * @param string $key
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   130
     * @return string
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   131
     */
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   132
    public function get($key) {
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   133
        return self::$tpl->getTemplateVars($key);
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   134
    }
8c2f3735a9bd Weitere Korrekturen nach dem Aufwachen
Markus Bröker <broeker.markus@googlemail.com>
parents: 7
diff changeset
   135
0
4869aea77e21 Bröker-Framework BFW-1
Markus Bröker <broeker.markus@googlemail.com>
parents:
diff changeset
   136
}