4 * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
5 * Copyright (C) 2002-2012 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)
13 * Some functions common to all upgrade scripts
16 /*************************************************************
17 * NOTE: With upgrade to 3.6, need to set this to use sql_* API *
18 **************************************************************/
20 include('../../config.php');
22 // sql_table function did not exists in nucleus <= 2.0
23 if (!function_exists('sql_table'))
25 function sql_table($name) {
26 return 'nucleus_' . $name;
30 //intGetVar did not exist in very early versions
31 if (!function_exists('intGetVar')) {
32 function intGetVar($name) {
34 return intval($_GET[$name]);
36 global $HTTP_GET_VARS;
37 return intval($HTTP_GET_VARS[$name]);
42 function upgrade_checkinstall($version) {
47 $query = 'SELECT bconvertbreaks FROM '.sql_table('blog').' LIMIT 1';
51 $query = 'SELECT cip FROM '.sql_table('comment').' LIMIT 1';
55 $query = 'SELECT mcookiekey FROM '.sql_table('member').' LIMIT 1';
59 $query = 'SELECT bnotifytype FROM '.sql_table('blog').' LIMIT 1';
63 $query = 'SELECT * FROM '.sql_table('plugin_option').' LIMIT 1';
67 $query = 'SELECT sdincpref FROM '.sql_table('skin_desc').' LIMIT 1';
72 $query = 'SELECT oid FROM '.sql_table('plugin_option_desc').' LIMIT 1';
77 $query = 'SELECT bincludesearch FROM ' . sql_table('blog') . ' LIMIT 1';
81 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 250 LIMIT 1';
85 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 300 LIMIT 1';
89 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 310 LIMIT 1';
93 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 320 LIMIT 1';
97 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 330 LIMIT 1';
101 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 331 LIMIT 1';
105 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 340 LIMIT 1';
109 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 350 LIMIT 1';
113 $query = 'SELECT * FROM '.sql_table('config').' WHERE name=\'DatabaseVersion\' and value >= 360 LIMIT 1';
118 $res = mysql_query($query);
119 $installed = ($res != 0) && (mysql_num_rows($res) >= $minrows);
125 /** this function gets the nucleus version, even if the getNucleusVersion
126 * function does not exist yet
127 * return 96 for all versions < 100
129 function upgrade_getNucleusVersion() {
130 if (!function_exists('getNucleusVersion')) return 96;
131 return getNucleusVersion();
134 function upgrade_showLogin($type) {
137 <h1>まずはログインして下さい</h1>
138 <p>下記の情報を入力して下さい:</p>
140 <form method="post" action="<?php echo $type?>">
143 <li>名前: <input name="login" /></li>
144 <li>パスワード <input name="password" type="password" /></li>
148 <input name="action" value="login" type="hidden" />
149 <input type="submit" value="ログイン" />
153 <?php upgrade_foot();
157 function upgrade_head() {
159 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
160 <html xmlns="http://www.w3.org/1999/xhtml">
162 <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
163 <title>Nucleus アップグレード</title>
164 <?php if (file_exists("../styles/manual.css")) { ?>
165 <link rel="stylesheet" href="../styles/manual.css" type="text/css" />
167 <style type="text/css"><!--
180 function upgrade_foot() {
186 function upgrade_error($msg) {
197 <p><a href="index.php" onclick="history.back();">戻る</a></p>
204 function upgrade_start() {
205 global $upgrade_failures;
206 $upgrade_failures = 0;
214 function upgrade_end($msg = "") {
215 global $upgrade_failures;
216 $from = intGetVar('from');
217 if ($upgrade_failures > 0)
218 $msg = "いくつかのデータベース操作に失敗しました。もし以前にこのアップグレードスクリプトを実行していたのであれば、問題ないと思われます。";
225 <p><?php echo $msg?></p>
227 <p><a href="index.php?from=<?php echo $from; ?>">アップグレード最初のページ</a>にもどる</p>
235 * Tries to execute a query, gives a message when failed
237 * @param friendly name
240 function upgrade_query($friendly, $query) {
241 global $upgrade_failures;
243 echo "<li>$friendly ... ";
244 $res = mysql_query($query);
246 echo "<span style='color:red'>失敗</span>\n";
247 echo "<blockquote>失敗の理由: " . mysql_error() . " </blockquote>";
250 echo "<span style='color:green'>成功!</span><br />\n";
257 * Tries to update database version, gives a message when failed
260 * Schema version the database has been upgraded to
262 function update_version($version) {
263 global $upgrade_failures;
264 $message='Updating DatabaseVersion in config table to '.$version;
265 if(0==$upgrade_failures){
266 $query = 'UPDATE ' . sql_table('config') . ' set value=\''.$version.'\' where name=\'DatabaseVersion\'';
267 upgrade_query($message, $query);
269 echo '<li>'.$message.' ... <span class="warning">NOT EXECUTED</span>\n<blockquote>Errors occurred during upgrade process.</blockquote>';
274 * table to check (without prefix)
276 * array of column names included
278 function upgrade_checkIfIndexExists($table, $aColumns) {
279 // get info for indices from database
282 $query = 'show index from ' . sql_table($table);
283 $res = mysql_query($query);
284 while ($o = mysql_fetch_object($res)) {
285 if (!$aIndices[$o->Key_name]) {
286 $aIndices[$o->Key_name] = array();
288 array_push($aIndices[$o->Key_name], $o->Column_name);
291 // compare each index with parameter
292 foreach ($aIndices as $keyName => $aIndexColumns) {
293 $aDiff = array_diff($aIndexColumns, $aColumns);
294 if (count($aDiff) == 0) return 1;
302 * Checks to see if a given table exists
305 * Name of table to check for existance of
306 * Uses sql_table internally
307 * @return true if table exists, false otherwise.
309 function upgrade_checkIfTableExists($table){
310 $query = 'SHOW TABLES LIKE \''.sql_table($table).'\'';
311 $res = mysql_query($query);
312 return ($res != 0) && (mysql_num_rows($res) == 1);
316 * Checks to see if a given configuration value exists
319 * Config value to check for existance of.
320 * Paramater must be MySQL escaped
321 * @return true if configuration value exists, false otherwise.
323 function upgrade_checkIfCVExists($value){
324 $query = 'SELECT name from '.sql_table('config').' WHERE name = \''.$value.'\'';
325 $res = mysql_query($query);
326 return ($res != 0) && (mysql_num_rows($res) == 1);
330 * Checks to see if a given column exists
333 * Name of table to check for column in
334 * Uses sql_table internally
336 * Name of column to check for existance of
337 * @return true if column exists, false otherwise.
339 function upgrade_checkIfColumnExists($table, $col){
340 $query = 'DESC `'.sql_table($table).'` `'.$col.'`';
341 $res = mysql_query($query);
342 return ($res != 0) && (mysql_num_rows($res) == 1);