diff options
Diffstat (limited to '')
-rw-r--r-- | install/db/19-database.php | 151 | ||||
-rw-r--r-- | install/phpwebgallery_structure.sql | 31 |
2 files changed, 176 insertions, 6 deletions
diff --git a/install/db/19-database.php b/install/db/19-database.php new file mode 100644 index 000000000..035aff95a --- /dev/null +++ b/install/db/19-database.php @@ -0,0 +1,151 @@ +<?php +// +-----------------------------------------------------------------------+ +// | PhpWebGallery - a PHP based picture gallery | +// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net | +// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net | +// +-----------------------------------------------------------------------+ +// | branch : BSF (Best So Far) +// | file : $RCSfile$ +// | last update : $Date: 2005-09-21 00:04:57 +0200 (mer, 21 sep 2005) $ +// | last modifier : $Author: plg $ +// | revision : $Revision: 870 $ +// +-----------------------------------------------------------------------+ +// | 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 = '#images.keywords moved to new table #tags'; + +// +-----------------------------------------------------------------------+ +// | New tables | +// +-----------------------------------------------------------------------+ + +$query = ' +CREATE TABLE '.PREFIX_TABLE.'tags ( + id smallint(5) UNSIGNED NOT NULL auto_increment, + name varchar(255) BINARY NOT NULL, + url_name varchar(255) BINARY NOT NULL, + PRIMARY KEY (id) +) TYPE=MyISAM +;'; +pwg_query($query); + +$query = ' +CREATE TABLE '.PREFIX_TABLE.'image_tag ( + image_id mediumint(8) UNSIGNED NOT NULL, + tag_id smallint(5) UNSIGNED NOT NULL, + PRIMARY KEY (image_id,tag_id) +) TYPE=MyISAM +;'; +pwg_query($query); + +// +-----------------------------------------------------------------------+ +// | Move keywords to tags | +// +-----------------------------------------------------------------------+ + +// each tag label is associated to a numeric identifier +$tag_id = array(); +// to each tag id (key) a list of image ids (value) is associated +$tag_images = array(); + +$current_id = 1; + +$query = ' +SELECT id, keywords + FROM '.PREFIX_TABLE.'images + WHERE keywords IS NOT NULL +;'; +$result = pwg_query($query); +while ($row = mysql_fetch_array($result)) +{ + foreach(preg_split('/[,]+/', $row['keywords']) as $keyword) + { + if (!isset($tag_id[$keyword])) + { + $tag_id[$keyword] = $current_id++; + } + + if (!isset($tag_images[ $tag_id[$keyword] ])) + { + $tag_images[ $tag_id[$keyword] ] = array(); + } + + array_push($tag_images[ $tag_id[$keyword] ], $row['id']); + } +} + +$datas = array(); +foreach ($tag_id as $tag_name => $tag_id) +{ + array_push( + $datas, + array( + 'id' => $tag_id, + 'name' => $tag_name, + 'url_name' => str2url($tag_name), + ) + ); +} +mass_inserts( + PREFIX_TABLE.'tags', + array_keys($datas[0]), + $datas + ); + +$datas = array(); +foreach ($tag_images as $tag_id => $images) +{ + foreach (array_unique($images) as $image_id) + { + array_push( + $datas, + array( + 'tag_id' => $tag_id, + 'image_id' => $image_id, + ) + ); + } +} + +mass_inserts( + PREFIX_TABLE.'image_tag', + array_keys($datas[0]), + $datas + ); + +// +-----------------------------------------------------------------------+ +// | Delete images.keywords | +// +-----------------------------------------------------------------------+ + +$query = ' +ALTER TABLE '.PREFIX_TABLE.'images DROP COLUMN keywords +;'; +pwg_query($query); + +// +-----------------------------------------------------------------------+ +// | End notification | +// +-----------------------------------------------------------------------+ + +echo +"\n" +.'Table '.PREFIX_TABLE.'tags created and filled'."\n" +.'Table '.PREFIX_TABLE.'image_tag created and filled'."\n" +.'Column '.PREFIX_TABLE.'images.keywords dropped'."\n" +; +?> diff --git a/install/phpwebgallery_structure.sql b/install/phpwebgallery_structure.sql index 4c682d738..db614f40d 100644 --- a/install/phpwebgallery_structure.sql +++ b/install/phpwebgallery_structure.sql @@ -1,5 +1,4 @@ -- MySQL dump 9.11 --- MySQL dump 9.11 -- -- Host: localhost Database: pwg-bsf -- ------------------------------------------------------ @@ -146,6 +145,17 @@ CREATE TABLE `phpwebgallery_image_category` ( ) TYPE=MyISAM; -- +-- Table structure for table `phpwebgallery_image_tag` +-- + +DROP TABLE IF EXISTS `phpwebgallery_image_tag`; +CREATE TABLE `phpwebgallery_image_tag` ( + `image_id` mediumint(8) unsigned NOT NULL default '0', + `tag_id` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`image_id`,`tag_id`) +) TYPE=MyISAM; + +-- -- Table structure for table `phpwebgallery_images` -- @@ -163,8 +173,6 @@ CREATE TABLE `phpwebgallery_images` ( `filesize` mediumint(9) unsigned default NULL, `width` smallint(9) unsigned default NULL, `height` smallint(9) unsigned default NULL, - `keywords` varchar(255) default NULL, - `storage_category_id` smallint(5) unsigned default NULL, `representative_ext` varchar(4) default NULL, `date_metadata_update` date default NULL, `average_rate` float(5,2) unsigned default NULL, @@ -172,7 +180,6 @@ CREATE TABLE `phpwebgallery_images` ( `path` varchar(255) NOT NULL default '', PRIMARY KEY (`id`), KEY `images_i2` (`date_available`), - KEY `images_i1` (`storage_category_id`), KEY `images_i3` (`average_rate`), KEY `images_i4` (`hit`), KEY `images_i5` (`date_creation`) @@ -229,6 +236,18 @@ CREATE TABLE `phpwebgallery_sites` ( ) TYPE=MyISAM; -- +-- Table structure for table `phpwebgallery_tags` +-- + +DROP TABLE IF EXISTS `phpwebgallery_tags`; +CREATE TABLE `phpwebgallery_tags` ( + `id` smallint(5) unsigned NOT NULL auto_increment, + `name` varchar(255) binary NOT NULL default '', + `url_name` varchar(255) binary NOT NULL default '', + PRIMARY KEY (`id`) +) TYPE=MyISAM; + +-- -- Table structure for table `phpwebgallery_upgrade` -- @@ -260,7 +279,7 @@ CREATE TABLE `phpwebgallery_user_cache` ( `user_id` smallint(5) NOT NULL default '0', `need_update` enum('true','false') NOT NULL default 'true', `forbidden_categories` text, - `nb_total_images` mediumint(8) unsigned, + `nb_total_images` mediumint(8) unsigned default NULL, PRIMARY KEY (`user_id`) ) TYPE=MyISAM; @@ -296,7 +315,7 @@ CREATE TABLE `phpwebgallery_user_infos` ( `user_id` smallint(5) NOT NULL default '0', `nb_image_line` tinyint(1) unsigned NOT NULL default '5', `nb_line_page` tinyint(3) unsigned NOT NULL default '3', - `status` enum('webmaster', 'admin', 'normal', 'generic', 'guest') NOT NULL default 'guest', + `status` enum('webmaster','admin','normal','generic','guest') NOT NULL default 'guest', `adviser` enum('true','false') NOT NULL default 'false', `language` varchar(50) NOT NULL default 'english', `maxwidth` smallint(6) default NULL, |