notes ext code cleanup

initial prep to fix & take the ext out of beta
This commit is contained in:
Daku 2016-05-18 14:36:50 +01:00
parent b9893cbbda
commit 9e7c318df0
2 changed files with 205 additions and 272 deletions

View File

@ -1,3 +1,4 @@
<?php <?php
/** /**
* Name: [Beta] Notes * Name: [Beta] Notes
@ -72,36 +73,24 @@ class Notes extends Extension {
public function onPageRequest(PageRequestEvent $event) { public function onPageRequest(PageRequestEvent $event) {
global $page, $user; global $page, $user;
if($event->page_matches("note")) { if($event->page_matches("note")) {
switch($event->get_arg(0)) { switch($event->get_arg(0)) {
case "list": //index case "list": //index
{
$this->get_notes_list($event); // This should show images like post/list but i don't know how do that. $this->get_notes_list($event); // This should show images like post/list but i don't know how do that.
break; break;
}
case "requests": // The same as post/list but only for note_request table. case "requests": // The same as post/list but only for note_request table.
{ $this->get_notes_requests($event); // This should show images like post/list but i don't know how do that.
$this->get_notes_requests($event); // This should shouw images like post/list but i don't know how do that.
break; break;
}
case "search": case "search":
{
if(!$user->is_anonymous()) if(!$user->is_anonymous())
$this->theme->search_notes_page($page); $this->theme->search_notes_page($page);
break; break;
} case "updated": //Thinking how to build this function.
case "updated": //Thinking how biuld this function.
{
$this->get_histories($event); $this->get_histories($event);
break; break;
} case "history": //Thinking how to build this function.
case "history": //Thinking how biuld this function.
{
$this->get_history($event); $this->get_history($event);
break; break;
}
case "revert": case "revert":
{
$noteID = $event->get_arg(1); $noteID = $event->get_arg(1);
$reviewID = $event->get_arg(2); $reviewID = $event->get_arg(2);
if(!$user->is_anonymous()){ if(!$user->is_anonymous()){
@ -111,70 +100,55 @@ class Notes extends Extension {
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("note/updated")); $page->set_redirect(make_link("note/updated"));
break; break;
}
case "add_note": case "add_note":
{
if(!$user->is_anonymous()) if(!$user->is_anonymous())
$this->add_new_note(); $this->add_new_note();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("post/view/".$_POST["image_id"])); $page->set_redirect(make_link("post/view/".$_POST["image_id"]));
break; break;
}
case "add_request": case "add_request":
{
if(!$user->is_anonymous()) if(!$user->is_anonymous())
$this->add_note_request(); $this->add_note_request();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("post/view/".$_POST["image_id"])); $page->set_redirect(make_link("post/view/".$_POST["image_id"]));
break; break;
}
case "nuke_notes": case "nuke_notes":
{
if($user->is_admin()) if($user->is_admin())
$this->nuke_notes(); $this->nuke_notes();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("post/view/".$_POST["image_id"])); $page->set_redirect(make_link("post/view/".$_POST["image_id"]));
break; break;
}
case "nuke_requests": case "nuke_requests":
{
if($user->is_admin()) if($user->is_admin())
$this->nuke_requests(); $this->nuke_requests();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("post/view/".$_POST["image_id"])); $page->set_redirect(make_link("post/view/".$_POST["image_id"]));
break; break;
}
case "edit_note": case "edit_note":
{
if (!$user->is_anonymous()) { if (!$user->is_anonymous()) {
$this->update_note(); $this->update_note();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("post/view/" . $_POST["image_id"])); $page->set_redirect(make_link("post/view/" . $_POST["image_id"]));
} }
break; break;
}
case "delete_note": case "delete_note":
{
if ($user->is_admin()) { if ($user->is_admin()) {
$this->delete_note(); $this->delete_note();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("post/view/".$_POST["image_id"])); $page->set_redirect(make_link("post/view/".$_POST["image_id"]));
} }
break; break;
}
default: default:
{
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("note/list")); $page->set_redirect(make_link("note/list"));
break; break;
} }
} }
} }
}
/* /*
@ -223,8 +197,7 @@ class Notes extends Extension {
$user = User::by_name($matches[1]); $user = User::by_name($matches[1]);
if(!is_null($user)) { if(!is_null($user)) {
$user_id = $user->id; $user_id = $user->id;
} } else {
else {
$user_id = -1; $user_id = -1;
} }
@ -250,8 +223,8 @@ class Notes extends Extension {
"SELECT * ". "SELECT * ".
"FROM notes ". "FROM notes ".
"WHERE enable = ? AND image_id = ? ". "WHERE enable = ? AND image_id = ? ".
"ORDER BY date ASC" "ORDER BY date ASC",
, array('1', $imageID)); array('1', $imageID));
} }
@ -270,17 +243,15 @@ class Notes extends Extension {
$noteText = html_escape($_POST["note_text"]); $noteText = html_escape($_POST["note_text"]);
$database->execute(" $database->execute("
INSERT INTO notes INSERT INTO notes (enable, image_id, user_id, user_ip, date, x1, y1, height, width, note)
(enable, image_id, user_id, user_ip, date, x1, y1, height, width, note) VALUES (?, ?, ?, ?, now(), ?, ?, ?, ?, ?)",
VALUES
(?, ?, ?, ?, now(), ?, ?, ?, ?, ?)",
array(1, $imageID, $user_id, $_SERVER['REMOTE_ADDR'], $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText)); array(1, $imageID, $user_id, $_SERVER['REMOTE_ADDR'], $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText));
$noteID = $database->get_last_insert_id('notes_id_seq'); $noteID = $database->get_last_insert_id('notes_id_seq');
log_info("notes", "Note added {$noteID} by {$user->name}"); log_info("notes", "Note added {$noteID} by {$user->name}");
$database->Execute("UPDATE images SET notes=(SELECT COUNT(*) FROM notes WHERE image_id=?) WHERE id=?", array($imageID, $imageID)); $database->execute("UPDATE images SET notes=(SELECT COUNT(*) FROM notes WHERE image_id=?) WHERE id=?", array($imageID, $imageID));
$this->add_history(1, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText); $this->add_history(1, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText);
} }
@ -297,15 +268,13 @@ class Notes extends Extension {
$user_id = $user->id; $user_id = $user->id;
$database->execute(" $database->execute("
INSERT INTO note_request INSERT INTO note_request (image_id, user_id, date)
(image_id, user_id, date) VALUES (?, ?, now())",
VALUES
(?, ?, now())",
array($image_id, $user_id)); array($image_id, $user_id));
$resultID = $database->get_last_insert_id('note_request_id_seq'); $resultID = $database->get_last_insert_id('note_request_id_seq');
log_info("notes", "Note requested {$requestID} by {$user->name}"); log_info("notes", "Note requested {$resultID} by {$user->name}");
} }
@ -313,60 +282,50 @@ class Notes extends Extension {
/* /*
* HERE WE EDIT THE NOTE * HERE WE EDIT THE NOTE
*/ */
private function update_note() private function update_note() {
{ global $database;
$imageID = int_escape($_POST["image_id"]);
$noteID = int_escape($_POST["note_id"]); $note = array(
$noteX1 = int_escape($_POST["note_x1"]); "noteX1" => int_escape($_POST["note_x1"]),
$noteY1 = int_escape($_POST["note_y1"]); "noteY1" => int_escape($_POST["note_y1"]),
$noteHeight = int_escape($_POST["note_height"]); "noteHeight" => int_escape($_POST["note_height"]),
$noteWidth = int_escape($_POST["note_width"]); "noteWidth" => int_escape($_POST["note_width"]),
$noteText = sql_escape(html_escape($_POST["note_text"])); "noteText" => sql_escape(html_escape($_POST["note_text"])),
"imageID" => int_escape($_POST["image_id"]),
"noteID" => int_escape($_POST["note_id"])
);
// validate parameters // validate parameters
if (is_null($imageID) || !is_numeric($imageID) || if (array_search(NULL, $note)|| strlen($note['noteText']) == 0) {
is_null($noteID) || !is_numeric($noteID) ||
is_null($noteX1) || !is_numeric($noteX1) ||
is_null($noteY1) || !is_numeric($noteY1) ||
is_null($noteHeight) || !is_numeric($noteHeight) ||
is_null($noteWidth) || !is_numeric($noteWidth) ||
is_null($noteText) || strlen($noteText) == 0)
{
return; return;
} }
global $database;
$database->execute("UPDATE notes ". $database->execute("UPDATE notes ".
"SET x1 = ?, ". "SET x1 = ?, ".
"y1 = ?, ". "y1 = ?, ".
"height = ?, ". "height = ?, ".
"width = ?,". "width = ?,".
"note = ? ". "note = ? ".
"WHERE image_id = ? AND id = ?", array($noteX1, $noteY1, $noteHeight, $noteWidth, $noteText, $imageID, $noteID)); "WHERE image_id = ? AND id = ?", array_values($note));
$this->add_history(1, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText); $this->add_history(1, $note['noteID'], $note['imageID'], $note['noteX1'], $note['noteY1'], $note['noteHeight'], $note['noteWidth'], $note['noteText']);
} }
/* /*
* HERE WE DELETE THE NOTE * HERE WE DELETE THE NOTE
*/ */
private function delete_note() private function delete_note() {
{ global $user, $database;
global $user;
$imageID = int_escape($_POST["image_id"]); $imageID = int_escape($_POST["image_id"]);
$noteID = int_escape($_POST["note_id"]); $noteID = int_escape($_POST["note_id"]);
// validate parameters // validate parameters
if( is_null($imageID) || !is_numeric($imageID) || if(is_null($imageID) || !is_numeric($imageID) || is_null($noteID) || !is_numeric($noteID)) {
is_null($noteID) || !is_numeric($noteID))
{
return; return;
} }
global $database;
$database->execute("UPDATE notes ". $database->execute("UPDATE notes ".
"SET enable = ? ". "SET enable = ? ".
"WHERE image_id = ? AND id = ?", array(0, $imageID, $noteID)); "WHERE image_id = ? AND id = ?", array(0, $imageID, $noteID));
@ -408,33 +367,26 @@ class Notes extends Extension {
global $database, $config; global $database, $config;
$pageNumber = $event->get_arg(1); $pageNumber = $event->get_arg(1);
if(is_null($pageNumber) || !is_numeric($pageNumber) || $pageNumber <= 0) {
if(is_null($pageNumber) || !is_numeric($pageNumber))
$pageNumber = 0; $pageNumber = 0;
else if ($pageNumber <= 0) } else {
$pageNumber = 0;
else
$pageNumber--; $pageNumber--;
}
$notesPerPage = $config->get_int('notesNotesPerPage'); $notesPerPage = $config->get_int('notesNotesPerPage');
//$result = $database->get_all("SELECT * FROM pool_images WHERE pool_id=?", array($poolID)); //$result = $database->get_all("SELECT * FROM pool_images WHERE pool_id=?", array($poolID));
$result = $database->execute("SELECT DISTINCT image_id".
$get_notes = "
SELECT DISTINCT image_id ".
"FROM notes ". "FROM notes ".
"WHERE enable = ? ". "WHERE enable = ? ".
"ORDER BY date DESC LIMIT ?, ?"; "ORDER BY date DESC LIMIT ?, ?",
array(1, $pageNumber * $notesPerPage, $notesPerPage));
$result = $database->Execute($get_notes, array(1, $pageNumber * $notesPerPage, $notesPerPage));
$totalPages = ceil($database->get_one("SELECT COUNT(DISTINCT image_id) FROM notes") / $notesPerPage); $totalPages = ceil($database->get_one("SELECT COUNT(DISTINCT image_id) FROM notes") / $notesPerPage);
$images = array(); $images = array();
while(!$result->EOF) { while($row = $result->fetch()) {
$image = Image::by_id($result->fields["image_id"]); $images[] = array(Image::by_id($row["image_id"]));
$images[] = array($image);
$result->MoveNext();
} }
$this->theme->display_note_list($images, $pageNumber + 1, $totalPages); $this->theme->display_note_list($images, $pageNumber + 1, $totalPages);
@ -445,36 +397,32 @@ class Notes extends Extension {
* @param PageRequestEvent $event * @param PageRequestEvent $event
*/ */
private function get_notes_requests(PageRequestEvent $event) { private function get_notes_requests(PageRequestEvent $event) {
global $config; global $config, $database;
$pageNumber = $event->get_arg(1); $pageNumber = $event->get_arg(1);
if(is_null($pageNumber) || !is_numeric($pageNumber) || $pageNumber <= 0) {
if(is_null($pageNumber) || !is_numeric($pageNumber))
$pageNumber = 0; $pageNumber = 0;
else if ($pageNumber <= 0) } else {
$pageNumber = 0;
else
$pageNumber--; $pageNumber--;
}
$requestsPerPage = $config->get_int('notesRequestsPerPage'); $requestsPerPage = $config->get_int('notesRequestsPerPage');
//$result = $database->get_all("SELECT * FROM pool_images WHERE pool_id=?", array($poolID)); //$result = $database->get_all("SELECT * FROM pool_images WHERE pool_id=?", array($poolID));
global $database;
$get_requests = "
SELECT DISTINCT image_id ".
"FROM note_request ".
"ORDER BY date DESC LIMIT ?, ?";
$result = $database->Execute($get_requests, array($pageNumber * $requestsPerPage, $requestsPerPage));
$result = $database->execute("
SELECT DISTINCT image_id
FROM note_request
ORDER BY date DESC LIMIT ?, ?",
array($pageNumber * $requestsPerPage, $requestsPerPage));
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_request") / $requestsPerPage); $totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_request") / $requestsPerPage);
$images = array(); $images = array();
while(!$result->EOF) { while($row = $result->fetch()) {
$image = Image::by_id($result->fields["image_id"]); $images[] = array(Image::by_id($row["image_id"]));
$images[] = array($image);
$result->MoveNext();
} }
$this->theme->display_note_requests($images, $pageNumber + 1, $totalPages); $this->theme->display_note_requests($images, $pageNumber + 1, $totalPages);
@ -488,17 +436,13 @@ class Notes extends Extension {
private function add_history($noteEnable, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText){ private function add_history($noteEnable, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText){
global $user, $database; global $user, $database;
$userID = $user->id;
$reviewID = $database->get_one("SELECT COUNT(*) FROM note_histories WHERE note_id = ?", array($noteID)); $reviewID = $database->get_one("SELECT COUNT(*) FROM note_histories WHERE note_id = ?", array($noteID));
$reviewID = $reviewID + 1; $reviewID = $reviewID + 1;
$database->execute(" $database->execute("
INSERT INTO note_histories INSERT INTO note_histories (note_enable, note_id, review_id, image_id, user_id, user_ip, date, x1, y1, height, width, note)
(note_enable, note_id, review_id, image_id, user_id, user_ip, date, x1, y1, height, width, note) VALUES (?, ?, ?, ?, ?, ?, now(), ?, ?, ?, ?, ?)",
VALUES array($noteEnable, $noteID, $reviewID, $imageID, $user->id, $_SERVER['REMOTE_ADDR'], $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText));
(?, ?, ?, ?, ?, ?, now(), ?, ?, ?, ?, ?)",
array($noteEnable, $noteID, $reviewID, $imageID, $userID, $_SERVER['REMOTE_ADDR'], $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText));
} }
@ -507,28 +451,26 @@ class Notes extends Extension {
* @param PageRequestEvent $event * @param PageRequestEvent $event
*/ */
private function get_histories(PageRequestEvent $event){ private function get_histories(PageRequestEvent $event){
global $config, $database;
$pageNumber = $event->get_arg(1); $pageNumber = $event->get_arg(1);
if(is_null($pageNumber) || !is_numeric($pageNumber)) if (is_null($pageNumber) || !is_numeric($pageNumber) || $pageNumber <= 0) {
$pageNumber = 0; $pageNumber = 0;
else if ($pageNumber <= 0) } else {
$pageNumber = 0;
else
$pageNumber--; $pageNumber--;
}
global $config; $historiesPerPage = $config->get_int('notesHistoriesPerPage');
$histiriesPerPage = $config->get_int('notesHistoriesPerPage');
//ORDER BY IMAGE & DATE //ORDER BY IMAGE & DATE
global $database;
$histories = $database->get_all("SELECT h.note_id, h.review_id, h.image_id, h.date, h.note, u.name AS user_name ". $histories = $database->get_all("SELECT h.note_id, h.review_id, h.image_id, h.date, h.note, u.name AS user_name ".
"FROM note_histories AS h ". "FROM note_histories AS h ".
"INNER JOIN users AS u ". "INNER JOIN users AS u ".
"ON u.id = h.user_id ". "ON u.id = h.user_id ".
"ORDER BY date DESC LIMIT ?, ?", "ORDER BY date DESC LIMIT ?, ?",
array($pageNumber * $histiriesPerPage, $histiriesPerPage)); array($pageNumber * $historiesPerPage, $historiesPerPage));
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_histories") / $histiriesPerPage); $totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_histories") / $historiesPerPage);
$this->theme->display_histories($histories, $pageNumber + 1, $totalPages); $this->theme->display_histories($histories, $pageNumber + 1, $totalPages);
} }
@ -539,29 +481,28 @@ class Notes extends Extension {
* @param PageRequestEvent $event * @param PageRequestEvent $event
*/ */
private function get_history(PageRequestEvent $event){ private function get_history(PageRequestEvent $event){
global $config, $database;
$noteID = $event->get_arg(1); $noteID = $event->get_arg(1);
$pageNumber = $event->get_arg(2); $pageNumber = $event->get_arg(2);
if(is_null($pageNumber) || !is_numeric($pageNumber)) if (is_null($pageNumber) || !is_numeric($pageNumber) || $pageNumber <= 0) {
$pageNumber = 0; $pageNumber = 0;
else if ($pageNumber <= 0) } else {
$pageNumber = 0;
else
$pageNumber--; $pageNumber--;
}
global $config; $historiesPerPage = $config->get_int('notesHistoriesPerPage');
$histiriesPerPage = $config->get_int('notesHistoriesPerPage');
global $database;
$histories = $database->get_all("SELECT h.note_id, h.review_id, h.image_id, h.date, h.note, u.name AS user_name ". $histories = $database->get_all("SELECT h.note_id, h.review_id, h.image_id, h.date, h.note, u.name AS user_name ".
"FROM note_histories AS h ". "FROM note_histories AS h ".
"INNER JOIN users AS u ". "INNER JOIN users AS u ".
"ON u.id = h.user_id ". "ON u.id = h.user_id ".
"WHERE note_id = ? ". "WHERE note_id = ? ".
"ORDER BY date DESC LIMIT ?, ?", "ORDER BY date DESC LIMIT ?, ?",
array($noteID, $pageNumber * $histiriesPerPage, $histiriesPerPage)); array($noteID, $pageNumber * $historiesPerPage, $historiesPerPage));
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_histories WHERE note_id = ?", array($noteID)) / $histiriesPerPage); $totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_histories WHERE note_id = ?", array($noteID)) / $historiesPerPage);
$this->theme->display_history($histories, $pageNumber + 1, $totalPages); $this->theme->display_history($histories, $pageNumber + 1, $totalPages);
} }
@ -586,15 +527,10 @@ class Notes extends Extension {
$noteText = $history['note']; $noteText = $history['note'];
$database->execute("UPDATE notes ". $database->execute("UPDATE notes ".
"SET enable = ?, ". "SET enable = ?, x1 = ?, y1 = ?, height = ?, width = ?, note = ? ".
"x1 = ?, ". "WHERE image_id = ? AND id = ?",
"y1 = ?, ". array(1, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText, $imageID, $noteID));
"height = ?, ".
"width = ?,".
"note = ? ".
"WHERE image_id = ? AND id = ?", array(1, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText, $imageID, $noteID));
$this->add_history($noteEnable, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText); $this->add_history($noteEnable, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText);
} }
} }

