diff --git a/controllers/d.poi.php b/controllers/d.poi.php
index 87d7098..6831b48 100755
--- a/controllers/d.poi.php
+++ b/controllers/d.poi.php
@@ -1,6 +1,7 @@
-
+splitted_url[1]) {
case "new":
- if($user->rankIsHigher("registered")) {
- if(isset($_POST['submit'])) {
+ if ($user->rankIsHigher("registered")) {
+ if (isset($_POST['submit'])) {
$poi->name = $_POST['name'];
$poi->locale = $_POST['locale'];
$poi->poi_type = $_POST['poi_type'];
@@ -19,19 +20,18 @@ switch ($controller->splitted_url[1]) {
$poi->ele = $_POST['ele'];
$poi->author = $user->id;
$poi->source = "kab";
- $poi->is_commentable = isset($_POST['is_commentable'])?'t':'f';
- $poi->parameters = new \stdClass();
- if(!$poi->checkPermalink($_POST['permalink'],1)) {
+ $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 {
+ } else {
$head['title'] = $poi->name;
$error = "permalink";
}
- }
- else {
+ } else {
$head['title'] = "Nouvel hébergement";
}
@@ -42,123 +42,143 @@ switch ($controller->splitted_url[1]) {
$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 = "";
+ $poi->lat = "";
+ $poi->lon = "";
+ $poi->ele = "";
$new = 1;
include ($config['views_folder']."d.poi.edit.html");
break;
+ } else {
+ $notfound = 1;
}
- else {
- $notfound = 1;
- }
+ break;
+
case "elevation_proxy":
- if(isset($_GET['location'])) {
+ 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;
}
- else {
- $notfound = 1;
- }
+ break;
+
default:
- // If the page exists
- if ($poi->checkPermalink($controller->splitted_url[1],$user->rankIsHigher("premium"))) {
- // if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "delete" && $user->rankIsHigher("moderator")) {
- // $poi->delete();
- // header('Location: '.$config['rel_root_folder']."blog/".$poi->permalink);
- // }
- // else if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "restore" && $user->rankIsHigher("moderator")) {
- // $poi->restore();
- // header('Location: '.$config['rel_root_folder']."blog/".$poi->permalink);
- // }
- // else if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "edit" && $user->rankIsHigher("moderator")) {
- // if(isset($_POST['submit'])) {
- // $poi->content = $_POST['content'];
- // $poi->locale = $_POST['locale'];
- // $poi->name = $_POST['name'];
- // $poi->is_commentable = $_POST['is_commentable'];
- // $poi->author = $user->id;
- // $poi->update();
- // header('Location: '.$config['rel_root_folder']."blog/".$poi->permalink);
- // }
- // else {
- // $locales = new Kabano\Locales();
- // $locales->getAll();
+ // Affichage / édition / suppression d’un POI
+ if ($poi->checkPermalink($controller->splitted_url[1], $user->rankIsHigher("premium"))) {
- // $head['title'] = $poi->name;
- // include ($config['views_folder']."d.blog.edit.html");
- // }
- // }
- // else {
- // Manage history of an article
- if($user->rankIsHigher("premium")) {
- $blogHistory = new Kabano\pois();
- $blogHistory->getHistory($controller->splitted_url[1]);
+ // 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");
}
- 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]);
+ }
- // Manage comment creation
- if (isset($controller->splitted_url[2]) && $controller->splitted_url[2]=="new_comment") {
+ // 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 d’un commentaire
+ if (isset($controller->splitted_url[2]) && $controller->splitted_url[2] == "new_comment") {
if (isset($_POST['submit']) && $user->rankIsHigher("registered")) {
- $blogComment = new Kabano\BlogComment();
- $blogComment->locale = $user->locale;
- $blogComment->author = $user->id;
- $blogComment->content = $poi->content_id;
- $blogComment->comment = $_POST['comment'];
- $blogComment->insert();
+ $Comment = new Kabano\Comment();
+ $Comment->locale = $user->locale;
+ $Comment->author = $user->id;
+ $Comment->content = $poi->content_id;
+ $Comment->comment = $_POST['comment'];
+ $Comment->insert();
}
}
- // Manage comment deletion
- if (isset($controller->splitted_url[2]) && $controller->splitted_url[2]=="delete_comment") {
+ // Suppression d’un 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])) {
- $blogComment = new Kabano\BlogComment();
- if($blogComment->checkId($controller->splitted_url[3]))
- if ($user->rankIsHigher("moderator") || $user->id == $blogComment->author)
- $blogComment->delete();
+ $Comment = new Kabano\Comment();
+ if ($Comment->checkId($controller->splitted_url[3]))
+ if ($user->rankIsHigher("moderator") || $user->id == $Comment->author)
+ $Comment->delete();
}
}
- // Manage comment restoration
- if (isset($controller->splitted_url[2]) && $controller->splitted_url[2]=="restore_comment") {
+ // Restauration d’un 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])) {
- $blogComment = new Kabano\BlogComment();
- if($blogComment->checkId($controller->splitted_url[3]))
- if ($user->rankIsHigher("moderator") || $user->id == $blogComment->author)
- $blogComment->restore();
+ $Comment = new Kabano\Comment();
+ if ($Comment->checkId($controller->splitted_url[3]))
+ if ($user->rankIsHigher("moderator") || $user->id == $Comment->author)
+ $Comment->restore();
}
}
- $poi->md2html();
-
- // Manage comments
+ // Commentaires
if ($poi->is_commentable == "t") {
- $pois_comments = new Kabano\BlogComments();
- $pois_comments->listComments($poi->content_id, ($user->rankIsHigher("premium")));
+ $poi_comments = new Kabano\Comments();
+ $poi_comments->listComments($poi->content_id, ($user->rankIsHigher("premium")));
- $i = 0;
- foreach ($pois_comments->objs as $comment) {
+ 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.blog.view.html");
- // }
- }
- else {
- $notfound = 1;
+ include ($config['views_folder']."d.poi.view.html");
+ }
+ } else {
+ $notfound = 1;
}
break;
}
-?>
\ No newline at end of file
+?>
diff --git a/models/d.poi.php b/models/d.poi.php
index 12a5c28..749721e 100755
--- a/models/d.poi.php
+++ b/models/d.poi.php
@@ -38,37 +38,79 @@ class Poi
public $lat;
public $lon;
public $ele;
+ public $author_name;
/*****
** Checks if a page at this URL exists and return the ID
*****/
public function checkPermalink($permalink, $withArchive=0, $elementNb=0) {
- global $config;
-
+ global $config;
+
$con = pg_connect("host=".$config['SQL_host']." dbname=".$config['SQL_db']." user=".$config['SQL_user']." password=".$config['SQL_pass'])
or die ("Could not connect to server\n");
- $query = "SELECT content_versions.id AS version_id, * FROM contents INNER JOIN content_locales ON contents.id = content_locales.content_id INNER JOIN content_versions ON content_locales.id = content_versions.locale_id WHERE permalink=$1 AND type='poi'";
- if($withArchive==0) {
- $query .= " AND is_archive=FALSE AND is_public=TRUE";
- }
- $query .= " ORDER BY update_date DESC LIMIT 1 OFFSET $2";
+ $query = "SELECT
+ content_versions.id AS version_id,
+ content_versions.version,
+ content_versions.update_date,
+ content_versions.is_archive,
+ content_versions.name,
+ content_versions.content AS parameters,
- pg_prepare($con, "prepare1", $query)
- or die ("Cannot prepare statement\n");
- $result = pg_execute($con, "prepare1", array($permalink, $elementNb))
- or die ("Cannot execute statement\n");
+ contents.id AS content_id,
+ contents.permalink,
+ contents.creation_date,
+ contents.is_public,
+ contents.is_commentable,
+ contents.type,
+ contents.poi_type,
- pg_close($con);
+ content_locales.id AS locale_id,
+ content_locales.locale,
+ content_locales.author,
- if(pg_num_rows($result) == 1) {
- $row = pg_fetch_assoc($result);
- $this->populate($row);
- return 1;
- }
- else {
- return 0;
- }
+ specs.source_id,
+ specs.remote_source_id,
+ ST_X(specs.geom) AS lon,
+ ST_Y(specs.geom) AS lat,
+ ST_Z(specs.geom) AS ele,
+
+ sources.display_name AS source
+
+ FROM contents
+ INNER JOIN content_locales
+ ON contents.id = content_locales.content_id
+ INNER JOIN content_versions
+ ON content_locales.id = content_versions.locale_id
+ LEFT JOIN content_version_poi_specifications specs
+ ON specs.content_version_id = content_versions.id
+ LEFT JOIN sources
+ ON sources.id = specs.source_id
+
+ WHERE contents.permalink = $1
+ AND contents.type = 'poi'";
+
+ if ($withArchive == 0) {
+ $query .= " AND content_versions.is_archive = FALSE AND contents.is_public = TRUE";
+ }
+
+ $query .= " ORDER BY content_versions.update_date DESC LIMIT 1 OFFSET $2";
+
+ pg_prepare($con, "poi_check_permalink", $query)
+ or die ("Cannot prepare statement\n");
+
+ $result = pg_execute($con, "poi_check_permalink", [$permalink, $elementNb])
+ or die ("Cannot execute statement\n");
+
+ pg_close($con);
+
+ if (pg_num_rows($result) == 1) {
+ $row = pg_fetch_assoc($result);
+ $this->populate($row);
+ return 1;
+ }
+
+ return 0;
}
/*****
@@ -147,7 +189,7 @@ class Poi
pg_prepare($con, "prepare4", $query)
or die ("Cannot prepare statement\n");
- $result = pg_execute($con, "prepare4", array($this->version_id, $this->lon, $this->lat, $this->ele ,$this->source, $this->remote_source_id))
+ $result = pg_execute($con, "prepare4", array($this->version_id, $this->lon, $this->lat, $this->ele ,$this->source_id, $this->remote_source_id))
or die ("Cannot execute statement\n");
$query = "INSERT INTO content_contributors (content, contributor) VALUES
@@ -201,7 +243,7 @@ class Poi
$this->version_id = pg_fetch_assoc($result)['id'];
// 3) Insert new geometry + source info for this new version
- $query = "INSERT INTO content_version_poi_specifications,(content_version_id, geom, source_id, remote_source_id) VALUES
+ $query = "INSERT INTO content_version_poi_specifications (content_version_id, geom, source_id, remote_source_id) VALUES
($1, ST_SetSRID(ST_MakePoint($2, $3, $4), 4326), $5, $6)";
pg_prepare($con, "poi_insert_specs_update", $query);
@@ -289,18 +331,51 @@ class Pois
$con = pg_connect("host=".$config['SQL_host']." dbname=".$config['SQL_db']." user=".$config['SQL_user']." password=".$config['SQL_pass'])
or die ("Could not connect to server\n");
- $query = "
- SELECT content_versions.id AS version_id, *
- FROM contents
- INNER JOIN content_locales ON contents.id = content_locales.content_id
- INNER JOIN content_versions ON content_locales.id = content_versions.locale_id
- WHERE type='poi' AND is_archive=FALSE
- ";
+ $query = "SELECT
+ content_versions.id AS version_id,
+ content_versions.version,
+ content_versions.update_date,
+ content_versions.is_archive,
+ content_versions.name,
+ content_versions.content AS parameters,
+
+ contents.id AS content_id,
+ contents.permalink,
+ contents.creation_date,
+ contents.is_public,
+ contents.is_commentable,
+ contents.type,
+ contents.poi_type,
+
+ content_locales.id AS locale_id,
+ content_locales.locale,
+ content_locales.author,
+
+ specs.source_id,
+ specs.remote_source_id,
+ ST_X(specs.geom) AS lon,
+ ST_Y(specs.geom) AS lat,
+ ST_Z(specs.geom) AS ele,
+
+ sources.display_name AS source
+
+ FROM contents
+ INNER JOIN content_locales
+ ON contents.id = content_locales.content_id
+ INNER JOIN content_versions
+ ON content_locales.id = content_versions.locale_id
+ LEFT JOIN content_version_poi_specifications specs
+ ON specs.content_version_id = content_versions.id
+ LEFT JOIN sources
+ ON sources.id = specs.source_id
+
+ WHERE contents.type = 'poi'
+ AND content_versions.is_archive = FALSE";
if ($archive != 1)
- $query .= " AND is_public=TRUE ";
+ $query .= " AND contents.is_public=TRUE ";
- $query .= " ORDER BY update_date DESC LIMIT $1 OFFSET $2";
+ $query .= " ORDER BY content_versions.update_date DESC LIMIT $1 OFFSET $2";
pg_prepare($con, "pois_list", $query);
$result = pg_execute($con, "pois_list", array($count, $first));
@@ -320,13 +395,48 @@ class Pois
$con = pg_connect("host=".$config['SQL_host']." dbname=".$config['SQL_db']." user=".$config['SQL_user']." password=".$config['SQL_pass'])
or die ("Could not connect to server\n");
- $query = "
- SELECT content_versions.id AS version_id, *
- FROM contents
- INNER JOIN content_locales ON contents.id = content_locales.content_id
- INNER JOIN content_versions ON content_locales.id = content_versions.locale_id
- WHERE permalink=$1 AND type='poi'
- ORDER BY update_date DESC
+ $query = "SELECT
+ content_versions.id AS version_id,
+ content_versions.version,
+ content_versions.update_date,
+ content_versions.is_archive,
+ content_versions.name,
+ content_versions.content AS parameters,
+
+ contents.id AS content_id,
+ contents.permalink,
+ contents.creation_date,
+ contents.is_public,
+ contents.is_commentable,
+ contents.type,
+ contents.poi_type,
+
+ content_locales.id AS locale_id,
+ content_locales.locale,
+ content_locales.author,
+
+ specs.source_id,
+ specs.remote_source_id,
+ ST_X(specs.geom) AS lon,
+ ST_Y(specs.geom) AS lat,
+ ST_Z(specs.geom) AS ele,
+
+ sources.display_name AS source
+
+ FROM contents
+ INNER JOIN content_locales
+ ON contents.id = content_locales.content_id
+ INNER JOIN content_versions
+ ON content_locales.id = content_versions.locale_id
+ LEFT JOIN content_version_poi_specifications specs
+ ON specs.content_version_id = content_versions.id
+ LEFT JOIN sources
+ ON sources.id = specs.source_id
+
+ WHERE contents.permalink = $1
+ AND contents.type = 'poi'
+
+ ORDER BY content_versions.update_date DESC
";
pg_prepare($con, "poi_history", $query);
diff --git a/views/d.poi.edit.html b/views/d.poi.edit.html
index b176371..7799d78 100755
--- a/views/d.poi.edit.html
+++ b/views/d.poi.edit.html
@@ -158,6 +158,14 @@ $( "#name" ).change(function() {
+
+
+
+
+
+
+