consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
<?php
class comments_controller_json
{
public function index()
{
// Iz modela pidobimo vse oglase
$comments = Comments::all();
//izpišemo $ads v JSON formatu
echo json_encode($comments);
}
public function show($id)
{
$comments = Comments::findForAd($id);
echo json_encode($comments);
}
public function store()
{
$comment = Comments::insert($_POST["ad_id"], $_SESSION["USER_ID"], $_POST["content"]);
echo json_encode($comment);
}
public function update($id)
{
}
public function delete($id)
{
// Poiščemo in izbrišemo oglas
$comment = Comments::find($id);
$comment->delete();
// Vrnemo podatke iz izbrisanega oglasa
echo json_encode($comment);
}
}

View File

@@ -0,0 +1,53 @@
<?php
class users_controller_json
{
public function index()
{
// Iz modela pidobimo vse oglase
$users = User::all();
//izpišemo $ads v JSON formatu
echo json_encode($users);
}
public function show($id)
{
$user = User::find($id);
echo json_encode($user);
}
public function store()
{
// Store se pokliče z POST, zato so podatki iz obrazca na voljo v $_POST
$id = User::insert($_POST["username"], $_POST["password"]);
$user = User::find($id);
// Vrnemo vstavljen oglas
echo json_encode($user);
}
public function update($id)
{
// Update se pokliče z PUT, zato nima podatkov v formData ($_POST).
// Namesto tega smo jih poslali v body-u HTTP zahtevka v JSON formatu.
$data = file_get_contents('php://input'); //preberemo body iz zahtevka
$data = json_decode($data, true); //dekodiramo JSON string v PHP array
// Poiščemo in posodobimo oglas
$user = User::find($id);
$user = $user->update($data['username'], $data['email'], $data['ime'], $data['priimek'], $data['naslov'], $data['posta'], $data['telefon']);
// Vrnemo posodobljen oglas
echo json_encode($user);
}
public function delete($id)
{
// Poiščemo in izbrišemo oglas
$user = User::find($id);
$user->delete();
// Vrnemo podatke iz izbrisanega oglasa
echo json_encode($user);
}
}

View File

@@ -0,0 +1,91 @@
<?php
/*
Vstopna točka za našo spletno storitev. Podobno kot pri MVC, bodo tudi vse zahteve na API šle skozi index.php,
ki bo poskrbel za njihovo obravnavo.
Index.php ima tako vlogo routerja, ki na podlagi HTTP zahteve sproži ustrezne akcije.
Za razliko od MVC, bo poleg URL-ja pomembna tudi HTTP metoda v zahtevi, saj REST predpisuje akcije, ki jih prožijo določene metode.
ENDPOINTI:
api/ads/:id/
PUT -> posodobi
GET -> vrni oglas
DELETE -> zbriši oglas
api/ads
POST -> dodaj nov oglas
GET-> vrni vse oglase
S pomočjo .htaccess preslikamo URL-je iz /api.php/foo/bar => /api/foo/bar (več v datoteki .htaccess)
*/
require_once "../admin/connection.php"; //uporabimo povezavo na bazo iz MVC
session_start();
//nastavimo glave odgovora tako, da brskalniku sporočimo, da mu vračamo json
header('Content-Type: application/json');
//omgočimo zahtevo iz različnih domen
header("Access-Control-Allow-Origin: *");
// Kot odgovor iz API-ja izpišemo JSON string s pomočjo funkcije json_encode
// preberemo HTTP metodo iz zahteve
$method = $_SERVER['REQUEST_METHOD'];
// Razberemo parametre iz URL - razbijemo URL po '/'
// tako dobimo iz zahteve api/first/second/third => $request = array("first", "second", "third")
if(isset($_SERVER['PATH_INFO']))
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
else
$request="";
$controllers = array( 'users', 'comments' );
// Najprej potrebujemo 'router', ki bo razpoznal zahtevo in sprožil ustrezne akcije
// Preverimo, če je v url-ju prva pot 'ads'
if(!isset($request[0]) || !in_array($request[0], $controllers)){
echo json_encode((object)["status"=>"404", "message"=>"Not found"]);
die();
}
require_once ('../admin/models/' . $request[0] . '.php'); //uporabimo model Ad iz MVC
require_once ('controllers/' . $request[0] . '_controller_json.php'); //vključimo API controller
$o = $request[0] . "_controller_json"; //generiramo ime razreda controllerja
$controller = new $o; //ustvarimo instanco razreda (ime razreda je string spremenljivka)
// Odvisno od metode pokličemo ustrezen controller action
switch($method){
case "GET":
// Če je v zahtevi nastavljen :id, kličemo akcijo show (en oglas), sicer pa index (vsi oglasi)
if(isset($request[1])){
$controller->show($request[1]);
} else {
$controller->index();
}
break;
case "POST":
$controller->store();
break;
case "PUT":
if(!isset($request[1])){
// Če ni podan :id v zahtevi, izpišemo napako
echo json_encode((object)["status"=>"500", "message"=>"Invalid parameters"]);
die();
}
$controller->update($request[1]);
break;
case "DELETE":
if(!isset($request[1])){
// Če ni podan :id v zahtevi, izpišemo napako
echo json_encode((object)["status"=>"500", "message"=>"Invalid parameters"]);
die();
}
$controller->delete($request[1]);
break;
default:
break;
}