a bunch of pools tests and fixes
This commit is contained in:
parent
17f3b44212
commit
237f8148f3
@ -114,8 +114,8 @@ class Pools extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->get_version("ext_pools_version") < 2) {
|
if ($this->get_version("ext_pools_version") < 2) {
|
||||||
$database->Execute("ALTER TABLE pools ADD UNIQUE INDEX (title);");
|
$database->execute("ALTER TABLE pools ADD UNIQUE INDEX (title);");
|
||||||
$database->Execute("ALTER TABLE pools ADD lastupdated TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;");
|
$database->execute("ALTER TABLE pools ADD lastupdated TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;");
|
||||||
|
|
||||||
$this->set_version("ext_pools_version", 3); // skip 2
|
$this->set_version("ext_pools_version", 3); // skip 2
|
||||||
}
|
}
|
||||||
@ -152,8 +152,6 @@ class Pools extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function onPageRequest(PageRequestEvent $event)
|
public function onPageRequest(PageRequestEvent $event)
|
||||||
{
|
{
|
||||||
global $page, $user;
|
global $page, $user;
|
||||||
@ -316,7 +314,6 @@ class Pools extends Extension
|
|||||||
$event->add_link("Pools", make_link("pool/list"));
|
$event->add_link("Pools", make_link("pool/list"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When displaying an image, optionally list all the pools that the
|
* When displaying an image, optionally list all the pools that the
|
||||||
* image is currently a member of on a side panel, as well as a link
|
* image is currently a member of on a side panel, as well as a link
|
||||||
@ -375,7 +372,6 @@ class Pools extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function onSearchTermParse(SearchTermParseEvent $event)
|
public function onSearchTermParse(SearchTermParseEvent $event)
|
||||||
{
|
{
|
||||||
if (is_null($event->term)) {
|
if (is_null($event->term)) {
|
||||||
@ -440,7 +436,6 @@ class Pools extends Extension
|
|||||||
|
|
||||||
$pools = $database->get_all("SELECT * FROM pools ORDER BY title ");
|
$pools = $database->get_all("SELECT * FROM pools ORDER BY title ");
|
||||||
|
|
||||||
|
|
||||||
$event->add_action("bulk_pool_add_existing", "Add To (P)ool", "p", "", $this->theme->get_bulk_pool_selector($pools));
|
$event->add_action("bulk_pool_add_existing", "Add To (P)ool", "p", "", $this->theme->get_bulk_pool_selector($pools));
|
||||||
$event->add_action("bulk_pool_add_new", "Create Pool", "", "", $this->theme->get_bulk_pool_input($event->search_terms));
|
$event->add_action("bulk_pool_add_new", "Create Pool", "", "", $this->theme->get_bulk_pool_input($event->search_terms));
|
||||||
}
|
}
|
||||||
@ -494,9 +489,6 @@ class Pools extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* HERE WE GET THE LIST OF POOLS.
|
|
||||||
*/
|
|
||||||
private function list_pools(Page $page, int $pageNumber)
|
private function list_pools(Page $page, int $pageNumber)
|
||||||
{
|
{
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
@ -527,15 +519,11 @@ class Pools extends Extension
|
|||||||
LIMIT :l OFFSET :o
|
LIMIT :l OFFSET :o
|
||||||
", ["l" => $poolsPerPage, "o" => $pageNumber * $poolsPerPage]);
|
", ["l" => $poolsPerPage, "o" => $pageNumber * $poolsPerPage]);
|
||||||
|
|
||||||
$totalPages = (int)ceil($database->get_one("SELECT COUNT(*) FROM pools") / $poolsPerPage);
|
$totalPages = (int)ceil((int)$database->get_one("SELECT COUNT(*) FROM pools") / $poolsPerPage);
|
||||||
|
|
||||||
$this->theme->list_pools($page, $pools, $pageNumber + 1, $totalPages);
|
$this->theme->list_pools($page, $pools, $pageNumber + 1, $totalPages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HERE WE CREATE A NEW POOL
|
|
||||||
*/
|
|
||||||
public function onPoolCreation(PoolCreationEvent $event)
|
public function onPoolCreation(PoolCreationEvent $event)
|
||||||
{
|
{
|
||||||
global $user, $database;
|
global $user, $database;
|
||||||
@ -550,7 +538,6 @@ class Pools extends Extension
|
|||||||
throw new PoolCreationException("A pool using this title already exists.");
|
throw new PoolCreationException("A pool using this title already exists.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$database->execute(
|
$database->execute(
|
||||||
"
|
"
|
||||||
INSERT INTO pools (user_id, public, title, description, date)
|
INSERT INTO pools (user_id, public, title, description, date)
|
||||||
@ -627,10 +614,8 @@ class Pools extends Extension
|
|||||||
$this->theme->pool_result($page, $images, $this->get_pool($pool_id));
|
$this->theme->pool_result($page, $images, $this->get_pool($pool_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HERE WE ADD CHECKED IMAGES FROM POOL AND UPDATE THE HISTORY
|
* HERE WE ADD CHECKED IMAGES FROM POOL AND UPDATE THE HISTORY
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public function onPoolAddPosts(PoolAddPostsEvent $event)
|
public function onPoolAddPosts(PoolAddPostsEvent $event)
|
||||||
{
|
{
|
||||||
@ -665,7 +650,7 @@ class Pools extends Extension
|
|||||||
|
|
||||||
foreach ($_POST['imgs'] as $data) {
|
foreach ($_POST['imgs'] as $data) {
|
||||||
list($imageORDER, $imageID) = $data;
|
list($imageORDER, $imageID) = $data;
|
||||||
$database->Execute(
|
$database->execute(
|
||||||
"
|
"
|
||||||
UPDATE pool_images
|
UPDATE pool_images
|
||||||
SET image_order = :ord
|
SET image_order = :ord
|
||||||
@ -719,7 +704,7 @@ class Pools extends Extension
|
|||||||
private function check_post(int $poolID, int $imageID): bool
|
private function check_post(int $poolID, int $imageID): bool
|
||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
$result = $database->get_one("SELECT COUNT(*) FROM pool_images WHERE pool_id=:pid AND image_id=:iid", ["pid" => $poolID, "iid" => $imageID]);
|
$result = (int)$database->get_one("SELECT COUNT(*) FROM pool_images WHERE pool_id=:pid AND image_id=:iid", ["pid" => $poolID, "iid" => $imageID]);
|
||||||
return ($result != 0);
|
return ($result != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -811,22 +796,19 @@ class Pools extends Extension
|
|||||||
["pid" => $poolID, "l" => $imagesPerPage, "o" => $pageNumber * $imagesPerPage]
|
["pid" => $poolID, "l" => $imagesPerPage, "o" => $pageNumber * $imagesPerPage]
|
||||||
);
|
);
|
||||||
|
|
||||||
$totalPages = (int)ceil($database->get_one(
|
$totalPages = (int)ceil((int)$database->get_one(
|
||||||
"
|
"SELECT COUNT(*) FROM pool_images p $query",
|
||||||
SELECT COUNT(*) FROM pool_images p
|
|
||||||
$query",
|
|
||||||
["pid" => $poolID]
|
["pid" => $poolID]
|
||||||
) / $imagesPerPage);
|
) / $imagesPerPage);
|
||||||
|
|
||||||
$images = [];
|
$images = [];
|
||||||
foreach ($result as $singleResult) {
|
foreach ($result as $singleResult) {
|
||||||
$images[] = Image::by_id($singleResult["image_id"]);
|
$images[] = Image::by_id((int)$singleResult["image_id"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->theme->view_pool($pool, $images, $pageNumber + 1, $totalPages);
|
$this->theme->view_pool($pool, $images, $pageNumber + 1, $totalPages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function gets the current order of images from a given pool.
|
* This function gets the current order of images from a given pool.
|
||||||
* #return Image[] Array of image objects.
|
* #return Image[] Array of image objects.
|
||||||
@ -835,18 +817,17 @@ class Pools extends Extension
|
|||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
|
|
||||||
$result = $database->Execute("SELECT image_id FROM pool_images WHERE pool_id=:pid ORDER BY image_order ASC", ["pid" => $poolID]);
|
$result = $database->execute("SELECT image_id FROM pool_images WHERE pool_id=:pid ORDER BY image_order ASC", ["pid" => $poolID]);
|
||||||
$images = [];
|
$images = [];
|
||||||
|
|
||||||
while ($row = $result->fetch()) {
|
while ($row = $result->fetch()) {
|
||||||
$image = Image::by_id($row["image_id"]);
|
$image = Image::by_id((int)$row["image_id"]);
|
||||||
$images[] = [$image];
|
$images[] = [$image];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $images;
|
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.
|
* WE GET THE ORDER OF THE IMAGES BUT HERE WE SEND KEYS ADDED IN ARRAY TO GET THE ORDER IN THE INPUT VALUE.
|
||||||
*
|
*
|
||||||
@ -856,7 +837,7 @@ class Pools extends Extension
|
|||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
|
|
||||||
$result = $database->Execute("SELECT image_id FROM pool_images WHERE pool_id=:pid ORDER BY image_order ASC", ["pid" => $poolID]);
|
$result = $database->execute("SELECT image_id FROM pool_images WHERE pool_id=:pid ORDER BY image_order ASC", ["pid" => $poolID]);
|
||||||
$images = [];
|
$images = [];
|
||||||
|
|
||||||
while ($row = $result->fetch()) {
|
while ($row = $result->fetch()) {
|
||||||
@ -865,7 +846,7 @@ class Pools extends Extension
|
|||||||
SELECT * FROM images AS i
|
SELECT * FROM images AS i
|
||||||
INNER JOIN pool_images AS p ON i.id = p.image_id
|
INNER JOIN pool_images AS p ON i.id = p.image_id
|
||||||
WHERE pool_id=:pid AND i.id=:iid",
|
WHERE pool_id=:pid AND i.id=:iid",
|
||||||
["pid" => $poolID, "iid" => $row['image_id']]
|
["pid" => $poolID, "iid" => (int)$row['image_id']]
|
||||||
);
|
);
|
||||||
$image = ($image ? new Image($image) : null);
|
$image = ($image ? new Image($image) : null);
|
||||||
$images[] = [$image];
|
$images[] = [$image];
|
||||||
@ -874,7 +855,6 @@ class Pools extends Extension
|
|||||||
return $images;
|
return $images;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HERE WE NUKE ENTIRE POOL. WE REMOVE POOLS AND POSTS FROM REMOVED POOL AND HISTORIES ENTRIES FROM REMOVED POOL.
|
* HERE WE NUKE ENTIRE POOL. WE REMOVE POOLS AND POSTS FROM REMOVED POOL AND HISTORIES ENTRIES FROM REMOVED POOL.
|
||||||
*/
|
*/
|
||||||
@ -882,7 +862,7 @@ class Pools extends Extension
|
|||||||
{
|
{
|
||||||
global $user, $database;
|
global $user, $database;
|
||||||
|
|
||||||
$p_id = $database->get_one("SELECT user_id FROM pools WHERE id = :pid", ["pid" => $poolID]);
|
$p_id = (int)$database->get_one("SELECT user_id FROM pools WHERE id = :pid", ["pid" => $poolID]);
|
||||||
if ($user->can(Permissions::POOLS_ADMIN)) {
|
if ($user->can(Permissions::POOLS_ADMIN)) {
|
||||||
$database->execute("DELETE FROM pool_history WHERE pool_id = :pid", ["pid" => $poolID]);
|
$database->execute("DELETE FROM pool_history WHERE pool_id = :pid", ["pid" => $poolID]);
|
||||||
$database->execute("DELETE FROM pool_images WHERE pool_id = :pid", ["pid" => $poolID]);
|
$database->execute("DELETE FROM pool_images WHERE pool_id = :pid", ["pid" => $poolID]);
|
||||||
@ -911,9 +891,6 @@ class Pools extends Extension
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* HERE WE GET THE HISTORY LIST.
|
|
||||||
*/
|
|
||||||
private function get_history(int $pageNumber)
|
private function get_history(int $pageNumber)
|
||||||
{
|
{
|
||||||
global $config, $database;
|
global $config, $database;
|
||||||
@ -940,7 +917,7 @@ class Pools extends Extension
|
|||||||
LIMIT :l OFFSET :o
|
LIMIT :l OFFSET :o
|
||||||
", ["l" => $historiesPerPage, "o" => $pageNumber * $historiesPerPage]);
|
", ["l" => $historiesPerPage, "o" => $pageNumber * $historiesPerPage]);
|
||||||
|
|
||||||
$totalPages = (int)ceil($database->get_one("SELECT COUNT(*) FROM pool_history") / $historiesPerPage);
|
$totalPages = (int)ceil((int)$database->get_one("SELECT COUNT(*) FROM pool_history") / $historiesPerPage);
|
||||||
|
|
||||||
$this->theme->show_history($history, $pageNumber + 1, $totalPages);
|
$this->theme->show_history($history, $pageNumber + 1, $totalPages);
|
||||||
}
|
}
|
||||||
@ -999,7 +976,7 @@ class Pools extends Extension
|
|||||||
|
|
||||||
if (!$this->check_post($poolID, $imageID)) {
|
if (!$this->check_post($poolID, $imageID)) {
|
||||||
if ($config->get_bool(PoolsConfig::AUTO_INCREMENT_ORDER) && $imageOrder === 0) {
|
if ($config->get_bool(PoolsConfig::AUTO_INCREMENT_ORDER) && $imageOrder === 0) {
|
||||||
$imageOrder = $database->get_one(
|
$imageOrder = (int)$database->get_one(
|
||||||
"
|
"
|
||||||
SELECT COALESCE(MAX(image_order),0) + 1
|
SELECT COALESCE(MAX(image_order),0) + 1
|
||||||
FROM pool_images
|
FROM pool_images
|
||||||
@ -1028,7 +1005,6 @@ class Pools extends Extension
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function update_count($pool_id)
|
private function update_count($pool_id)
|
||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
|
@ -9,4 +9,77 @@ class PoolsTest extends ShimmiePHPUnitTestCase
|
|||||||
$this->get_page('pool/new');
|
$this->get_page('pool/new');
|
||||||
$this->assert_title("Error");
|
$this->assert_title("Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCreate()
|
||||||
|
{
|
||||||
|
global $user;
|
||||||
|
|
||||||
|
$this->log_in_as_user();
|
||||||
|
$image_id_1 = $this->post_image("tests/pbx_screenshot.jpg", "pbx");
|
||||||
|
$image_id_2 = $this->post_image("tests/bedroom_workshop.jpg", "pbx");
|
||||||
|
$this->assertNotNull($image_id_1);
|
||||||
|
$this->assertNotNull($image_id_2);
|
||||||
|
|
||||||
|
$this->get_page("pool/new");
|
||||||
|
|
||||||
|
$event = new PoolCreationEvent("foo", $user, true, "My pool description");
|
||||||
|
send_event($event);
|
||||||
|
$pool_id = $event->new_id;
|
||||||
|
|
||||||
|
send_event(new PoolAddPostsEvent($pool_id, [$image_id_1, $image_id_2]));
|
||||||
|
|
||||||
|
return [$pool_id, [$image_id_1, $image_id_2]];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @depends testCreate */
|
||||||
|
public function testOnViewImage($args)
|
||||||
|
{
|
||||||
|
[$pool_id, $image_ids] = $args;
|
||||||
|
|
||||||
|
global $config;
|
||||||
|
$config->set_bool(PoolsConfig::ADDER_ON_VIEW_IMAGE, true);
|
||||||
|
$config->set_bool(PoolsConfig::INFO_ON_VIEW_IMAGE, true);
|
||||||
|
|
||||||
|
$this->get_page("post/view/{$image_ids[0]}");
|
||||||
|
$this->assert_text("Pool");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @depends testCreate */
|
||||||
|
public function testSearch($args)
|
||||||
|
{
|
||||||
|
[$pool_id, $image_ids] = $args;
|
||||||
|
|
||||||
|
$this->get_page("post/list/pool=$pool_id/1");
|
||||||
|
$this->assert_text("Pool");
|
||||||
|
|
||||||
|
$this->get_page("post/list/pool_by_name=demo_pool/1");
|
||||||
|
$this->assert_text("Pool");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @depends testCreate */
|
||||||
|
public function testList($args)
|
||||||
|
{
|
||||||
|
[$pool_id, $image_ids] = $args;
|
||||||
|
|
||||||
|
$this->get_page("pool/list");
|
||||||
|
$this->assert_text("Pool");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @depends testCreate */
|
||||||
|
public function testView($args)
|
||||||
|
{
|
||||||
|
[$pool_id, $image_ids] = $args;
|
||||||
|
|
||||||
|
$this->get_page("pool/view/$pool_id");
|
||||||
|
$this->assert_text("Pool");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @depends testCreate */
|
||||||
|
public function testHitory($args)
|
||||||
|
{
|
||||||
|
[$pool_id, $image_ids] = $args;
|
||||||
|
|
||||||
|
$this->get_page("pool/updated/$pool_id");
|
||||||
|
$this->assert_text("Pool");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user