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,158 @@
<?php
/*
Controller za oglase. Vključuje naslednje standardne akcije:
index: izpiše vse oglase
show: izpiše posamezen oglas
create: izpiše obrazec za vstavljanje oglasa
store: vstavi obrazec v bazo
edit: izpiše vmesnik za urejanje oglasa
update: posodobi oglas v bazi
delete: izbriše oglas iz baze
*/
class ads_controller
{
public function index()
{
//s pomočjo statične metode modela, dobimo seznam vseh oglasov
//$ads bo na voljo v pogledu za vse oglase index.php
$ads = Ad::all();
//pogled bo oblikoval seznam vseh oglasov v html kodo
require_once('views/ads/index.php');
}
public function show()
{
//preverimo, če je uporabnik podal informacijo, o oglasu, ki ga želi pogledati
if (!isset($_GET['id'])) {
if(isset($_SESSION["USER_ID"]))
{
$ads = Ad::findUser($_SESSION["USER_ID"]);
require_once('views/ads/myAdds.php');
}
else
{
return call('pages', 'error');
}
}
else
{
$ad = Ad::find($_GET['id']);
require_once('views/ads/show.php');
}
}
public function create()
{
if(!isset($_SESSION["USER_ID"])){
header("Location: /admin/index.php");
die();
}
// Izpišemo pogled z obrazcem za vstavljanje oglasa
$categorys = Categorys::all();
require_once('views/ads/create.php');
}
public function store()
{
if(!isset($_SESSION["USER_ID"])){
header("Location: /admin/index.php");
die();
}
// Obdelamo podatke iz obrazca (views/ads/create.php), akcija pričakuje da so podatki v $_POST
// Tukaj bi morali podatke še validirati, preden jih dodamo v bazo
// Pokličemo metodo za ustvarjanje novega oglasa
$ad = Ad::insert($_POST["title"], $_POST["description"], $_FILES["image"], $_POST['categorys']);
//ko je oglas dodan, imamo v $ad podatke o tem novem oglasu
//uporabniku lahko pokažemo pogled, ki ga bo obvestil o uspešnosti oddaje oglasa
call('ads', 'show');
}
public function edit()
{
if(!isset($_SESSION["USER_ID"])){
header("Location: /admin/index.php");
die();
}
// Ob klicu akcije se v URL poda GET parameter z ID-jem oglasa, ki ga urejamo
// Od modela pridobimo podatke o oglasu, da lahko predizpolnimo vnosna polja v obrazcu
if (!isset($_GET['id'])) {
return call('pages', 'error');
}
$ad = Ad::find($_GET['id']);
require_once('views/ads/edit.php');
}
public function update()
{
if(!isset($_SESSION["USER_ID"])){
header("Location: /admin/index.php");
die();
}
// Obdelamo podatke iz obrazca (views/ads/edit.php), ki pridejo v $_POST.
// Pričakujemo, da je v $_POST podan tudi ID oglasa, ki ga posodabljamo.
if (!isset($_POST['id'])) {
return call('pages', 'error');
}
// Naložimo oglas
$ad = Ad::find($_POST['id']);
// Pokličemo metodo, ki posodobi obstoječi oglas v bazi
$ad->update($_POST["title"], $_POST["description"]);
header("Location: /admin/index.php?controller=ads&action=show");
die();
}
public function addImg()
{
if(!isset($_SESSION["USER_ID"])){
header("Location: /admin/index.php");
die();
}
if (!isset($_GET['id'])) {
return call('pages', 'error');
}
if(isset($_POST['submit']))
{
$ad = Ad::find($_GET['id']);
$id = $ad->addImg($_FILES["image"]);
header("Location: /admin/index.php?controller=ads&action=show");
die();
}
else
{
$ad = Ad::find($_GET['id']);
require_once('views/ads/addImg.php');
}
}
public function delete()
{
if(!isset($_SESSION["USER_ID"])){
header("Location: /admin/index.php");
die();
}
// Obdelamo zahtevo za brisanje oglasa. Akcija pričakuje, da je v URL-ju podan ID oglasa.
if (!isset($_GET['id'])) {
return call('pages', 'error');
}
// Poiščemo oglas
$ad = Ad::find($_GET['id']);
// Kličemo metodo za izbris oglasa iz baze.
$ad->delete();
header("Location: /admin/index.php?controller=ads&action=show");
die();
}
}

View File

@@ -0,0 +1,72 @@
<?php
/*
Enostaven primer controlletja, ki ne uporablja modela.
Njegova naloga je, da vrača statične HTML strani, kot je stran z napako.
Uporabili smo ga tudi za prikaz vmesnika, ki demonstrira uporabi API-ja.
*/
class pages_controller {
public function error() {
// Izpiše pogled s sporočilom o napaki
require_once('views/pages/error.php');
}
public function api(){
if(isset($_SESSION["USER_ID"]) && $_SESSION["ADM"] == 1){
//Prikaži vmesnik za upravljanje z API-jem
require_once('views/pages/api.php');
}
}
public function api1(){
if(isset($_SESSION["USER_ID"]) && $_SESSION["ADM"] == 1){
//Prikaži vmesnik za upravljanje z API-jem
require_once('views/pages/api1.php');
}
}
public function logout(){
require_once('views/pages/logout.php');
}
public function login(){
if(isset($_POST["submit"])){
//Preveri prijavne podatke
if(($user = User::validate_login($_POST["username"], $_POST["password"])) != null){
//Zapomni si prijavljenega uporabnika v seji in preusmeri na index.php
$_SESSION["USER_ID"] = $user->id;
$_SESSION["ADM"] = $user->adm;
header("Location: /admin/index.php");
die();
}
}
require_once('views/pages/login.php');
}
public function register(){
$error = "";
if(isset($_POST["submit"]))
{
//Preveri, če uporabniško ime že obstaja
if(User::username_exists($_POST["username"]))
{
$error = "Uporabniško ime že obstaja!";
}
else if($_POST["password"] != $_POST["repeat_password"])
{
$error = "Gesli se ne ujemata!";
}
else{
User::createUser($_POST["username"], $_POST["password"], $_POST["email"], $_POST["ime"], $_POST["priimek"], $_POST["naslov"], $_POST["posta"], $_POST["telefon"]);
header("Location: /admin/index.php?controller=pages&action=login");
die();
}
}
require_once('views/pages/register.php');
}
}
?>