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';
108 $res = mysql_query($query);
109 $installed = ($res != 0) && (mysql_num_rows($res) >= $minrows);
115 /** this function gets the nucleus version, even if the getNucleusVersion
116 * function does not exist yet
117 * return 96 for all versions < 100
119 function upgrade_getNucleusVersion() {
120 if (!function_exists('getNucleusVersion')) return 96;
121 return getNucleusVersion();
124 function upgrade_showLogin($type) {
127 <h1>まずはログインして下さい</h1>
128 <p>下記の情報を入力して下さい:</p>
130 <form method="post" action="<?php echo $type?>">
133 <li>名前: <input name="login" /></li>
134 <li>パスワード <input name="password" type="password" /></li>
138 <input name="action" value="login" type="hidden" />
139 <input type="submit" value="ログイン" />
143 <?php upgrade_foot();
147 function upgrade_head() {
149 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
150 <html xmlns="http://www.w3.org/1999/xhtml">
152 <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
153 <title>Nucleus アップグレード</title>
154 <?php if (file_exists("../styles/manual.css")) { ?>
155 <link rel="stylesheet" href="../styles/manual.css" type="text/css" />
157 <style type="text/css"><!--
170 function upgrade_foot() {
176 function upgrade_error($msg) {
187 <p><a href="index.php" onclick="history.back();">戻る</a></p>
194 function upgrade_start() {
195 global $upgrade_failures;
196 $upgrade_failures = 0;
204 function upgrade_end($msg = "") {
205 global $upgrade_failures;
206 if ($upgrade_failures > 0)
207 $msg = "いくつかのデータベース操作に失敗しました。もし以前にこのアップグレードスクリプトを実行していたのであれば、問題ないと思われます。";
214 <p><?php echo $msg?></p>
216 <p><a href="index.php">アップグレード最初のページ</a>にもどる</p>
224 * Tries to execute a query, gives a message when failed
226 * @param friendly name
229 function upgrade_query($friendly, $query) {
230 global $upgrade_failures;
232 echo "<li>$friendly ... ";
233 $res = mysql_query($query);
235 echo "<span style='color:red'>失敗</span>\n";
236 echo "<blockquote>失敗の理由: " . mysql_error() . " </blockquote>";
239 echo "<span style='color:green'>成功!</span><br />\n";
246 * Tries to update database version, gives a message when failed
249 * Schema version the database has been upgraded to
251 function update_version($version) {
252 global $upgrade_failures;
253 $message='Updating DatabaseVersion in config table to '.$version;
254 if(0==$upgrade_failures){
255 $query = 'UPDATE ' . sql_table('config') . ' set value=\''.$version.'\' where name=\'DatabaseVersion\'';
256 upgrade_query($message, $query);
258 echo '<li>'.$message.' ... <span class="warning">NOT EXECUTED</span>\n<blockquote>Errors occurred during upgrade process.</blockquote>';
263 * table to check (without prefix)
265 * array of column names included
267 function upgrade_checkIfIndexExists($table, $aColumns) {
268 // get info for indices from database
271 $query = 'show index from ' . sql_table($table);
272 $res = mysql_query($query);
273 while ($o = mysql_fetch_object($res)) {
274 if (!$aIndices[$o->Key_name]) {
275 $aIndices[$o->Key_name] = array();
277 array_push($aIndices[$o->Key_name], $o->Column_name);
280 // compare each index with parameter
281 foreach ($aIndices as $keyName => $aIndexColumns) {
282 $aDiff = array_diff($aIndexColumns, $aColumns);
283 if (count($aDiff) == 0) return 1;
291 * Checks to see if a given table exists
294 * Name of table to check for existance of
295 * Uses sql_table internally
296 * @return true if table exists, false otherwise.
298 function upgrade_checkIfTableExists($table){
299 $query = 'SHOW TABLES LIKE \''.sql_table($table).'\'';
300 $res = mysql_query($query);
301 return ($res != 0) && (mysql_num_rows($res) == 1);
305 * Checks to see if a given configuration value exists
308 * Config value to check for existance of.
309 * Paramater must be MySQL escaped
310 * @return true if configuration value exists, false otherwise.
312 function upgrade_checkIfCVExists($value){
313 $query = 'SELECT name from '.sql_table('config').' WHERE name = \''.$value.'\'';
314 $res = mysql_query($query);
315 return ($res != 0) && (mysql_num_rows($res) == 1);
319 * Checks to see if a given column exists
322 * Name of table to check for column in
323 * Uses sql_table internally
325 * Name of column to check for existance of
326 * @return true if column exists, false otherwise.
328 function upgrade_checkIfColumnExists($table, $col){
329 $query = 'DESC `'.sql_table($table).'` `'.$col.'`';
330 $res = mysql_query($query);
331 return ($res != 0) && (mysql_num_rows($res) == 1);