From f95f48a226118dd541130e2cec8e18fd13bff128 Mon Sep 17 00:00:00 2001 From: rvelices Date: Fri, 25 Apr 2008 23:39:06 +0000 Subject: - merge r2308 and r2309 from trunk to branch-1_7 - minor mysql query optimizations - less mysql queries on the picture page (under some circumstances) git-svn-id: http://piwigo.org/svn/branches/branch-1_7@2310 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/functions.inc.php | 25 ++++++------------------- include/functions_tag.inc.php | 13 +++++++++++-- include/picture_rate.inc.php | 12 ++++++++++-- 3 files changed, 27 insertions(+), 23 deletions(-) (limited to 'include') diff --git a/include/functions.inc.php b/include/functions.inc.php index d1756a82f..9b8dea1a3 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -533,19 +533,6 @@ function pwg_log($image_id = null, $image_type = null) $tags_string = implode(',', $tag_ids); } - // here we ask the database the current date and time, and we extract - // {year, month, day} from the current date. We could do this during the - // insert query with a CURDATE(), CURTIME(), DATE_FORMAT(CURDATE(), '%Y') - // ... but I (plg) think it would cost more than a double query and a PHP - // extraction. - $query = ' -SELECT CURDATE(), CURTIME() -;'; - list($curdate, $curtime) = mysql_fetch_row(pwg_query($query)); - - list($curyear, $curmonth, $curday) = explode('-', $curdate); - list($curhour) = explode(':', $curtime); - $query = ' INSERT INTO '.HISTORY_TABLE.' ( @@ -565,12 +552,12 @@ INSERT INTO '.HISTORY_TABLE.' ) VALUES ( - \''.$curdate.'\', - \''.$curtime.'\', - '.$curyear.', - '.$curmonth.', - '.$curday.', - '.$curhour.', + CURDATE(), + CURTIME(), + YEAR( CURDATE() ), + MONTH( CURDATE() ), + DAYOFMONTH( CURDATE() ), + HOUR( CURTIME() ), '.$user['id'].', \''.$_SERVER['REMOTE_ADDR'].'\', '.(isset($page['section']) ? "'".$page['section']."'" : 'NULL').', diff --git a/include/functions_tag.inc.php b/include/functions_tag.inc.php index c6dc01db6..281517779 100644 --- a/include/functions_tag.inc.php +++ b/include/functions_tag.inc.php @@ -53,8 +53,12 @@ SELECT id, name, url_name, count(*) counter 'visible_categories' => 'category_id', 'visible_images' => 'image_id' ), - 'WHERE' - ); + ' + WHERE' + ).' + GROUP BY tag_id + ORDER BY NULL'; + $tag_counters = simple_hash_from_query($query, 'tag_id', 'counter'); if (!empty($where_tag_img)) { @@ -261,6 +265,11 @@ SELECT id, name, url_name, count(*) counter ORDER BY counter DESC LIMIT 0,'.$max_tags; } + else + { + $query .= ' + ORDER BY NULL'; + } $result = pwg_query($query); $tags = array(); diff --git a/include/picture_rate.inc.php b/include/picture_rate.inc.php index 331cb41b0..f2410945b 100644 --- a/include/picture_rate.inc.php +++ b/include/picture_rate.inc.php @@ -32,14 +32,22 @@ if ($conf['rate']) { - $query = ' + if ( NULL != $picture['current']['average_rate'] ) + { + $query = ' SELECT COUNT(rate) AS count , ROUND(AVG(rate),2) AS average , ROUND(STD(rate),2) AS STD FROM '.RATE_TABLE.' WHERE element_id = '.$picture['current']['id'].' ;'; - $row = mysql_fetch_array(pwg_query($query)); + $row = mysql_fetch_array(pwg_query($query)); + } + else + { // avg rate null -> no rate -> no need to query db + $row = array( 'count'=>0, 'average'=>NULL, 'std'=>NULL ); + } + if ($row['count'] == 0) { $value = l10n('no_rate'); -- cgit v1.2.3