Working on fixing the Pools extension.
This commit is contained in:
parent
2d443f0be9
commit
76c6031b04
@ -1,16 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* Name: Pools System
|
||||
* Author: Sein Kraft <mail@seinkraft.info>
|
||||
* Author: Sein Kraft <mail@seinkraft.info>, jgen <jgen.tech@gmail.com>
|
||||
* License: GPLv2
|
||||
* Description: Allow users to create groups of images
|
||||
* Documentation:
|
||||
* Description: Allow users to create groups of images and order them.
|
||||
* Documentation: This extension allows users to created named groups of
|
||||
* images, and order the images within the group.
|
||||
* Useful for related images like in a comic, etc.
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class is just a wrapper around SCoreException.
|
||||
*/
|
||||
class PoolCreationException extends SCoreException {
|
||||
var $error;
|
||||
|
||||
public function __construct($error) {
|
||||
$this->error = $error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Pools extends SimpleExtension {
|
||||
|
||||
public function onInitExt($event) {
|
||||
global $config, $database;
|
||||
|
||||
@ -67,8 +79,16 @@ class Pools extends SimpleExtension {
|
||||
|
||||
public function onPageRequest($event) {
|
||||
global $config, $page, $user;
|
||||
|
||||
if ($event->page_matches("pool")) {
|
||||
|
||||
if($event->page_matches("pool")) {
|
||||
var $pool_id, $pool;
|
||||
// Check if we have pool id, since this is most often the case.
|
||||
if (isset($_POST["pool_id"])) {
|
||||
$pool_id = int_escape($_POST["pool_id"]);
|
||||
$pool = $this->get_single_pool($pool_id);
|
||||
}
|
||||
|
||||
switch($event->get_arg(0)) {
|
||||
case "list": //index
|
||||
$this->list_pools($page, int_escape($event->get_arg(1)));
|
||||
@ -89,8 +109,8 @@ class Pools extends SimpleExtension {
|
||||
$page->set_mode("redirect");
|
||||
$page->set_redirect(make_link("pool/view/".$newPoolID));
|
||||
}
|
||||
catch(PoolCreationException $pce) {
|
||||
$this->theme->display_error($pce->getMessage());
|
||||
catch(PoolCreationException $e) {
|
||||
$this->theme->display_error($e->error);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -117,8 +137,7 @@ class Pools extends SimpleExtension {
|
||||
$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']) {
|
||||
if (have_permission($user, $pool)) {
|
||||
$this->theme->edit_pool($page, $this->get_pool($poolID), $this->edit_posts($poolID));
|
||||
} else {
|
||||
$page->set_mode("redirect");
|
||||
@ -133,8 +152,7 @@ class Pools extends SimpleExtension {
|
||||
$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']) {
|
||||
if (have_permission($user, $pool)) {
|
||||
$this->theme->edit_order($page, $this->get_pool($poolID), $this->edit_order($poolID));
|
||||
} else {
|
||||
$page->set_mode("redirect");
|
||||
@ -143,10 +161,7 @@ class Pools extends SimpleExtension {
|
||||
}
|
||||
}
|
||||
else {
|
||||
$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']) {
|
||||
if (have_permission($user, $pool)) {
|
||||
$this->order_posts();
|
||||
$page->set_mode("redirect");
|
||||
$page->set_redirect(make_link("pool/view/".$pool_id));
|
||||
@ -157,10 +172,7 @@ class Pools extends SimpleExtension {
|
||||
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']) {
|
||||
if (have_permission($user, $pool)) {
|
||||
$this->import_posts();
|
||||
} else {
|
||||
$this->theme->display_error("Permssion denied.");
|
||||
@ -168,10 +180,7 @@ class Pools extends SimpleExtension {
|
||||
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']) {
|
||||
if (have_permission($user, $pool)) {
|
||||
$this->add_posts();
|
||||
$page->set_mode("redirect");
|
||||
$page->set_redirect(make_link("pool/view/".$pool_id));
|
||||
@ -181,10 +190,7 @@ class Pools extends SimpleExtension {
|
||||
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']) {
|
||||
if (have_permission($user, $pool)) {
|
||||
$this->remove_posts();
|
||||
$page->set_mode("redirect");
|
||||
$page->set_redirect(make_link("pool/view/".$pool_id));
|
||||
@ -195,11 +201,8 @@ class Pools extends SimpleExtension {
|
||||
break;
|
||||
|
||||
case "nuke":
|
||||
$pool_id = int_escape($_POST['pool_id']);
|
||||
$pool = $this->get_single_pool($pool_id);
|
||||
|
||||
// only admins and owners may do this
|
||||
if($user->is_admin() || $user->id == $pool['user_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"));
|
||||
@ -257,7 +260,24 @@ class Pools extends SimpleExtension {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------- */
|
||||
/* -------------- Private Functions -------------- */
|
||||
/* ------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Check if the given user has permission to edit/change the pool.
|
||||
* @retval bool
|
||||
*/
|
||||
private function have_permission($user, $pool) {
|
||||
// If the pool is public and user is logged OR if the user is admin OR if the pool is owned by the user.
|
||||
if ( (($pool['public'] == "Y" || $pool['public'] == "y") && !$user->is_anonymous()) || $user->is_admin() || $user->id == $pool['user_id'])
|
||||
{
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* HERE WE GET THE LIST OF POOLS
|
||||
*/
|
||||
@ -420,7 +440,7 @@ class Pools extends SimpleExtension {
|
||||
|
||||
$count = $database->get_one("SELECT COUNT(*) FROM pool_images WHERE pool_id=:pid", array("pid"=>$poolID));
|
||||
$this->add_history($poolID, 0, $images, $count);
|
||||
return $poolID;
|
||||
return $poolID;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
<?php
|
||||
|
||||
class PoolsTheme extends Themelet {
|
||||
/*
|
||||
* HERE WE ADD THE POOL INFO ON IMAGE
|
||||
/**
|
||||
* Adds a block to the panel with information on the pool(s) the image is in.
|
||||
*/
|
||||
public function pool_info($linksPools) {
|
||||
global $page;
|
||||
@ -60,7 +61,6 @@ class PoolsTheme extends Themelet {
|
||||
|
||||
$html .= "</tbody></table>";
|
||||
|
||||
|
||||
$nav_html = "
|
||||
<a href=".make_link().">Index</a>
|
||||
<br><a href=".make_link("pool/new").">Create Pool</a>
|
||||
@ -154,9 +154,7 @@ class PoolsTheme extends Themelet {
|
||||
$pool_images = '';
|
||||
foreach($images as $image) {
|
||||
$thumb_html = $this->build_thumb_html($image);
|
||||
$pool_images .= '<span class="thumb">'.
|
||||
'<a href="$image_link">'.$thumb_html.'</a>'.
|
||||
'</span>';
|
||||
$pool_images .= "\n".$thumb_html."\n";
|
||||
}
|
||||
|
||||
$page->add_block(new Block("Viewing Posts", $pool_images, "main", 30));
|
||||
@ -172,17 +170,17 @@ class PoolsTheme extends Themelet {
|
||||
|
||||
$editor = "
|
||||
".make_form(make_link("pool/import"))."
|
||||
<input type='text' name='pool_tag' id='edit' value='Please enter a tag' onclick='this.value=\"\";'/>
|
||||
<input type='submit' name='edit' id='edit' value='Import'/>
|
||||
<input type='text' name='pool_tag' id='edit_pool_tag' value='Please enter a tag' onclick='this.value=\"\";'/>
|
||||
<input type='submit' name='edit' id='edit_pool_import_btn' value='Import'/>
|
||||
<input type='hidden' name='pool_id' value='".$pool['id']."'>
|
||||
</form>
|
||||
|
||||
<form method='GET' action='".make_link("pool/edit/".$pool['id'])."'>
|
||||
<input type='submit' name='edit' id='edit' value='Edit Pool'/>
|
||||
<input type='submit' name='edit' id='edit_pool_btn' value='Edit Pool'/>
|
||||
</form>
|
||||
|
||||
<form method='GET' action='".make_link("pool/order/".$pool['id'])."'>
|
||||
<input type='submit' name='edit' id='edit' value='Order Pool'/>
|
||||
<input type='submit' name='edit' id='edit_pool_order_btn' value='Order Pool'/>
|
||||
</form>
|
||||
";
|
||||
|
||||
@ -195,7 +193,7 @@ class PoolsTheme extends Themelet {
|
||||
</script>
|
||||
|
||||
".make_form(make_link("pool/nuke"))."
|
||||
<input type='submit' name='delete' id='delete' value='Delete Pool' onclick='return confirm_action()' />
|
||||
<input type='submit' name='delete' id='delete_pool_btn' value='Delete Pool' onclick='return confirm_action()' />
|
||||
<input type='hidden' name='pool_id' value='".$pool['id']."'>
|
||||
</form>
|
||||
";
|
||||
@ -225,6 +223,7 @@ class PoolsTheme extends Themelet {
|
||||
* HERE WE DISPLAY THE RESULT OF THE SEARCH ON IMPORT
|
||||
*/
|
||||
public function pool_result(Page $page, $images, $pool_id) {
|
||||
// TODO: this could / should be done using jQuery
|
||||
$pool_images = "
|
||||
<script language='JavaScript' type='text/javascript'>
|
||||
function setAll(value) {
|
||||
@ -247,14 +246,12 @@ class PoolsTheme extends Themelet {
|
||||
foreach($images as $image) {
|
||||
$thumb_html = $this->build_thumb_html($image);
|
||||
|
||||
$pool_images .= '<span class="thumb">'.
|
||||
'<a href="$image_link">'.$thumb_html.'</a>'.
|
||||
'<br>'.
|
||||
$pool_images .= '<span class="thumb">'. $thumb_html .'<br>'.
|
||||
'<input name="check[]" type="checkbox" value="'.$image->id.'" />'.
|
||||
'</span>';
|
||||
}
|
||||
$pool_images .= "<br>".
|
||||
"<input type='submit' name='edit' id='edit' value='Add Selected' onclick='return confirm_action()'/>".
|
||||
"<input type='submit' name='edit' id='edit_pool_add_btn' value='Add Selected' onclick='return confirm_action()'/>".
|
||||
"<input type='hidden' name='pool_id' value='".$pool_id."'>".
|
||||
"</form>";
|
||||
|
||||
@ -278,13 +275,12 @@ class PoolsTheme extends Themelet {
|
||||
|
||||
$this->display_top($pools, "Sorting Pool");
|
||||
|
||||
$pool_images = "<form action='".make_link("pool/order")."' method='POST' name='checks'>";
|
||||
$pool_images = "\n<form action='".make_link("pool/order")."' method='POST' name='checks'>";
|
||||
$n = 0;
|
||||
foreach($images as $pair) {
|
||||
$image = $pair[0];
|
||||
$thumb_html = $this->build_thumb_html($image);
|
||||
$pool_images .= '<span class="thumb">'.
|
||||
'<a href="$image_link">'.$thumb_html.'</a>'.
|
||||
$pool_images .= '<span class="thumb">'."\n".$thumb_html."\n".
|
||||
'<br><input name="imgs['.$n.'][]" type="text" style="max-width:50px;" value="'.$image->image_order.'" />'.
|
||||
'<input name="imgs['.$n.'][]" type="hidden" value="'.$image->id.'" />'.
|
||||
'</span>';
|
||||
@ -292,7 +288,7 @@ class PoolsTheme extends Themelet {
|
||||
}
|
||||
|
||||
$pool_images .= "<br>".
|
||||
"<input type='submit' name='edit' id='edit' value='Order'/>".
|
||||
"<input type='submit' name='edit' id='edit_pool_order' value='Order'/>".
|
||||
"<input type='hidden' name='pool_id' value='".$pools[0]['id']."'>".
|
||||
"</form>";
|
||||
|
||||
@ -310,24 +306,20 @@ class PoolsTheme extends Themelet {
|
||||
|
||||
$this->display_top($pools, "Editing Pool", true);
|
||||
|
||||
$pool_images = "
|
||||
";
|
||||
|
||||
$pool_images = "<form action='".make_link("pool/remove_posts")."' method='POST' name='checks'>";
|
||||
$pool_images = "\n<form action='".make_link("pool/remove_posts")."' method='POST' name='checks'>";
|
||||
|
||||
foreach($images as $pair) {
|
||||
$image = $pair[0];
|
||||
|
||||
$thumb_html = $this->build_thumb_html($image);
|
||||
|
||||
$pool_images .= '<span class="thumb">'.
|
||||
'<a href="$image_link">'.$thumb_html.'</a>'.
|
||||
$pool_images .= '<span class="thumb">'."\n".$thumb_html."\n".
|
||||
'<br><input name="check[]" type="checkbox" value="'.$image->id.'" />'.
|
||||
'</span>';
|
||||
}
|
||||
|
||||
$pool_images .= "<br>".
|
||||
"<input type='submit' name='edit' id='edit' value='Remove Selected'/>".
|
||||
"<input type='submit' name='edit' id='edit_pool_remove_sel' value='Remove Selected'/>".
|
||||
"<input type='hidden' name='pool_id' value='".$pools[0]['id']."'>".
|
||||
"</form>";
|
||||
|
||||
@ -392,8 +384,8 @@ class PoolsTheme extends Themelet {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* HERE WE DISPLAY THE ERROR
|
||||
/**
|
||||
* Display an error message to the user.
|
||||
*/
|
||||
public function display_error($errMessage) {
|
||||
global $page;
|
||||
|
Loading…
x
Reference in New Issue
Block a user