Aktualisierung des Frameworks
* find, store und delete beziehen sich auf den aktuellen Datensatz
* namespaces werden effizienter genutzt
--- a/classes/bfw/Dispatcher.php
+++ b/classes/bfw/Dispatcher.php
@@ -1,81 +1,86 @@
<?php
-namespace bfw {
+namespace bfw;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+
+use bfw\mvc\common\Controller;
+use bfw\mvc\common\View;
+use ReflectionClass;
+
+class Dispatcher {
+ private $request;
+
+ public function __construct() {
+ $this->request = new Request();
+ }
/**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ * @param $url
+ */
+ public static function route($url) {
+ header(sprintf("Location: %s", $url));
+ exit(0);
+ }
+
+ /**
+ * <b>Standard Request Handler für das Projekt</b>
+ *
+ * Diese Instanz kümmert sich selbständig um die GET- und POST Werte und
+ * speichert diese in der Session.
+ *
+ * Einfach zu nutzende Methoden(Schnittstelle zur Session) komplettieren diesen Handler
+ *
+ * @return Request
+ */
+ public function getRequest() {
+ return $this->request;
+ }
+
+ /**
+ * <b>Führt den jeweiligen Controller aus und liefert ein View zurück</b>
*
*/
-
- use bfw\mvc\controller\Controller as Controller;
- use bfw\mvc\view\View as View;
-
- class Dispatcher {
- private $request;
-
- public function __construct() {
- $this->request = new Request();
- }
+ public function getView() {
+ $controllerName = $this->request->get('controller');
+ $action = $this->request->get('action');
- /**
- * <b>Standard Request Handler für das Projekt</b>
- *
- * Diese Instanz kümmert sich selbständig um die GET- und POST Werte und
- * speichert diese in der Session.
- *
- * Einfach zu nutzende Methoden(Schnittstelle zur Session) komplettieren diesen Handler
- *
- * @return Request
- */
- public function getRequest() {
- return $this->request;
+ $this->request->keepRequestData();
+
+ if ($controllerName == '') {
+ $controllerName = 'home';
}
- /**
- * <b>Führt den jeweiligen Controller aus und liefert ein View zurück</b>
- *
- */
- public function getView() {
- $page = $this->request->get('page');
- $this->request->keepRequestData();
-
- if ($page == '') {
- $page = 'home';
- }
-
- try {
- $class = Controller::mapControllerName($page);
- $args = Controller::getArgsForController($class);
-
- $reflection = new \ReflectionClass($class);
- $controller = $reflection->newInstanceArgs($args);
-
- $prefix = str_replace('bfw\mvc\controller\\', '', strtolower($class));
- $controller->setPrefix(str_replace('controller', '', $prefix));
-
- // Mapping vom GET-Parameter 'page' auf Controller::$page()
- if ($reflection->hasMethod($page)) {
- $controller->$page();
- } else {
- $controller->index();
- }
- } catch (Exception $e) {
- $controller = new ErrorController(new TView('NON_EXISTENT'), $this->request);
- }
-
- $view = new View($controller, $controller->getModel());
- $view->assign('page', sprintf('%s/%s', $controller->getPrefix(), $page));
-
- return $view;
+ if ($action == '') {
+ $action = 'index';
}
- /**
- * @param $url
- */
- public static function route($url) {
- header(sprintf("Location: %s", $url));
- exit(0);
+ try {
+ $class = Controller::mapControllerName($controllerName);
+
+ $reflection = new ReflectionClass($class);
+ $controller = $reflection->newInstance();
+
+ $prefix = str_replace('bfw\mvc\controller\\', '', strtolower($class));
+ $controller->setPrefix(str_replace('controller', '', $prefix));
+
+ // Mapping vom GET-Parameter 'action' auf Controller::$action()
+ if ($reflection->hasMethod($action)) {
+ $controller->$action();
+ } else {
+ $controller->index();
+ }
+ } catch (Exception $e) {
+ $controller = new ErrorController(new TView('NON_EXISTENT'), $this->request);
}
+ $view = new View($controller, $controller->getModel());
+ $view->assign('action', sprintf('%s/%s', $controller->getPrefix(), $action));
+
+ return $view;
}
+
}
\ No newline at end of file
--- a/classes/bfw/Request.php
+++ b/classes/bfw/Request.php
@@ -1,249 +1,249 @@
<?php
-namespace bfw {
+namespace bfw;
+
+use bfw\mvc\model\TGroup;
+use bfw\mvc\model\TUser;
+use Logger;
- use bfw\mvc\model\TGroup as TGroup;
- use bfw\mvc\model\TUser as TUser;
+/**
+ * Class Request
+ */
+class Request {
+ private static $logger = null;
+
+ public function __construct() {
+ self::$logger = Logger::getLogger('__CLASS__');
+
+ $this->initSession();
+ }
/**
- * Class Request
+ * <b>Initialisiert die Session für das jeweilige Projekt</b>
+ *
+ *
*/
- class Request {
- private static $logger = null;
-
- public function __construct() {
- self::$logger = \Logger::getLogger('__CLASS__');
-
- $this->initSession();
- }
-
- /**
- * Liefert die Basis-URL des jeweiligen Projekts
- *
- * @return string
- */
- public static function getBaseUrl() {
- return sprintf("%s://%s",
- isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
- $_SERVER['SERVER_NAME']
+ public function initSession() {
+ if (!isset($_SESSION['prefix'])) {
+ $_SESSION['prefix'] = array(
+ 'get' => array(),
+ 'session' => array(),
+ 'isLoggedIn' => false,
+ 'user_id' => TUser::SYSTEM,
+ 'group_id' => TGroup::GUEST,
+ 'fehler' => 'Tickets for Free!',
+ 'msg' => 'Tickets for Free!',
+ 'lastpage' => 'home',
);
}
+ }
- /**
- * Liefert die komplette URL des jeweiligen Requests
- *
- * @return string
- */
- public static function getUrl() {
- return sprintf("%s%s", self::getBaseUrl(), $_SERVER['REQUEST_URI']);
- }
+ /**
+ * Liefert die komplette URL des jeweiligen Requests
+ *
+ * @return string
+ */
+ public static function getUrl() {
+ return sprintf("%s%s", self::getBaseUrl(), $_SERVER['REQUEST_URI']);
+ }
- /**
- * Keine Warnung, keine Gnade
- */
- public function destroySession() {
- unset($_SESSION['prefix']);
- @session_destroy();
+ /**
+ * Liefert die Basis-URL des jeweiligen Projekts
+ *
+ * @return string
+ */
+ public static function getBaseUrl() {
+ return sprintf("%s://%s",
+ isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
+ $_SERVER['SERVER_NAME']
+ );
+ }
- $this->initSession();
+ /**
+ * <b>Liefert einen gefilterten 'session' Wert
+ *
+ * Hierbei handelt es sich um einen zuvor gespeicherten POST-Wert,
+ * der in ['prefix']['session'] geladet ist...
+ *
+ * @param $param
+ * @param string $default
+ * @return string
+ */
+ public static function session($param, $default = '') {
+ if (isset($_SESSION['prefix']['session'][$param])) {
+ return $_SESSION['prefix']['session'][$param];
}
- /**
- * <b>Initialisiert die Session für das jeweilige Projekt</b>
- *
- *
- */
- public function initSession() {
- if (!isset($_SESSION['prefix'])) {
- $_SESSION['prefix'] = array(
- 'get' => array(),
- 'session' => array(),
- 'isLoggedIn' => false,
- 'user_id' => TUser::SYSTEM,
- 'group_id' => TGroup::GUEST,
- 'fehler' => 'Tickets for Free!',
- 'msg' => 'Tickets for Free!',
- 'lastpage' => 'home',
- );
- }
+ return $default;
+ }
+
+ /**
+ * <b>Liefert einen gefilterten 'get' Wert
+ *
+ * Hierbei handelt es sich um einen zuvor gespeicherten POST-Wert,
+ * der in ['prefix']['session'] geladet ist...
+ *
+ * @param $param
+ * @param string $default
+ * @return string
+ */
+ public static function getParameter($param, $default = '') {
+ if (isset($_SESSION['prefix']['get'][$param])) {
+ return $_SESSION['prefix']['get'][$param];
}
- /**
- * <b>Bei jedem Seitenaufruf werden die GET/Post Anfragen in der Session separiert gespeichert</b>
- *
- * Struktur:
- * GET Sachen ins 'get' array
- * POST Sachen ins 'session' array
- */
- public function keepRequestData() {
- foreach ($_GET as $key => $value) {
- $filteredKey = $this->filter($key);
- $filteredValue = $this->filter($value);
+ return $default;
+ }
- $_SESSION['prefix']['get'][$filteredKey] = $filteredValue;
- }
-
- foreach ($_POST as $key => $value) {
- $filteredKey = $this->filter($key);
- $filteredValue = $this->filter($value);
-
- $_SESSION['prefix']['session'][$filteredKey] = $filteredValue;
- }
+ /**
+ * <b>Holt einen Session Wert aus dem jeweiligen Prefix</b>
+ *
+ * @param $key
+ * @param string $default
+ * @param null $storage
+ * @return string
+ */
+ public static function getKey($key, $default = '', $storage = null) {
+ if ($storage != null) {
+ return $_SESSION['prefix'][$storage][$key];
}
- /**
- * <b>Statische Filtermethode für beliebige Strings/Array of Strings</b>
- *
- * filter_input kann nur mit GET/POST umgehen, diese Methode mit Allem.
- *
- * @param string $param
- * @return string|array
- */
- public static function filter($param) {
- if (is_array($param)) {
- $filtered = array();
- foreach ($param as $key => $value) {
- $filtered[self::filter($key)] = self::filter($value);
- }
-
- return $filtered;
- }
-
- return htmlspecialchars($param, ENT_QUOTES, 'utf-8');
- }
-
- /**
- * <b>Liefert einen gefilterten GET-Wert</b>
- *
- * @param $param
- * @return string
- */
- public function get($param) {
- return filter_input(INPUT_GET, $param);
+ if (isset($_SESSION['prefix'][$key])) {
+ return $_SESSION['prefix'][$key];
}
- /**
- * <b>Liefert einen gefilterten POST-Wert</b>
- *
- * @param $param
- * @return mixed|string
- */
- public function post($param) {
- return filter_input(INPUT_POST, $param);
- }
+ return $default;
+ }
- /**
- * <b>Liefert einen gefilterten 'session' Wert
- *
- * Hierbei handelt es sich um einen zuvor gespeicherten POST-Wert,
- * der in ['prefix']['session'] geladet ist...
- *
- * @param $param
- * @param string $default
- * @return string
- */
- public static function session($param, $default = '') {
- if (isset($_SESSION['prefix']['session'][$param])) {
- return $_SESSION['prefix']['session'][$param];
- }
+ /**
+ * <b>Löscht einen Get-Wert aus dem jeweiligen Prefix</b>
+ *
+ * @param $key
+ */
+ public static function deleteParameterKey($key) {
+ unset($_SESSION['prefix']['get'][$key]);
+ }
- return $default;
- }
+ /**
+ * <b>Löscht einen Session Wert aus dem jeweiligen Prefix</b>
+ *
+ * @param $key
+ */
+ public static function deleteKey($key) {
+ unset($_SESSION['prefix'][$key]);
+ }
- /**
- * <b>Liefert einen gefilterten 'get' Wert
- *
- * Hierbei handelt es sich um einen zuvor gespeicherten POST-Wert,
- * der in ['prefix']['session'] geladet ist...
- *
- * @param $param
- * @param string $default
- * @return string
- */
- public static function getParameter($param, $default = '') {
- if (isset($_SESSION['prefix']['get'][$param])) {
- return $_SESSION['prefix']['get'][$param];
- }
+ /**
+ * <b>Prüft, ob der aktuelle Request einen POST enthält</b>
+ *
+ * @return bool
+ */
+ public static function hasPost() {
+ return (isset($_POST));
+ }
+
+ /**
+ * Keine Warnung, keine Gnade
+ */
+ public function destroySession() {
+ unset($_SESSION['prefix']);
+ @session_destroy();
- return $default;
- }
+ $this->initSession();
+ }
- /**
- * <b>Setzt einen neuen Session Wert ins jeweilige Prefix</b>
- *
- * @param $key
- * @param $value
- */
- public function setKey($key, $value, $storage = null) {
- if ($storage != null) {
- $_SESSION['prefix'][$storage][self::filter($key)] = self::filter($value);
- } else {
- $_SESSION['prefix'][self::filter($key)] = self::filter($value);
- }
+ /**
+ * <b>Bei jedem Seitenaufruf werden die GET/Post Anfragen in der Session separiert gespeichert</b>
+ *
+ * Struktur:
+ * GET Sachen ins 'get' array
+ * POST Sachen ins 'session' array
+ */
+ public function keepRequestData() {
+ foreach ($_GET as $key => $value) {
+ $filteredKey = $this->filter($key);
+ $filteredValue = $this->filter($value);
+
+ $_SESSION['prefix']['get'][$filteredKey] = $filteredValue;
}
- /**
- * <b>Holt einen Session Wert aus dem jeweiligen Prefix</b>
- *
- * @param $key
- * @param string $default
- * @param null $storage
- * @return string
- */
- public static function getKey($key, $default = '', $storage = null) {
- if ($storage != null) {
- return $_SESSION['prefix'][$storage][$key];
+ foreach ($_POST as $key => $value) {
+ $filteredKey = $this->filter($key);
+ $filteredValue = $this->filter($value);
+
+ $_SESSION['prefix']['session'][$filteredKey] = $filteredValue;
+ }
+ }
+
+ /**
+ * <b>Statische Filtermethode für beliebige Strings/Array of Strings</b>
+ *
+ * filter_input kann nur mit GET/POST umgehen, diese Methode mit Allem.
+ *
+ * @param string $param
+ * @return string|array
+ */
+ public static function filter($param) {
+ if (is_array($param)) {
+ $filtered = array();
+ foreach ($param as $key => $value) {
+ $filtered[self::filter($key)] = self::filter($value);
}
- if (isset($_SESSION['prefix'][$key])) {
- return $_SESSION['prefix'][$key];
- }
-
- return $default;
- }
-
- /**
- * <b>Löscht einen Get-Wert aus dem jeweiligen Prefix</b>
- *
- * @param $key
- */
- public static function deleteParameterKey($key) {
- unset($_SESSION['prefix']['get'][$key]);
+ return $filtered;
}
- /**
- * <b>Löscht einen Session Wert aus dem jeweiligen Prefix</b>
- *
- * @param $key
- */
- public static function deleteKey($key) {
- unset($_SESSION['prefix'][$key]);
+ return htmlspecialchars($param, ENT_QUOTES, 'utf-8');
+ }
+
+ /**
+ * <b>Liefert einen gefilterten POST-Wert</b>
+ *
+ * @param $param
+ * @return mixed|string
+ */
+ public function post($param) {
+ return filter_input(INPUT_POST, $param);
+ }
+
+ /**
+ * <b>Setzt einen neuen Session Wert ins jeweilige Prefix</b>
+ *
+ * @param $key
+ * @param $value
+ */
+ public function setKey($key, $value, $storage = null) {
+ if ($storage != null) {
+ $_SESSION['prefix'][$storage][self::filter($key)] = self::filter($value);
+ } else {
+ $_SESSION['prefix'][self::filter($key)] = self::filter($value);
}
+ }
- /**
- * <b>Prüft, ob der aktuelle Request einen POST enthält</b>
- *
- * @return bool
- */
- public static function hasPost() {
- return (isset($_POST));
+ /**
+ * <b>Interne Debug-Funktion zum Anzeigen der Session Struktur</b>
+ *
+ * Beliebige URL mit ?debug=1 aufrufen und der Debug Mechanismus ist aktiviert.
+ *
+ * @return string
+ */
+ public function printSession() {
+ self::$logger->info(sprintf('SESSION: %s', print_r($_SESSION['prefix'], true)));
+
+ if ($this->get('debug') == '') {
+ return '';
}
- /**
- * <b>Interne Debug-Funktion zum Anzeigen der Session Struktur</b>
- *
- * Beliebige URL mit ?debug=1 aufrufen und der Debug Mechanismus ist aktiviert.
- *
- * @return string
- */
- public function printSession() {
- self::$logger->info(sprintf('SESSION: %s', print_r($_SESSION['prefix'], true)));
+ return "<br /><pre>" . print_r($_SESSION['prefix'], true) . "</pre>";
+ }
- if ($this->get('debug') == '') {
- return '';
- }
-
- return "<br /><pre>" . print_r($_SESSION['prefix'], true) . "</pre>";
- }
+ /**
+ * <b>Liefert einen gefilterten GET-Wert</b>
+ *
+ * @param $param
+ * @return string
+ */
+ public function get($param) {
+ return filter_input(INPUT_GET, $param);
}
}
\ No newline at end of file
--- a/classes/bfw/Response.php
+++ b/classes/bfw/Response.php
@@ -1,43 +1,42 @@
<?php
-namespace bfw {
+namespace bfw;
+/**
+ * Response Headers sind kompliziert
+ *
+ */
+class Response {
+ private $headers;
+ private $statusCode;
+
+ public function __construct() {
+ $this->headers = headers_list();
+ $this->statusCode = http_response_code();
+ }
+
+ public function getHeaders() {
+ return $this->headers;
+ }
+
+ public function getStatusCode() {
+ return $this->statusCode;
+ }
+
+ public function setStatusCode($statusCode) {
+ $this->statusCode = $statusCode;
+
+ return $this;
+ }
+
/**
- * Response Headers sind kompliziert
- *
+ * @return string
*/
- class Response {
- private $headers;
- private $statusCode;
-
- public function __construct() {
- $this->headers = headers_list();
- $this->statusCode = http_response_code();
- }
-
- public function getHeaders() {
- return $this->headers;
+ public function get($key) {
+ if (array_key_exists($key, $this->headers)) {
+ return $this->headers[$key];
}
- public function setStatusCode($statusCode) {
- $this->statusCode = $statusCode;
-
- return $this;
- }
-
- public function getStatusCode() {
- return $this->statusCode;
- }
+ return '';
+ }
- /**
- * @return string
- */
- public function get($key) {
- if (array_key_exists($key, $this->headers)) {
- return $this->headers[$key];
- }
-
- return '';
- }
-
- }
}
\ No newline at end of file
rename from classes/bfw/DBInterface.php
rename to classes/bfw/database/DBInterface.php
--- a/classes/bfw/DBInterface.php
+++ b/classes/bfw/database/DBInterface.php
@@ -1,33 +1,33 @@
<?php
-namespace bfw {
- interface DBInterface {
+namespace bfw\database;
- /* fetch methods */
- public function fetch($table, $cond);
+interface DBInterface {
+
+ /* fetch methods */
+ public function fetch($table, $cond);
- public function fetchAll($table, $cond);
+ public function fetchAll($table, $cond);
- /* find methoden */
- public function find($table, $id);
+ /* find methoden */
+ public function find($table, $id);
- public function findAll($table, $sys);
+ public function findAll($table, $sys);
- public function findByField($table, $field, $value);
+ public function findByField($table, $field, $value);
- function findAllByField($table, $field, $value);
+ function findAllByField($table, $field, $value);
- /* Abfrage Methoden */
- public function query($sql);
+ /* Abfrage Methoden */
+ public function query($sql);
- /* Persistence Methods */
- public function persist($table, $array);
+ /* Persistence Methods */
+ public function persist($table, $array);
- public function store($table, $id, $array);
+ public function store($table, $id, $array);
- public function delete($table, $id);
+ public function delete($table, $id);
- /* PK Management */
- public function getLastInsertedId();
- }
+ /* PK Management */
+ public function getLastInsertedId();
}
\ No newline at end of file
rename from classes/bfw/Database.php
rename to classes/bfw/database/Database.php
--- a/classes/bfw/Database.php
+++ b/classes/bfw/database/Database.php
@@ -1,438 +1,320 @@
<?php
-namespace bfw {
+namespace bfw\database;
+
+use Logger;
+use PDO;
+use PDOException;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+class Database implements DBInterface {
+ private static $logger = null;
+ private static $handle = null;
/**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
- *
+ * @var PDO
*/
- class Database implements DBInterface {
- private static $logger = null;
+ private $pdo;
- private $link;
- private static $handle = null;
+ private function __construct() {
+ self::$logger = Logger::getLogger('__CLASS__');
- private function __construct() {
- self::$logger = \Logger::getLogger('__CLASS__');
-
- $this->link = mysqli_connect($host = 'localhost', $user = 'ticketsystem', $password = 'ticketsystem', $database = 'ticketsystem');
- mysqli_set_charset($this->link, 'utf8');
- }
+ $dsn = 'mysql:host=localhost;dbname=ticketsystem';
+ $config = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
+ $this->pdo = new PDO($dsn, 'ticketsystem', 'ticketsystem', $config);
+ }
- /**
- * <b>Liefert das Singleton-Pattern der Datenbank-Schicht</b>
- *
- * Es existiert in einem Lauf, einem Scope, immer nur ein DB-Handle zur gleichen Zeit.
- *
- * Damit das ganze vernünftig flutscht, muss man natürlich berücksichtigen, dass ein SP state-lastig ist!
- *
- * Definition des States: Ein Abfrageergebnis stellt solange den State des SP da, bis eine neue Abfrage
- * einen neuen State erzeugt.
- *
- * @return Database|null
- */
- public static function getInstance() {
- if (self::$handle == null) {
- self::$handle = new Database();
- }
-
- return self::$handle;
+ /**
+ * <b>Liefert das Singleton-Pattern der Datenbank-Schicht</b>
+ *
+ * Es existiert in einem Lauf, einem Scope, immer nur ein DB-Handle zur gleichen Zeit.
+ *
+ * Damit das ganze vernünftig flutscht, muss man natürlich berücksichtigen, dass ein SP state-lastig ist!
+ *
+ * Definition des States: Ein Abfrageergebnis stellt solange den State des SP da, bis eine neue Abfrage
+ * einen neuen State erzeugt.
+ *
+ * @return Database
+ */
+ public static function getInstance() {
+ if (self::$handle == null) {
+ self::$handle = new Database();
}
- /**
- * <b>Std-Abfrage Methode der DB-Klasse</b>
- *
- * Das übergebene SQL-Statement wird als assoziatives, ein-oder mehrdimensionales Array zurück geliefert.
- *
- * array = (
- * 'id' => 1,
- * 'name' => 'Ticket',
- * );
- *
- * @param $sql
- * @return array|null
- */
- public function query($sql) {
- self::$logger->info(sprintf('%s(%s) ', __METHOD__, $sql));
+ return self::$handle;
+ }
- $result = mysqli_query($this->link, $sql);
-
- if ($result == false) {
- return null;
- }
-
- if ($result->num_rows == 0) {
- return null;
- }
-
- $rows = array();
- while (($row = $result->fetch_assoc())) {
- $rows[] = $row;
- }
-
-
- return $rows;
+ /**
+ * <b>Diese Methode löscht alle Tickets, History und Benutzer weg</b>
+ *
+ * Diese Methode sollte dann aufgerufen werden, wenn die Anwendung deployed wird
+ *
+ * Auf Deutsch: "Vor der Präsi alles weglöschen."
+ *
+ * @return bool
+ */
+ public function cleanup() {
+ try {
+ $status = $this->pdo->exec("DELETE FROM `t_ticket` WHERE `id` > 1;");
+ $status = $this->pdo->exec("DELETE FROM `t_history` WHERE `id` > 1;");
+ $status = $this->pdo->exec("DELETE FROM `t_user` WHERE `id` > 2;");
+ $status = $this->pdo->exec("ALTER TABLE `t_history` AUTO_INCREMENT = 1;");
+ $status = $this->pdo->exec("ALTER TABLE `t_ticket` AUTO_INCREMENT = 1;");
+ $status = $this->pdo->exec("ALTER TABLE `t_user` AUTO_INCREMENT = 2;");
+ } catch (PDOException $pdoe) {
+ return false;
}
- /**
- * <b>Abfragen, die kein ResultSet zurück liefern</b>
- *
- * SQL-Statements, die nur TRUE oder FALSE zurück liefern,
- * müssen per EXECUTE ausgeführt werden.
- *
- * @param $sql
- * @return bool|mysqli_result
- */
- public function execute($sql) {
- self::$logger->info(sprintf('%s(%s) ', __METHOD__, $sql));
+ return true;
+ }
- $result = mysqli_query($this->link, $sql);
+ /**
+ *
+ * @param string $table
+ * @param array $fields
+ * @param string $filename
+ * @param string $seperator
+ *
+ * @throws InvalidArgumentException
+ */
+ public function csvExport($table, $fields, $filename, $seperator = ';') {
+ $handle = fopen($filename, "w+");
- return $result;
+ if ($handle == FALSE) {
+ throw new InvalidArgumentException("Datei nicht gefunden: " . $filename);
}
- /**
- * <b>Die einfache Fetch-Methode für das Table-Row-Pattern</b>
- *
- * Es wird ein SQL Statement bezogen auf die aktuelle Tabelle zusammen
- * gebaut. Dieses kann optional eine WHERE clause beinhalten.
- *
- * @param $table
- * @param string $cond
- * @return array|null
- */
- public function fetch($table, $cond = 'id > 1') {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, $cond));
+ $rows = $this->fetchAll(sprintf("SELECT %s FROM `%s` ORDER BY `id`", implode(", ", $fields), $table));
+
+ fwrite($handle, sprintf("%s\n", implode($seperator, $fields)));
+ foreach ($rows as $row) {
+ fwrite($handle, sprintf("%s\n", implode($seperator, $row)));
+ }
+
+ fclose($handle);
+ }
- $sql = "
+ public function fetchAll($table, $cond) {
+ return $this->fetch($table, $cond);
+ }
+
+ /**
+ * @param $table
+ * @param $cond
+ * @return array|null
+ */
+ public function fetch($table, $cond) {
+ $stmt = $this->pdo->prepare(sprintf('
SELECT
*
FROM
- $table
- WHERE
- $cond
- ";
-
- $result = mysqli_query($this->link, $sql);
-
- if ($result == false) {
- return null;
- }
-
- return $result->fetch_assoc();
- }
-
- /**
- * <b>Die multiple Fetch-Methode für das Table-Row-Pattern</b>
- *
- * Der Rückgabewert ist ein Array mit allen Zeilen als assoziatives Array
- *
- * @param $table
- * @param string $cond
- * @return array|null
- */
- public function fetchAll($table, $cond = 'id > 0') {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, $cond));
-
- $sql = sprintf("
- SELECT
- *
- FROM
`%s`
WHERE
%s
- ", $table, $cond);
+ ', $table, $cond
+ ));
+
+ if ($stmt->execute()) {
+ return $stmt->fetch();
+ }
+
+ return null;
+ }
- return $this->query($sql);
+ /**
+ *
+ * @param string $table
+ * @param string $filename
+ * @param string $seperator
+ *
+ * @throws InvalidArgumentException
+ */
+ public function csvImport($table, $filename, $seperator = ';') {
+ $handle = fopen($filename, "r");
+
+ if ($handle == FALSE) {
+ throw new InvalidArgumentException("Datei nicht gefunden: " . $filename);
}
- /**
- * <b>Die einfache Find-Methode für das Table-Row-Pattern</b>
- *
- * Der Rückgabewert ist entweder die Tabellenzeile 'id' oder null
- * im assoziativen Array.
- *
- * @param $table
- * @param $id
- * @return array|null
- */
- public function find($table, $id) {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, $id));
+ $firstLine = trim(fgets($handle, 1024));
+ $firstExplodedLine = explode($seperator, $firstLine);
+ $firstImplodedLine = implode(", ", $firstExplodedLine);
- $sql = sprintf("
- SELECT
- *
- FROM
- `%s`
- WHERE
- `id` = %d
- ", $table, $id);
-
- $result = mysqli_query($this->link, $sql);
-
- if ($result == false) {
- return null;
+ while (($line = fgets($handle, 1024)) != NULL) {
+ $explodedLine = explode($seperator, trim($line));
+ $row = array();
+ foreach ($explodedLine as $explodedField) {
+ $row[] = "'$explodedField'";
}
- return $result->fetch_assoc();
+ $implodedLine = implode(", ", $row);
+ $this->pdo->exec(sprintf("INSERT INTO %s(id, %s) VALUES(NULL, %s);\n", $table, $firstImplodedLine, $implodedLine));
}
- /**
- * <b>Die multiple Find-Methode für das Table-Row-Pattern</b>
- *
- * Es liefert alle Reihen als assoziatives Array zurück.
- *
- * @param $table
- * @return array|null
- */
- public function findAll($table, $sys_id = 1) {
- self::$logger->info(sprintf('%s(%s) ', __METHOD__, $table));
+ fclose($handle);
+ }
- $sql = sprintf("
- SELECT
- *
- FROM
- `%s`
- WHERE
- `id` > %d
- ", $table, $sys_id);
+ public function find($table, $id) {
+ $stmt = $this->pdo->prepare(
+ sprintf('
+ SELECT
+ *
+ FROM
+ `%s`
+ WHERE
+ `id` = :id
+ ', $table
+ ));
- return $this->query($sql);
+ $stmt->bindParam(':id', $id);
+
+ $status = $stmt->execute();
+ if ($status) {
+ return $stmt->fetch(PDO::FETCH_ASSOC);
}
- /**
- * <b>Liefert ein Resultset bezogen auf ein bestimmtes Feld zurück</b>
- *
- * @param $table
- * @param $field
- * @param $value
- * @return array|null
- */
- public function findByField($table, $field, $value) {
- self::$logger->info(sprintf('%s(%s, %s, %s) ', __METHOD__, $table, $field, $value));
+ return null;
+ }
+
+ public function findAll($table, $sys) {
+ $stmt = $this->pdo->prepare(
+ sprintf('
+ SELECT
+ *
+ FROM
+ `%s`
+ WHERE
+ `id` > :id
+ ', $table
+ ));
+
+ $id = ($sys ? 0 : 1);
+ $stmt->bindParam(':id', $id);
- $sql = sprintf("
- SELECT
- *
- FROM
- `%s`
- WHERE
- `%s` = '%s'
- ", $table, $field, $value);
+ if ($stmt->execute()) {
+ return $stmt->fetchAll(PDO::FETCH_ASSOC);
+ }
+
+ return null;
+ }
- $result = mysqli_query($this->link, $sql);
+ public function findByField($table, $field, $value) {
+ $stmt = $this->pdo->prepare(
+ sprintf('
+ SELECT
+ *
+ FROM
+ `%s`
+ WHERE
+ `%s` = :value
+ ', $table, $field
+ ));
- if ($result == false) {
- return null;
- }
+ $stmt->bindParam(':value', $value);
- return $result->fetch_assoc();
+ if ($stmt->execute()) {
+ return $stmt->fetch(PDO::FETCH_ASSOC);
}
- /**
- * <b>Liefert mehrere Resultsets bezogen auf ein bestimmtes Feld zurück</b>
- *
- * @param $table
- * @param $field
- * @param $value
- * @return array|null
- */
- public function findAllByField($table, $field, $value) {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, $field));
+ return null;
+ }
- $sql = sprintf("
- SELECT
- *
- FROM
- `%s`
- WHERE
- `%s` = '%s'
- ", $table, $field, $value);
+ function findAllByField($table, $field, $value) {
+ $stmt = $this->pdo->prepare(
+ sprintf('
+ SELECT
+ *
+ FROM
+ `%s`
+ WHERE
+ `%s` = :value
+ ', $table, $field
+ ));
- return $this->query($sql);
+ $stmt->bindParam(':value', $value);
+
+ if ($stmt->execute()) {
+ return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
- /**
- * <b>Die Standard Persist Methode erstellt einen neuen DB-Eintrag in der angegebenen Tabelle</b>
- *
- * @param $table
- * @param $array
- * @return bool|mysqli_result
- */
- public function persist($table, $array) {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, print_r($array, true)));
+ return null;
+ }
+
+ public function query($sql) {
+ $stmt = $this->pdo->query($sql);
+
+ if ($stmt) {
+ return $stmt->fetchAll(PDO::FETCH_ASSOC);
+ }
+
+ return null;
+ }
+
+ public function persist($table, $array) {
+ self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, print_r($array, true)));
- $keys = array();
- foreach (array_keys($array) as $key) {
- if ($key != 'id') {
- $keys[] = sprintf("`%s`", $key);
- }
+ $keys = array();
+ foreach (array_keys($array) as $key) {
+ if ($key != 'id') {
+ $keys[] = sprintf("`%s`", $key);
}
+ }
- $fieldList = implode(", ", $keys);
+ $fieldList = implode(", ", $keys);
- $values = array();
- foreach ($array as $key => $value) {
- if ($key != 'id') {
- $values[] = sprintf("'%s'", $value);
- }
+ $values = array();
+ foreach ($array as $key => $value) {
+ if ($key != 'id') {
+ $values[] = sprintf("'%s'", $value);
}
+ }
- $fields = implode(",", $values);
+ $fields = implode(",", $values);
- $sql = sprintf("
+ $sql = sprintf("
INSERT INTO `%s`
(`id`, %s) VALUES (NULL, %s)
", $table, $fieldList, $fields);
- return $this->execute($sql);
+ return $this->pdo->exec($sql);
+ }
+
+ public function store($table, $id, $array) {
+ self::$logger->info(sprintf('%s(%s, %d, %s) ', __METHOD__, $table, $id, print_r($array, true)));
+
+ $list = array();
+ foreach ($array as $key => $value) {
+ if ($key != 'id') {
+ $list[] = sprintf("`%s` = '%s'", $key, $value);
+ }
}
- /**
- * <b>Die Standard store Methode aktualisiert einen DB-Eintrag in der angegebenen Tabelle</b>
- *
- * @param $table
- * @param $id
- * @param $array
- * @return bool
- */
- public function store($table, $id, $array) {
- self::$logger->info(sprintf('%s(%s, %d, %s) ', __METHOD__, $table, $id, print_r($array, true)));
+ $listItems = implode(", ", $list);
- $list = array();
- foreach ($array as $key => $value) {
- if ($key != 'id') {
- $list[] = sprintf("`%s` = '%s'", $key, $value);
- }
- }
-
- $listItems = implode(", ", $list);
-
- $sql = sprintf("
+ $sql = sprintf("
UPDATE `%s`
SET %s
WHERE `id` = %d
", $table, $listItems, $id);
-
- return $this->execute($sql);
- }
+ return $this->pdo->exec($sql);
+ }
- /**
- * <b>Die Standard Delete Methode löscht einen bestehenden DB-Eintrag aus der angegebenen Tabelle</b>
- *
- * @param $table
- * @param $id
- * @return bool
- */
- public function delete($table, $id) {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, $id));
+ public function delete($table, $id) {
+ self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $table, $id));
- $sql = sprintf("
+ $sql = sprintf("
DELETE FROM `%s`
WHERE `id` = %d;
", $table, $id);
- return $this->execute($sql);
- }
-
- /**
- * <b>Liefert die letzte, verwendete ID, die eingefügt wurde.</b>
- *
- * Es gilt zu beachten, dass es sich hierbei um eine state-behaftete Methode handelt.
- *
- * <b>Nach 3 Inserts liefert diese Methode definitiv nur den PK des letzten INSERTS.</b>
- *
- * @return int|string
- */
- public function getLastInsertedId() {
- $lastInsertedId = mysqli_insert_id($this->link);
-
- self::$logger->info(sprintf('%s(): %d', __METHOD__, $lastInsertedId));
-
- return $lastInsertedId;
- }
-
- /**
- * <b>Diese Methode löscht alle Tickets, History und Benutzer weg</b>
- *
- * Diese Methode sollte dann aufgerufen werden, wenn die Anwendung deployed wird
- *
- * Auf Deutsch: "Vor der Präsi alles weglöschen."
- *
- * @return bool
- */
- public function cleanup() {
- $status = $this->execute("DELETE FROM `t_ticket` WHERE `id` > 1;");
- $status &= $this->execute("DELETE FROM `t_history` WHERE `id` > 1;");
- $status &= $this->execute("DELETE FROM `t_user` WHERE `id` > 2;");
-
- $status &= $this->execute("ALTER TABLE `t_history` AUTO_INCREMENT = 1;");
- $status &= $this->execute("ALTER TABLE `t_ticket` AUTO_INCREMENT = 1;");
- $status &= $this->execute("ALTER TABLE `t_user` AUTO_INCREMENT = 2;");
-
- return $status;
- }
+ return $this->pdo->exec($sql);
+ }
- /**
- * <b>Import von Datensätzen im CSV-Format(besser gesagt SSV-Format)</b>
- *
- * Die Tabelle 'table' wird automatisiert mit den Werten aus der SSV-Datei befüllt.
- *
- * @param $table
- * @param $filename
- * @return bool
- */
- public function csvImport($table, $filename) {
- $db = Database::getInstance();
-
- $handle = fopen($filename, 'r');
-
- $lines = array();
- while (!feof($handle)) {
- $lines[] = trim(fgets($handle), "[\r\n\t]");
- }
-
- fclose($handle);
-
- if (count($lines) < 2) {
- return false;
- }
-
- $spaltenKoepfeArray = explode(';', $lines[0]);
- for ($i = 0; $i < count($spaltenKoepfeArray); $i++) {
- $spaltenKoepfeArray[$i] = sprintf("`%s`", $spaltenKoepfeArray[$i]);
- }
-
- $spaltenInhaltArray = array();
- for ($i = 1; $i < count($lines); $i++) {
- $spaltenInhaltArray[] = explode(';', $lines[$i]);
- }
-
- $spaltenKoepfe = implode(', ', $spaltenKoepfeArray);
-
- foreach ($spaltenInhaltArray as $sia) {
- for ($i = 0; $i < count($sia); $i++) {
-
- if ($spaltenKoepfeArray[$i] == '`last_access`') {
- $sia[$i] = sprintf("'%s'", date("Y-m-d H:i:s"));
- } else {
- $sia[$i] = sprintf("'%s'", $sia[$i]);
- }
- }
-
- $spaltenInhalt = implode(', ', $sia);
- if (count($spaltenKoepfeArray) == count($sia)) {
- $sql = sprintf("INSERT INTO %s(id, %s) VALUES(NULL, %s);", $table, $spaltenKoepfe, $spaltenInhalt);
- if (!$db->execute($sql)) {
-
- return false;
- }
- }
- }
-
- return true;
- }
-
+ public function getLastInsertedId() {
+ return $this->pdo->lastInsertId();
}
}
\ No newline at end of file
rename from classes/bfw/mvc/controller/Controller.php
rename to classes/bfw/mvc/common/Controller.php
--- a/classes/bfw/mvc/controller/Controller.php
+++ b/classes/bfw/mvc/common/Controller.php
@@ -1,186 +1,135 @@
<?php
-namespace bfw\mvc\controller {
+namespace bfw\mvc\common;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+
+use bfw\Request;
+use bfw\Response;
+
+/**
+ *
+ */
+abstract class Controller {
+ /**
+ * @var Model
+ */
+ private $model;
+
+ /**
+ * @var Request
+ */
+ private $request;
+
+ /**
+ * @var Response
+ */
+ private $response;
+
+ /**
+ * @var View
+ */
+ private $view;
+
+ /**
+ * @var
+ */
+ private $prefix;
+
+ /**
+ * Controller constructor.
+ *
+ * @param Model $model
+ * @param Request $request
+ */
+ public function __construct(Model $model) {
+ $this->request = new Request();
+ $this->response = new Response();
+
+ $this->model = $model;
+ $this->view = new View($this, $model);
+
+ $this->prefix = '';
+ }
/**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
- *
+ * @param $controller
+ * @return string
*/
+ public static function mapControllerName($controller) {
+ return sprintf('bfw\mvc\controller\%sController', ucfirst($controller));
+ }
+
+ public function getView() {
+ return $this->view;
+ }
+
+ public function setView($view) {
+ $this->view = $view;
+
+ return $this;
+ }
+
+ public function getResponse() {
+ return $this->response;
+ }
+
+ public function setResponse($response) {
+ $this->response = $response;
+
+ return $this;
+ }
+
+ /**
+ * @return Model
+ */
+ public function getModel() {
+ return $this->model;
+ }
- use bfw\mvc\model\Model;
- use bfw\mvc\model\THistory;
- use bfw\mvc\model\TTicket;
- use bfw\mvc\model\TUser;
- use bfw\mvc\view\View;
- use bfw\Request;
- use bfw\Response;
+ /**
+ * @param $model
+ * @return $this
+ */
+ public function setModel($model) {
+ $this->model = $model;
+
+ return $this;
+ }
+
+ /**
+ * @return Request
+ */
+ public function getRequest() {
+ return $this->request;
+ }
- interface ActionInterface {
- public function index();
+ /**
+ * @return string
+ */
+ public function getPage() {
+ if ($this->getPrefix() != '') {
+ return sprintf('%s/%s', $this->prefix, $this->request->get('action'));
+ }
+
+ return $this->request->get('action');
+ }
+
+ public function getPrefix() {
+ return $this->prefix;
+ }
+
+ public function setPrefix($prefix) {
+ $this->prefix = $prefix;
+
+ return $this;
}
/**
*
*/
- abstract class Controller implements ActionInterface {
- /**
- * @var Model
- */
- private $model;
-
- /**
- * @var Request
- */
- private $request;
-
- /**
- * @var Response
- */
- private $response;
-
- /**
- * @var View
- */
- private $view;
-
- /**
- * @var
- */
- private $prefix;
-
- /**
- * Controller constructor.
- *
- * @param Model $model
- * @param Request $request
- */
- public function __construct(Model $model, Request $request) {
- $this->request = $request;
- $this->response = new Response();
-
- $this->model = $model;
- $this->view = new View($this, $model);
-
- $this->prefix = '';
- }
-
- public function getPrefix() {
- return $this->prefix;
- }
-
- public function setPrefix($prefix) {
- $this->prefix = $prefix;
-
- return $this;
- }
-
- public function getView() {
- return $this->view;
- }
-
- public function setView($view) {
- $this->view = $view;
-
- return $this;
- }
-
- public function getResponse() {
- return $this->response;
- }
-
- public function setResponse($response) {
- $this->response = $response;
-
- return $this;
- }
-
- /**
- * @return Model
- */
- public function getModel() {
- return $this->model;
- }
-
- /**
- * @param $model
- * @return $this
- */
- public function setModel($model) {
- $this->model = $model;
-
- return $this;
- }
-
- /**
- * @return Request
- */
- public function getRequest() {
- return $this->request;
- }
-
- /**
- * @return string
- */
- public function getPage() {
- if ($this->getPrefix() != '') {
- return sprintf('%s/%s', $this->prefix, $this->request->get('page'));
- }
-
- return $this->request->get('page');
- }
-
- /**
- * @param $page
- * @return string
- */
- public static function mapControllerName($page) {
- switch ($page) {
- case 'benutzerverwaltung':
- case 'meinprofil':
- case 'resetpasswort':
- case 'registrieren':
- case 'anmelden':
- case 'abmelden':
- return 'bfw\mvc\controller\BenutzerverwaltungsController';
- case 'home':
- return 'bfw\mvc\controller\HomeController';
- case 'tickets':
- case 'ticketanlegen':
- return 'bfw\mvc\controller\TicketsController';
- case 'historie':
- return 'bfw\mvc\controller\HistoryController';
-
- default:
- return 'bfw\mvc\controller\ErrorController';
- }
- }
-
- public static function getArgsForController($controllerName) {
- switch ($controllerName) {
- case 'bfw\mvc\controller\BenutzerverwaltungsController':
- $model = new TUser();
-
- return array($model, new Request());
- case 'bfw\mvc\controller\HistoryController':
- $model = new THistory();
-
- return array($model, new Request());
- case 'bfw\mvc\controller\HomeController':
- $model = new TUser();
-
- return array($model, new Request());
- case 'bfw\mvc\controller\TicketsController':
- $model = new TTicket();
-
- return array($model, new Request());
- default:
- $model = new TUser();
-
- return array($model, new Request());
- }
-
- throw new InvalidArgumentException(sprintf('Unbekannter Controller für %s', $controllerName));
- }
-
- }
+ abstract public function index();
}
\ No newline at end of file
rename from classes/bfw/mvc/model/Model.php
rename to classes/bfw/mvc/common/Model.php
--- a/classes/bfw/mvc/model/Model.php
+++ b/classes/bfw/mvc/common/Model.php
@@ -1,217 +1,226 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\common;
+
+use bfw\database\Database;
+use Logger;
- use bfw\Database;
+/**
+ * Class Model
+ *
+ * Model besitzt einen State in $data
+ *
+ *
+ * @method string getId()
+ * @method setId($param)
+ */
+class Model {
+ private static $logger = null;
+
+ protected $table;
+ protected $db;
+
+ protected $data;
/**
- * Class Model
- *
- * Model besitzt einen State in $data
- *
- *
- * @method string getId()
- * @method setId($param)
+ * @param $table
*/
- class Model {
- private static $logger = null;
-
- protected $table;
- protected $db;
+ public function __construct($table) {
+ self::$logger = Logger::getLogger('__CLASS__');
- protected $data;
+ $this->db = Database::getInstance();
- public function getData() {
- return $this->data;
- }
+ $this->table = $table;
+ $this->data = array();
+ }
- /**
- * <b>Herzstück des Persistence-Frameworks</b>
- *
- * Dynamische Erzeugung von Getttern- und Settern
- *
- * Anstatt diese explizit zu pflegen und zu warten,
- * werden Diese dynamisch, on, the fly, erzeugt.
- *
- * <b>Der Vorteil: Nicht Konfigurieren, nicht Erzeugen. Einfach Nutzen...</b>
- *
- * @param $methodName
- * @param null $params
- * @return $this
- */
- public function __call($methodName, $params = null) {
- $prefix = substr($methodName, 0, 3);
- $key = strtolower(substr($methodName, 3));
+ /**
+ * <b>Herzstück des Persistence-Frameworks</b>
+ *
+ * Dynamische Erzeugung von Getttern- und Settern
+ *
+ * Anstatt diese explizit zu pflegen und zu warten,
+ * werden Diese dynamisch, on, the fly, erzeugt.
+ *
+ * <b>Der Vorteil: Nicht Konfigurieren, nicht Erzeugen. Einfach Nutzen...</b>
+ *
+ * @param $methodName
+ * @param null $params
+ * @return $this
+ */
+ public function __call($methodName, $params = null) {
+ $prefix = substr($methodName, 0, 3);
+ $key = strtolower(substr($methodName, 3));
- if ($prefix == 'set') {
- $value = $params[0];
-
- $this->data[$key] = $value;
+ if ($prefix == 'set') {
+ $value = $params[0];
- // fluent please!
- return $this;
-
- } else if ($prefix == 'get') {
- if (array_key_exists($key, $this->data)) {
- return $this->data[$key];
- }
+ // no data, no state, null
+ if (!is_array($this->data)) {
+ return null;
}
- exit(sprintf('Unbekannte Methode %s::%s(%s, %s) wurde aufgerufen.', get_class($this), $methodName, $key, $prefix));
- }
+ $this->data[$key] = $value;
- /**
- * @param $table
- */
- public function __construct($table) {
- self::$logger = \Logger::getLogger('__CLASS__');
+ // fluent please!
+ return $this;
- $this->db = Database::getInstance();
- $this->table = $table;
- $this->data = array();
- }
+ } else if ($prefix == 'get') {
- /**
- * <b>Vereinfachte Find Methode bezogen auf die jeweilige Instanz</b>
- *
- * @param $id
- * @return Model
- */
- public function find($id) {
- self::$logger->info(sprintf('%s(%d) ', __METHOD__, $id));
-
- if (($this->data = $this->db->find($this->table, $id)) == null) {
+ // no data, no state, null
+ if (!is_array($this->data)) {
return null;
}
- return $this;
+ if (array_key_exists($key, $this->data)) {
+ return $this->data[$key];
+ }
+ }
+
+ exit(sprintf('Unbekannte Methode %s::%s(%s, %s) wurde aufgerufen.', get_class($this), $methodName, $key, $prefix));
+ }
+
+ /**
+ * <b>Vereinfachte Find Methode bezogen auf die jeweilige Instanz</b>
+ *
+ * @param $id
+ * @return Model
+ */
+ public function find($id) {
+ self::$logger->info(sprintf('%s(%d) ', __METHOD__, $id));
+
+ if (($this->data = $this->db->find($this->table, $id)) == null) {
+ return null;
}
- /**
- * <b>Die Findall Methode erzeugt typsicher den Supertyp</b>
- *
- * @param bool|false $sys
- * @return Model[]
- */
- public function findAll($sys = false) {
- self::$logger->info(sprintf('%s() ', __METHOD__));
-
- $initial_id = ($sys) ? 0 : 1;
- $rows = $this->db->findAll($this->table, $initial_id);
+ return $this;
+ }
- if (count($rows) == 0) {
- return array();
- }
+ /**
+ * <b>Die Findall Methode erzeugt typsicher den Supertyp</b>
+ *
+ * @param bool|false $sys
+ * @return Model[]
+ */
+ public function findAll($sys = false) {
+ self::$logger->info(sprintf('%s() ', __METHOD__));
- $list = array();
- foreach ($rows as $row) {
- $item = new static();
- $item->data = $row;
+ $initial_id = ($sys) ? 0 : 1;
+ $rows = $this->db->findAll($this->table, $initial_id);
- $list[] = $item;
- }
-
- self::$logger->info(sprintf('%s(): %d', __METHOD__, count($list)));
-
- return $list;
+ if (count($rows) == 0) {
+ return array();
}
- /**
- * <b>Vereinfachte FindByField Methode</b>
- *
- * @param $field
- * @param $value
- * @return Model
- */
- public function findByField($field, $value) {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $field, $value));
+ $list = array();
+ foreach ($rows as $row) {
+ $item = new static();
+ $item->data = $row;
+
+ $list[] = $item;
+ }
+
+ self::$logger->info(sprintf('%s(): %d', __METHOD__, count($list)));
+
+ return $list;
+ }
- $this->data = $this->db->findByField($this->table, $field, $value);
+ /**
+ * <b>Vereinfachte FindByField Methode</b>
+ *
+ * @param $field
+ * @param $value
+ * @return Model
+ */
+ public function findByField($field, $value) {
+ self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $field, $value));
- // Keine Daten, keine Instanz
- if ($this->data == null) {
- return null;
- }
+ $this->data = $this->db->findByField($this->table, $field, $value);
- return $this;
+ // Keine Daten, keine Instanz
+ if ($this->data == null) {
+ return null;
}
- /**
- * <b>Vereinfachte FindAllByField Methode</b>
- *
- * Erzeugt on the fly ein array mit dem Supertyp der Klasseninstanz
- * @param $field
- * @param $value
- * @return Model[]
- */
- public function findAllByField($field, $value) {
- self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $field, $value));
-
- $rows = $this->db->findAllByField($this->table, $field, $value);
+ return $this;
+ }
- if ($rows == null) {
- return null;
- }
+ /**
+ * <b>Vereinfachte FindAllByField Methode</b>
+ *
+ * Erzeugt on the fly ein array mit dem Supertyp der Klasseninstanz
+ * @param $field
+ * @param $value
+ * @return Model[]
+ */
+ public function findAllByField($field, $value) {
+ self::$logger->info(sprintf('%s(%s, %s) ', __METHOD__, $field, $value));
- $list = array();
- foreach ($rows as $row) {
- $item = new static();
- $item->data = $row;
+ $rows = $this->db->findAllByField($this->table, $field, $value);
+
+ if ($rows == null) {
+ return null;
+ }
- $list[] = $item;
- }
+ $list = array();
+ foreach ($rows as $row) {
+ $item = new static();
+ $item->data = $row;
- return $list;
+ $list[] = $item;
}
- /**
- * <b>Vereinfachte persist Methode</b>
- *
- * Der Logger loggt nur die Nutzdaten, deswegen sieht das im Log identisch aus.
- *
- * Es handelt sich allerdings einmal um ein Objekt und einmal nur um ein Array.
- *
- * @param $object
- * @return bool
- */
- public function persist($object) {
- self::$logger->info(sprintf('%s(%s)', __METHOD__, print_r($object->getData(), true)));
+ return $list;
+ }
+
+ /**
+ * <b>Vereinfachte persist Methode</b>
+ *
+ * Der Logger loggt nur die Nutzdaten, deswegen sieht das im Log identisch aus.
+ *
+ * Es handelt sich allerdings einmal um ein Objekt und einmal nur um ein Array.
+ *
+ * @return bool
+ */
+ public function persist() {
+ self::$logger->info(sprintf('%s(%s)', __METHOD__, print_r($this->getData(), true)));
- return $this->db->persist($this->table, $object->getData());
+ return $this->db->persist($this->table, $this->getData());
+ }
+
+ public function getData() {
+ return $this->data;
+ }
+
+ /**
+ * <b>Vereinfachte store Methode</b>
+ *
+ * @return bool
+ */
+ public function store() {
+ self::$logger->info(sprintf('%s(%d, %s)', __METHOD__, $this->getId(), print_r($this->getData(), true)));
+
+ if ($this->getId() > 1) {
+ return $this->db->store($this->table, $this->getId(), $this->getData());
}
- /**
- * <b>Vereinfachte store Methode</b>
- *
- * @param $id
- * @param $object
- * @return bool
- */
- public function store($id, $object) {
- self::$logger->info(sprintf('%s(%d, %s)', __METHOD__, $id, print_r($object->getData(), true)));
+ return false;
+ }
- if ($id > 1) {
- return $this->db->store($this->table, $id, $object->getData());
- }
+ /**
+ * <b>Vereinfachte delete Methode</b>
+ *
+ * @param $id
+ * @return bool
+ */
+ public function delete() {
+ self::$logger->info(sprintf('%s(%d) ', __METHOD__, $this->getId()));
- return false;
+ if ($this->getId() > 1) {
+ return $this->db->delete($this->table, $this->getId());
}
- /**
- * <b>Vereinfachte delete Methode</b>
- *
- * @param $id
- * @return bool
- */
- public function delete($id) {
- self::$logger->info(sprintf('%s(%d) ', __METHOD__, $id));
+ return false;
+ }
- if ($id > 1) {
- return $this->db->delete($this->table, $id);
- }
-
- return false;
- }
-
- }
}
\ No newline at end of file
rename from classes/bfw/mvc/view/View.php
rename to classes/bfw/mvc/common/View.php
--- a/classes/bfw/mvc/view/View.php
+++ b/classes/bfw/mvc/common/View.php
@@ -1,115 +1,111 @@
<?php
-namespace bfw\mvc\view {
+namespace bfw\mvc\common;
- use bfw\mvc\controller\Controller;
- use bfw\mvc\model\Model;
- use bfw\mvc\model\TGroup;
- use bfw\mvc\model\TStatus;
- use bfw\mvc\model\TUser;
+use bfw\mvc\model\TGroup;
+use bfw\mvc\model\TStatus;
+use bfw\mvc\model\TUser;
+use Smarty;
+
+require_once 'library/smarty/libs/Smarty.class.php';
- require_once 'library/smarty/libs/Smarty.class.php';
-
- class View extends \Smarty {
- /**
- * @var Model
- */
- private $model;
+class View extends Smarty {
+ /**
+ * Statische Referenz auf die reale Template Engine, hier Smarty
+ *
+ * @var Smarty
+ */
+ private static $tpl = null;
+ /**
+ * @var Model
+ */
+ private $model;
+ /**
+ * @var Controller
+ */
+ private $controller;
- /**
- * @var Controller
- */
- private $controller;
+ /**
+ * View constructor.
+ *
+ * @param Controller $controller
+ * @param Model $model
+ */
+ public function __construct(Controller $controller, Model $model) {
+ $this->controller = $controller;
+ $this->model = $model;
- /**
- * Statische Referenz auf die reale Template Engine, hier Smarty
- *
- * @var Smarty
- */
- private static $tpl = null;
+ self::$tpl = self::getTemplateEngine();
+ }
- /**
- * View constructor.
- *
- * @param Controller $controller
- * @param Model $model
- */
- public function __construct(Controller $controller, Model $model) {
- $this->controller = $controller;
- $this->model = $model;
+ /**
+ * <b>Liefert ein statisches Handle auf die aktuelle Template Engine zurück</b>
+ *
+ * Das Singleton Pattern garantiert genau eine Instanz der Template Engine im Speicher.
+ *
+ * <b>Verschiedene Skripte können so nacheinander Variablen zuweisen und diese bei Bedarf auslesen</b>
+ *
+ * @return Smarty
+ */
+ private static function getTemplateEngine() {
+ if (self::$tpl == null) {
+ self::$tpl = new Smarty();
- self::$tpl = self::getTemplateEngine();
+ $tpl = self::$tpl;
+
+ $tpl->setCompileDir('./data/templates_c/');
+ $tpl->setTemplateDir('./templates/');
}
- /**
- * <b>Liefert ein statisches Handle auf die aktuelle Template Engine zurück</b>
- *
- * Das Singleton Pattern garantiert genau eine Instanz der Template Engine im Speicher.
- *
- * <b>Verschiedene Skripte können so nacheinander Variablen zuweisen und diese bei Bedarf auslesen</b>
- *
- * @return Smarty
- */
- private static function getTemplateEngine() {
- if (self::$tpl == null) {
- self::$tpl = new \Smarty();
+ return self::$tpl;
+ }
- $tpl = self::$tpl;
-
- $tpl->setCompileDir('./data/templates_c/');
- $tpl->setTemplateDir('./templates/');
- }
+ /**
+ * weisst automatisch eine user-instanz zu: Seiten-Effekte beachten
+ *
+ * TODO: Namensschema festlegen, damit dieser Effekt nicht auftritt
+ */
+ public function display() {
+ $tUser = new TUser();
+ $tGroup = new TGroup();
+ $tStatus = new TStatus();
- return self::$tpl;
- }
+ $request = $this->controller->getRequest();
- public function assign($key, $value) {
- self::$tpl->assign($key, $value);
+ if ($request->getKey('isLoggedIn')) {
+ $tUser->find($request->getKey('user_id'));
}
- /**
- * weisst automatisch eine user-instanz zu: Seiten-Effekte beachten
- *
- * TODO: Namensschema festlegen, damit dieser Effekt nicht auftritt
- */
- public function display() {
- $tUser = new TUser();
- $tGroup = new TGroup();
- $tStatus = new TStatus();
+ $controller = $this->controller;
+
+ $response = $controller->getResponse();
+ $this->assign('response', $response);
- $request = $this->controller->getRequest();
-
- if ($request->getKey('isLoggedIn')) {
- $tUser->find($request->getKey('user_id'));
- }
-
- $controller = $this->controller;
-
- $response = $controller->getResponse();
- $this->assign('response', $response);
+ $this->assign('tUser', $tUser);
+ $this->assign('tGroup', $tGroup);
+ $this->assign('tStatus', $tStatus);
+ $this->assign('request', $request);
- $this->assign('tUser', $tUser);
- $this->assign('tGroup', $tGroup);
- $this->assign('tStatus', $tStatus);
- $this->assign('request', $request);
-
- try {
- self::$tpl->display('layout.tpl');
- } catch (SmartyException $se) {
- $response->setStatusCode(404);
+ try {
+ self::$tpl->display('layout.tpl');
+ } catch (SmartyException $se) {
+ $response->setStatusCode(404);
- $page = 'error/error';
- self::$tpl->assign('page', $page);
-
- self::$tpl->display('layout.tpl');
- }
+ $page = 'error/error';
+ self::$tpl->assign('page', $page);
- // Msg wieder auf Null setzen...
- $request->setKey('msg', '');
-
- // Fehler wieder auf Null setzen...
- $request->setKey('fehler', '');
+ self::$tpl->display('layout.tpl');
}
+ // Msg wieder auf Null setzen...
+ $request->setKey('msg', '');
+
+ // Fehler wieder auf Null setzen...
+ $request->setKey('fehler', '');
}
+
+ public function assign($key, $value) {
+ self::$tpl->assign($key, $value);
+ }
+
}
rename from classes/bfw/mvc/controller/BenutzerverwaltungsController.php
rename to classes/bfw/mvc/controller/BenutzerverwaltungController.php
--- a/classes/bfw/mvc/controller/BenutzerverwaltungsController.php
+++ b/classes/bfw/mvc/controller/BenutzerverwaltungController.php
@@ -1,314 +1,312 @@
<?php
-namespace bfw\mvc\controller {
+namespace bfw\mvc\controller;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+
+use bfw\Dispatcher;
+use bfw\mvc\common\Controller;
+use bfw\mvc\model\TGroup;
+use bfw\mvc\model\TUser;
+
+class BenutzerverwaltungController extends Controller {
+ private static $logger = null;
/**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ * BenutzerverwaltungsController constructor.
*
*/
-
- use bfw\Dispatcher;
- use bfw\mvc\model\Model;
- use bfw\mvc\model\TGroup;
- use bfw\mvc\model\TUser;
-
- class BenutzerverwaltungsController extends Controller {
- private static $logger = null;
-
- /**
- * BenutzerverwaltungsController constructor.
- *
- * @param Model $model
- * @param Request $request
- */
- public function __construct($model, $request) {
-
- parent::__construct($model, $request);
- }
+ public function __construct() {
- /**
- *
- */
- public function loeschenFunc() {
- $tUser = $this->getModel();
- $request = $this->getRequest();
-
- $uid = $request->session('uid');
-
- if (!$tUser->delete($uid)) {
- $request->setKey('fehler', 'Der Benutzer konnte nicht gelöscht werden.');
- Dispatcher::route('/home/');
- } else {
- $request->setKey('msg', 'Der Benutzer wurde gelöscht.');
- }
- }
-
- /**
- *
- */
- public function aendernFunc() {
- $request = $this->getRequest();
+ $model = new TUser();
+ parent::__construct($model);
+ }
- $uid = $request->session('uid');
- $username = $request->session('username');
- $password = $request->session('password');
- $group_id = $request->session('groupbox');
-
- $tUser = $this->getModel();
- $user = $tUser->find($uid);
-
- $user->setUsername($username);
- if ($password != '') {
- $user->setPassword(md5($password));
- }
-
- if ($group_id != '') {
- $user->setGroup_id($group_id);
- }
+ /**
+ *
+ */
+ public function meinProfil() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
- if ($tUser->store($user->getId(), $user)) {
- $request->setKey('msg', 'Der Benutzer wurde erfolgreich aktualisiert.');
- } else {
- $request->setKey('fehler', 'Der Benutzer konnte nicht aktualisiert werden.');
- }
- }
-
- /**
- *
- * @param $currentUser
- * @return mixed
- */
- public function registrierenFunc($currentUser) {
- $request = $this->getRequest();
+ $username = $request->session('username');
- $password1 = $request->session('password1');
- $password2 = $request->session('password2');
-
- if (strlen($password1) == 0) {
- return $currentUser;
- }
+ $tUser = $this->getModel();
+ $user = $tUser->find($request->getKey('user_id'));
- // Validierung
- if ($password1 != $password2) {
- $request->setKey('fehler', 'Die Passwörter sind verschieden.');
- return $currentUser;
- }
-
- $username = $request->session('username');
+ if ($request->post('aendern') != '') {
$firstname = $request->session('firstname');
$lastname = $request->session('lastname');
- $currentUser->setUsername($username);
- $currentUser->setPassword(md5($password1));
- $currentUser->setFirstname($firstname);
- $currentUser->setLastname($lastname);
- $currentUser->setGroup_Id(TGroup::SUPPORTER);
+ $tUser->setUsername($username);
+ $tUser->setFirstname($firstname);
+ $tUser->setLastname($lastname);
+
+ $password = $request->session('password');
+ if ($password != '') {
+ $tUser->setPassword(md5($password));
+ }
+
+ if ($tUser->store()) {
+ $request->setKey('msg', 'Der Nutzer wurde aktualisiert.');
+ $tUser->findByField('username', $tUser->getUsername());
+ } else {
+ $request->setKey('fehler', 'Der Nutzer konnte nicht aktualisiert werden.');
+ }
+ }
+ }
+
+ /**
+ *
+ */
+ public function abmelden() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $request->deleteKey('username');
+ $request->deleteKey('group_id');
+ $request->destroySession();
- if ($username == '' || $firstname == '' || $lastname == '') {
- $request->setKey('fehler', 'Sie müssen die Pflichtfelder ausfüllen.');
- return $currentUser;
+ Dispatcher::route('/');
+ }
+
+ /**
+ *
+ */
+ public function anmelden() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $username = $request->session('username');
+ $password = md5($request->session('password'));
+
+ $tUser = $this->getModel();
+ $user = $tUser->findByUsername($username);
+
+ if ($user == null) {
+ return;
+ }
+
+ if (($username == $user->getUsername()) && ($password == $user->getPassword())) {
+ $request->setKey('isLoggedIn', true);
+ $request->setKey('user_id', $user->getId());
+ $request->setKey('group_id', $user->getGroup_id());
+
+ $tGroup = new TGroup();
+ if (($group = $tGroup->find($user->getGroup_Id())) == null) {
+ $request->setKey('fehler', "DB-Inkonsistenz: Prüfen Sie die exisitierenden Gruppen.");
}
- if ($currentUser->persist($currentUser)) {
- $request->setKey('msg', 'Der Nutzer wurde angelegt.');
+ $msg = sprintf('Sie gehören der Gruppe %s an.', $group->getName());
+ $request->setKey('msg', $msg);
- if ($currentUser->findByUsername($currentUser->getUsername())) {
- $request->setKey('isLoggedIn', true);
- $request->setKey('user_id', $currentUser->getId());
- $request->setKey('group_id', $currentUser->getGroup_id());
-
- Dispatcher::route('/meinprofil/');
- }
- } else {
- $request->setKey('fehler', 'Der Nutzer konnte nicht angelegt werden.');
+ $lastpage = $request->getKey('lastpage');
+ if ($lastpage == 'benutzerverwaltung/anmelden') {
+ $lastpage = 'tickets/index';
}
+ $request->setKey('lastpage', $lastpage);
+
+ // Routing ist final
+ Dispatcher::route(sprintf('/%s/', $lastpage));
+ }
+
+ }
+
+ /**
+ *
+ */
+ public function registrieren() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $currentUser = new TUser();
+ if ($request->post('registrieren') != '') {
+ $currentUser = $this->registrierenFunc($currentUser);
+ }
+
+ $engine->assign('currentUser', $currentUser);
+ }
+
+ /**
+ *
+ * @param $currentUser
+ * @return mixed
+ */
+ public function registrierenFunc($currentUser) {
+ $request = $this->getRequest();
+
+ $password1 = $request->session('password1');
+ $password2 = $request->session('password2');
+
+ if (strlen($password1) == 0) {
+ return $currentUser;
+ }
+
+ // Validierung
+ if ($password1 != $password2) {
+ $request->setKey('fehler', 'Die Passwörter sind verschieden.');
+ return $currentUser;
+ }
+
+ $username = $request->session('username');
+ $firstname = $request->session('firstname');
+ $lastname = $request->session('lastname');
+
+ $currentUser->setUsername($username);
+ $currentUser->setPassword(md5($password1));
+ $currentUser->setFirstname($firstname);
+ $currentUser->setLastname($lastname);
+ $currentUser->setGroup_Id(TGroup::SUPPORTER);
+
+ if ($username == '' || $firstname == '' || $lastname == '') {
+ $request->setKey('fehler', 'Sie müssen die Pflichtfelder ausfüllen.');
return $currentUser;
}
- /**
- *
- * @return bool
- */
- public function resetPasswordFunc() {
- $request = $this->getRequest();
- $engine = $this->getView();
+ if ($currentUser->persist()) {
+ $request->setKey('msg', 'Der Nutzer wurde angelegt.');
+
+ if ($currentUser->findByUsername($currentUser->getUsername())) {
+ $request->setKey('isLoggedIn', true);
+ $request->setKey('user_id', $currentUser->getId());
+ $request->setKey('group_id', $currentUser->getGroup_id());
+
+ Dispatcher::route('/benutzerverwaltung/meinprofil/');
+ }
+ } else {
+ $request->setKey('fehler', 'Der Nutzer konnte nicht angelegt werden.');
+ }
+
+ return $currentUser;
+ }
+
+ /**
+ *
+ */
+ public function index() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $tUser = $this->getModel();
+ $tGroup = new TGroup();
+
+ if ($request->post('loeschen') != '') {
+ $this->loeschenFunc();
+ }
- $username = $request->session('username');
+ if ($request->post('aendern') != '') {
+ $this->aendernFunc();
+ }
+
+ $group_id = $request->getKey('group_id', TGroup::GUEST);
+
+ switch ($group_id) {
+ case TGroup::ADMIN:
+ $users = $tUser->findAll();
+ $groups = $tGroup->findAll();
+ break;
+ case TGroup::MANAGER:
+ $users = $tUser->findAllManagersAndBelow();
+ $groups = $tGroup->findAllManagersAndBelow();
+ break;
+ default:
+ Dispatcher::route('/benutzerverwaltung/home/');
+ }
+
+ $engine->assign('users', $users);
+ $engine->assign('groups', $groups);
+ }
+
+ /**
+ *
+ */
+ public function loeschenFunc() {
+ $tUser = new TUser();
+ $request = $this->getRequest();
+
+ $uid = $request->session('uid');
- if (!$request->hasPost()) {
- return false;
- }
+ $tUser->find($uid);
+ if (!$tUser->delete()) {
+ $request->setKey('fehler', 'Der Benutzer konnte nicht gelöscht werden.');
+ Dispatcher::route('/home/');
+ } else {
+ $request->setKey('msg', 'Der Benutzer wurde gelöscht.');
+ }
+ }
+
+ /**
+ *
+ */
+ public function aendernFunc() {
+ $request = $this->getRequest();
- $tUser = $this->getModel();
+ $uid = $request->session('uid');
+ $username = $request->session('username');
+ $password = $request->session('password');
+ $group_id = $request->session('groupbox');
+
+ $tUser = $this->getModel();
+ $user = $tUser->find($uid);
+
+ $user->setUsername($username);
+ if ($password != '') {
+ $user->setPassword(md5($password));
+ }
+
+ if ($group_id != '') {
+ $user->setGroup_id($group_id);
+ }
- if ($tUser->findByUsername($username)) {
- $tUser->setPassword(md5($tUser->getUsername()));
+ if ($tUser->store()) {
+ $request->setKey('msg', 'Der Benutzer wurde erfolgreich aktualisiert.');
+ } else {
+ $request->setKey('fehler', 'Der Benutzer konnte nicht aktualisiert werden.');
+ }
+ }
+
+ /**
+ *
+ */
+ public function resetpasswort() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
- return $tUser->store($tUser->getId(), $tUser);
+ if ($request->post('pw-reset')) {
+ if ($this->resetPasswordFunc()) {
+ Dispatcher::route('/benutzerverwaltung/anmelden/');
}
+ }
+ }
- $engine->assign('request', $request);
+ /**
+ *
+ * @return bool
+ */
+ public function resetPasswordFunc() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $username = $request->session('username');
+
+ if (!$request->hasPost()) {
return false;
}
- /**
- *
- */
- public function meinProfil() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $username = $request->session('username');
-
- $tUser = $this->getModel();
- $user = $tUser->find($request->getKey('user_id'));
-
- if ($request->post('aendern') != '') {
- $firstname = $request->session('firstname');
- $lastname = $request->session('lastname');
-
- $tUser = new TUser();
- $tUser->setUsername($username);
- $tUser->setFirstname($firstname);
- $tUser->setLastname($lastname);
+ $tUser = $this->getModel();
- $password = $request->session('password');
- if ($password != '') {
- $tUser->setPassword(md5($password));
- }
+ if ($tUser->findByUsername($username)) {
+ $tUser->setPassword(md5($tUser->getUsername()));
- if ($tUser->store($user->getId(), $tUser)) {
- $request->setKey('msg', 'Der Nutzer wurde aktualisiert.');
- $tUser->findByField('username', $tUser->getUsername());
- } else {
- $request->setKey('fehler', 'Der Nutzer konnte nicht aktualisiert werden.');
- }
- }
- }
-
- /**
- *
- */
- public function abmelden() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $request->deleteKey('username');
- $request->deleteKey('group_id');
- $request->destroySession();
-
- Dispatcher::route('/');
+ return $tUser->store();
}
- /**
- *
- */
- public function anmelden() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $username = $request->session('username');
- $password = md5($request->session('password'));
-
- $tUser = $this->getModel();
- $user = $tUser->findByUsername($username);
-
- if ($user == null) {
- return;
- }
-
- if (($username == $user->getUsername()) && ($password == $user->getPassword())) {
- $request->setKey('isLoggedIn', true);
- $request->setKey('user_id', $user->getId());
- $request->setKey('group_id', $user->getGroup_id());
-
- $tGroup = new TGroup();
- if (($group = $tGroup->find($user->getGroup_Id())) == null) {
- $request->setKey('fehler', "DB-Inkonsistenz: Prüfen Sie die exisitierenden Gruppen.");
- }
-
- $msg = sprintf('Sie gehören der Gruppe %s an.', $group->getName());
- $request->setKey('msg', $msg);
-
- $lastpage = $request->getKey('lastpage');
- if ($lastpage == 'anmelden') {
- $lastpage = 'tickets';
- }
-
- $request->setKey('lastpage', $lastpage);
-
- // Routing ist final
- Dispatcher::route(sprintf('/%s/', $lastpage));
- }
-
- }
-
- /**
- *
- */
- public function registrieren() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $currentUser = new TUser();
- if ($request->post('registrieren') != '') {
- $currentUser = $this->registrierenFunc($currentUser);
- }
+ $engine->assign('request', $request);
+ return false;
+ }
- $engine->assign('currentUser', $currentUser);
- }
-
- /**
- *
- */
- public function index() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $tUser = $this->getModel();
- $tGroup = new TGroup();
-
- if ($request->post('loeschen') != '') {
- $this->loeschenFunc();
- }
-
- if ($request->post('aendern') != '') {
- $this->aendernFunc();
- }
-
- $group_id = $request->getKey('group_id', TGroup::GUEST);
-
- switch ($group_id) {
- case TGroup::ADMIN:
- $users = $tUser->findAll();
- $groups = $tGroup->findAll();
- break;
- case TGroup::MANAGER:
- $users = $tUser->findAllManagersAndBelow();
- $groups = $tGroup->findAllManagersAndBelow();
- break;
- default:
- Dispatcher::route('/home/');
- }
-
- $engine->assign('users', $users);
- $engine->assign('groups', $groups);
- }
-
- /**
- *
- */
- public function resetpasswort() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- if ($request->post('pw-reset')) {
- if ($this->resetPasswordFunc()) {
- Dispatcher::route('/anmelden/');
- }
- }
- }
-
- }
}
\ No newline at end of file
--- a/classes/bfw/mvc/controller/ErrorController.php
+++ b/classes/bfw/mvc/controller/ErrorController.php
@@ -1,21 +1,22 @@
<?php
-namespace bfw\mvc\controller {
+namespace bfw\mvc\controller;
+
+use bfw\mvc\common\Controller;
- /**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
- *
- */
- class ErrorController extends Controller {
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+class ErrorController extends Controller {
- public function __construct($model, $request) {
- parent::__construct($model, $request);
- }
+ public function __construct($model, $request) {
+ parent::__construct($model, $request);
+ }
- public function index() {
- $request = $this->getRequest();
- $engine = $this->getView();
- }
+ public function index() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+ }
- }
}
--- a/classes/bfw/mvc/controller/HistoryController.php
+++ b/classes/bfw/mvc/controller/HistoryController.php
@@ -1,54 +1,55 @@
<?php
-namespace bfw\mvc\controller {
+namespace bfw\mvc\controller;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
- /**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
- *
- */
+use bfw\mvc\common\Controller;
+use bfw\mvc\model\TGroup;
+use bfw\mvc\model\THistory;
+use bfw\mvc\model\TTicket;
+use bfw\mvc\model\TUser;
- use bfw\mvc\model\TGroup;
- use bfw\mvc\model\TTicket;
- use bfw\mvc\model\TUser;
+class HistoryController extends Controller {
+
+ private $user_id;
+ private $group_id;
+ private $currentTicket;
- class HistoryController extends Controller {
+ public function __construct() {
+ $model = new THistory();
+ parent::__construct($model);
- private $user_id;
- private $group_id;
- private $currentTicket;
+ $this->currentTicket = null;
+
+ $request = $this->getRequest();
- public function __construct($model, $request) {
- parent::__construct($model, $request);
+ $this->user_id = $request->getKey('user_id', TUser::SYSTEM);
+ $this->group_id = $request->getKey('group_id', TGroup::GUEST);
+ }
- $this->currentTicket = null;
+ public function index() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
- $this->user_id = $request->getKey('user_id', TUser::SYSTEM);
- $this->group_id = $request->getKey('group_id', TGroup::GUEST);
+ $tid = $request->session('tid');
+ $ticket = new TTicket();
+
+ if ($ticket->find($tid) == null) {
+ $request->setKey('fehler', 'Datensatz nicht gefunden.');
}
- public function index() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $tid = $request->session('tid');
- $ticket = new TTicket();
-
- $user_id = $request->session('user_id');
-
- if ($ticket->find($tid, $user_id) == null) {
- $request->setKey('fehler', 'Datensatz nicht gefunden.');
- $ticket = new TTicket();
- }
-
- $history = $this->getModel();
- $histories = $history->findAllByField('ticket_id', $tid);
- if ($histories == null) {
- $request->setKey('fehler', 'Die Daten sind nicht aktuell.');
- }
-
- $engine->assign('ticket', $ticket);
- $engine->assign('histories', $histories);
+ $history = $this->getModel();
+ $histories = $history->findAllByField('ticket_id', $tid);
+ if ($histories == null) {
+ $request->setKey('fehler', 'Die Daten sind nicht aktuell.');
}
+ $engine->assign('ticket', $ticket);
+ $engine->assign('histories', $histories);
}
+
}
\ No newline at end of file
--- a/classes/bfw/mvc/controller/HomeController.php
+++ b/classes/bfw/mvc/controller/HomeController.php
@@ -1,124 +1,122 @@
<?php
-namespace bfw\mvc\controller {
+namespace bfw\mvc\controller;
+
+use bfw\database\Database;
+use bfw\Dispatcher;
+use bfw\mvc\common\Controller;
+use bfw\mvc\model\TGroup;
+use bfw\mvc\model\TText;
+use bfw\mvc\model\TUser;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+class HomeController extends Controller {
+ const TEXT_ID = 2;
/**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ * HomeController constructor.
*
*/
+ public function __construct() {
+ $model = new TUser();
+ parent::__construct($model);
+ }
- use bfw\Database;
- use bfw\Dispatcher;
- use bfw\mvc\model\Model;
- use bfw\mvc\model\TGroup;
- use bfw\mvc\model\TText;
-
- class HomeController extends Controller {
- const TEXT_ID = 2;
+ /**
+ * Default Index Action
+ *
+ * Zu berücksichtigen ist hier:
+ *
+ * Sowohl GET-Actions als auch POST Actions werden berücksichtigt
+ */
+ public function index() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
/**
- * HomeController constructor.
- *
- * @param Model $model
- * @param Request $request
- */
- public function __construct($model, $request) {
- parent::__construct($model, $request);
- }
-
- /**
- *
+ * Reset mit Redirect
*/
- public function eintragen() {
- $request = $this->getRequest();
-
- $tText = new TText();
- $text = $tText->find(self::TEXT_ID);
+ if ($request->getParameter('reset') == '1') {
+ $this->reset($engine, $request);
- $text->setHeadline($request->session('headline'));
- $text->setText($request->session('text'));
-
- if ($tText->store(self::TEXT_ID, $text)) {
- $request->setKey('msg', 'Der CMS-Text wurde aktualisiert.');
- } else {
- $request->setKey('fehler', 'Der CMS-Text kontne nicht aktualisiert werden.');
- }
+ return;
}
/**
- *
+ * Eintragen mit Redirect
*/
- public function reset() {
- $request = $this->getRequest();
- $db = Database::getInstance();
+ if ($request->get('unit') == '1') {
+ $this->unit();
- if (!$db->cleanup()) {
- $request->deleteParameterKey('reset');
- $request->setKey('fehler', 'Fehler beim Aufräumen');
- Dispatcher::route('/');
- }
+ return;
+ }
- $request->deleteParameterKey('reset');
- $request->destroySession();
-
- Dispatcher::route('/');
+ if ($request->post('eintragen') != '') {
+ $this->eintragen();
}
- /**
- *
- */
- public function unit() {
- $request = $this->getRequest();
+ $tText = new TText();
+ $group_id = $request->getKey('group_id', TGroup::GUEST);
+
+ $text = $tText->find(self::TEXT_ID);
+ $engine->assign('text', $text);
+ $engine->assign('group_id', $group_id);
+ }
- $db = Database::getInstance();
- $db->csvImport('t_user', 'data/import/test_users.csv');
- $db->csvImport('t_ticket', 'data/import/test_tickets.csv');
+ /**
+ *
+ */
+ public function reset() {
+ $request = $this->getRequest();
+ $db = Database::getInstance();
- $request->deleteParameterKey('unit');
-
+ if (!$db->cleanup()) {
+ $request->deleteParameterKey('reset');
+ $request->setKey('fehler', 'Fehler beim Aufräumen');
Dispatcher::route('/');
}
- /**
- * Default Index Action
- *
- * Zu berücksichtigen ist hier:
- *
- * Sowohl GET-Actions als auch POST Actions werden berücksichtigt
- */
- public function index() {
- $request = $this->getRequest();
- $engine = $this->getView();
+ $request->deleteParameterKey('reset');
+ $request->destroySession();
+
+ Dispatcher::route('/');
+ }
- /**
- * Reset mit Redirect
- */
- if ($request->getParameter('reset') == '1') {
- $this->reset($engine, $request);
+ /**
+ *
+ */
+ public function unit() {
+ $request = $this->getRequest();
- return;
- }
+ $db = Database::getInstance();
+ $db->csvImport('t_user', 'data/import/test_users.csv');
+ $db->csvImport('t_ticket', 'data/import/test_tickets.csv');
+
+ $request->deleteParameterKey('unit');
+
+ Dispatcher::route('/');
+ }
- /**
- * Eintragen mit Redirect
- */
- if ($request->get('unit') == '1') {
- $this->unit();
+ /**
+ *
+ */
+ public function eintragen() {
+ $request = $this->getRequest();
- return;
- }
+ $tText = new TText();
+ $text = $tText->find(self::TEXT_ID);
- if ($request->post('eintragen') != '') {
- $this->eintragen();
- }
-
- $tText = new TText();
- $group_id = $request->getKey('group_id', TGroup::GUEST);
+ $text->setHeadline($request->session('headline'));
+ $text->setText($request->session('text'));
- $text = $tText->find(self::TEXT_ID);
- $engine->assign('text', $text);
- $engine->assign('group_id', $group_id);
+ if ($tText->store()) {
+ $request->setKey('msg', 'Der CMS-Text wurde aktualisiert.');
+ } else {
+ $request->setKey('fehler', 'Der CMS-Text kontne nicht aktualisiert werden.');
}
+ }
- }
}
\ No newline at end of file
--- a/classes/bfw/mvc/controller/TicketsController.php
+++ b/classes/bfw/mvc/controller/TicketsController.php
@@ -1,351 +1,353 @@
<?php
-namespace bfw\mvc\controller {
+namespace bfw\mvc\controller;
+
+/**
+ * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ *
+ */
+
+use bfw\Dispatcher;
+use bfw\mvc\common\Controller;
+use bfw\mvc\common\Model;
+use bfw\mvc\model\TGroup;
+use bfw\mvc\model\TStatus;
+use bfw\mvc\model\TTicket;
+use bfw\mvc\model\TUser;
+use Logger;
+
+class TicketsController extends Controller {
+ private $user_id;
+ private $group_id;
+ private $currentTicket;
/**
- * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
+ * TicketsController constructor.
*
*/
+ public function __construct() {
+ $model = new TTicket();
+ parent::__construct($model);
- use bfw\Dispatcher;
- use bfw\mvc\model\Model;
- use bfw\mvc\model\TGroup;
- use bfw\mvc\model\TStatus;
- use bfw\mvc\model\TTicket;
- use bfw\mvc\model\TUser;
+ $this->currentTicket = null;
+
+ $request = $this->getRequest();
+
+ $this->user_id = $request->getKey('user_id', TUser::SYSTEM);
+ $this->group_id = $request->getKey('group_id', TGroup::GUEST);
+ }
+
+ /**
+ * Default Index Action
+ */
+ public function index() {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $user_id = $this->user_id;
+ $group_id = $this->group_id;
+
+ $engine = $this->getView();
+ $currentTicket = $this->currentTicket;
- class TicketsController extends Controller {
- private $user_id;
- private $group_id;
- private $currentTicket;
+ // Umleiten zur Historie
+ if ($request->post('historie') != '') {
+ Dispatcher::route("/history/");
+ }
+
+ // finde das aktuelle Ticket, welches per GET live angegeben wurde.
+ if ($request->get('tid') != '') {
+ $currentTicket = $this->processTickedId($user_id);
+ $this->handleRequest($currentTicket, $user_id, $group_id);
+
+ return;
+ }
+
+ // lade das ausgewählte Ticket, Supporter nehmen es automatisch an.
+ if ($request->post('laden') != '') {
+ $currentTicket = $this->processLaden($user_id);
+ $this->handleRequest($currentTicket, $user_id, $group_id);
+
+ return;
+ }
+
+ // erstelle oder aktualisiere das aktuelle Ticket.
+ if ($request->post('eintragen') != '') {
+ $currentTicket = $this->processEintragen($user_id, $group_id);
+ $this->handleRequest($currentTicket, $user_id, $group_id);
+
+ return;
+ }
- /**
- * TicketsController constructor.
- *
- * @param Model $model
- * @param Request $request
- */
- public function __construct($model, $request) {
- parent::__construct($model, $request);
+ // lösche das aktuelle Ticket.
+ if ($request->post('loeschen') != '') {
+ $this->processLoeschen($user_id);
+ $this->handleRequest($currentTicket, $user_id, $group_id);
+
+ return;
+ }
+
+ $this->handleRequest($this->currentTicket, $this->user_id, $this->group_id);
+ }
+
+ /**
+ * @param $user_id
+ * @return null|TTicket
+ */
+ public function processTickedId($user_id) {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $tUser = new TUser();
+ $user = $tUser->find($user_id);
+
+ if ($user == null) {
+ $request->setKey('fehler', sprintf('Benutzer(%d) konnte nicht mehr gefunden werden.', $user_id));
+ Dispatcher::route('/');
+ }
+
+ $tid = $request->get('tid');
- $this->currentTicket = null;
+ $tTicket = $this->getModel();
+ $currentTicket = $tTicket->find($tid);
+
+ if ($currentTicket == null) {
+ $request->setKey('fehler', sprintf('Ticket Nr. %d konnte nicht gefunden werden.', $tid));
+
+ return null;
+ }
+
+ if (!$currentTicket->hasPrivilege($currentTicket, $user, false)) {
+ $request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
- $this->user_id = $request->getKey('user_id', TUser::SYSTEM);
- $this->group_id = $request->getKey('group_id', TGroup::GUEST);
+ return null;
}
+ return $currentTicket;
+ }
+
+ /**
+ * <b>Diese Funktion kümmert sich um die Anfragen dieses Ticket-Controllers</b>
+ *
+ * @param $currentTicket
+ * @param $user_id
+ * @param $group_id
+ */
+ public function handleRequest($currentTicket, $user_id, $group_id) {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
/**
- * <b>Diese Funktion kümmert sich um die Anfragen dieses Ticket-Controllers</b>
- *
- * @param $currentTicket
- * @param $user_id
- * @param $group_id
+ * @var TTIcket
*/
- public function handleRequest($currentTicket, $user_id, $group_id) {
- $request = $this->getRequest();
- $engine = $this->getView();
+ $tTicket = $this->getModel();
+
+ $tUser = new TUser();
+ $user = $tUser->find($user_id);
- /**
- * @var Model
- */
- $tTicket = $this->getModel();
-
- $tUser = new TUser();
- $user = $tUser->find($user_id);
-
- /**
- * 'Cron-Job' ohne 'Cron': Alle Tickets werden bei jedem Zugriff geprüft
- *
- * Gibt es Tickets, die derzeit gesperrt sind? Befreie Sie! Free Tickets!!!
- * Falls Tickets frei sind, weise diese korrekt und fair wieder zu.
- */
- $tTicket->unlockTickets($tTicket);
- $tTicket->reassignFreeTickets();
+ /**
+ * 'Cron-Job' ohne 'Cron': Alle Tickets werden bei jedem Zugriff geprüft
+ *
+ * Gibt es Tickets, die derzeit gesperrt sind? Befreie Sie! Free Tickets!!!
+ * Falls Tickets frei sind, weise diese korrekt und fair wieder zu.
+ */
+ $tTicket->unlockTickets();
+ $tTicket->reassignFreeTickets();
- switch ($group_id) {
- case TGroup::SUPPORTER:
- $tickets = $tTicket->findAllTicketsByUserid($user_id);
- if ($tickets == null) {
- $request->setKey('fehler', 'Es existieren derzeit keine Tickets für Sie!');
- }
+ switch ($group_id) {
+ case TGroup::SUPPORTER:
+ $tickets = $tTicket->findAllTicketsByUserid($user_id);
+ if ($tickets == null) {
+ $request->setKey('fehler', 'Es existieren derzeit keine Tickets für Sie!');
+ }
- $users = array($tUser->findByUsername($user->getUsername()));
- break;
- case TGroup::ADMIN:
- case TGroup::MANAGER:
- $tickets = $tTicket->findAll();
- $users = $tUser->findAll(false);
- break;
- default:
- $tickets = $tTicket->findAll();
- $users = $tUser->findAll();
- }
+ $users = array($tUser->findByUsername($user->getUsername()));
+ break;
+ case TGroup::ADMIN:
+ case TGroup::MANAGER:
+ $tickets = $tTicket->findAll();
+ $users = $tUser->findAll(false);
+ break;
+ default:
+ $tickets = $tTicket->findAll();
+ $users = $tUser->findAll();
+ }
- $tStatus = new TStatus();
- $statusItems = $tStatus->findAll();
+ $tStatus = new TStatus();
+ $statusItems = $tStatus->findAll();
- // erstelle eine neue Ticket-Instanz, falls es keine instanzierte gibt.
- if ($currentTicket == null) {
- $currentTicket = new TTicket();
- }
-
- $engine->assign('users', $users);
- $engine->assign('tStatus', $tStatus);
- $engine->assign('tickets', $tickets);
- $engine->assign('statusItems', $statusItems);
- $engine->assign('currentTicket', $currentTicket);
- $engine->assign('group_id', $group_id);
+ // erstelle eine neue Ticket-Instanz, falls es keine instanzierte gibt.
+ if ($currentTicket == null) {
+ $currentTicket = new TTicket();
}
- /**
- * @param $user_id
- * @return null|TTicket
- */
- public function processTickedId($user_id) {
- $request = $this->getRequest();
- $engine = $this->getView();
+ $engine->assign('users', $users);
+ $engine->assign('tStatus', $tStatus);
+ $engine->assign('tickets', $tickets);
+ $engine->assign('statusItems', $statusItems);
+ $engine->assign('currentTicket', $currentTicket);
+ $engine->assign('group_id', $group_id);
+ }
+
+ /**
+ * <b>Ticket nach TID laden</b>
+ *
+ * @param $user_id
+ *
+ * @return null|TTicket
+ */
+ public function processLaden($user_id) {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $tid = $request->session('tid');
+
+ $tTicket = $this->getModel();
+ $currentTicket = $tTicket->find($tid);
- $tUser = new TUser();
- $user = $tUser->find($user_id);
+ if ($currentTicket == null) {
+ $request->setKey('fehler', sprintf('Ticket Nr. %d konnte nicht gefunden werden.', $tid));
+
+ return null;
+ }
+
+ $tUser = new TUser();
+ $user = $tUser->find($user_id);
+
+ if ($user == null) {
+ $request->setKey('fehler', sprintf('Benutzer(%d) konnte nicht mehr gefunden werden.', $user_id));
+
+ return null;
+ }
+
+ $tTicket->lockTicket($currentTicket, $user);
+
+ if (!$currentTicket->hasPrivilege($currentTicket, $user, true)) {
+ $request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
+
+ return null;
+ }
+
+ return $currentTicket;
+ }
- if ($user == null) {
- $request->setKey('fehler', sprintf('Benutzer(%d) konnte nicht mehr gefunden werden.', $user_id));
- Dispatcher::route('/');
- }
+ /**
+ * @param $user_id
+ * @param $group_id
+ * @return Model|null
+ */
+ public function processEintragen($user_id, $group_id) {
+ $request = $this->getRequest();
+ $engine = $this->getView();
+
+ $logger = Logger::getLogger('main');
+
+ $tid = $request->session('tid');
+ $status_id = $request->session('status', TStatus::OFFEN);
+
+ $tTicket = $this->getModel();
+
+ if ($tid != '') {
+ $tTicket->find($tid, $user_id);
+ }
- $tid = $request->get('tid');
+ $tUser = new TUser();
+ $user = $tUser->find($user_id);
+ if ($user == null) {
+ return null;
+ }
+
+ $theHolyUserId = $tTicket->getUser_Id();
+ if ($group_id == TGroup::ADMIN || $group_id == TGroup::MANAGER) {
+ $theHolyUserId = $request->session('user_id');
+ }
+
+ $subject = $request->session('subject');
+ $message = $request->session('message');
- $tTicket = $this->getModel();
- $currentTicket = $tTicket->find($tid);
+ if (($subject == '') && ($message == '')) {
+ $request->setKey('fehler', sprintf('Füllen Sie die Pflichtfelder aus.'));
+
+ return null;
+ }
- if ($currentTicket == null) {
- $request->setKey('fehler', sprintf('Ticket Nr. %d konnte nicht gefunden werden.', $tid));
+ $tTicket->setUser_Id($theHolyUserId);
+ $tTicket->setStatus_Id($status_id);
+ $tTicket->setSubject($subject);
+ $tTicket->setMessage($message);
+ $tTicket->setLast_Access(date("Y-m-d H:i:s"));
+
+ if ($tid == '') {
+ if ($tTicket->persist()) {
+ $request->setKey('msg', sprintf('Ein neues Ticket wurde erfolgreich eingetragen.'));
+ $logger->info(sprintf('Ticket wurde eingetragen: (%s)', print_r($tTicket->getData(), true)));
return null;
}
-
- if (!$currentTicket->hasPrivilege($currentTicket, $user, false)) {
- $request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
-
- return null;
- }
-
- return $currentTicket;
- }
-
- /**
- * <b>Ticket nach TID laden</b>
- *
- * @param $user_id
- *
- * @return null|TTicket
- */
- public function processLaden($user_id) {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $tid = $request->session('tid');
-
- $tTicket = $this->getModel();
- $currentTicket = $tTicket->find($tid);
-
- if ($currentTicket == null) {
- $request->setKey('fehler', sprintf('Ticket Nr. %d konnte nicht gefunden werden.', $tid));
-
- return null;
- }
-
- $tUser = new TUser();
- $user = $tUser->find($user_id);
-
- if ($user == null) {
- $request->setKey('fehler', sprintf('Benutzer(%d) konnte nicht mehr gefunden werden.', $user_id));
-
- return null;
- }
-
- $tTicket->lockTicket($currentTicket, $user);
-
- if (!$currentTicket->hasPrivilege($currentTicket, $user, true)) {
+ } else {
+ if (!$tTicket->hasPrivilege($tTicket, $user, true)) {
$request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
return null;
}
- return $currentTicket;
+ if ($tTicket->getId() != 1) {
+ if ($tTicket->store()) {
+ $request->setKey('msg', 'Das Ticket wurde erfolgreich aktualisiert.');
+ $logger->info(sprintf('Ticket wurde aktualisiert: (%s)', print_r($tTicket->getData(), true)));
+ }
+
+ return $tTicket;
+ }
}
- /**
- * <b>Löschen von Tickets</b>
- *
- * @return bool
- */
- public function processLoeschen($user_id) {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $tid = $request->session('tid');
-
- $tTicket = $this->getModel();
- $currentTicket = $tTicket->find($tid);
-
- if ($currentTicket == null) {
- $request->setKey('fehler', sprintf('Nicht existierende Tickets(%d) können nicht gelöscht werden.', $tid));
-
- return false;
- }
+ return null;
+ }
- $tUser = new TUser();
- $user = $tUser->find($user_id);
-
- if ($user == null) {
- $request->setKey('fehler', sprintf('Benutzer(%d) konnte nicht mehr gefunden werden.', $user_id));
-
- return false;
- }
+ /**
+ * <b>Löschen von Tickets</b>
+ *
+ * @return bool
+ */
+ public function processLoeschen($user_id) {
+ $request = $this->getRequest();
+ $engine = $this->getView();
- if (!$currentTicket->hasPrivilege($currentTicket, $user, true)) {
- $request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
-
- return false;
- }
+ $tid = $request->session('tid');
- if ($currentTicket->delete($tid)) {
- $request->setKey('msg', sprintf('Das Ticket mit der Nummer %d wurde gelöscht.', $tid));
+ $tTicket = $this->getModel();
+ $currentTicket = $tTicket->find($tid);
- return true;
- }
-
- $request->setKey('fehler', sprintf('Das Ticket mit der Nummer %d konnte nicht gelöscht werden.', $tid));
+ if ($currentTicket == null) {
+ $request->setKey('fehler', sprintf('Nicht existierende Tickets(%d) können nicht gelöscht werden.', $tid));
return false;
}
- /**
- * @param $user_id
- * @param $group_id
- * @return Model|null
- */
- public function processEintragen($user_id, $group_id) {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $logger = Logger::getLogger('main');
-
- $tid = $request->session('tid');
- $status_id = $request->session('status', TStatus::OFFEN);
-
- $tTicket = $this->getModel();
-
- if ($tid != '') {
- $tTicket->find($tid, $user_id);
- }
-
- $tUser = new TUser();
- $user = $tUser->find($user_id);
- if ($user == null) {
- return null;
- }
-
- $theHolyUserId = $tTicket->getUser_Id();
- if ($group_id == TGroup::ADMIN || $group_id == TGroup::MANAGER) {
- $theHolyUserId = $request->session('user_id');
- }
-
- $subject = $request->session('subject');
- $message = $request->session('message');
+ $tUser = new TUser();
+ $user = $tUser->find($user_id);
- if (($subject == '') && ($message == '')) {
- $request->setKey('fehler', sprintf('Füllen Sie die Pflichtfelder aus.'));
-
- return null;
- }
-
- $tTicket->setUser_Id($theHolyUserId);
- $tTicket->setStatus_Id($status_id);
- $tTicket->setSubject($subject);
- $tTicket->setMessage($message);
- $tTicket->setLast_Access(date("Y-m-d H:i:s"));
-
- if ($tid == '') {
- if ($tTicket->persist($tTicket)) {
- $request->setKey('msg', sprintf('Ein neues Ticket wurde erfolgreich eingetragen.'));
- $logger->info(sprintf('Ticket wurde eingetragen: (%s)', print_r($tTicket->getData(), true)));
+ if ($user == null) {
+ $request->setKey('fehler', sprintf('Benutzer(%d) konnte nicht mehr gefunden werden.', $user_id));
- return null;
- }
- } else {
- if (!$tTicket->hasPrivilege($tTicket, $user, true)) {
- $request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
-
- return null;
- }
-
- if ($tTicket->getId() != 1) {
- if ($tTicket->store($tid, $tTicket)) {
- $request->setKey('msg', 'Das Ticket wurde erfolgreich aktualisiert.');
- $logger->info(sprintf('Ticket wurde aktualisiert: (%s)', print_r($tTicket->getData(), true)));
- }
-
- return $tTicket;
- }
- }
-
- return null;
+ return false;
}
- /**
- * Default Index Action
- */
- public function index() {
- $request = $this->getRequest();
- $engine = $this->getView();
-
- $user_id = $this->user_id;
- $group_id = $this->group_id;
-
- $engine = $this->getView();
- $currentTicket = $this->currentTicket;
-
- // Umleiten zur Historie
- if ($request->post('historie') != '') {
- Dispatcher::route("/historie/");
- }
-
- // finde das aktuelle Ticket, welches per GET live angegeben wurde.
- if ($request->get('tid') != '') {
- $currentTicket = $this->processTickedId($user_id);
- $this->handleRequest($currentTicket, $user_id, $group_id);
-
- return;
- }
+ if (!$currentTicket->hasPrivilege($currentTicket, $user, true)) {
+ $request->setKey('fehler', sprintf('Ihnen fehlen die Berechtigungen für das Ticket Nr. %d.', $tid));
- // lade das ausgewählte Ticket, Supporter nehmen es automatisch an.
- if ($request->post('laden') != '') {
- $currentTicket = $this->processLaden($user_id);
- $this->handleRequest($currentTicket, $user_id, $group_id);
-
- return;
- }
-
- // erstelle oder aktualisiere das aktuelle Ticket.
- if ($request->post('eintragen') != '') {
- $currentTicket = $this->processEintragen($user_id, $group_id);
- $this->handleRequest($currentTicket, $user_id, $group_id);
-
- return;
- }
-
- // lösche das aktuelle Ticket.
- if ($request->post('loeschen') != '') {
- $this->processLoeschen($user_id);
- $this->handleRequest($currentTicket, $user_id, $group_id);
-
- return;
- }
-
- $this->handleRequest($this->currentTicket, $this->user_id, $this->group_id);
+ return false;
}
+ if ($currentTicket->delete($tid)) {
+ $request->setKey('msg', sprintf('Das Ticket mit der Nummer %d wurde gelöscht.', $tid));
+
+ return true;
+ }
+
+ $request->setKey('fehler', sprintf('Das Ticket mit der Nummer %d konnte nicht gelöscht werden.', $tid));
+
+ return false;
}
+
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TAction.php
+++ b/classes/bfw/mvc/model/TAction.php
@@ -1,26 +1,27 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
- /**
- * Class TAction
- *
- * @method string getName()
- * @mthod setName($param)
- */
- class TAction extends Model {
- const ANGELEGT = 2;
- const GEANDERT = 3;
- const GELOESCHT = 4;
+/**
+ * Class TAction
+ *
+ * @method string getName()
+ * @mthod setName($param)
+ */
+class TAction extends Model {
+ const ANGELEGT = 2;
+ const GEANDERT = 3;
+ const GELOESCHT = 4;
- public function __construct() {
- parent::__construct('t_action');
+ public function __construct() {
+ parent::__construct('t_action');
- $this->data = array(
- 'id' => NULL,
- 'name' => '',
- );
- }
+ $this->data = array(
+ 'id' => NULL,
+ 'name' => '',
+ );
+ }
- }
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TGroup.php
+++ b/classes/bfw/mvc/model/TGroup.php
@@ -1,60 +1,61 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
+
+/**
+ * Class TGroup
+ *
+ * @method string getName()
+ * @mthod setName($param)
+ */
+class TGroup extends Model {
+ const GUEST = 5;
+ const SUPPORTER = 4;
+ const MANAGER = 3;
+ const ADMIN = 2;
+ const SYSTEM = 1;
+
+ public function __construct() {
+ parent::__construct('t_group');
+
+ $this->data = array(
+ 'id' => NULL,
+ 'name' => '',
+ );
+ }
/**
- * Class TGroup
+ * @param $name
+ * @return array|null
+ */
+ public function findByName($name) {
+ return $this->db->findByField('t_group', 'name', $name);
+ }
+
+ /**
+ * <b>Besorgt ein Array mit der Liste der Manager und Darunter</b>
*
- * @method string getName()
- * @mthod setName($param)
+ * @return array|null
*/
- class TGroup extends Model {
- const GUEST = 5;
- const SUPPORTER = 4;
- const MANAGER = 3;
- const ADMIN = 2;
- const SYSTEM = 1;
+ public function findAllManagersAndBelow() {
+ /**
+ * SYSTEM = 1
+ * ADMIN = 2
+ * [MANAGER = 3, SUPPORTER = 4]
+ * GUEST = 5
+ */
+ $groups = $this->db->fetchAll($this->table, 'id > 2 and id < 5');
- public function __construct() {
- parent::__construct('t_group');
+ $list = array();
+ foreach ($groups as $group) {
+ $item = new static();
+ $item->data = $group;
- $this->data = array(
- 'id' => NULL,
- 'name' => '',
- );
+ $list[] = $item;
}
- /**
- * @param $name
- * @return array|null
- */
- public function findByName($name) {
- return $this->db->findByField('t_group', 'name', $name);
- }
-
- /**
- * <b>Besorgt ein Array mit der Liste der Manager und Darunter</b>
- *
- * @return array|null
- */
- public function findAllManagersAndBelow() {
- /**
- * SYSTEM = 1
- * ADMIN = 2
- * [MANAGER = 3, SUPPORTER = 4]
- * GUEST = 5
- */
- $groups = $this->db->fetchAll($this->table, 'id > 2 and id < 5');
-
- $list = array();
- foreach ($groups as $group) {
- $item = new static();
- $item->data = $group;
-
- $list[] = $item;
- }
-
- return $list;
- }
+ return $list;
}
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/THistory.php
+++ b/classes/bfw/mvc/model/THistory.php
@@ -1,84 +1,85 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
+
+/**
+ * Class THistory
+ *
+ * @method getTicket_Id()
+ * @method getAction_Id()
+ * @method getUser_Id()
+ * @method getStatus_Id()
+ *
+ * @method getSubject()
+ * @method getMessage()
+ *
+ * @method getLocked()
+ * @method getLast_Access()
+ *
+ * @method setTicket_Id($param)
+ * @method setAction_Id($param)
+ * @method setUser_Id($param)
+ * @method setStatus_Id($param)
+ *
+ * @method setSubject($param)
+ * @method setMessage($param)
+ *
+ * @method setLocked($locked)
+ * @method setLast_Access($lastAccess)
+ *
+ */
+class THistory extends Model {
+
+ public function __construct() {
+ parent::__construct('t_history');
+
+ $this->data = array(
+ 'id' => NULL,
+ 'ticked_id' => 1,
+ 'action_id' => 1,
+ 'user_id' => 1,
+ 'status_id' => 1,
+ 'subject' => '',
+ 'message' => '',
+ 'locked' => false,
+ 'last_access' => 'now()',
+ );
+ }
/**
- * Class THistory
- *
- * @method getTicket_Id()
- * @method getAction_Id()
- * @method getUser_Id()
- * @method getStatus_Id()
- *
- * @method getSubject()
- * @method getMessage()
- *
- * @method getLocked()
- * @method getLast_Access()
+ * <b>Liefert das Name-Attribut der jeweiligen Action</b>
*
- * @method setTicket_Id($param)
- * @method setAction_Id($param)
- * @method setUser_Id($param)
- * @method setStatus_Id($param)
- *
- * @method setSubject($param)
- * @method setMessage($param)
- *
- * @method setLocked($locked)
- * @method setLast_Access($lastAccess)
- *
+ * @return string
*/
- class THistory extends Model {
+ public function getActionName() {
+ $action = new TAction();
+ $action->find($this->getAction_Id());
- public function __construct() {
- parent::__construct('t_history');
+ return $action->getName();
+ }
- $this->data = array(
- 'id' => NULL,
- 'ticked_id' => 1,
- 'action_id' => 1,
- 'user_id' => 1,
- 'status_id' => 1,
- 'subject' => '',
- 'message' => '',
- 'locked' => false,
- 'last_access' => 'now()',
- );
- }
-
- /**
- * <b>Liefert das Name-Attribut der jeweiligen Action</b>
- *
- * @return string
- */
- public function getActionName() {
- $action = new TAction();
- $action->find($this->getAction_Id());
+ /**
+ * <b>Liefert das Name-Attribut des jeweiligen Status</b>
+ *
+ * @return string|null
+ */
+ public function getStatusName() {
+ $status = new TStatus();
+ $status->find($this->getStatus_Id());
- return $action->getName();
- }
-
- /**
- * <b>Liefert das Name-Attribut des jeweiligen Status</b>
- *
- * @return string|null
- */
- public function getStatusName() {
- $status = new TStatus();
- $status->find($this->getStatus_Id());
+ return $status->getName();
+ }
- return $status->getName();
- }
+ /**
+ * <b>Liefert das jeweilige Username Attribut des angebenen Benutzers</b>
+ *
+ * @return string
+ */
+ public function getUsername() {
+ $user = new TUser();
- /**
- * <b>Liefert das jeweilige Username Attribut des angebenen Benutzers</b>
- *
- * @return string
- */
- public function getUsername() {
- $user = new TUser();
-
- return $user->getFormattedUsername($this->getUser_Id());
- }
+ return $user->getFormattedUsername($this->getUser_Id());
}
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TStatus.php
+++ b/classes/bfw/mvc/model/TStatus.php
@@ -1,36 +1,37 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
+
+/**
+ * Class TStatus
+ *
+ * @method getName()
+ */
+class TStatus extends Model {
+ const OFFEN = 2;
+ const GESCHLOSSEN = 3;
+
+ public function __construct() {
+ parent::__construct('t_status');
+
+ $this->data = array(
+ 'id' => NULL,
+ 'name' => '',
+ );
+
+ }
/**
- * Class TStatus
+ * <b>Liefert den Bezeichner des angegebenen PKs der Status-Instanz<</b>
*
- * @method getName()
+ * @param $id
+ * @return mixed
*/
- class TStatus extends Model {
- const OFFEN = 2;
- const GESCHLOSSEN = 3;
-
- public function __construct() {
- parent::__construct('t_status');
+ public function getFormattedStatus($id) {
+ $status = $this->find($id);
- $this->data = array(
- 'id' => NULL,
- 'name' => '',
- );
-
- }
-
- /**
- * <b>Liefert den Bezeichner des angegebenen PKs der Status-Instanz<</b>
- *
- * @param $id
- * @return mixed
- */
- public function getFormattedStatus($id) {
- $status = $this->find($id);
-
- return $status->getName();
- }
+ return $status->getName();
}
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TText.php
+++ b/classes/bfw/mvc/model/TText.php
@@ -1,28 +1,29 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
- /**
- * Class TText
- *
- * @method int getUser_Id()
- * @method string getHeadline()
- * @method string getText()
- * @method setUser_Id($param)
- * @method setHeadline($param)
- * @method setText($param)
- */
- class TText extends Model {
- public function __construct() {
- parent::__construct('t_text');
+/**
+ * Class TText
+ *
+ * @method int getUser_Id()
+ * @method string getHeadline()
+ * @method string getText()
+ * @method setUser_Id($param)
+ * @method setHeadline($param)
+ * @method setText($param)
+ */
+class TText extends Model {
+ public function __construct() {
+ parent::__construct('t_text');
- $this->data = array(
- 'id' => NULL,
- 'user_id' => 1,
- 'headline' => '',
- 'text' => '',
- );
+ $this->data = array(
+ 'id' => NULL,
+ 'user_id' => 1,
+ 'headline' => '',
+ 'text' => '',
+ );
- }
}
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TTicket.php
+++ b/classes/bfw/mvc/model/TTicket.php
@@ -1,196 +1,201 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
+use Logger;
+
+/**
+ * Class TTicket
+ *
+ * @method int getUser_Id()
+ * @method int getStatus_Id()
+ * @method string getSubject()
+ * @method string getMessage()
+ * @method bool getLocked()
+ * @method timestamp getLast_Access()
+ *
+ * @method setStatus_Id($param)
+ * @method setSubject($param)
+ * @method setMessage($param)
+ * @method setLocked($param)
+ * @method setLast_Access($param)
+ *
+ */
+class TTicket extends Model {
+ private static $logger = null;
+
+ public function __construct() {
+ parent::__construct('t_ticket');
+
+ self::$logger = Logger::getLogger('__CLASS__');
+
+ $this->data = array(
+ 'id' => NULL,
+ 'user_id' => 1,
+ 'status_id' => 1,
+ 'subject' => '',
+ 'message' => '',
+ 'locked' => 0,
+ 'last_access' => 'now()',
+ );
+ }
/**
- * Class TTicket
+ * <b>Findet alle Tickets des angegebenen Nutzers</b>
+ *
*
- * @method int getUser_Id()
- * @method int getStatus_Id()
- * @method string getSubject()
- * @method string getMessage()
- * @method bool getLocked()
- * @method timestamp getLast_Access()
- *
- * @method setStatus_Id($param)
- * @method setSubject($param)
- * @method setMessage($param)
- * @method setLocked($param)
- * @method setLast_Access($param)
- *
+ * @param SERIAL $uid
+ * @return array|null
*/
- class TTicket extends Model {
- private static $logger = null;
-
- public function __construct() {
- parent::__construct('t_ticket');
-
- self::$logger = \Logger::getLogger('__CLASS__');
+ public function findAllTicketsByUserid($uid) {
+ return $this->findAllByField('user_id', $uid);
+ }
- $this->data = array(
- 'id' => NULL,
- 'user_id' => 1,
- 'status_id' => 1,
- 'subject' => '',
- 'message' => '',
- 'locked' => 0,
- 'last_access' => 'now()',
- );
+ /**
+ * <b>Weisst frei gewordenen Tickets automatisiert zu.</b>
+ */
+ public function reassignFreeTickets() {
+ $tickets = $this->findAllByField('user_id', 1);
+
+ if (!is_object($tickets)) {
+ return;
}
- /**
- * <b>Findet alle Tickets des angegebenen Nutzers</b>
- *
- *
- * @param SERIAL $uid
- * @return array|null
- */
- public function findAllTicketsByUserid($uid) {
- return $this->findAllByField('user_id', $uid);
- }
+ $tUser = new TUser();
+ foreach ($tickets as $ticket) {
+ $freeSupporterId = $tUser->getFreeSupporterId();
- /**
- * <b>Weisst frei gewordenen Tickets automatisiert zu.</b>
- */
- public function reassignFreeTickets() {
- $tickets = $this->findAllByField('user_id', 1);
-
- $tUser = new TUser();
- foreach ($tickets as $ticket) {
- $freeSupporterId = $tUser->getFreeSupporterId();
+ /**
+ * Niemals vergessen: Nur aktualisieren, wenn auch
+ * aktualisiert werden muss.
+ *
+ */
+ if ($freeSupporterId > 1) {
+ $ticket->setUser_Id($freeSupporterId);
+ if ($ticket->store()) {
+ self::$logger->info(sprintf("TICKET %d wurde neu zugewiesen.", $ticket->getId()));
+ }
+ }
+ }
+ }
- /**
- * Niemals vergessen: Nur aktualisieren, wenn auch
- * aktualisiert werden muss.
- *
- */
- if ($freeSupporterId > 1) {
- $ticket->setUser_Id($freeSupporterId);
- if ($ticket->store($ticket->getId(), $ticket)) {
- self::$logger->info(sprintf("TICKET %d wurde neu zugewiesen.", $ticket->getId()));
- }
+ public function lockTicket($ticket, $user) {
+ if ($user->getGroup_id() == TGroup::SUPPORTER) {
+ if ($ticket->getLocked() == false) {
+ $ticket->setLocked(1);
+ $ticket->setLast_Access(date('Y-m-d H:i:s'));
+
+ if ($ticket->store()) {
+ self::$logger->info(sprintf("TICKET %d wurde gesperrt", $ticket->getId()));
+ return true;
}
}
}
- public function lockTicket($ticket, $user) {
- if ($user->getGroup_id() == TGroup::SUPPORTER) {
- if ($ticket->getLocked() == false) {
- $ticket->setLocked(1);
- $ticket->setLast_Access(date('Y-m-d H:i:s'));
+ return false;
+ }
+
+ /**
+ * <b>Das Ticket wird automatisch entsperrt nach 2 Stunden</b>
+ *
+ * @return bool
+ */
+ public function unlockTickets() {
+ $tickets = $this->findAll(false);
+ $user = new TUser();
+
+ foreach ($tickets as $ticket) {
+ if ($ticket->getStatus_Id() == TStatus::GESCHLOSSEN) {
+ continue;
+ }
+
+ // Ticketalter
+ $ticketAge = time() - strtotime($ticket->getLast_Access());
- if ($this->store($ticket->getId(), $ticket)) {
- self::$logger->info(sprintf("TICKET %d wurde gesperrt", $ticket->getId()));
- return true;
+ // Die Bearbeitungszeit beträgt 2 Stunden pro Supporter
+ $deadLine = 3600 * 2;
+
+ self::$logger->info('Ticket-Alter: ' . $ticketAge);
+ self::$logger->info('Deadline: ' . $deadLine);
+
+ if ($ticketAge > $deadLine) {
+ self::$logger->info('Time is up: Daten werden geändert.');
+ $freeSupporterId = $user->getFreeSupporterId();
+
+ if ($freeSupporterId > 1) {
+ $ticket->setUser_Id($freeSupporterId);
+ $ticket->setLocked(0);
+
+ if (!$ticket->store()) {
+ self::$logger->info(sprintf('Fehler beim Schreiben: %s', print_r($ticket->getData(), true)));
}
+ } else {
+ // Es existieren keine Supporter
+ self::$logger->info(sprintf("%s(): Es existieren keine Supporter!", __METHOD__));
}
}
-
- return false;
}
- /**
- * <b>Das Ticket wird automatisch entsperrt nach 2 Stunden</b>
- *
- * @param $tTicket
- * @return bool
- */
- public function unlockTickets($tTicket) {
- $tickets = $tTicket->findAll(false);
- $user = new TUser();
-
- foreach ($tickets as $ticket) {
- if ($ticket->getStatus_Id() == TStatus::GESCHLOSSEN) {
- continue;
- }
-
- // Ticketalter
- $ticketAge = time() - strtotime($ticket->getLast_Access());
-
- // Die Bearbeitungszeit beträgt 2 Stunden pro Supporter
- $deadLine = 3600 * 2;
+ return false;
+ }
- self::$logger->info('Ticket-Alter: ' . $ticketAge);
- self::$logger->info('Deadline: ' . $deadLine);
-
- if ($ticketAge > $deadLine) {
- self::$logger->info('Time is up: Daten werden geändert.');
- $freeSupporterId = $user->getFreeSupporterId();
-
- if ($freeSupporterId > 1) {
- $ticket->setUser_Id($freeSupporterId);
- $ticket->setLocked(0);
+ /**
+ * <b>Überladene find Methode</b>
+ *
+ * In früheren Versionen wurde hier das Ticket 'on the fly' modifiziert.
+ * Da das aber nicht Sinn und Zweck einer 'find' Methode ist, wurde das
+ * wieder entfernt und die Modifizierung erfolgt außerhalb...
+ *
+ * <b>Sinn und Zweck dieser Methode ist: 'Ticket-ID: nnn' ins Log zu schreiben...</b>
+ *
+ * @param $id
+ *
+ * @return array|null
+ */
+ public function find($id) {
+ self::$logger->info(sprintf("Ticket-ID: %d", $id));
- if ($this->store($ticket->getId(), $ticket)) {
- continue;
- }
- } else {
- // Es existieren keine Supporter
- self::$logger->info(sprintf("%s(): Es existieren keine Supporter!", __METHOD__));
- }
- }
- }
+ return parent::find($id);
+ }
+ /**
+ * <b>Prüft, ob der übergebene Nutzer überhaupt die Berechtigung für das übergebene Ticket besitzt.</b>
+ *
+ * @param $ticket
+ * @param $user
+ * @return bool
+ */
+ public function hasPrivilege($ticket, $user, $write = true) {
+
+ // NULL Tickets: Kein Zugriff
+ if (!is_object($ticket)) {
+ self::$logger->warn(sprintf("%s(): Ticket wurde nicht initialisiert!", __METHOD__));
return false;
}
- /**
- * <b>Überladene find Methode</b>
- *
- * In früheren Versionen wurde hier das Ticket 'on the fly' modifiziert.
- * Da das aber nicht Sinn und Zweck einer 'find' Methode ist, wurde das
- * wieder entfernt und die Modifizierung erfolgt außerhalb...
- *
- * <b>Sinn und Zweck dieser Methode ist: 'Ticket-ID: nnn' ins Log zu schreiben...</b>
- *
- * @param $id
- *
- * @return array|null
- */
- public function find($id) {
- self::$logger->info(sprintf("Ticket-ID: %d", $id));
+ // NULL User: Kein Zugriff
+ if (!is_object($user)) {
+ self::$logger->warn(sprintf("%s(): Benutzer wurde nicht initialisiert!", __METHOD__));
+ return false;
+ }
- return parent::find($id);
+ // ADMIN UND MANAGER: Zugriff per Default
+ switch ($user->getGroup_Id()) {
+ case TGroup::ADMIN:
+ case TGroup::MANAGER:
+ return true;
}
- /**
- * <b>Prüft, ob der übergebene Nutzer überhaupt die Berechtigung für das übergebene Ticket besitzt.</b>
- *
- * @param $ticket
- * @param $user
- * @return bool
- */
- public function hasPrivilege($ticket, $user, $write = true) {
-
- // NULL Tickets: Kein Zugriff
- if (!is_object($ticket)) {
- self::$logger->warn(sprintf("%s(): Ticket wurde nicht initialisiert!", __METHOD__));
- return false;
+ if ($write == false) {
+ // System-Datensatz herausfiltern
+ if ($ticket->getId() > 1) {
+ return true;
}
-
- // NULL User: Kein Zugriff
- if (!is_object($user)) {
- self::$logger->warn(sprintf("%s(): Benutzer wurde nicht initialisiert!", __METHOD__));
- return false;
- }
-
- // ADMIN UND MANAGER: Zugriff per Default
- switch ($user->getGroup_Id()) {
- case TGroup::ADMIN:
- case TGroup::MANAGER:
- return true;
- }
-
- if ($write == false) {
- // System-Datensatz herausfiltern
- if ($ticket->getId() > 1) {
- return true;
- }
- }
-
- // Ticketbasierter Zugriff: Ticket-Owner == Angemeldeter Benutzer?
- return ($ticket->getUser_Id() == $user->getId());
}
+ // Ticketbasierter Zugriff: Ticket-Owner == Angemeldeter Benutzer?
+ return ($ticket->getUser_Id() == $user->getId());
}
+
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TUser.php
+++ b/classes/bfw/mvc/model/TUser.php
@@ -1,103 +1,110 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
+use Logger;
+
+/**
+ * Class TUser
+ *
+ * @method string getUsername()
+ * @method int getGroup_Id()
+ * @method string getPassword()
+ * @method string getFirstname()
+ * @method string getLastname()
+ * @method setUsername()
+ * @method setGroup_Id()
+ * @method setPassword()
+ * @method setFirstname()
+ * @method setLastname()
+ */
+class TUser extends Model {
+ const SYSTEM = 1;
+ private static $logger = null;
+
+ public function __construct() {
+ parent::__construct('t_user');
+
+ self::$logger = Logger::getLogger('__CLASS__');
+
+ $this->data = array(
+ 'id' => NULL,
+ 'group_id' => TGroup::SYSTEM,
+ 'username' => '',
+ 'firstname' => '',
+ 'lastname' => '',
+ 'password' => '',
+ );
+ }
/**
- * Class TUser
+ * <b>Liefert eine User-Instanz für den per Parameter übergebenen Nutzernamen.</b>
*
- * @method string getUsername()
- * @method int getGroup_Id()
- * @method string getPassword()
- * @method string getFirstname()
- * @method string getLastname()
- * @method setUsername()
- * @method setGroup_Id()
- * @method setPassword()
- * @method setFirstname()
- * @method setLastname()
+ * @param $username
+ * @return array|null
*/
- class TUser extends Model {
- private static $logger = null;
+ public function findByUsername($username) {
+ $this->data = $this->db->findByField($this->table, 'username', $username);
- const SYSTEM = 1;
-
- public function __construct() {
- parent::__construct('t_user');
-
- self::$logger = \Logger::getLogger('__CLASS__');
-
- $this->data = array(
- 'id' => NULL,
- 'group_id' => TUser::SYSTEM,
- 'username' => '',
- 'firstname' => '',
- 'lastname' => '',
- 'password' => '',
- );
+ if ($this->data == null) {
+ return null;
}
- /**
- * <b>Liefert eine User-Instanz für den per Parameter übergebenen Nutzernamen.</b>
- *
- * @param $username
- * @return array|null
- */
- public function findByUsername($username) {
- $this->data = $this->db->findByField($this->table, 'username', $username);
+ return $this;
+ }
- if ($this->data == null) {
- return null;
- }
+ /**
+ * <b>Liefert den formatierten Nutzernamen zur übergebenen Nutzer-Id</b>
+ *
+ * @param $user_id
+ * @return string
+ */
+ public function getFormattedUsername($user_id) {
+ $user = $this->find($user_id);
- return $this;
+ if (!is_object($user)) {
+ return 'Unbekannt, Unbekannt';
}
- /**
- * <b>Liefert den formatierten Nutzernamen zur übergebenen Nutzer-Id</b>
- *
- * @param $user_id
- * @return string
- */
- public function getFormattedUsername($user_id) {
- $user = $this->find($user_id);
- return sprintf("%s, %s", $user->getLastname(), $user->getFirstname());
- }
+ return sprintf("%s, %s", $user->getLastname(), $user->getFirstname());
+ }
- /**
- * <b>FindMethode für alle Manager und Darunter</b>
- *
- * @return array|null
- */
- public function findAllManagersAndBelow() {
- $managers = $this->db->query(sprintf("
+ /**
+ * <b>FindMethode für alle Manager und Darunter</b>
+ *
+ * @return array|null
+ */
+ public function findAllManagersAndBelow() {
+ $managers = $this->db->query(sprintf("
SELECT
*
FROM
`%s`
WHERE
`group_id` in (3,4,5)",
- $this->table));
+ $this->table));
- $list = array();
- foreach ($managers as $manager) {
- $item = new static();
- $item->data = $manager;
+ $list = array();
+ foreach ($managers as $manager) {
+ $item = new static();
+ $item->data = $manager;
- $list[] = $item;
- }
-
- return $list;
+ $list[] = $item;
}
- /**
- * liefert den PK des nächst freien Supporters oder
- * im Falle von nicht vorhandenen Supportern den System-Datensatz
- *
- * @return int
- */
- public function getFreeSupporterId() {
+ return $list;
+ }
- $sql = sprintf("
+ /**
+ * liefert den PK des nächst freien Supporters oder
+ * im Falle von nicht vorhandenen Supportern den System-Datensatz
+ *
+ * @return int
+ */
+ public function getFreeSupporterId() {
+
+ $sql = sprintf("
SELECT
u.id,
COUNT(t.user_id) AS `count`
@@ -113,25 +120,25 @@
`count` ASC
");
- $data = $this->db->query($sql);
+ $data = $this->db->query($sql);
- if ($data == null) {
- // Ich will hier definitiv immer eine gültige ID haben, also einen PK
- return 1;
- }
-
- self::$logger->info(sprintf("Data: %s", print_r($data, true)));
-
- return $data[0]['id'];
+ if ($data == null) {
+ // Ich will hier definitiv immer eine gültige ID haben, also einen PK
+ return 1;
}
- /**
- * <b>Anzahl der Tickets eines Benutzers</b>
- *
- * @return mixed
- */
- public function getTicketCount() {
- $sql = sprintf("
+ self::$logger->info(sprintf("Data: %s", print_r($data, true)));
+
+ return $data[0]['id'];
+ }
+
+ /**
+ * <b>Anzahl der Tickets eines Benutzers</b>
+ *
+ * @return mixed
+ */
+ public function getTicketCount() {
+ $sql = sprintf("
SELECT
count(*) as anzahl
FROM
@@ -140,10 +147,9 @@
user_id = %d
", $this->getId());
- $data = $this->db->query($sql);
+ $data = $this->db->query($sql);
- return $data[0]['anzahl'];
- }
+ return $data[0]['anzahl'];
+ }
- }
}
\ No newline at end of file
--- a/classes/bfw/mvc/model/TView.php
+++ b/classes/bfw/mvc/model/TView.php
@@ -1,58 +1,54 @@
<?php
-namespace bfw\mvc\model {
+namespace bfw\mvc\model;
+
+use bfw\mvc\common\Model;
+
+/**
+ * Class TView
+ *
+ * @method string getId()
+ */
+class TView extends Model {
/**
- * Class TView
+ * Nur Get-Methoden im View
*
- * @method string getId()
+ * @param $methodName
+ * @param null $params
+ * @return mixed
*/
- class TView extends Model {
+ public function __call($methodName, $params = null) {
+ $prefix = substr($methodName, 0, 3);
+ $key = strtolower(substr($methodName, 3));
- /**
- * Nur Get-Methoden im View
- *
- * @param $methodName
- * @param null $params
- * @return mixed
- */
- public function __call($methodName, $params = null) {
- $prefix = substr($methodName, 0, 3);
- $key = strtolower(substr($methodName, 3));
-
- if ($prefix == 'get') {
- if (array_key_exists($key, $this->data)) {
- return $this->data[$key];
- }
+ if ($prefix == 'get') {
+ if (array_key_exists($key, $this->data)) {
+ return $this->data[$key];
}
-
- exit(sprintf('Unbekannte Methode %s(%s, %s) wurde aufgerufen.', $methodName, $key, $prefix));
}
- /**
- * @param $id
- * @param $object
- * @return bool
- */
- public function store($id, $object) {
- return false;
- }
+ exit(sprintf('Unbekannte Methode %s(%s, %s) wurde aufgerufen.', $methodName, $key, $prefix));
+ }
+
+ /**
+ * @return bool
+ */
+ public function store() {
+ return false;
+ }
- /**
- * @param $id
- * @return bool
- */
- public function delete($id) {
- return false;
- }
+ /**
+ * @return bool
+ */
+ public function delete() {
+ return false;
+ }
- /**
- * @param $id
- * @param $object
- * @return bool
- */
- public function persist($id, $object) {
- return false;
- }
+ /**
+ * @return bool
+ */
+ public function persist() {
+ return false;
}
}
\ No newline at end of file