diff options
author | plegall <plg@piwigo.org> | 2011-01-20 13:32:34 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2011-01-20 13:32:34 +0000 |
commit | dfb0b9d1faa0603393ddbcb2831da52ba76ea3e9 (patch) | |
tree | f19283fe3294804165ae99681f94ffa85d2e7e71 /install | |
parent | d59827398d74626dc7525b337ade43e8a31d4e23 (diff) |
bug 937 fixed: makes sure a user won't see the thumbnail of a photo that has a
higher privacy level than user privacy level.
For an acceptable solution at performance level, I have implemented a cache:
for a given user, each album has a representative_picture_id. This cache also
avoids to perform numerous "order by rand()" SQL queries which is the case
when $conf['allow_random_representative'] = true;
git-svn-id: http://piwigo.org/svn/trunk@8802 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to '')
-rw-r--r-- | install/db/95-database.php | 53 | ||||
-rw-r--r-- | install/piwigo_structure-mysql.sql | 1 | ||||
-rw-r--r-- | install/piwigo_structure-pdo-sqlite.sql | 1 | ||||
-rw-r--r-- | install/piwigo_structure-pgsql.sql | 1 | ||||
-rw-r--r-- | install/piwigo_structure-sqlite.sql | 2 |
5 files changed, 58 insertions, 0 deletions
diff --git a/install/db/95-database.php b/install/db/95-database.php new file mode 100644 index 000000000..0507b6c0f --- /dev/null +++ b/install/db/95-database.php @@ -0,0 +1,53 @@ +<?php +// +-----------------------------------------------------------------------+ +// | Piwigo - a PHP based photo gallery | +// +-----------------------------------------------------------------------+ +// | Copyright(C) 2008-2011 Piwigo Team http://piwigo.org | +// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | +// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | +// +-----------------------------------------------------------------------+ +// | This program is free software; you can redistribute it and/or modify | +// | it under the terms of the GNU General Public License as published by | +// | the Free Software Foundation | +// | | +// | This program is distributed in the hope that it will be useful, but | +// | WITHOUT ANY WARRANTY; without even the implied warranty of | +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | +// | General Public License for more details. | +// | | +// | You should have received a copy of the GNU General Public License | +// | along with this program; if not, write to the Free Software | +// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | +// | USA. | +// +-----------------------------------------------------------------------+ + +if (!defined('PHPWG_ROOT_PATH')) +{ + die('Hacking attempt!'); +} + +$upgrade_description = 'New colum user_cache_categories.user_representative_picture_id'; + +// Add column +$query = 'ALTER TABLE '.USER_CACHE_CATEGORIES_TABLE.' ADD COLUMN '; + +if ('mysql' == $conf['dblayer']) +{ + $query.= ' `user_representative_picture_id` mediumint(8) unsigned default NULL'; +} + +if (in_array($conf['dblayer'], array('pgsql', 'sqlite', 'pdo-sqlite'))) +{ + $query.= ' "user_representative_picture_id" INTEGER'; +} + +$query.= ';'; + +pwg_query($query); + +echo +"\n" +. $upgrade_description +."\n" +; +?>
\ No newline at end of file diff --git a/install/piwigo_structure-mysql.sql b/install/piwigo_structure-mysql.sql index 39184daab..f9e01ddad 100644 --- a/install/piwigo_structure-mysql.sql +++ b/install/piwigo_structure-mysql.sql @@ -368,6 +368,7 @@ CREATE TABLE `piwigo_user_cache_categories` ( `nb_images` mediumint(8) unsigned NOT NULL default '0', `count_images` mediumint(8) unsigned default '0', `count_categories` mediumint(8) unsigned default '0', + `user_representative_picture_id` mediumint(8) unsigned default NULL, PRIMARY KEY (`user_id`,`cat_id`) ) TYPE=MyISAM; diff --git a/install/piwigo_structure-pdo-sqlite.sql b/install/piwigo_structure-pdo-sqlite.sql index c01f55892..a46c5929d 100644 --- a/install/piwigo_structure-pdo-sqlite.sql +++ b/install/piwigo_structure-pdo-sqlite.sql @@ -425,6 +425,7 @@ CREATE TABLE piwigo_user_cache_categories "nb_images" INTEGER default 0 NOT NULL, "count_images" INTEGER default 0, "count_categories" INTEGER default 0, + "user_representative_picture_id" INTEGER, PRIMARY KEY ("user_id","cat_id") ); diff --git a/install/piwigo_structure-pgsql.sql b/install/piwigo_structure-pgsql.sql index feab9acc3..ca1c003e0 100644 --- a/install/piwigo_structure-pgsql.sql +++ b/install/piwigo_structure-pgsql.sql @@ -514,6 +514,7 @@ CREATE TABLE "piwigo_user_cache_categories" "nb_images" INTEGER default 0 NOT NULL, "count_images" INTEGER default 0, "count_categories" INTEGER default 0, + "user_representative_picture_id" INTEGER, PRIMARY KEY ("user_id","cat_id") ); diff --git a/install/piwigo_structure-sqlite.sql b/install/piwigo_structure-sqlite.sql index 54e2f0d12..a46c5929d 100644 --- a/install/piwigo_structure-sqlite.sql +++ b/install/piwigo_structure-sqlite.sql @@ -425,6 +425,7 @@ CREATE TABLE piwigo_user_cache_categories "nb_images" INTEGER default 0 NOT NULL, "count_images" INTEGER default 0, "count_categories" INTEGER default 0, + "user_representative_picture_id" INTEGER, PRIMARY KEY ("user_id","cat_id") ); @@ -535,3 +536,4 @@ CREATE TABLE piwigo_comments CREATE INDEX "comments_i2" ON "piwigo_comments" ("validation_date"); CREATE INDEX "comments_i1" ON "piwigo_comments" ("image_id"); + |