2009-12-24 07:36:09 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Name: [Beta] Notes
|
|
|
|
* Author: Sein Kraft <mail@seinkraft.info>
|
|
|
|
* License: GPLv2
|
|
|
|
* Description: Annotate images
|
|
|
|
* Documentation:
|
|
|
|
*/
|
|
|
|
|
2012-02-08 12:07:01 +00:00
|
|
|
class Notes extends Extension {
|
2012-02-08 11:24:25 +00:00
|
|
|
public function onInitExt(InitExtEvent $event) {
|
2009-12-24 07:36:09 +00:00
|
|
|
global $config, $database;
|
|
|
|
|
|
|
|
// shortcut to latest
|
|
|
|
if ($config->get_int("ext_notes_version") < 1) {
|
|
|
|
$database->Execute("ALTER TABLE images ADD COLUMN notes INTEGER NOT NULL DEFAULT 0");
|
|
|
|
$database->create_table("notes", "
|
|
|
|
id SCORE_AIPK,
|
|
|
|
enable INTEGER NOT NULL,
|
|
|
|
image_id INTEGER NOT NULL,
|
|
|
|
user_id INTEGER NOT NULL,
|
|
|
|
user_ip CHAR(15) NOT NULL,
|
|
|
|
date DATETIME NOT NULL,
|
|
|
|
x1 INTEGER NOT NULL,
|
|
|
|
y1 INTEGER NOT NULL,
|
|
|
|
height INTEGER NOT NULL,
|
|
|
|
width INTEGER NOT NULL,
|
|
|
|
note TEXT NOT NULL,
|
|
|
|
INDEX (image_id),
|
2012-03-11 02:13:18 +00:00
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
2009-12-24 07:36:09 +00:00
|
|
|
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE
|
|
|
|
");
|
|
|
|
|
|
|
|
$database->create_table("note_request", "
|
|
|
|
id SCORE_AIPK,
|
|
|
|
image_id INTEGER NOT NULL,
|
|
|
|
user_id INTEGER NOT NULL,
|
|
|
|
date DATETIME NOT NULL,
|
|
|
|
INDEX (image_id),
|
2012-03-11 02:13:18 +00:00
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
2009-12-24 07:36:09 +00:00
|
|
|
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE
|
|
|
|
");
|
|
|
|
|
|
|
|
$database->create_table("note_histories", "
|
|
|
|
id SCORE_AIPK,
|
|
|
|
note_enable INTEGER NOT NULL,
|
|
|
|
note_id INTEGER NOT NULL,
|
|
|
|
review_id INTEGER NOT NULL,
|
|
|
|
image_id INTEGER NOT NULL,
|
|
|
|
user_id INTEGER NOT NULL,
|
|
|
|
user_ip CHAR(15) NOT NULL,
|
|
|
|
date DATETIME NOT NULL,
|
|
|
|
x1 INTEGER NOT NULL,
|
|
|
|
y1 INTEGER NOT NULL,
|
|
|
|
height INTEGER NOT NULL,
|
|
|
|
width INTEGER NOT NULL,
|
|
|
|
note TEXT NOT NULL,
|
|
|
|
INDEX (image_id),
|
2012-03-11 02:13:18 +00:00
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
2009-12-24 07:36:09 +00:00
|
|
|
FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE
|
|
|
|
");
|
|
|
|
|
|
|
|
$config->set_int("notesNotesPerPage", 20);
|
|
|
|
$config->set_int("notesRequestsPerPage", 20);
|
|
|
|
$config->set_int("notesHistoriesPerPage", 20);
|
|
|
|
|
|
|
|
$config->set_int("ext_notes_version", 1);
|
|
|
|
log_info("notes", "extension installed");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-02-08 11:24:25 +00:00
|
|
|
public function onPageRequest(PageRequestEvent $event) {
|
2009-12-24 07:36:09 +00:00
|
|
|
global $page, $user;
|
|
|
|
if($event->page_matches("note")) {
|
|
|
|
|
|
|
|
switch($event->get_arg(0)) {
|
|
|
|
case "list": //index
|
|
|
|
{
|
|
|
|
$this->get_notes_list($event); // This should show images like post/list but i don't know how do that.
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "requests": // The same as post/list but only for note_request table.
|
|
|
|
{
|
|
|
|
$this->get_notes_requests($event); // This should shouw images like post/list but i don't know how do that.
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "search":
|
|
|
|
{
|
|
|
|
if(!$user->is_anonymous())
|
|
|
|
$this->theme->search_notes_page($page);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "updated": //Thinking how biuld this function.
|
|
|
|
{
|
|
|
|
$this->get_histories($event);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "history": //Thinking how biuld this function.
|
|
|
|
{
|
|
|
|
$this->get_history($event);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "revert":
|
|
|
|
{
|
|
|
|
$noteID = $event->get_arg(1);
|
|
|
|
$reviewID = $event->get_arg(2);
|
|
|
|
if(!$user->is_anonymous()){
|
|
|
|
$this->revert_history($noteID, $reviewID);
|
|
|
|
}
|
|
|
|
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("note/updated"));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "add_note":
|
|
|
|
{
|
|
|
|
if(!$user->is_anonymous())
|
|
|
|
$this->add_new_note();
|
|
|
|
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("post/view/".$_POST["image_id"]));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "add_request":
|
|
|
|
{
|
|
|
|
if(!$user->is_anonymous())
|
|
|
|
$this->add_note_request();
|
|
|
|
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("post/view/".$_POST["image_id"]));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "nuke_notes":
|
|
|
|
{
|
|
|
|
if($user->is_admin())
|
|
|
|
$this->nuke_notes();
|
|
|
|
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("post/view/".$_POST["image_id"]));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "nuke_requests":
|
|
|
|
{
|
|
|
|
if($user->is_admin())
|
|
|
|
$this->nuke_requests();
|
|
|
|
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("post/view/".$_POST["image_id"]));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "edit_note":
|
|
|
|
{
|
|
|
|
if (!$user->is_anonymous()) {
|
|
|
|
$this->update_note();
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("post/view/".$_POST["image_id"]));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "delete_note":
|
|
|
|
{
|
|
|
|
if ($user->is_admin()) {
|
|
|
|
$this->delete_note();
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("post/view/".$_POST["image_id"]));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
$page->set_mode("redirect");
|
|
|
|
$page->set_redirect(make_link("note/list"));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE LOAD THE NOTES IN THE IMAGE
|
|
|
|
*/
|
2012-02-08 11:24:25 +00:00
|
|
|
public function onDisplayingImage(DisplayingImageEvent $event) {
|
2009-12-24 07:36:09 +00:00
|
|
|
global $page, $user;
|
|
|
|
|
|
|
|
//display form on image event
|
|
|
|
$notes = $this->get_notes($event->image->id);
|
|
|
|
$this->theme->display_note_system($page, $event->image->id, $notes, $user->is_admin());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE ADD THE BUTTONS ON SIDEBAR
|
|
|
|
*/
|
2012-02-08 11:24:25 +00:00
|
|
|
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) {
|
2009-12-24 07:36:09 +00:00
|
|
|
global $user;
|
|
|
|
if(!$user->is_anonymous()) {
|
|
|
|
$event->add_part($this->theme->note_button($event->image->id));
|
|
|
|
$event->add_part($this->theme->request_button($event->image->id));
|
|
|
|
if($user->is_admin()) {
|
|
|
|
$event->add_part($this->theme->nuke_notes_button($event->image->id));
|
|
|
|
$event->add_part($this->theme->nuke_requests_button($event->image->id));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE ADD QUERYLETS TO ADD SEARCH SYSTEM
|
|
|
|
*/
|
2012-02-08 11:24:25 +00:00
|
|
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
2009-12-24 07:36:09 +00:00
|
|
|
$matches = array();
|
2014-01-02 14:00:24 +00:00
|
|
|
if(preg_match("/^note[=|:](.*)$/i", $event->term, $matches)) {
|
2009-12-24 07:36:09 +00:00
|
|
|
$notes = int_escape($matches[1]);
|
|
|
|
$event->add_querylet(new Querylet("images.id IN (SELECT image_id FROM notes WHERE note = $notes)"));
|
|
|
|
}
|
2014-02-15 21:26:31 +00:00
|
|
|
else if(preg_match("/^notes([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)%/i", $event->term, $matches)) {
|
2014-01-02 14:00:24 +00:00
|
|
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
2009-12-24 07:36:09 +00:00
|
|
|
$notes = $matches[2];
|
|
|
|
$event->add_querylet(new Querylet("images.id IN (SELECT id FROM images WHERE notes $cmp $notes)"));
|
|
|
|
}
|
2014-01-02 14:00:24 +00:00
|
|
|
else if(preg_match("/^notes_by[=|:](.*)$/i", $event->term, $matches)) {
|
2009-12-24 07:36:09 +00:00
|
|
|
global $database;
|
|
|
|
$user = User::by_name($matches[1]);
|
|
|
|
if(!is_null($user)) {
|
|
|
|
$user_id = $user->id;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$user_id = -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$event->add_querylet(new Querylet("images.id IN (SELECT image_id FROM notes WHERE user_id = $user_id)"));
|
|
|
|
}
|
2014-01-02 14:00:24 +00:00
|
|
|
else if(preg_match("/^notes_by_userno[=|:](\d+)$/i", $event->term, $matches)) {
|
2009-12-24 07:36:09 +00:00
|
|
|
$user_id = int_escape($matches[1]);
|
|
|
|
$event->add_querylet(new Querylet("images.id IN (SELECT image_id FROM notes WHERE user_id = $user_id)"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE GET ALL NOTES FOR DISPLAYED IMAGE
|
|
|
|
*/
|
|
|
|
private function get_notes($imageID) {
|
|
|
|
global $database;
|
|
|
|
|
|
|
|
return $database->get_all(
|
|
|
|
"SELECT * ".
|
|
|
|
"FROM notes ".
|
|
|
|
"WHERE enable = ? AND image_id = ? ".
|
|
|
|
"ORDER BY date ASC"
|
|
|
|
, array('1', $imageID));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE ADD A NOTE TO DATABASE
|
|
|
|
*/
|
|
|
|
private function add_new_note() {
|
|
|
|
global $database, $user;
|
|
|
|
|
|
|
|
$imageID = int_escape($_POST["image_id"]);
|
|
|
|
$user_id = $user->id;
|
|
|
|
$noteX1 = int_escape($_POST["note_x1"]);
|
|
|
|
$noteY1 = int_escape($_POST["note_y1"]);
|
|
|
|
$noteHeight = int_escape($_POST["note_height"]);
|
|
|
|
$noteWidth = int_escape($_POST["note_width"]);
|
2012-01-16 22:30:06 +00:00
|
|
|
$noteText = html_escape($_POST["note_text"]);
|
2009-12-24 07:36:09 +00:00
|
|
|
|
|
|
|
$database->execute("
|
|
|
|
INSERT INTO notes
|
|
|
|
(enable, image_id, user_id, user_ip, date, x1, y1, height, width, note)
|
|
|
|
VALUES
|
|
|
|
(?, ?, ?, ?, now(), ?, ?, ?, ?, ?)",
|
|
|
|
array(1, $imageID, $user_id, $_SERVER['REMOTE_ADDR'], $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText));
|
|
|
|
|
|
|
|
$result = $database->get_row("SELECT LAST_INSERT_ID() AS noteID", array());
|
|
|
|
$noteID = $result["noteID"];
|
|
|
|
|
|
|
|
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));
|
|
|
|
|
|
|
|
$this->add_history(1, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE ADD A REQUEST TO DATABASE
|
|
|
|
*/
|
|
|
|
private function add_note_request() {
|
|
|
|
global $database, $user;
|
|
|
|
|
|
|
|
$image_id = int_escape($_POST["image_id"]);
|
|
|
|
$user_id = $user->id;
|
|
|
|
|
|
|
|
$database->execute("
|
|
|
|
INSERT INTO note_request
|
|
|
|
(image_id, user_id, date)
|
|
|
|
VALUES
|
|
|
|
(?, ?, now())",
|
|
|
|
array($image_id, $user_id));
|
|
|
|
|
|
|
|
$result = $database->get_row("SELECT LAST_INSERT_ID() AS requestID", array());
|
|
|
|
|
|
|
|
log_info("notes", "Note requested {$result["requestID"]} by {$user->name}");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE EDIT THE NOTE
|
|
|
|
*/
|
|
|
|
private function update_note()
|
|
|
|
{
|
|
|
|
$imageID = int_escape($_POST["image_id"]);
|
|
|
|
$noteID = int_escape($_POST["note_id"]);
|
|
|
|
$noteX1 = int_escape($_POST["note_x1"]);
|
|
|
|
$noteY1 = int_escape($_POST["note_y1"]);
|
|
|
|
$noteHeight = int_escape($_POST["note_height"]);
|
|
|
|
$noteWidth = int_escape($_POST["note_width"]);
|
|
|
|
$noteText = mysql_real_escape_string(html_escape($_POST["note_text"]));
|
|
|
|
|
|
|
|
// validate parameters
|
|
|
|
if(is_null($imageID) || !is_numeric($imageID))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteID) || !is_numeric($noteID))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteX1) || !is_numeric($noteX1))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteY1) || !is_numeric($noteY1))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteHeight) || !is_numeric($noteHeight))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteWidth) || !is_numeric($noteWidth))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteText) || strlen($noteText) == 0)
|
|
|
|
return;
|
|
|
|
|
|
|
|
global $database;
|
|
|
|
$database->execute("UPDATE notes ".
|
|
|
|
"SET x1 = ?, ".
|
|
|
|
"y1 = ?, ".
|
|
|
|
"height = ?, ".
|
|
|
|
"width = ?,".
|
|
|
|
"note = ? ".
|
|
|
|
"WHERE image_id = ? AND id = ?", array($noteX1, $noteY1, $noteHeight, $noteWidth, $noteText, $imageID, $noteID));
|
|
|
|
|
|
|
|
$this->add_history(1, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE DELETE THE NOTE
|
|
|
|
*/
|
|
|
|
private function delete_note()
|
|
|
|
{
|
|
|
|
$imageID = int_escape($_POST["image_id"]);
|
|
|
|
$noteID = int_escape($_POST["note_id"]);
|
|
|
|
|
|
|
|
// validate parameters
|
|
|
|
if(is_null($imageID) || !is_numeric($imageID))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(is_null($noteID) || !is_numeric($noteID))
|
|
|
|
return;
|
|
|
|
|
|
|
|
global $database;
|
|
|
|
|
|
|
|
$database->execute("UPDATE notes ".
|
|
|
|
"SET enable = ? ".
|
|
|
|
"WHERE image_id = ? AND id = ?", array(0, $imageID, $noteID));
|
|
|
|
|
|
|
|
log_info("notes", "Note deleted {$noteID} by {$user->name}");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE DELETE ALL NOTES FROM IMAGE
|
|
|
|
*/
|
|
|
|
private function nuke_notes() {
|
|
|
|
global $database;
|
|
|
|
$image_id = int_escape($_POST["image_id"]);
|
|
|
|
$database->execute("DELETE FROM notes WHERE image_id = ?", array($image_id));
|
|
|
|
log_info("notes", "Notes deleted from {$image_id} by {$user->name}");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE DELETE ALL REQUESTS FOR IMAGE
|
|
|
|
*/
|
|
|
|
private function nuke_requests() {
|
|
|
|
global $database;
|
|
|
|
$image_id = int_escape($_POST["image_id"]);
|
|
|
|
|
|
|
|
$database->execute("DELETE FROM note_request WHERE image_id = ?", array($image_id));
|
|
|
|
|
|
|
|
log_info("notes", "Requests deleted from {$image_id} by {$user->name}");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE ALL IMAGES THAT HAVE NOTES
|
|
|
|
*/
|
|
|
|
private function get_notes_list($event) {
|
|
|
|
$pageNumber = $event->get_arg(1);
|
|
|
|
if(is_null($pageNumber) || !is_numeric($pageNumber))
|
|
|
|
$pageNumber = 0;
|
|
|
|
else if ($pageNumber <= 0)
|
|
|
|
$pageNumber = 0;
|
|
|
|
else
|
|
|
|
$pageNumber--;
|
|
|
|
|
|
|
|
global $config;
|
|
|
|
|
|
|
|
$notesPerPage = $config->get_int('notesNotesPerPage');
|
|
|
|
|
|
|
|
|
|
|
|
//$result = $database->get_all("SELECT * FROM pool_images WHERE pool_id=?", array($poolID));
|
|
|
|
global $database;
|
|
|
|
$get_notes = "
|
|
|
|
SELECT DISTINCT image_id ".
|
|
|
|
"FROM notes ".
|
|
|
|
"WHERE enable = ? ".
|
|
|
|
"ORDER BY date DESC LIMIT ?, ?";
|
|
|
|
|
|
|
|
$result = $database->Execute($get_notes, array(1, $pageNumber * $notesPerPage, $notesPerPage));
|
|
|
|
|
2011-01-01 16:28:04 +00:00
|
|
|
$totalPages = ceil($database->get_one("SELECT COUNT(DISTINCT image_id) FROM notes") / $notesPerPage);
|
2009-12-24 07:36:09 +00:00
|
|
|
|
|
|
|
$images = array();
|
|
|
|
while(!$result->EOF) {
|
|
|
|
$image = Image::by_id($result->fields["image_id"]);
|
|
|
|
$images[] = array($image);
|
|
|
|
$result->MoveNext();
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->theme->display_note_list($images, $pageNumber + 1, $totalPages);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE GET ALL NOTE REQUESTS
|
|
|
|
*/
|
|
|
|
private function get_notes_requests($event) {
|
|
|
|
$pageNumber = $event->get_arg(1);
|
|
|
|
if(is_null($pageNumber) || !is_numeric($pageNumber))
|
|
|
|
$pageNumber = 0;
|
|
|
|
else if ($pageNumber <= 0)
|
|
|
|
$pageNumber = 0;
|
|
|
|
else
|
|
|
|
$pageNumber--;
|
|
|
|
|
|
|
|
global $config;
|
|
|
|
|
|
|
|
$requestsPerPage = $config->get_int('notesRequestsPerPage');
|
|
|
|
|
|
|
|
|
|
|
|
//$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));
|
|
|
|
|
2011-01-01 16:28:04 +00:00
|
|
|
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_request") / $requestsPerPage);
|
2009-12-24 07:36:09 +00:00
|
|
|
|
|
|
|
$images = array();
|
|
|
|
while(!$result->EOF) {
|
|
|
|
$image = Image::by_id($result->fields["image_id"]);
|
|
|
|
$images[] = array($image);
|
|
|
|
$result->MoveNext();
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->theme->display_note_requests($images, $pageNumber + 1, $totalPages);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE ADD HISTORY TO TRACK THE CHANGES OF THE NOTES FOR THE IMAGES.
|
|
|
|
*/
|
|
|
|
private function add_history($noteEnable, $noteID, $imageID, $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText){
|
|
|
|
global $user, $database;
|
|
|
|
|
|
|
|
$userID = $user->id;
|
|
|
|
|
2011-01-01 16:28:04 +00:00
|
|
|
$reviewID = $database->get_one("SELECT COUNT(*) FROM note_histories WHERE note_id = ?", array($noteID));
|
2009-12-24 07:36:09 +00:00
|
|
|
$reviewID = $reviewID + 1;
|
|
|
|
|
|
|
|
$database->execute("
|
|
|
|
INSERT INTO note_histories
|
|
|
|
(note_enable, note_id, review_id, image_id, user_id, user_ip, date, x1, y1, height, width, note)
|
|
|
|
VALUES
|
|
|
|
(?, ?, ?, ?, ?, ?, now(), ?, ?, ?, ?, ?)",
|
|
|
|
array($noteEnable, $noteID, $reviewID, $imageID, $userID, $_SERVER['REMOTE_ADDR'], $noteX1, $noteY1, $noteHeight, $noteWidth, $noteText));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE GET ALL HISTORIES.
|
|
|
|
*/
|
|
|
|
private function get_histories($event){
|
|
|
|
$pageNumber = $event->get_arg(1);
|
|
|
|
if(is_null($pageNumber) || !is_numeric($pageNumber))
|
|
|
|
$pageNumber = 0;
|
|
|
|
else if ($pageNumber <= 0)
|
|
|
|
$pageNumber = 0;
|
|
|
|
else
|
|
|
|
$pageNumber--;
|
|
|
|
|
|
|
|
global $config;
|
|
|
|
|
|
|
|
$histiriesPerPage = $config->get_int('notesHistoriesPerPage');
|
|
|
|
|
|
|
|
//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 ".
|
|
|
|
"FROM note_histories AS h ".
|
|
|
|
"INNER JOIN users AS u ".
|
|
|
|
"ON u.id = h.user_id ".
|
|
|
|
"ORDER BY date DESC LIMIT ?, ?",
|
|
|
|
array($pageNumber * $histiriesPerPage, $histiriesPerPage));
|
|
|
|
|
2011-01-01 16:28:04 +00:00
|
|
|
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_histories") / $histiriesPerPage);
|
2009-12-24 07:36:09 +00:00
|
|
|
|
|
|
|
$this->theme->display_histories($histories, $pageNumber + 1, $totalPages);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE WE THE HISTORY FOR A SPECIFIC NOTE.
|
|
|
|
*/
|
|
|
|
private function get_history($event){
|
|
|
|
$noteID = $event->get_arg(1);
|
|
|
|
$pageNumber = $event->get_arg(2);
|
|
|
|
if(is_null($pageNumber) || !is_numeric($pageNumber))
|
|
|
|
$pageNumber = 0;
|
|
|
|
else if ($pageNumber <= 0)
|
|
|
|
$pageNumber = 0;
|
|
|
|
else
|
|
|
|
$pageNumber--;
|
|
|
|
|
|
|
|
global $config;
|
|
|
|
|
|
|
|
$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 ".
|
|
|
|
"FROM note_histories AS h ".
|
|
|
|
"INNER JOIN users AS u ".
|
|
|
|
"ON u.id = h.user_id ".
|
|
|
|
"WHERE note_id = ? ".
|
|
|
|
"ORDER BY date DESC LIMIT ?, ?",
|
|
|
|
array($noteID, $pageNumber * $histiriesPerPage, $histiriesPerPage));
|
|
|
|
|
2011-01-01 16:28:04 +00:00
|
|
|
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM note_histories WHERE note_id = ?", array($noteID)) / $histiriesPerPage);
|
2009-12-24 07:36:09 +00:00
|
|
|
|
|
|
|
$this->theme->display_history($histories, $pageNumber + 1, $totalPages);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HERE GO BACK IN HISTORY AND SET THE OLD NOTE. IF WAS REMOVED WE READD IT.
|
|
|
|
*/
|
|
|
|
private function revert_history($noteID, $reviewID){
|
|
|
|
global $user, $database;
|
|
|
|
|
|
|
|
$history = $database->get_row("SELECT * FROM note_histories WHERE note_id = ? AND review_id = ?",array($noteID, $reviewID));
|
|
|
|
|
|
|
|
$noteEnable = $history['note_enable'];
|
|
|
|
$noteID = $history['note_id'];
|
|
|
|
$imageID = $history['image_id'];
|
|
|
|
$userID = $user->id;
|
|
|
|
$noteX1 = $history['x1'];
|
|
|
|
$noteY1 = $history['y1'];
|
|
|
|
$noteHeight = $history['height'];
|
|
|
|
$noteWidth = $history['width'];
|
|
|
|
$noteText = $history['note'];
|
|
|
|
|
|
|
|
$database->execute("UPDATE notes ".
|
|
|
|
"SET enable = ?, ".
|
|
|
|
"x1 = ?, ".
|
|
|
|
"y1 = ?, ".
|
|
|
|
"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);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|