OSDN Git Service

ADD:バージョン4.0へのアップグレードスクリプトを作成
authorreine <reine@users.sourceforge.jp>
Thu, 21 Jun 2012 15:43:44 +0000 (00:43 +0900)
committerreine <reine@users.sourceforge.jp>
Thu, 21 Jun 2012 15:43:44 +0000 (00:43 +0900)
nucleus/upgrades/upgrade4.0.php

index fcd3afb..76d2649 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2009 The Nucleus Group
+ * Copyright (C) 2002-2012 The Nucleus Group
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -11,7 +11,7 @@
  */
 /**
  * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2009 The Nucleus Group
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group
  * @version $Id: upgrade2.0.php 1388 2009-07-18 06:31:28Z shizuki $
  */
 
@@ -22,29 +22,88 @@ function upgrade_do400()
                return "already installed";
        }
        
-       /* config.Language to config.Locale  */
-       if ( !upgrade_checkIfColumnExists('config','Locale') )
+       // Give user warning if they are running old version of PHP
+       if ( phpversion() < '5' )
        {
-               $res = DB::getResult("SELECT * FROM " . sql_table('config') . " WHERE name='Language'");
-               foreach ( $res as $row )
+               echo 'WARNING: You are running NucleusCMS on a older version of PHP that is no longer supported by NucleusCMS. Please upgrade to PHP5!';
+       }
+       
+       /* config table */
+       /* change Language setting to Locale */
+       if ( upgrade_checkIfCVExists('Language') )
+       {
+               $language = DB::getValue("SELECT value FROM " . sql_table('config') . " WHERE name='Language'");
+               $locale = i18n::convert_old_language_file_name_to_locale($language);
+               if ( $locale )
                {
-                       $locale = $row['Language'];
+                       $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('Locale','{$locale}')";
+                       upgrade_query('Creating Locale config value', $query);
+                       
+                       $query = 'DELETE FROM ' . sql_table('config') . " WHERE name='Language'";
+                       upgrade_query("Removing Language config value", $query);
                }
-               $query = 'INSERT INTO ' . sql_table('config') . " (name, value) VALUES ('Locale', '{$locale}');";
-               upgrade_query("Renaming Language for configs to Locale", $query);
        }
        
-       if ( !upgrade_checkIfColumnExists('config','Language') )
+       /* change AdminCSS setting */
+       if ( upgrade_checkIfCVExists('AdminCSS') )
+       {
+               $query = 'UPDATE ' . sql_table('config') . " SET value='original' WHERE name='AdminCSS'";
+               upgrade_query('Changing AdminCSS config value', $query);
+       }
+       
+       /* create AdminSkin setting */
+       if ( !upgrade_checkIfCVExists('AdminSkin') )
        {
-               $query = "DELETE * FROM " . sql_table('config') . " WHERE name='Language'";
-               upgrade_query("Renaming Language for configs to Locale", $query);
+               $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('AdminSkin','0')";
+               upgrade_query('Creating AdminSkin config value', $query);
        }
        
-       /* member.deflang to member.mlocale   */
+       /* create BookmarkletSkin setting */
+       if ( !upgrade_checkIfCVExists('BookmarkletSkin') )
+       {
+               $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('BookmarkletSkin','0')";
+               upgrade_query('Creating BookmarkletSkin config value', $query);
+       }
+       
+       
+       /* member table */
+       /* changing the member table to rename deflang to mlocale */
        if ( !upgrade_checkIfColumnExists('member','mlocale') )
        {
-               $query =  'ALTER TABLE '.sql_table('member') . " CHANGE deflang mlocale varchar(10) NOT NULL default ''";
+               $query =  'ALTER TABLE '.sql_table('member') . " CHANGE deflang mlocale varchar(20) NOT NULL default '' AFTER mcookiekey";
                upgrade_query("Renaming deflang column for members to mlocale", $query);
        }
+       
+       /* changing the member table to add madminskin column */
+       if ( !upgrade_checkIfColumnExists('member','madminskin') )
+       {
+               $query =  'ALTER TABLE '.sql_table('member') . " ADD madminskin tinyint(2) NOT NULL default '0'";
+               upgrade_query("Adding a new row for the adminskin member option", $query);
+       }
+       
+       /* changing the member table to add mbkmklt column */
+               if ( !upgrade_checkIfColumnExists('member','mbkmklt') )
+       {
+               $query =  'ALTER TABLE '.sql_table('member') . " ADD mbkmklt tinyint(2) NOT NULL default '0'";
+               upgrade_query("Adding a new row for the bkmklt member option", $query);
+       }
+       
+       // all member default value set
+       $res = DB::getResult("SELECT * FROM " . sql_table('member'));
+       foreach ( $res as $row )
+       {
+               $locale = i18n::convert_old_language_file_name_to_locale($row['mlocale']);
+               if ( $locale )
+               {
+                       $query = 'UPDATE $s SET mlocale=$s WHERE mnumber=$d';
+                       $query = sprintf($query, sql_table('member'), DB::quoteValue($locale), $row['mnumber']);
+                       upgrade_query('Changing mlocale value', $query);
+               }
+       }
+       
+       // 3.6 -> 4.0
+       // update database version
+       update_version('400');
+       
 }