Alle Controller und Models
This commit is contained in:
commit
782311304e
35
Controller/BenutzerController.php
Normal file
35
Controller/BenutzerController.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Programmiert durch Samuel Wolff
|
||||||
|
// Getestet durch: Nicht getestet
|
||||||
|
|
||||||
|
namespace kindergartenverwaltung\Controller;
|
||||||
|
|
||||||
|
use kindergartenverwaltung\Library\Msg;
|
||||||
|
use kindergartenverwaltung\Model\BenutzerModel;
|
||||||
|
|
||||||
|
class BenutzerController{
|
||||||
|
|
||||||
|
private $db;
|
||||||
|
|
||||||
|
public function __construct(){
|
||||||
|
$this->db = new BenutzerModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateBenutzer($elternId, $data){
|
||||||
|
|
||||||
|
$result = $this->db->updateBenutzer($benutzerId, $data);
|
||||||
|
|
||||||
|
return json_encode($result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertBenutzer($data){
|
||||||
|
$result = $this->db->insertBenutzer($data)
|
||||||
|
|
||||||
|
return json_encode($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
47
Controller/KindController.php
Normal file
47
Controller/KindController.php
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Programmiert durch Samuel Wolff
|
||||||
|
// Getestet durch: Nicht getestet
|
||||||
|
|
||||||
|
namespace kindergartenverwaltung\Controller;
|
||||||
|
|
||||||
|
use kindergartenverwaltung\Library\Msg;
|
||||||
|
use kindergartenverwaltung\Model\KindModel;
|
||||||
|
|
||||||
|
class KindController{
|
||||||
|
|
||||||
|
private $db;
|
||||||
|
|
||||||
|
public function __construct(){
|
||||||
|
$this->db = new KindModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
// $parentId ist standardmäßig auf false und gibt damit alle Kinder aus,
|
||||||
|
// das setzen gibt nur Kinder eines bestimmten Benutzerkontos aus.
|
||||||
|
public function getKind($parentId = false){
|
||||||
|
$result = $this->db->getKind($parentId);
|
||||||
|
|
||||||
|
return json_encode($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateKind($kindId, $data){
|
||||||
|
$result = $this->db->updateKind($kindId, $data);
|
||||||
|
|
||||||
|
return json_encode($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addKind($data){
|
||||||
|
$result = $this->db->addKind($data);
|
||||||
|
|
||||||
|
return json_encode($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteKind($kindId){
|
||||||
|
$result = $this->db->deleteKind($kindId);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
31
Library/Msg.php
Normal file
31
Library/Msg.php
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ppb\Library;
|
||||||
|
|
||||||
|
class Msg
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Sends either an error or a success message as JSON Object. The error message contains
|
||||||
|
* additional informations about the error. If no individual msg is given as parameter,
|
||||||
|
* the default msg will be send
|
||||||
|
*
|
||||||
|
* @param boolean $isError is the msg an error msg?
|
||||||
|
* @param string $msg optional error message
|
||||||
|
* @param string $ex optional debug message
|
||||||
|
*/
|
||||||
|
public function __construct($isError = false, $msg = '', $ex = '')
|
||||||
|
{
|
||||||
|
if ($isError) {
|
||||||
|
$striped = strip_tags($ex);
|
||||||
|
echo json_encode(array(
|
||||||
|
"isError" => true,
|
||||||
|
"msg" => is_null($msg) ? 'Ihre Anfrage konnte nicht verarbeitet werden' : $msg,
|
||||||
|
"ex" => $striped
|
||||||
|
));
|
||||||
|
die;
|
||||||
|
} else {
|
||||||
|
echo json_encode(array("isError" => false));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
80
Model/BenutzerModel.php
Normal file
80
Model/BenutzerModel.php
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Programmiert durch Samuel Wolff
|
||||||
|
// Getestet durch: Nicht getestet
|
||||||
|
|
||||||
|
namespace kindergartenverwaltung\Controller;
|
||||||
|
|
||||||
|
use kindergartenverwaltung\Library\Msg;
|
||||||
|
use kindergartenverwaltung\Model\BenutzerModel;
|
||||||
|
|
||||||
|
class BenutzerModel extends Database{
|
||||||
|
|
||||||
|
public function updateBenutzer($elternId, $data){
|
||||||
|
$pdo = $this->linkDB();
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
|
||||||
|
$sql = "UPDATE Benutzer SET"
|
||||||
|
|
||||||
|
foreach($data as $index=>$value){
|
||||||
|
$sql .= " ".$index." = :".$index;
|
||||||
|
$params[":".$index] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql .= " WHERE id = :benutzerId;";
|
||||||
|
|
||||||
|
$params[":benutzerId"] = $kindId;
|
||||||
|
|
||||||
|
try{
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->excute($params);
|
||||||
|
}
|
||||||
|
catch(\PDOException $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $stmt->fetchALL(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function insertBenutzer($data){
|
||||||
|
$pdo = $this->linkDB();
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
|
||||||
|
$sql = "INSERT INTO Benutzer (";
|
||||||
|
|
||||||
|
foreach($data as $index=>$value){
|
||||||
|
$sql .= $index.", ";
|
||||||
|
$params[":"+$index] = $index;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = substr($sql, 0, strlen($sql)-2).") VALUES (";
|
||||||
|
|
||||||
|
foreach($data as $value){
|
||||||
|
$sql .= ":".$value." ,";
|
||||||
|
$params[":"+$value] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = substr($sql, 0, strlen($sql)-2).");";
|
||||||
|
|
||||||
|
try{
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->excute($params);
|
||||||
|
}
|
||||||
|
catch(\PDOException $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $stmt->fetchALL(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
36
Model/Database.php
Normal file
36
Model/Database.php
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ppb\Model;
|
||||||
|
|
||||||
|
use ppb\Library\Msg;
|
||||||
|
|
||||||
|
abstract class Database {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zugangsdaten für die Datenbank
|
||||||
|
*/
|
||||||
|
private $dbName = "pbs2h22aal_av"; //Datenbankname
|
||||||
|
private $linkName = "mysql.pb.bib.de"; //Datenbank-Server
|
||||||
|
//Administration: https://mysql.pb.bib.de/phpMyAdmin/
|
||||||
|
private $user = "pbs2h22aal"; //Benutzername
|
||||||
|
private $pw = "Iggibib!"; //Passwort
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stellt eine Verbindung zur Datenbank her
|
||||||
|
*
|
||||||
|
* @return \PDO Gibt eine Datenbankverbindung zurueck
|
||||||
|
*/
|
||||||
|
public function linkDB() {
|
||||||
|
try {
|
||||||
|
$pdo = new \PDO("mysql:dbname=$this->dbName;host=$this->linkName"
|
||||||
|
, $this->user
|
||||||
|
, $this->pw
|
||||||
|
, array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION));
|
||||||
|
return $pdo;
|
||||||
|
} catch (\PDOException $e) {
|
||||||
|
new Msg(true, null, $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
141
Model/KindModel.php
Normal file
141
Model/KindModel.php
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Programmiert durch Samuel Wolff
|
||||||
|
// Getestet durch: Nicht getestet
|
||||||
|
|
||||||
|
namespace kindergartenverwaltung\Model;
|
||||||
|
|
||||||
|
use kindergartenverwaltung\Library\Msg;
|
||||||
|
|
||||||
|
|
||||||
|
class KindModel extends Database{
|
||||||
|
|
||||||
|
public function getKind($parentId){
|
||||||
|
$pdo = $this->linkDB();
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$sql = "SELECT * FROM Kind";
|
||||||
|
|
||||||
|
|
||||||
|
// Das mitgeben einer Id erlaubt es die Kinder eines bestimmten Benutzerkontos anzeigen zu lassen,
|
||||||
|
// während das leerlassen alle Kinder ausgibt.
|
||||||
|
id($parentId !== false){
|
||||||
|
$sql. = " WHERE bid=:id;";
|
||||||
|
$params[":id"] = $parentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->excute($params);
|
||||||
|
}
|
||||||
|
catch(\PDOException $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $stmt->fetchALL(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updated die Daten eines Kindes
|
||||||
|
*
|
||||||
|
* @param $kindId Id des Kindes
|
||||||
|
* @param $data Json encoded Daten mit den neuen Werten
|
||||||
|
*/
|
||||||
|
public function updateKind($kindId, $data){
|
||||||
|
$pdo = $this->linkDB();
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$sql = "UPDATE KIND SET";
|
||||||
|
|
||||||
|
// Geht die Json-Daten durch und erweitert den SQL-Query
|
||||||
|
// und setzt die Bindparameter
|
||||||
|
// $index -> Spalte die geupdated wird
|
||||||
|
// $value -> neuer Wert
|
||||||
|
foreach($data as $index=>$value){
|
||||||
|
$sql .= " ".$index." = :".$index;
|
||||||
|
$params[":".$index] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql .= " WHERE id = :kindId;";
|
||||||
|
|
||||||
|
$params[":kindId"] = $kindId;
|
||||||
|
|
||||||
|
try{
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->excute($params);
|
||||||
|
}
|
||||||
|
catch(\PDOException $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $stmt->fetchALL(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $data Die Daten für das neue Kind
|
||||||
|
*/
|
||||||
|
public function addKind($data){
|
||||||
|
$pdo = $this->linkDB();
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
|
||||||
|
$sql = "INSERT INTO Kind (";
|
||||||
|
|
||||||
|
foreach($data as $index=>$value){
|
||||||
|
$sql .= $index.", ";
|
||||||
|
$params[":"+$index] = $index;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = substr($sql, 0, strlen($sql)-2).") VALUES (";
|
||||||
|
|
||||||
|
foreach($data as $value){
|
||||||
|
$sql .= ":".$value." ,";
|
||||||
|
$params[":"+$value] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = substr($sql, 0, strlen($sql)-2).");";
|
||||||
|
|
||||||
|
try{
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->excute($params);
|
||||||
|
}
|
||||||
|
catch(\PDOException $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $stmt->fetchALL(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function deleteKind($kindId){
|
||||||
|
$pdo = $this->linkDB();
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
|
||||||
|
$sql = "DELETE FROM Kind WHERE id = :id";
|
||||||
|
|
||||||
|
$params[":id"] = $kindId;
|
||||||
|
|
||||||
|
try{
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->excute($params);
|
||||||
|
}
|
||||||
|
catch(\PDOException $e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $stmt->fetchALL(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
85
restAPI.php
Normal file
85
restAPI.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
Dieses Skript analysiert die URL und generiert daraus die passenden Controller-Aufrufe
|
||||||
|
|
||||||
|
Für die Beispiel-URL
|
||||||
|
|
||||||
|
https://username.web.pb.bib.de/restAPI.php/aufgabe/3
|
||||||
|
|
||||||
|
liefert
|
||||||
|
|
||||||
|
$_SERVER['PATH_INFO'] den URL-Abschnitt "aufgabe/3"
|
||||||
|
|
||||||
|
und
|
||||||
|
|
||||||
|
file_get_contents('php://input') die übergebenen json-Strings (für PUT/POST-Requests)
|
||||||
|
*/
|
||||||
|
spl_autoload_register(function ($className) {
|
||||||
|
if (substr($className, 0, 4) !== 'ppb\\') { return; }
|
||||||
|
|
||||||
|
$fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 4)).'.php';
|
||||||
|
|
||||||
|
if (file_exists($fileName)) { include $fileName; }
|
||||||
|
});
|
||||||
|
|
||||||
|
$endpoint = explode('/', trim($_SERVER['PATH_INFO'],'/'));
|
||||||
|
$data = json_decode(file_get_contents('php://input'), true);
|
||||||
|
|
||||||
|
$controllerName = $endpoint[0];
|
||||||
|
$endpoint2 = isset($endpoint[1]) ? $endpoint[1] : false;
|
||||||
|
$id = false;
|
||||||
|
$alias = false;
|
||||||
|
|
||||||
|
if ($endpoint2) {
|
||||||
|
if (preg_match('/^[0-9]+$/', $endpoint2)) {
|
||||||
|
$id = $endpoint2;
|
||||||
|
} else {
|
||||||
|
$alias = $endpoint2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$controllerClassName = 'ppb\\Controller\\'.ucfirst($controllerName). 'Controller';
|
||||||
|
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == "DELETE") {
|
||||||
|
$methodName = "delete" . ucfirst($controllerName);
|
||||||
|
} else if ($_SERVER['REQUEST_METHOD'] == "PUT") {
|
||||||
|
$methodName = "update" . ucfirst($controllerName);
|
||||||
|
} else if ($_SERVER['REQUEST_METHOD'] == "POST") {
|
||||||
|
$methodName = "write" . ucfirst($controllerName);
|
||||||
|
} else if ($_SERVER['REQUEST_METHOD'] == "GET") {
|
||||||
|
if ($alias) {
|
||||||
|
$methodName = $alias;
|
||||||
|
} else {
|
||||||
|
$methodName = "get" . ucfirst($controllerName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (method_exists($controllerClassName, $methodName)) {
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
$controller = new $controllerClassName();
|
||||||
|
//GET
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == "GET") {
|
||||||
|
|
||||||
|
echo $controller->$methodName($id);
|
||||||
|
|
||||||
|
} else
|
||||||
|
//POST
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == "POST"){
|
||||||
|
echo $controller->$methodName($data);
|
||||||
|
} else
|
||||||
|
//DELETE
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == "DELETE"){
|
||||||
|
echo $controller->$methodName($id);
|
||||||
|
} else
|
||||||
|
//PUT
|
||||||
|
{
|
||||||
|
echo $controller->$methodName($id, $data);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//http_response_code(404);
|
||||||
|
new \ppb\Library\Msg(true, 'Page not found: '.$controllerClassName.'::'.$methodName);
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user