View File

@ -43,11 +43,9 @@ class NotesTheme extends Themelet {
} }
// check action POST on form // check action POST on form
public function display_note_system(Page $page, $image_id, $recovered_notes, $adminOptions) public function display_note_system(Page $page, $image_id, $recovered_notes, $adminOptions) {
{
$to_json = array(); $to_json = array();
foreach($recovered_notes as $note) foreach($recovered_notes as $note) {
{
$parsedNote = $note["note"]; $parsedNote = $note["note"];
$parsedNote = str_replace("\n", "\\n", $parsedNote); $parsedNote = str_replace("\n", "\\n", $parsedNote);
$parsedNote = str_replace("\r", "\\r", $parsedNote); $parsedNote = str_replace("\r", "\\r", $parsedNote);
@ -62,10 +60,9 @@ class NotesTheme extends Themelet {
); );
} }
$html = "<script type='text/javascript'>"; $html = "<script type='text/javascript'>notes = ".json_encode($to_json)."</script>";
$html .= "notes = " . json_encode($to_json);
$html .= "</script>
$html .= "
<div id='noteform'> <div id='noteform'>
".make_form(make_link("note/add_note"))." ".make_form(make_link("note/add_note"))."
<input type='hidden' name='image_id' value='".$image_id."' /> <input type='hidden' name='image_id' value='".$image_id."' />
@ -151,6 +148,7 @@ class NotesTheme extends Themelet {
public function display_note_requests($images, $pageNumber, $totalPages) { public function display_note_requests($images, $pageNumber, $totalPages) {
global $page; global $page;
$pool_images = ''; $pool_images = '';
foreach($images as $pair) { foreach($images as $pair) {
$image = $pair[0]; $image = $pair[0];
@ -236,4 +234,3 @@ class NotesTheme extends Themelet {
$this->display_paginator($page, "note/updated", null, $pageNumber, $totalPages); $this->display_paginator($page, "note/updated", null, $pageNumber, $totalPages);
} }
} }