Files
kabano/controllers/d.poi.php
2026-01-18 17:55:43 +01:00

185 lines
6.3 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
require_once($config['models_folder']."d.poi.php");
require_once($config['models_folder']."d.comments.php");
require_once($config['models_folder']."d.users.php");
$head['css'] = "d.index.css;d.poi.css";
$poi = new Kabano\Poi();
switch ($controller->splitted_url[1]) {
case "new":
if ($user->rankIsHigher("registered")) {
if (isset($_POST['submit'])) {
$poi->name = $_POST['name'];
$poi->locale = $_POST['locale'];
$poi->poi_type = $_POST['poi_type'];
$poi->lat = $_POST['lat'];
$poi->lon = $_POST['lon'];
$poi->ele = $_POST['ele'];
$poi->author = $user->id;
$poi->source = "kab";
$poi->is_commentable = isset($_POST['is_commentable']) ? 't' : 'f';
$poi->parameters = new \stdClass(); // tu pourras y mettre ton JSON plus tard
if (!$poi->checkPermalink($_POST['permalink'], 1)) {
$poi->permalink = $_POST['permalink'];
$poi->insert();
header('Location: '.$config['rel_root_folder']."poi/".$poi->permalink);
} else {
$head['title'] = $poi->name;
$error = "permalink";
}
} else {
$head['title'] = "Nouvel hébergement";
}
$locales = new Kabano\Locales();
$locales->getAll();
$head['third'] = "leaflet/leaflet.js;leaflet-fullscreen/Leaflet.fullscreen.min.js;leaflet-easybutton/easy-button.js";
$head['css'] .= ";../third/leaflet/leaflet.css;../third/leaflet-fullscreen/leaflet.fullscreen.css;../third/leaflet-easybutton/easy-button.css";
$head['js'] = "d.poi_map.js";
$poi->lat = "";
$poi->lon = "";
$poi->ele = "";
$new = 1;
include ($config['views_folder']."d.poi.edit.html");
break;
} else {
$notfound = 1;
}
break;
case "elevation_proxy":
if (isset($_GET['location'])) {
header("Content-Type: application/json;charset=utf-8");
echo(file_get_contents("https://api.opentopodata.org/v1/mapzen?locations=".$_GET['location']));
break;
} else {
$notfound = 1;
}
break;
default:
// Affichage / édition / suppression dun POI
if ($poi->checkPermalink($controller->splitted_url[1], $user->rankIsHigher("premium"))) {
// Suppression
if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "delete" && $user->rankIsHigher("moderator")) {
$poi->delete();
header('Location: '.$config['rel_root_folder']."poi/".$poi->permalink);
}
// Restauration
else if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "restore" && $user->rankIsHigher("moderator")) {
$poi->restore();
header('Location: '.$config['rel_root_folder']."poi/".$poi->permalink);
}
// Édition
else if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "edit" && $user->rankIsHigher("moderator")) {
if (isset($_POST['submit'])) {
$poi->name = $_POST['name'];
$poi->locale = $_POST['locale'];
$poi->poi_type = $_POST['poi_type'];
$poi->lat = $_POST['lat'];
$poi->lon = $_POST['lon'];
$poi->ele = $_POST['ele'];
$poi->is_commentable = isset($_POST['is_commentable']) ? 't' : 'f';
$poi->author = $user->id;
// $poi->parameters = ... // à remplir si tu veux éditer les champs dynamiques
$poi->update();
header('Location: '.$config['rel_root_folder']."poi/".$poi->permalink);
} else {
$locales = new Kabano\Locales();
$locales->getAll();
$head['third'] = "leaflet/leaflet.js;leaflet-fullscreen/Leaflet.fullscreen.min.js;leaflet-easybutton/easy-button.js";
$head['css'] .= ";../third/leaflet/leaflet.css;../third/leaflet-fullscreen/leaflet.fullscreen.css;../third/leaflet-easybutton/easy-button.css";
$head['js'] = "d.poi_map.js";
$head['title'] = $poi->name;
include ($config['views_folder']."d.poi.edit.html");
}
}
// Affichage
else {
// Historique
if ($user->rankIsHigher("premium")) {
$Pois = new Kabano\Pois();
$Pois->getHistory($controller->splitted_url[1]);
}
if (isset($controller->splitted_url[2]) && is_numeric($controller->splitted_url[2])) {
$poi->checkPermalink($controller->splitted_url[1], $user->rankIsHigher("premium"), $controller->splitted_url[2]);
}
// Création dun commentaire
if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "new_comment") {
if (isset($_POST['submit']) && $user->rankIsHigher("registered")) {
$Comment = new Kabano\Comment();
$Comment->locale = $user->locale;
$Comment->author = $user->id;
$Comment->content = $poi->content_id;
$Comment->comment = $_POST['comment'];
$Comment->insert();
}
}
// Suppression dun commentaire
if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "delete_comment") {
if (isset($controller->splitted_url[3]) && is_numeric($controller->splitted_url[3])) {
$Comment = new Kabano\Comment();
if ($Comment->checkId($controller->splitted_url[3]))
if ($user->rankIsHigher("moderator") || $user->id == $Comment->author)
$Comment->delete();
}
}
// Restauration dun commentaire
if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "restore_comment") {
if (isset($controller->splitted_url[3]) && is_numeric($controller->splitted_url[3])) {
$Comment = new Kabano\Comment();
if ($Comment->checkId($controller->splitted_url[3]))
if ($user->rankIsHigher("moderator") || $user->id == $Comment->author)
$Comment->restore();
}
}
// Commentaires
if ($poi->is_commentable == "t") {
$poi_comments = new Kabano\Comments();
$poi_comments->listComments($poi->content_id, ($user->rankIsHigher("premium")));
foreach ($poi_comments->objs as $comment) {
$comment->md2html();
$comment->author_obj = new Kabano\User();
$comment->author_obj->checkId($comment->author);
}
}
// Auteur
$tempUser = new Kabano\User();
$tempUser->checkId($poi->author);
$poi->author_name = $tempUser->name;
unset($tempUser);
$head['third'] = "leaflet/leaflet.js;leaflet-fullscreen/Leaflet.fullscreen.min.js;leaflet-easybutton/easy-button.js";
$head['css'] .= ";../third/leaflet/leaflet.css;../third/leaflet-fullscreen/leaflet.fullscreen.css;../third/leaflet-easybutton/easy-button.css";
$head['js'] = "d.poi_map.js";
$head['title'] = $poi->name;
include ($config['views_folder']."d.poi.view.html");
}
} else {
$notfound = 1;
}
break;
}
?>