4 * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
5 * Copyright (C) 2002-2010 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-2010 The Nucleus Group
19 * $NucleusJP: upgrade.functions.php,v 1.10 2007/04/26 06:20:19 kimitake Exp $
22 /*************************************************************
23 * NOTE: With upgrade to 3.6, need to set this to use sql_* API *
24 **************************************************************/
26 include('../../config.php');
28 // sql_table function did not exists in nucleus <= 2.0
29 if (!function_exists('sql_table'))
31 function sql_table($name) {
32 return 'nucleus_' . $name;
36 //intGetVar did not exist in very early versions
37 if (!function_exists('intGetVar')) {
38 function intGetVar($name) {
40 return intval($_GET[$name]);
42 global $HTTP_GET_VARS;
43 return intval($HTTP_GET_VARS[$name]);
48 function upgrade_checkinstall($version) {
53 $query = 'SELECT bconvertbreaks FROM '.sql_table('blog').' LIMIT 1';
57 $query = 'SELECT cip FROM '.sql_table('comment').' LIMIT 1';
61 $query = 'SELECT mcookiekey FROM '.sql_table('member').' LIMIT 1';
65 $query = 'SELECT bnotifytype FROM '.sql_table('blog').' LIMIT 1';
69 $query = 'SELECT * FROM '.sql_table('plugin_option').' LIMIT 1';
73 $query = 'SELECT sdincpref FROM '.sql_table('skin_desc').' LIMIT 1';
78 $query = 'SELECT oid FROM '.sql_table('plugin_option_desc').' LIMIT 1';
83 $query = 'SELECT bincludesearch FROM ' . sql_table('blog') . ' LIMIT 1';
87 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 250 LIMIT 1';
91 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 300 LIMIT 1';
95 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 310 LIMIT 1';
99 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 320 LIMIT 1';
103 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 330 LIMIT 1';
107 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 331 LIMIT 1';
111 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 340 LIMIT 1';
115 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 350 LIMIT 1';
120 $res = mysql_query($query);
121 $installed = ($res != 0) && (mysql_num_rows($res) >= $minrows);
127 /** this function gets the nucleus version, even if the getNucleusVersion
128 * function does not exist yet
129 * return 96 for all versions < 100
131 function upgrade_getNucleusVersion() {
132 if (!function_exists('getNucleusVersion')) return 96;
133 return getNucleusVersion();
136 function upgrade_showLogin($type) {
139 <h1>まずはログインして下さい</h1>
140 <p>下記の情報を入力して下さい:</p>
142 <form method="post" action="<?php echo $type?>">
145 <li>名前: <input name="login" /></li>
146 <li>パスワード <input name="password" type="password" /></li>
150 <input name="action" value="login" type="hidden" />
151 <input type="submit" value="ログイン" />
155 <?php upgrade_foot();
159 function upgrade_head() {
161 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
162 <html xmlns="http://www.w3.org/1999/xhtml">
164 <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
165 <title>Nucleus アップグレード</title>
166 <?php if (file_exists("../styles/manual.css")) { ?>
167 <link rel="stylesheet" href="../styles/manual.css" type="text/css" />
169 <style type="text/css"><!--
182 function upgrade_foot() {
188 function upgrade_error($msg) {
199 <p><a href="index.php" onclick="history.back();">戻る</a></p>
206 function upgrade_start() {
207 global $upgrade_failures;
208 $upgrade_failures = 0;
216 function upgrade_end($msg = "") {
217 global $upgrade_failures;
218 $from = intGetVar('from');
219 if ($upgrade_failures > 0)
220 $msg = "いくつかのデータベース操作に失敗しました。もし以前にこのアップグレードスクリプトを実行していたのであれば、問題ないと思われます。";
227 <p><?php echo $msg?></p>
229 <p><a href="index.php?from=<?php echo $from; ?>">アップグレード最初のページ</a>にもどる</p>
237 * Tries to execute a query, gives a message when failed
239 * @param friendly name
242 function upgrade_query($friendly, $query) {
243 global $upgrade_failures;
245 echo "<li>$friendly ... ";
246 $res = mysql_query($query);
248 echo "<span style='color:red'>失敗</span>\n";
249 echo "<blockquote>失敗の理由: " . mysql_error() . " </blockquote>";
252 echo "<span style='color:green'>成功!</span><br />\n";
259 * Tries to update database version, gives a message when failed
262 * Schema version the database has been upgraded to
264 function update_version($version) {
265 global $upgrade_failures;
266 $message='Updating DatabaseVersion in config table to '.$version;
267 if(0==$upgrade_failures){
268 $query = 'UPDATE ' . sql_table('config') . ' set value=\''.$version.'\' where name=\'DatabaseVersion\'';
269 upgrade_query($message, $query);
271 echo '<li>'.$message.' ... <span class="warning">NOT EXECUTED</span>\n<blockquote>Errors occurred during upgrade process.</blockquote>';
276 * table to check (without prefix)
278 * array of column names included
280 function upgrade_checkIfIndexExists($table, $aColumns) {
281 // get info for indices from database
284 $query = 'show index from ' . sql_table($table);
285 $res = mysql_query($query);
286 while ($o = mysql_fetch_object($res)) {
287 if (!$aIndices[$o->Key_name]) {
288 $aIndices[$o->Key_name] = array();
290 array_push($aIndices[$o->Key_name], $o->Column_name);
293 // compare each index with parameter
294 foreach ($aIndices as $keyName => $aIndexColumns) {
295 $aDiff = array_diff($aIndexColumns, $aColumns);
296 if (count($aDiff) == 0) return 1;
304 * Checks to see if a given table exists
307 * Name of table to check for existance of
308 * Uses sql_table internally
309 * @return true if table exists, false otherwise.
311 function upgrade_checkIfTableExists($table){
312 $query = 'SHOW TABLES LIKE \''.sql_table($table).'\'';
313 $res = mysql_query($query);
314 return ($res != 0) && (mysql_num_rows($res) == 1);
318 * Checks to see if a given configuration value exists
321 * Config value to check for existance of.
322 * Paramater must be MySQL escaped
323 * @return true if configuration value exists, false otherwise.
325 function upgrade_checkIfCVExists($value){
326 $query = 'SELECT name from '.sql_table('config').' WHERE name = \''.$value.'\'';
327 $res = mysql_query($query);
328 return ($res != 0) && (mysql_num_rows($res) == 1);
332 * Checks to see if a given column exists
335 * Name of table to check for column in
336 * Uses sql_table internally
338 * Name of column to check for existance of
339 * @return true if column exists, false otherwise.
341 function upgrade_checkIfColumnExists($table, $col){
342 $query = 'DESC `'.sql_table($table).'` `'.$col.'`';
343 $res = mysql_query($query);
344 return ($res != 0) && (mysql_num_rows($res) == 1);