aboutsummaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
Diffstat (limited to 'install')
-rw-r--r--install/config.sql4
-rw-r--r--install/db/108-database.php127
2 files changed, 129 insertions, 2 deletions
diff --git a/install/config.sql b/install/config.sql
index 04d342e25..aeeacc085 100644
--- a/install/config.sql
+++ b/install/config.sql
@@ -52,8 +52,8 @@ INSERT INTO piwigo_config (param,value,comment)
);
INSERT INTO piwigo_config (param,value,comment) VALUES ('week_starts_on','monday','Monday may not be the first day of the week');
INSERT INTO piwigo_config (param,value,comment) VALUES ('updates_ignored','a:3:{s:7:"plugins";a:0:{}s:6:"themes";a:0:{}s:9:"languages";a:0:{}}','Extensions ignored for update');
-INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by',' ORDER BY date_available DESC, file ASC, id ASC','default photo order');
-INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by_inside_category',' ORDER BY date_available DESC, file ASC, id ASC','default photo order inside category');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by','ORDER BY date_available DESC, file ASC, id ASC','default photo order');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by_inside_category','ORDER BY date_available DESC, file ASC, id ASC','default photo order inside category');
INSERT INTO piwigo_config (param,value) VALUES ('upload_form_websize_resize','true');
INSERT INTO piwigo_config (param,value) VALUES ('upload_form_websize_maxwidth','800');
INSERT INTO piwigo_config (param,value) VALUES ('upload_form_websize_maxheight','600');
diff --git a/install/db/108-database.php b/install/db/108-database.php
new file mode 100644
index 000000000..b2f9aab48
--- /dev/null
+++ b/install/db/108-database.php
@@ -0,0 +1,127 @@
+<?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 = 'add order parameters to bdd #2';
+
+$order_regex = '#^(( *)(id|file|name|date_available|date_creation|hit|average_rate|comment|author|filesize|width|height|high_filesize|high_width|high_height|rank) (ASC|DESC),{1}){1,}$#';
+
+// local file is writable
+if ( is_writable($local_file = PHPWG_ROOT_PATH. 'local/config/config.inc.php') )
+{
+ $order_by = str_ireplace(
+ array('order by ', 'asc', 'desc'),
+ array(null, 'ASC', 'DESC'),
+ trim($conf['order_by_inside_category'])
+ );
+
+ // for a simple patern
+ if ( preg_match($order_regex, $order_by.',') )
+ {
+ $order_by = 'ORDER BY '.$order_by;
+ // update database
+ $query = '
+ UPDATE '.PREFIX_TABLE.'config
+ SET value = \''.preg_replace('# rank (ASC|DESC)(,?)#', null, $order_by).'\'
+ WHERE param = \'order_by\'
+ ;';
+ pwg_query($query);
+ $query = '
+ UPDATE '.PREFIX_TABLE.'config
+ SET value = \''.$order_by.'\'
+ WHERE param = \'order_by_inside_category\'
+ ';
+ pwg_query($query);
+
+ // update local file (delete lines)
+ $local_config = file($local_file);
+ $new_local_config = array();
+ foreach ($local_config as $line)
+ {
+ if (strpos($line, 'order_by') === false)
+ {
+ $new_local_config[] = $line;
+ }
+ }
+ var_dump($new_local_config);
+ file_put_contents(
+ $local_file,
+ implode("", $new_local_config)
+ );
+ }
+ // for a complex patern
+ else
+ {
+ // update database with default param
+ $query = '
+ UPDATE '.PREFIX_TABLE.'config
+ SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+ WHERE param = \'order_by\'
+ ;';
+ pwg_query($query);
+ $query = '
+ UPDATE '.PREFIX_TABLE.'config
+ SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+ WHERE param = \'order_by_inside_category\'
+ ';
+ pwg_query($query);
+
+ // update local file (rename lines)
+ $local_config = file_get_contents($local_file);
+ $new_local_config = str_replace(
+ array("['order_by']", "['order_by_inside_category']"),
+ array("['order_by_custom']", "['order_by_inside_category_custom']"),
+ $local_config
+ );
+ file_put_contents($local_file, $new_local_config);
+ }
+
+}
+// local file is locked
+else
+{
+ // update database with default param
+ $query = '
+ UPDATE '.PREFIX_TABLE.'config
+ SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+ WHERE param = \'order_by\'
+ ;';
+ pwg_query($query);
+ $query = '
+ UPDATE '.PREFIX_TABLE.'config
+ SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+ WHERE param = \'order_by_inside_category\'
+ ';
+ pwg_query($query);
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?> \ No newline at end of file