From 0d3e7e0accddc2cca6e69776687e4d20206013bf Mon Sep 17 00:00:00 2001 From: Shish Date: Fri, 9 Oct 2009 13:10:58 +0100 Subject: [PATCH] import of submitted pools extension --- contrib/pools/main.php | 741 ++++++++++++++++++++++++++++++++++++++++ contrib/pools/theme.php | 488 ++++++++++++++++++++++++++ 2 files changed, 1229 insertions(+) create mode 100644 contrib/pools/main.php create mode 100644 contrib/pools/theme.php diff --git a/contrib/pools/main.php b/contrib/pools/main.php new file mode 100644 index 00000000..a94245b9 --- /dev/null +++ b/contrib/pools/main.php @@ -0,0 +1,741 @@ + + * License: GPLv2 + * Description: Simple pools extension + * Documentation: + */ + +class Pools extends SimpleExtension { + + public function onInitExt($event) { + global $config, $database; + + if ($config->get_int("ext_pools_version") < 1){ + $database->create_table("pools", " + id SCORE_AIPK, + user_id INTEGER NOT NULL, + public SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N, + title VARCHAR(255) NOT NULL, + description TEXT, + date DATETIME NOT NULL, + posts INTEGER NOT NULL DEFAULT 0, + INDEX (id) + "); + $database->create_table("pool_images", " + pool_id INTEGER NOT NULL, + image_id INTEGER NOT NULL, + image_order INTEGER NOT NULL DEFAULT 0 + "); + $database->create_table("pool_history", " + id SCORE_AIPK, + pool_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + action INTEGER NOT NULL, + images TEXT, + count INTEGER NOT NULL DEFAULT 0, + date DATETIME NOT NULL, + INDEX (id) + "); + + $config->set_int("ext_pools_version", 1); + + $config->set_int("poolsMaxImportResults", 1000); + $config->set_int("poolsImagesPerPage", 20); + $config->set_int("poolsListsPerPage", 20); + $config->set_int("poolsUpdatedPerPage", 20); + $config->set_bool("poolsInfoOnViewImage", "N"); + + log_info("pools", "extension installed"); + } + } + + public function onSetupBuilding(SetupBuildingEvent $event) { + $sb = new SetupBlock("Pools"); + $sb->add_int_option("poolsMaxImportResults", "Max results on import: "); + $sb->add_int_option("poolsImagesPerPage", "
Images per page: "); + $sb->add_int_option("poolsListsPerPage", "
Index list items per page: "); + $sb->add_int_option("poolsUpdatedPerPage", "
Updated list items per page: "); + $sb->add_bool_option("poolsInfoOnViewImage", "
Show pool info on image: "); + $event->panel->add_block($sb); + } + + public function onPageRequest($event) { + global $config, $page, $user; + + if($event->page_matches("pool")) { + switch($event->get_arg(0)) { + case "list": //index + { + $this->list_pools($page, $event); + break; + } + case "new": // Show form + { + if(!$user->is_anonymous()){ + $this->theme->new_pool_composer($page); + } else { + $errMessage = "You must be registered and logged in to create a new pool."; + $this->theme->display_error($errMessage); + } + break; + } + case "create": // ADD _POST + { + if(!$user->is_anonymous()){ + $newPoolID = $this->add_pool(); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/view/".$newPoolID."")); + } else { + $this->theme->display_error("You must be registered and logged in to add a image."); + } + break; + } + case "view": + { + $poolID = $event->get_arg(1); + $this->get_posts($event, $poolID); + break; + } + case "updated": + { + $this->get_history($event); + break; + } + case "revert": + { + if(!$user->is_anonymous()) { + $historyID = $event->get_arg(1); + + $this->revert_history($historyID); + + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/updated")); + } + break; + } + case "edit": + { + $poolID = $event->get_arg(1); + $pools = $this->get_pool($poolID); + + foreach($pools as $pool) { + //if the pool is public and user is logged OR if the user is admin OR the user is the owner + if(($pool['public'] == "Y" && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id']) { + $this->theme->edit_pool($page, $this->get_pool($poolID), $this->edit_posts($poolID)); + } else { + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/view/".$poolID."")); + } + } + break; + } + case "edit_pool": + { + $poolID = int_escape($_POST["pool_id"]); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/edit/".$poolID."")); + break; + } + case "order": + { + $poolID = $event->get_arg(1); + $pools = $this->get_pool($poolID); + + foreach($pools as $pool) { + //if the pool is public and user is logged OR if the user is admin + if(($pool['public'] == "Y" && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id']) { + $this->theme->edit_order($page, $this->get_pool($poolID), $this->edit_order($poolID)); + } else { + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/view/".$poolID."")); + } + } + break; + } + case "edit_order": + { + $poolID = int_escape($_POST["pool_id"]); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/order/".$poolID."")); + break; + } + case "import": + { + $pool_id = int_escape($_POST["pool_id"]); + $pool = $this->get_single_pool($pool_id); + + if(($pool['public'] == "Y" && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id']) { + $this->import_posts(); + } else { + $this->theme->display_error("Permssion denied."); + } + break; + } + case "add_posts": + { + $pool_id = int_escape($_POST["pool_id"]); + $pool = $this->get_single_pool($pool_id); + + if(($pool['public'] == "Y" && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id']) { + $this->add_posts(); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/view/".$pool_id)); + } else { + $this->theme->display_error("Permssion denied."); + } + break; + } + case "order_posts": + { + $pool_id = int_escape($_POST["pool_id"]); + $pool = $this->get_single_pool($pool_id); + + if(($pool['public'] == "Y" && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id']) { + $this->order_posts(); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/view/".$pool_id)); + } else { + $this->theme->display_error("Permssion denied."); + } + break; + } + case "remove_posts": + { + $pool_id = int_escape($_POST["pool_id"]); + $pool = $this->get_single_pool($pool_id); + + if(($pool['public'] == "Y" && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id']) { + $this->remove_posts(); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/view/".$pool_id )); + } else { + $this->theme->display_error("Permssion denied."); + } + + break; + } + case "nuke": + { + $pool_id = $event->get_arg(1); + $pool = $this->get_single_pool($pool_id); + + // only admins and owners may do this + if($user->is_admin() || $user->id == $pool['user_id']) { + $this->nuke_pool($pool_id); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/list")); + } else { + $this->theme->display_error("Permssion denied."); + } + break; + } + case "nuke_pool": + { + $poolID = int_escape($_POST["pool_id"]); + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/nuke/".$poolID)); + break; + } + default: + { + $page->set_mode("redirect"); + $page->set_redirect(make_link("pool/list")); + break; + } + } + } + } + + + + /* + * HERE WE GET THE POOLS WHERE THE IMAGE APPEARS WHEN THE IMAGE IS DISPLAYED + */ + public function onDisplayingImage($event) { + global $page; + $imageID = $event->image->id; + $poolsIDs = $this->get_pool_id($imageID); + + $linksPools = ""; + foreach ($poolsIDs as $poolID){ + $pools = $this->get_pool($poolID['pool_id']); + foreach ($pools as $pool){ + $linksPools .= "".$pool['title'].", "; + } + } + $linksPools = substr($linksPools, 0, -2); + $linksPools = $linksPools." "; + $this->theme->pool_info($linksPools); + } + + + + /* + * HERE WE GET THE LIST OF POOLS + */ + private function list_pools(Page $page, $event){ + global $config, $database; + + $pageNumber = $event->get_arg(1); + if(is_null($pageNumber) || !is_numeric($pageNumber)) + $pageNumber = 0; + else if ($pageNumber <= 0) + $pageNumber = 0; + else + $pageNumber--; + + $poolsPerPage = $config->get_int("poolsListsPerPage"); + + $pools = $database->get_all( + "SELECT p.id, p.user_id, p.public, p.title, p.description, p.posts, u.name as user_name ". + "FROM pools AS p ". + "INNER JOIN users AS u ". + "ON p.user_id = u.id ". + "ORDER BY p.date DESC ". + "LIMIT ?, ?" + , array($pageNumber * $poolsPerPage, $poolsPerPage) + ); + + $totalPages = ceil($database->db->GetOne("SELECT COUNT(*) FROM pools") / $poolsPerPage); + + $this->theme->list_pools($page, $pools, $pageNumber + 1, $totalPages); + } + + + + /* + * HERE WE CREATE A NEW POOL + */ + private function add_pool(){ + global $user, $database; + + $public = html_escape($_POST["public"]); + $title = html_escape($_POST["title"]); + $description = html_escape($_POST["description"]); + + if($public == ""){ + $public = "N"; + } + + $database->execute(" + INSERT INTO pools + (user_id, public, title, description, date) + VALUES + (?, ?, ?, ?, now())", + array($user->id, $public, $title, $description)); + + $result = $database->get_row("SELECT LAST_INSERT_ID() AS poolID", array()); + + log_info("pools", "Pool {$result["poolID"]} created by {$user->name}"); + + return $result["poolID"]; + } + + private function get_pool($poolID){ + global $database; + $poolID = int_escape($poolID); + return $database->get_all("SELECT * FROM pools WHERE id=?", array($poolID)); + } + + private function get_single_pool($poolID) + { + global $database; + $poolID = int_escape($poolID); + return $database->get_row("SELECT * FROM pools WHERE id=?", array($poolID)); + } + + /* + * HERE WE GET THE ID OF THE POOL FROM AN IMAGE + */ + private function get_pool_id($imageID){ + global $database; + $imageID = int_escape($imageID); + return $database->get_all("SELECT pool_id FROM pool_images WHERE image_id =?", array($imageID)); + } + + + + /* + * HERE WE GET THE IMAGES FROM THE TAG ON IMPORT + */ + private function import_posts(){ + global $page, $config, $database; + + $pool_id = int_escape($_POST["pool_id"]); + $pool_tag = html_escape($_POST["pool_tag"]);; + + $poolsMaxResults = $config->get_int("poolsMaxImportResults", 1000); + + $images = $images = Image::find_images(0, $poolsMaxResults, Tag::explode($pool_tag)); + $this->theme->pool_result($page, $images, $pool_id); + } + + + + /* + * HERE WE ADD CHECKED IMAGES FROM POOL AND UPDATE THE HISTORY + */ + private function add_posts(){ //ADD CHECKED POSTS + global $database; + + $poolID = int_escape($_POST['pool_id']); + $images = ""; + + foreach ($_POST['check'] as $imageID){ + + if(!$this->check_post($poolID, $imageID)){ + $database->execute(" + INSERT INTO pool_images + (pool_id, image_id) + VALUES + (?, ?)", + array($poolID, $imageID)); + + $images .= " ".$imageID; + } + + } + + if(!strlen($images) == 0){ + $count = $database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=?", array($poolID)); + $this->add_history($poolID, 1, $images, $count); + } + + $database->Execute("UPDATE pools SET posts=(SELECT COUNT(*) FROM pool_images WHERE pool_id=?) WHERE id=?", array($poolID, $poolID)); + return $poolID; + } + + private function order_posts(){ //ORDER POSTS + global $database; + + $poolID = int_escape($_POST['pool_id']); + + foreach ($_POST['imgs'] as $data) { + list ($imageORDER, $imageID) = $data; + + $imageID = int_escape($imageID); + $database->Execute("UPDATE pool_images SET image_order = ? WHERE pool_id = ? AND image_id = ?", array($imageORDER, $poolID, $imageID)); + } + + return $poolID; + } + + + + /* + * HERE WE REMOVE CHECKED IMAGES FROM POOL AND UPDATE THE HISTORY + */ + private function remove_posts(){ + global $database; + + $poolID = int_escape($_POST['pool_id']); + $images = ""; + + foreach ($_POST['check'] as $imageID){ + $database->execute("DELETE FROM pool_images WHERE pool_id = ? AND image_id = ?", array($poolID, $imageID)); + + $images .= " ".$imageID; + } + + $count = $database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=?", array($poolID)); + $this->add_history($poolID, 0, $images, $count); + return $poolID; + } + + + + /* + * HERE WE CHECK IF THE POST IS ALREADY ON POOL + * USED IN add_posts() + */ + private function check_post($poolID, $imageID){ + global $database; + $result = $database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=? AND image_id=?", array($poolID, $imageID)); + if($result == 0) { + return FALSE; + } else { + return TRUE; + } + } + + + + /* + * HERE WE GET ALL IMAGES FOR THE POOL + */ + private function get_posts($event, $poolID){ + global $config, $user, $database; + + $pageNumber = $event->get_arg(2); + if(is_null($pageNumber) || !is_numeric($pageNumber)) + $pageNumber = 0; + else if ($pageNumber <= 0) + $pageNumber = 0; + else + $pageNumber--; + + $poolID = int_escape($poolID); + + $imagesPerPage = $config->get_int("poolsImagesPerPage"); + + // WE CHECK IF THE EXTENSION RATING IS INSTALLED, WICH VERSION AND IF IT WORKS TO SHOW/HIDE SAFE, QUESTIONABLE, EXPLICIT AND UNRATED IMAGES FROM USER + if($config->get_int("ext_ratings2_version") < 3) { + $result = $database->get_all("SELECT image_id ". + "FROM pool_images ". + "WHERE pool_id=? ". + "ORDER BY image_order ASC ". + "LIMIT ?, ?" + , array($poolID, $pageNumber * $imagesPerPage, $imagesPerPage)); + $totalPages = ceil($database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=?",array($poolID)) / $imagesPerPage); + } + + if($config->get_int("ext_ratings2_version") >= 3) { + if($user->is_anonymous()) { + $sqes = $config->get_string("ext_rating_anon_privs"); + } + else if($user->is_admin()) { + $sqes = $config->get_string("ext_rating_admin_privs"); + } + else { + $sqes = $config->get_string("ext_rating_user_privs"); + } + $arr = array(); + for($i=0; $iget_all("SELECT p.image_id ". + "FROM pool_images AS p ". + "INNER JOIN images AS i ". + "ON i.id = p.image_id ". + "WHERE p.pool_id = ? ". + "AND i.rating IN ($rating) ". + "ORDER BY p.image_order ASC ". + "LIMIT ?, ?" + , array($poolID, $pageNumber * $imagesPerPage, $imagesPerPage)); + + $totalPages = ceil($database->db->GetOne("SELECT COUNT(*) ". + "FROM pool_images AS p ". + "INNER JOIN images AS i ". + "ON i.id = p.image_id ". + "WHERE pool_id=? ". + "AND i.rating IN ($rating) " + ,array($poolID)) / $imagesPerPage); + } + + $images = array(); + foreach ($result as $singleResult) { + $image = Image::by_id($singleResult["image_id"]); + $images[] = array($image); + } + + $pool = $this->get_pool($poolID); + $this->theme->view_pool($pool, $images, $pageNumber + 1, $totalPages); + } + + + /* + * WE GET THE ORDER OF THE IMAGES + */ + private function edit_posts($poolID){ + global $database; + $poolID = int_escape($poolID); + + $result = $database->Execute("SELECT image_id FROM pool_images WHERE pool_id=? ORDER BY image_order ASC", array($poolID)); + + $images = array(); + while(!$result->EOF) { + $image = Image::by_id($result->fields["image_id"]); + $images[] = array($image); + $result->MoveNext(); + } + + return $images; + } + + + + /* + * WE GET THE ORDER OF THE IMAGES BUT HERE WE SEND KEYS ADDED IN ARRAY TO GET THE ORDER IN THE INPUT VALUE + */ + private function edit_order($poolID){ + global $database; + $poolID = int_escape($poolID); + + $result = $database->Execute("SELECT image_id FROM pool_images WHERE pool_id=? ORDER BY image_order ASC", array($poolID)); + + $images = array(); + while(!$result->EOF) { + $image = $database->get_row("SELECT * FROM images AS i ". + "INNER JOIN pool_images AS p ". + "ON i.id = p.image_id ". + "WHERE pool_id=? AND i.id=?" + , array($poolID, $result->fields["image_id"])); + $image = ($image ? new Image($image) : null); + $images[] = array($image); + $result->MoveNext(); + } +// Original code +// +// $images = array(); +// while(!$result->EOF) { +// $image = Image::by_id($result->fields["image_id"]); +// $images[] = array($image); +// $result->MoveNext(); +// } + return $images; + } + + + + /* + * HERE WE NUKE ENTIRE POOL. WE REMOVE POOLS AND POSTS FROM REMOVED POOL AND HISTORIES ENTRIES FROM REMOVED POOL + */ + private function nuke_pool($poolID){ + global $user, $database; + + if($user->is_admin()){ + $database->execute("DELETE FROM pool_history WHERE pool_id = ?", array($poolID)); + $database->execute("DELETE FROM pool_images WHERE pool_id = ?", array($poolID)); + $database->execute("DELETE FROM pools WHERE id = ?", array($poolID)); + } elseif(!$user->is_anonymous()){ + // WE CHECK IF THE USER IS THE OWNER OF THE POOL IF NOT HE CAN'T DO ANYTHING + $database->execute("DELETE FROM pool_history WHERE pool_id = ?", array($poolID)); + $database->execute("DELETE FROM pool_images WHERE pool_id = ?", array($poolID)); + $database->execute("DELETE FROM pools WHERE id = ? AND user_id = ?", array($poolID, $user->id)); + } + } + + + + /* + * HERE WE ADD A HISTORY ENTRY + * FOR $action 1 (one) MEANS ADDED, 0 (zero) MEANS REMOVED + */ + private function add_history($poolID, $action, $images, $count){ + global $user, $database; + $user_id = $user->id; + $database->execute(" + INSERT INTO pool_history + (pool_id, user_id, action, images, count, date) + VALUES + (?, ?, ?, ?, ?, now())", + array($poolID, $user_id, $action, $images, $count)); + + } + + + + /* + * HERE WE GET THE HISTORY LIST + */ + private function get_history($event){ + global $config, $database; + + $pageNumber = $event->get_arg(1); + if(is_null($pageNumber) || !is_numeric($pageNumber)) + $pageNumber = 0; + else if ($pageNumber <= 0) + $pageNumber = 0; + else + $pageNumber--; + + + $historiesPerPage = $config->get_int("poolsUpdatedPerPage"); + + $history = $database->get_all( + "SELECT h.id, h.pool_id, h.user_id, h.action, h.images, h.count, h.date, u.name as user_name, p.title as title ". + "FROM pool_history AS h ". + "INNER JOIN pools AS p ". + "ON p.id = h.pool_id ". + "INNER JOIN users AS u ". + "ON h.user_id = u.id ". + "ORDER BY h.date DESC ". + "LIMIT ?, ?" + , array($pageNumber * $historiesPerPage, $historiesPerPage)); + + $totalPages = ceil($database->db->GetOne("SELECT COUNT(*) FROM pool_history") / $historiesPerPage); + + $this->theme->show_history($history, $pageNumber + 1, $totalPages); + } + + + + /* + * HERE GO BACK IN HISTORY AND ADD OR REMOVE POSTS TO POOL + */ + private function revert_history($historyID){ + global $database; + $status = $database->get_all("SELECT * FROM pool_history WHERE id=?", array($historyID)); + + foreach ($status as $entry) + { + $images = trim($entry['images']); + $images = explode(" ", $images); + $poolID = $entry['pool_id']; + $imageArray = ""; + + if ($entry['action'] == 0) { + // READD ENTRIES + foreach ($images as $image) { + $imageID = $image; + $this->add_post($poolID, $imageID); + + $imageArray .= " ".$imageID; + $newAction = 1; + } + } elseif ($entry['action'] == 1) { + // DELETE ENTRIES + foreach ($images as $image) { + $imageID = $image; + $this->delete_post($poolID, $imageID); + + $imageArray .= " ".$imageID; + $newAction = 0; + } + } + + $count = $database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=?", array($poolID)); + $this->add_history($poolID, $newAction, $imageArray, $count); + } + } + + + + /* + * HERE WE ADD A SIMPLE POST FROM POOL + * USED WITH FOREACH IN revert_history() + */ + private function add_post($poolID, $imageID){ + global $database; + + if(!$this->check_post($poolID, $imageID)){ + $database->execute(" + INSERT INTO pool_images + (pool_id, image_id) + VALUES + (?, ?)", + array($poolID, $imageID)); + } + + $database->execute("UPDATE pools SET posts=(SELECT COUNT(*) FROM pool_images WHERE pool_id=?) WHERE id=?", array($poolID, $poolID)); + } + + + + /* + * HERE WE REMOVE A SIMPLE POST FROM POOL + * USED WITH FOREACH IN revert_history() + */ + private function delete_post($poolID, $imageID){ + global $database; + + $database->execute("DELETE FROM pool_images WHERE pool_id = ? AND image_id = ?", array($poolID, $imageID)); + $database->execute("UPDATE pools SET posts=(SELECT COUNT(*) FROM pool_images WHERE pool_id=?) WHERE id=?", array($poolID, $poolID)); + } + +} +?> diff --git a/contrib/pools/theme.php b/contrib/pools/theme.php new file mode 100644 index 00000000..494b257a --- /dev/null +++ b/contrib/pools/theme.php @@ -0,0 +1,488 @@ +get_bool("poolsInfoOnViewImage")){ + if($linksPools <> " "){ + $page->add_block(new Block("Pool Info", $editor, "main", 1)); + } + } + } + + + + /* + * HERE WE SHOWS THE LIST OF POOLS + */ + public function list_pools(Page $page, $pools, $pageNumber, $totalPages) + { + global $user; + + $html = ''. + "". + "". + "". + "". + ""; + + if($user->is_admin()){ + $html .= ""; + } + $html .= ""; + + $n = 0; + foreach ($pools as $pool) + { + $oe = ($n++ % 2 == 0) ? "even" : "odd"; + + $pool_link = ''.$pool['title'].""; + $user_link = ''.$pool['user_name'].""; + $del_link = 'Delete'; + + if($pool['public'] == "Y"){ + $public = "Yes"; + } elseif($pool['public'] == "N"){ + $public = "No"; + } + + $html .= "". + "". + "". + "". + ""; + + if($user->is_admin()){ + $html .= ""; + } + + $html .= ""; + + } + + $html .= "
NameCreatorPostsPublicAction
".$pool_link."".$user_link."".$pool['posts']."".$public."".$del_link."
"; + + $blockTitle = "Pools"; + $page->set_title(html_escape($blockTitle)); + $page->set_heading(html_escape($blockTitle)); + $page->add_block(new Block($blockTitle, $html, "main", 10)); + + $this->display_paginator($page, "pool/list", null, $pageNumber, $totalPages); + } + + + + /* + * HERE WE DISPLAY THE NEW POOL COMPOSER + */ + public function new_pool_composer(Page $page) + { + $html = "
+ + + + + +
Title:
Public?
Description:
+ "; + + $blockTitle = "Create Pool"; + $page->set_title(html_escape($blockTitle)); + $page->set_heading(html_escape($blockTitle)); + $page->add_block(new Block($blockTitle, $html, "main", 10)); + } + + + + /* + * HERE WE DISPLAY THE POOL WITH TITLE DESCRIPTION AND IMAGES WITH PAGINATION + */ + public function view_pool($pools, $images, $pageNumber, $totalPages) + { + global $user, $page; + + $pool_info = "". + "". + "". + "". + ""; + + $n = 0; + foreach ($pools as $pool) + { + $oe = ($n++ % 2 == 0) ? "even" : "odd"; + + $pool_info .= "". + "". + "". + ""; + + // this will make disasters if more than one pool comes in the parameter + if($pool['public'] == "Y" || $user->is_admin()){// IF THE POOL IS PUBLIC OR IS ADMIN SHOW EDIT PANEL + if(!$user->is_anonymous()){// IF THE USER IS REGISTERED AND LOGGED IN SHOW EDIT PANEL + $this->sidebar_options($page, $pool); + } + } + $this->display_paginator($page, "pool/view/".$pool['id']."", null, $pageNumber, $totalPages); + } + + $pool_info .= "
TitleDescription
".$pool['title']."".$pool['description']."
"; + + $page->set_title("Viewing Pool"); + $page->set_heading("Viewing Pool"); + $page->add_block(new Block("Viewing Pool", $pool_info, "main", 10)); + + $pool_images = ''; + foreach($images as $pair) { + $image = $pair[0]; + + $thumb_html = $this->build_thumb_html($image); + + $pool_images .= ''. + ''.$thumb_html.''. + ''; + } + + //$pool_images .= print_r($images); + $page->add_block(new Block("Viewing Posts", $pool_images, "main", 30)); + } + + + + /* + * HERE WE DISPLAY THE POOL OPTIONS ON SIDEBAR BUT WE HIDE REMOVE OPTION IF THE USER IS NOT THE OWNER OR ADMIN + */ + public function sidebar_options(Page $page, $pool){ + global $user; + + $editor = " + + + +
+ +
+ + +
+ +
+ + +
+ "; + + if($user->id == $pool['user_id'] || $user->is_admin()){ + $editor .= " + + +
+ + +
+ "; + } + $page->add_block(new Block("Manage Pool", $editor, "left", 10)); + } + + + + /* + * HERE WE DISPLAY THE RESULT OF THE SEARCH ON IMPORT + */ + public function pool_result(Page $page, $images, $pool_id){ + + $pool_images = " + + + + + "; + + $pool_images .= "
"; + + foreach($images as $image) { + + $thumb_html = $this->build_thumb_html($image); + + $pool_images .= ''. + ''.$thumb_html.''. + '
'. + ''. + '
'; + } + $pool_images .= "
". + "". + "". + "
"; + + $page->add_block(new Block("Import", $pool_images, "main", 10)); + + $editor = " + + + "; + + $page->add_block(new Block("Manage Pool", $editor, "left", 10)); + } + + + + /* + * HERE WE DISPLAY THE POOL ORDERER + * WE LIST ALL IMAGES ON POOL WITHOUT PAGINATION AND WITH A TEXT INPUT TO SET A NUMBER AND CHANGE THE ORDER + */ + public function edit_order(Page $page, $pools, $images) + { + global $user; + + $pool_info = "". + "". + "". + "". + ""; + + $n = 0; + + foreach ($pools as $pool) + { + $oe = ($n++ % 2 == 0) ? "even" : "odd"; + + $pool_info .= "". + "". + "". + ""; + + } + $pool_info .= "
TitleDescription
".$pool['title']."".$pool['description']."
"; + + $page->set_title("Sorting Pool"); + $page->set_heading("Sorting Pool"); + $page->add_block(new Block("Sorting Pool", $pool_info, "main", 10)); + + $pool_images = "
"; + $n = 0; + foreach($images as $pair) { + $image = $pair[0]; + + $thumb_html = $this->build_thumb_html($image); + + $pool_images .= ''. + ''.$thumb_html.''; + + + $pool_images .= '
'. + ''; + $n = $n+1; + + $pool_images .= '
'; + } + + $pool_images .= "
". + "". + "". + "
"; + + $page->add_block(new Block("Sorting Posts", $pool_images, "main", 30)); + } + + + + /* + * HERE WE DISPLAY THE POOL EDITOR + * WE LIST ALL IMAGES ON POOL WITHOUT PAGINATION AND WITH A CHECKBOX TO SELECT WHICH IMAGE WE WANT REMOVE + */ + public function edit_pool(Page $page, $pools, $images) + { + global $user; + + $pool_info = "". + "". + "". + "". + ""; + + $n = 0; + + foreach ($pools as $pool) + { + $oe = ($n++ % 2 == 0) ? "even" : "odd"; + + $pool_info .= "". + "". + "". + ""; + + } + $pool_info .= "
TitleDescription
".$pool['title']."".$pool['description']."
"; + + $page->set_title("Editing Pool"); + $page->set_heading("Editing Pool"); + $page->add_block(new Block("Editing Pool", $pool_info, "main", 10)); + + + $pool_images = " + + + "; + + $pool_images .= "
"; + + foreach($images as $pair) { + $image = $pair[0]; + + $thumb_html = $this->build_thumb_html($image); + + $pool_images .= ''. + ''.$thumb_html.''; + + + $pool_images .= '
'; + + + $pool_images .= '
'; + } + + $pool_images .= "
". + "". + "". + "
"; + + $page->add_block(new Block("Editing Posts", $pool_images, "main", 30)); + + $editor = " + + "; + + $page->add_block(new Block("Manage Pool", $editor, "left", 10)); + } + + + + /* + * HERE WE DISPLAY THE HISTORY LIST + */ + public function show_history($histories, $pageNumber, $totalPages){ + global $page; + $html = "". + "". + "". + "". + "". + "". + "". + "". + ""; + + $n = 0; + foreach ($histories as $history) + { + $oe = ($n++ % 2 == 0) ? "even" : "odd"; + + $pool_link = "".$history['title'].""; + $user_link = "".$history['user_name'].""; + $revert_link = "Revert"; + + if ($history['action'] == 1) { + $prefix = "+"; + } elseif ($history['action'] == 0) { + $prefix = "-"; + } + + $images = trim($history['images']); + $images = explode(" ", $images); + + $image_link = ""; + foreach ($images as $image) { + $image_link .= "".$prefix.$image." "; + } + + $html .= "". + "". + "". + "". + "". + "". + "". + ""; + } + + $html .= "
PoolPost CountChangesUpdaterDateAction
".$pool_link."".$history['count']."".$image_link."".$user_link."".$history['date']."".$revert_link."
"; + + $page->set_title("Recent Changes"); + $page->set_heading("Recent Changes"); + $page->add_block(new Block("Recent Changes", $html, "main", 10)); + + $this->display_paginator($page, "pool/updated", null, $pageNumber, $totalPages); + } + + + + /* + * HERE WE DISPLAY THE ERROR + */ + public function display_error($errMessage){ + global $page; + + $page->set_title("Error"); + $page->set_heading("Error"); + $page->add_block(new Block("Error", $errMessage, "main", 10)); + } + +} +?> \ No newline at end of file