Create User & Media models/controllers, remove Task & Project

# Created:

#  - UserModel + UserController

#  - MediaModel + MediaController

# Removed:

#  - TaskModel + TaskController

#  - ProjectModel + ProjectController
This commit is contained in:
MosLaptop\Not.Reda
2025-09-05 12:04:18 +02:00
parent 69dd02eb91
commit 4efea20fae
18 changed files with 405 additions and 227 deletions

71
Model/MediaModel.php Normal file
View File

@@ -0,0 +1,71 @@
<?php
namespace ppb\Model;
use ppb\Library\Msg;
class MediaModel extends Database
{
public function getAll()
{
$pdo = $this->linkDB();
$sql = "SELECT * FROM media";
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sth = $pdo->prepare($sql);
$sth->execute();
$result = $sth->fetchAll(\PDO::FETCH_ASSOC);
$sth->closeCursor();
$pdo = null;
return $result;
} catch (\PDOException $e) {
return ["error" => $e->getMessage()];
}
}
public function insert($data)
{
$pdo = $this->linkDB();
$sql = "INSERT INTO media (uid, tid, name, length)
VALUES (:uid, :tid, :name, :length)";
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sth = $pdo->prepare($sql);
$sth->bindValue(':uid', $data['uid']);
$sth->bindValue(':tid', $data['tid']);
$sth->bindValue(':name', $data['name']);
$sth->bindValue(':length', $data['length'] ?? null);
$sth->execute();
$sth->closeCursor();
$pdo = null;
return ["success" => true, "message" => "Media inserted"];
} catch (\PDOException $e) {
return ["error" => $e->getMessage()];
}
}
public function remove($data)
{
$pdo = $this->linkDB();
$sql = "DELETE FROM media WHERE mid = :mid";
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sth = $pdo->prepare($sql);
$sth->bindValue(':mid', $data['mid']);
$sth->execute();
$sth->closeCursor();
$pdo = null;
return ["success" => true, "message" => "Media removed"];
} catch (\PDOException $e) {
return ["error" => $e->getMessage()];
}
}
}

49
Model/ProjectModel.php Normal file
View File

@@ -0,0 +1,49 @@
<?php
namespace ppb\Model;
use ppb\Library\Msg;
class ProjectModel extends Database
{
public function readProject()
{
$pdo = $this->linkDB();
$sql = "SELECT * FROM users";
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
} catch (\PDOException $e) {
new Msg(true, null, $e);
}
$sth = $pdo->prepare($sql);
$sth->execute();
$result = $sth->fetchAll(\PDO::FETCH_ASSOC);
$sth->closeCursor();
$pdo = null;
// fetch all
return $result;
}
public function insertNewMediaType($data)
{
$pdo = $this->linkDB();
try {
// it should add an new type and it is Files
$sql = "INSERT INTO media_types (id, type)
VALUES (:id, :type)";
$sth = $pdo->prepare($sql);
$sth-> execute([
':id' => $this->createUUID(),
':type' => $data['Files']
]);
$pdo = null;
new Msg(false, "Medientyp erfolgreich eingefügt.");
} catch (\PDOException $e) {
new Msg(true, 'Fehler beim Einfügen des Medientyps', $e);
}
}
}

37
Model/TaskModel.php Normal file
View File

@@ -0,0 +1,37 @@
<?php
namespace ppb\Model;
use ppb\Library\Msg;
class TaskModel extends Database {
public function insertTask($data) {
$pdo = $this->linkDB();
try {
$sql = "INSERT INTO task (id, userId, projectId, title, expense, dueDate, priorityId, done )
VALUES (:id,:userId,:projectId, :title, :expense, :dueDate, :priorityId, :done)";
$sth = $pdo->prepare($sql);
$sth-> execute([
':id' => $this->createUUID(),
':userId' => '4f141df7-3c0a-11e8-b046-2c4d544f8fe0',
':projectId' => $data['projectId'],
':title' => $data['title'],
':expense' => str_replace("," , "." ,$data['expense']),
':dueDate' => date("Y-m-d", strtotime($data['dueDate'])),
':priorityId' => $data['priorityId'],
':done' => 0
]);
$pdo = null;
new Msg(false, "Task erfolgreich eingefügt.");
} catch (\PDOException $e) {
new Msg(true, 'Fehler beim Einfügen des Tasks', $e);
}
}
}

76
Model/UserModel.php Normal file
View File

@@ -0,0 +1,76 @@
<?php
// Mohammad Reda Mohammad
namespace ppb\Model;
use ppb\Library\Msg;
class UserModel extends Database
{
public function getAll()
{
$pdo = $this->linkDB();
$sql = "SELECT uid, username, email, created_at FROM users"; // dont expose password hash
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sth = $pdo->prepare($sql);
$sth->execute();
$result = $sth->fetchAll(\PDO::FETCH_ASSOC);
$sth->closeCursor();
$pdo = null;
return $result;
} catch (\PDOException $e) {
return ["error" => $e->getMessage()];
}
}
public function insert($data)
{
$pdo = $this->linkDB();
$sql = "INSERT INTO users (username, email, password_hash)
VALUES (:username, :email, :password_hash)";
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sth = $pdo->prepare($sql);
$sth->bindValue(':username', $data['username']);
$sth->bindValue(':email', $data['email']);
$sth->bindValue(':password_hash', password_hash($data['password'], PASSWORD_BCRYPT));
$sth->execute();
$sth->closeCursor();
$pdo = null;
return ["success" => true, "message" => "User created"];
} catch (\PDOException $e) {
return ["error" => $e->getMessage()];
}
}
public function update($data)
{
$pdo = $this->linkDB();
$sql = "UPDATE users
SET username = :username,
email = :email
WHERE uid = :uid";
try {
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sth = $pdo->prepare($sql);
$sth->bindValue(':uid', $data['uid']);
$sth->bindValue(':username', $data['username']);
$sth->bindValue(':email', $data['email']);
$sth->execute();
$sth->closeCursor();
$pdo = null;
return ["success" => true, "message" => "User updated"];
} catch (\PDOException $e) {
return ["error" => $e->getMessage()];
}
}
}

46
Model/database.php Normal file
View File

@@ -0,0 +1,46 @@
<?php
namespace ppb\Model;
use ppb\Library\Msg;
abstract class Database {
/**
* Zugangsdaten für die Datenbank
*/
private $dbName = "vpr_pbat3h23a"; //Datenbankname
private $linkName = "mysql.pb.bib.de"; //Datenbank-Server
private $user = "vpr_pbat3h23a"; //Benutzername
private $pw = "SBHwIWNqmMevnlqt"; //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
, [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]);
return $pdo;
} catch (\PDOException $e) {
new Msg(true, null, $e);
throw $e;
}
}
/**
* Zum serverseitigen generieren einer UUID
*
* @return string Liefert eine UUID
*/
public function createUUID()
{
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
}