aboutsummaryrefslogtreecommitdiffstats
path: root/install/db/108-database.php
diff options
context:
space:
mode:
authormistic100 <mistic@piwigo.org>2011-07-01 13:19:35 +0000
committermistic100 <mistic@piwigo.org>2011-07-01 13:19:35 +0000
commit9c0cfb008446eaa0f3fc3cffc71e5bebe5d02710 (patch)
tree51ca4ce3db4a304b134eaaafc4471564d20b8a0d /install/db/108-database.php
parentc97377ea8700519ef7cbad77269ec533ddcad287 (diff)
feature:2317 move order config to Admin->Config->Options
new GUI interface for simple paterns in GUI, order_by and order_by_inside_category are merged (not un DB) users can define special paterns with $conf['order_by_custom'] and $conf['order_by_inside_category_custom'] git-svn-id: http://piwigo.org/svn/trunk@11587 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'install/db/108-database.php')
-rw-r--r--install/db/108-database.php127
1 files changed, 127 insertions, 0 deletions
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