4 * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
5 * Copyright (C) 2002-2009 The Nucleus Group
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 * (see nucleus/documentation/index.html#license for more info)
14 * Some functions common to all upgrade scripts
16 * @license http://nucleuscms.org/license.txt GNU General Public License
17 * @copyright Copyright (C) 2002-2009 The Nucleus Group
19 * $NucleusJP: upgrade.functions.php,v 1.10 2007/04/26 06:20:19 kimitake Exp $
22 include('../../config.php');
24 // sql_table function did not exists in nucleus <= 2.0
25 if (!function_exists('sql_table'))
27 function sql_table($name) {
28 return 'nucleus_' . $name;
32 //intGetVar did not exist in very early versions
33 if (!function_exists('intGetVar')) {
34 function intGetVar($name) {
36 return intval($_GET[$name]);
38 global $HTTP_GET_VARS;
39 return intval($HTTP_GET_VARS[$name]);
44 function upgrade_checkinstall($version) {
49 $query = 'SELECT bconvertbreaks FROM '.sql_table('blog').' LIMIT 1';
53 $query = 'SELECT cip FROM '.sql_table('comment').' LIMIT 1';
57 $query = 'SELECT mcookiekey FROM '.sql_table('member').' LIMIT 1';
61 $query = 'SELECT bnotifytype FROM '.sql_table('blog').' LIMIT 1';
65 $query = 'SELECT * FROM '.sql_table('plugin_option').' LIMIT 1';
69 $query = 'SELECT sdincpref FROM '.sql_table('skin_desc').' LIMIT 1';
74 $query = 'SELECT oid FROM '.sql_table('plugin_option_desc').' LIMIT 1';
79 $query = 'SELECT bincludesearch FROM ' . sql_table('blog') . ' LIMIT 1';
83 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 250 LIMIT 1';
87 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 300 LIMIT 1';
91 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 310 LIMIT 1';
95 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 320 LIMIT 1';
99 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 330 LIMIT 1';
103 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 331 LIMIT 1';
107 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 340 LIMIT 1';
112 $res = mysql_query($query);
113 $installed = ($res != 0) && (mysql_num_rows($res) >= $minrows);
119 /** this function gets the nucleus version, even if the getNucleusVersion
120 * function does not exist yet
121 * return 96 for all versions < 100
123 function upgrade_getNucleusVersion() {
124 if (!function_exists('getNucleusVersion')) return 96;
125 return getNucleusVersion();
128 function upgrade_showLogin($type) {
131 <h1>まずはログインして下さい</h1>
132 <p>下記の情報を入力して下さい:</p>
134 <form method="post" action="<?php echo $type?>">
137 <li>名前: <input name="login" /></li>
138 <li>パスワード <input name="password" type="password" /></li>
142 <input name="action" value="login" type="hidden" />
143 <input type="submit" value="ログイン" />
147 <?php upgrade_foot();
151 function upgrade_head() {
153 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
154 <html xmlns="http://www.w3.org/1999/xhtml">
156 <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
157 <title>Nucleus アップグレード</title>
158 <?php if (file_exists("../styles/manual.css")) { ?>
159 <link rel="stylesheet" href="../styles/manual.css" type="text/css" />
161 <style type="text/css"><!--
174 function upgrade_foot() {
180 function upgrade_error($msg) {
191 <p><a href="index.php" onclick="history.back();">戻る</a></p>
198 function upgrade_start() {
199 global $upgrade_failures;
200 $upgrade_failures = 0;
208 function upgrade_end($msg = "") {
209 global $upgrade_failures;
210 $from = intGetVar('from');
211 if ($upgrade_failures > 0)
212 $msg = "いくつかのデータベース操作に失敗しました。もし以前にこのアップグレードスクリプトを実行していたのであれば、問題ないと思われます。";
219 <p><?php echo $msg?></p>
221 <p><a href="index.php?from=<?php echo $from; ?>">アップグレード最初のページ</a>にもどる</p>
229 * Tries to execute a query, gives a message when failed
231 * @param friendly name
234 function upgrade_query($friendly, $query) {
235 global $upgrade_failures;
237 echo "<li>$friendly ... ";
238 $res = mysql_query($query);
240 echo "<span style='color:red'>失敗</span>\n";
241 echo "<blockquote>失敗の理由: " . mysql_error() . " </blockquote>";
244 echo "<span style='color:green'>成功!</span><br />\n";
251 * Tries to update database version, gives a message when failed
254 * Schema version the database has been upgraded to
256 function update_version($version) {
257 global $upgrade_failures;
258 $message='Updating DatabaseVersion in config table to '.$version;
259 if(0==$upgrade_failures){
260 $query = 'UPDATE ' . sql_table('config') . ' set value=\''.$version.'\' where name=\'DatabaseVersion\'';
261 upgrade_query($message, $query);
263 echo '<li>'.$message.' ... <span class="warning">NOT EXECUTED</span>\n<blockquote>Errors occurred during upgrade process.</blockquote>';
268 * table to check (without prefix)
270 * array of column names included
272 function upgrade_checkIfIndexExists($table, $aColumns) {
273 // get info for indices from database
276 $query = 'show index from ' . sql_table($table);
277 $res = mysql_query($query);
278 while ($o = mysql_fetch_object($res)) {
279 if (!$aIndices[$o->Key_name]) {
280 $aIndices[$o->Key_name] = array();
282 array_push($aIndices[$o->Key_name], $o->Column_name);
285 // compare each index with parameter
286 foreach ($aIndices as $keyName => $aIndexColumns) {
287 $aDiff = array_diff($aIndexColumns, $aColumns);
288 if (count($aDiff) == 0) return 1;
296 * Checks to see if a given table exists
299 * Name of table to check for existance of
300 * Uses sql_table internally
301 * @return true if table exists, false otherwise.
303 function upgrade_checkIfTableExists($table){
304 $query = 'SHOW TABLES LIKE \''.sql_table($table).'\'';
305 $res = mysql_query($query);
306 return ($res != 0) && (mysql_num_rows($res) == 1);
310 * Checks to see if a given configuration value exists
313 * Config value to check for existance of.
314 * Paramater must be MySQL escaped
315 * @return true if configuration value exists, false otherwise.
317 function upgrade_checkIfCVExists($value){
318 $query = 'SELECT name from '.sql_table('config').' WHERE name = \''.$value.'\'';
319 $res = mysql_query($query);
320 return ($res != 0) && (mysql_num_rows($res) == 1);
324 * Checks to see if a given column exists
327 * Name of table to check for column in
328 * Uses sql_table internally
330 * Name of column to check for existance of
331 * @return true if column exists, false otherwise.
333 function upgrade_checkIfColumnExists($table, $col){
334 $query = 'DESC `'.sql_table($table).'` `'.$col.'`';
335 $res = mysql_query($query);
336 return ($res != 0) && (mysql_num_rows($res) == 1);