- feature 832: Folders with no images sql optimization

- recent pics are sorted by date descending, and only then by conf['order_by']
- updated prototype.js to version 1.6

git-svn-id: http://piwigo.org/svn/trunk@2424 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices 2008-07-05 22:13:28 +00:00
parent 154420540b
commit f9927090e0
4 changed files with 3819 additions and 2860 deletions

View file

@ -88,54 +88,60 @@ while ($row = mysql_fetch_assoc($result))
}
else if ($conf['allow_random_representative'])
{// searching a random representant among elements in sub-categories
$query = '
if ($row['count_images']>0)
{
$query = '
SELECT image_id
FROM '.CATEGORIES_TABLE.' AS c INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic
ON ic.category_id = c.id';
$query.= '
$query.= '
WHERE (c.id='.$row['id'].' OR uppercats LIKE \''.$row['uppercats'].',%\')'
.get_sql_condition_FandF
(
array
(
'forbidden_categories' => 'c.id',
'visible_categories' => 'c.id',
'visible_images' => 'image_id'
),
"\n AND"
).'
.get_sql_condition_FandF
(
array
(
'forbidden_categories' => 'c.id',
'visible_categories' => 'c.id',
'visible_images' => 'image_id'
),
"\n AND"
).'
ORDER BY RAND()
LIMIT 0,1
;';
$subresult = pwg_query($query);
if (mysql_num_rows($subresult) > 0)
{
list($image_id) = mysql_fetch_row($subresult);
$subresult = pwg_query($query);
if (mysql_num_rows($subresult) > 0)
{
list($image_id) = mysql_fetch_row($subresult);
}
}
}
else
{ // searching a random representant among representant of sub-categories
$query = '
SELECT representative_picture_id
FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
ON id = cat_id and user_id = '.$user['id'].'
WHERE uppercats LIKE \''.$row['uppercats'].',%\'
AND representative_picture_id IS NOT NULL'
.get_sql_condition_FandF
(
array
(
'visible_categories' => 'id',
),
"\n AND"
).'
ORDER BY RAND()
LIMIT 0,1
;';
$subresult = pwg_query($query);
if (mysql_num_rows($subresult) > 0)
if ($row['count_categories']>0 and $row['count_images']>0)
{
list($image_id) = mysql_fetch_row($subresult);
$query = '
SELECT representative_picture_id
FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
ON id = cat_id and user_id = '.$user['id'].'
WHERE uppercats LIKE \''.$row['uppercats'].',%\'
AND representative_picture_id IS NOT NULL'
.get_sql_condition_FandF
(
array
(
'visible_categories' => 'id',
),
"\n AND"
).'
ORDER BY RAND()
LIMIT 0,1
;';
$subresult = pwg_query($query);
if (mysql_num_rows($subresult) > 0)
{
list($image_id) = mysql_fetch_row($subresult);
}
}
}

View file

@ -394,6 +394,15 @@ SELECT image_id
// +-----------------------------------------------------------------------+
else if ($page['section'] == 'recent_pics')
{
if ( !isset($page['super_order_by']) )
{
$conf['order_by'] = str_replace(
'ORDER BY ',
'ORDER BY date_available DESC,',
$conf['order_by']
);
}
$query = '
SELECT DISTINCT(id)
FROM '.IMAGES_TABLE.'

6582
tools/prototype.js vendored

File diff suppressed because it is too large Load diff

View file

@ -153,7 +153,7 @@ function pwgSelectMethod(methodName)
function onSuccess_getMethodDetails(transport)
{
var result = pwgGetJsonResult(transport);
fillNewMethod( gCachedMethods[result.name] = $H(result) );
fillNewMethod( gCachedMethods[result.name] = result );
}
function fillNewMethod(method)