From be6afad731b965a75d9fe0b254ea72858a4deec4 Mon Sep 17 00:00:00 2001 From: plegall Date: Tue, 1 Dec 2015 12:08:10 +0100 Subject: fixes #377 use Ajax calls to refresh/delete album thumbnail --- include/ws_functions/pwg.categories.php | 92 +++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'include') diff --git a/include/ws_functions/pwg.categories.php b/include/ws_functions/pwg.categories.php index b2cfc2dd4..4fece14ec 100644 --- a/include/ws_functions/pwg.categories.php +++ b/include/ws_functions/pwg.categories.php @@ -661,6 +661,98 @@ UPDATE '. USER_CACHE_CATEGORIES_TABLE .' pwg_query($query); } +/** + * API method + * + * Deletes the album thumbnail. Only possible if + * $conf['allow_random_representative'] + * + * @param mixed[] $params + * @option int category_id + */ +function ws_categories_deleteRepresentative($params, &$service) +{ + global $conf; + + // does the category really exist? + $query = ' +SELECT COUNT(*) + FROM '. CATEGORIES_TABLE .' + WHERE id = '. $params['category_id'] .' +;'; + list($count) = pwg_db_fetch_row(pwg_query($query)); + if ($count == 0) + { + return new PwgError(404, 'category_id not found'); + } + + if (!$conf['allow_random_representative']) + { + return new PwgError(401, 'not permitted'); + } + + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = NULL + WHERE id = '.$params['category_id'].' +;'; + pwg_query($query); +} + +/** + * API method + * + * Find a new album thumbnail. + * + * @param mixed[] $params + * @option int category_id + */ +function ws_categories_refreshRepresentative($params, &$service) +{ + global $conf; + + // does the category really exist? + $query = ' +SELECT COUNT(*) + FROM '. CATEGORIES_TABLE .' + WHERE id = '. $params['category_id'] .' +;'; + list($count) = pwg_db_fetch_row(pwg_query($query)); + if ($count == 0) + { + return new PwgError(404, 'category_id not found'); + } + + $query = ' +SELECT + DISTINCT category_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id = '.$params['category_id'].' + LIMIT 1 +;'; + $result = pwg_query($query); + $has_images = pwg_db_num_rows($result) > 0 ? true : false; + + if (!$has_images) + { + return new PwgError(401, 'not permitted'); + } + + include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); + + set_random_representant(array($params['category_id'])); + + // return url of the new representative + $query = ' +SELECT * + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$params['category_id'].' +;'; + $category = pwg_db_fetch_assoc(pwg_query($query)); + + return get_category_representant_properties($category['representative_picture_id']); +} + /** * API method * Deletes a category -- cgit v1.2.3 From 2080897f3b87ac1c1653232491c8bba56ede60f7 Mon Sep 17 00:00:00 2001 From: plegall Date: Tue, 1 Dec 2015 13:53:57 +0100 Subject: faster SQL, by @mistic100 --- include/ws_functions/pwg.categories.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/ws_functions/pwg.categories.php b/include/ws_functions/pwg.categories.php index 4fece14ec..07e64c803 100644 --- a/include/ws_functions/pwg.categories.php +++ b/include/ws_functions/pwg.categories.php @@ -676,12 +676,12 @@ function ws_categories_deleteRepresentative($params, &$service) // does the category really exist? $query = ' -SELECT COUNT(*) +SELECT id FROM '. CATEGORIES_TABLE .' WHERE id = '. $params['category_id'] .' ;'; - list($count) = pwg_db_fetch_row(pwg_query($query)); - if ($count == 0) + $result = pwg_query($query); + if (pwg_db_num_rows($result) == 0) { return new PwgError(404, 'category_id not found'); } @@ -713,12 +713,12 @@ function ws_categories_refreshRepresentative($params, &$service) // does the category really exist? $query = ' -SELECT COUNT(*) +SELECT id FROM '. CATEGORIES_TABLE .' WHERE id = '. $params['category_id'] .' ;'; - list($count) = pwg_db_fetch_row(pwg_query($query)); - if ($count == 0) + $result = pwg_query($query); + if (pwg_db_num_rows($result) == 0) { return new PwgError(404, 'category_id not found'); } -- cgit v1.2.3