bug fixes and make compatible with WP Slimstat

git-svn-id: https://plugins.svn.wordpress.org/sqlite-integration/trunk@899667 b8457f37-d9ea-0310-8a92-e5e31aec5664
This commit is contained in:
kjmtsh 2014-04-21 19:39:09 +00:00
parent f6859effd2
commit 4c4d7022a9
7 changed files with 144 additions and 22 deletions

1
db.php
View File

@ -5,6 +5,7 @@
* This file must be placed in the directory wordpress/wp-content/db.php. * This file must be placed in the directory wordpress/wp-content/db.php.
* WordPress loads this file automatically. * WordPress loads this file automatically.
* *
* @version 1.6.1
* @package SQLite Integration * @package SQLite Integration
* @author Kojima Toshiyasu * @author Kojima Toshiyasu
* *

Binary file not shown.

View File

@ -1313,3 +1313,31 @@ msgstr "ヌル"
msgid "Default" msgid "Default"
msgstr "デフォルト" msgstr "デフォルト"
msgid ""
"Upgrading Notice: To finish upgrading, please activate SQLite Integration "
"and go Setting >> SQLite Integration >> Miscellaneous, and click the button "update" at"
" the bottom of the page. Or else replace wp-content/db.php with the one in sqlite-integration "
"directory manually."
msgstr ""
"注意: アップグレードを完了するには、SQLite Integration を有効化して、設定 >> SQLite Integration >> いろいろ "
"ページに移り、ページの最下段にある「更新」ボタンをクリックしてください。あるいは、wp-content/db.php を sqlite-integration "
"ディレクトリにある db.php で上書きしてください。"
msgid "Update db.php"
msgstr "db.php のアップデート"
msgid "Replace the old db.php with the new one."
msgstr "古い db.php を新しいファイルと入れ替えます。"
msgid "Update"
msgstr "更新"
msgid "Are you sure to update this file?\n\nClick [Cancel] to stop, [OK] to continue."
msgstr "このファイルを更新してもいいですか。\n\nやめるなら [Cancel] を、続けるなら [OK] をクリックしてください。"
msgid "Your db.php is updated."
msgstr "db.php がアップデートされました。"
msgid "Couldn"t update db.php file. Please replace it manually."
msgstr "db.php ファイルをアップデートできませんでした。手動で置き換えてください。"

View File

@ -161,6 +161,12 @@ query_posts() や WP_Query() を使うときに、オプションの一部が機
== Changelog == == Changelog ==
= 1.6.1 (2014-04-22) =
* WP Slimstat を使うために、いくつかのバグを修正しました。
* 古い db.php を使い続けている場合は、ダッシュボードに注意を表示するようにしました(必要な場合のみ)。
* 古い db.php を新しいものを置き換えるユーティリティを追加しました。
* 日本語カタログファイルをアップデートしました。
= 1.6 (2014-04-17) = = 1.6 (2014-04-17) =
* 未対応のクエリに対するエラーメッセージのコントロールができていないのを修正しました。 * 未対応のクエリに対するエラーメッセージのコントロールができていないのを修正しました。
* SQL_CALC_FOUND_ROW ステートメントのバグを修正しました。メインクエリと WP_Query、WP_Meta_Query などのページング情報に関連したものです。 * SQL_CALC_FOUND_ROW ステートメントのバグを修正しました。メインクエリと WP_Query、WP_Meta_Query などのページング情報に関連したものです。

View File

@ -7,7 +7,7 @@ Author: Kojima Toshiyasu
Author URI: http://dogwood.skr.jp/ Author URI: http://dogwood.skr.jp/
Requires at least: 3.3 Requires at least: 3.3
Tested up to: 3.9 Tested up to: 3.9
Stable tag: 1.6 Stable tag: 1.6.1
License: GPLv2 License: GPLv2
License URI: http://www.gnu.org/licenses/gpl-2.0.html License URI: http://www.gnu.org/licenses/gpl-2.0.html
@ -155,10 +155,16 @@ This plugin doesn't support 'WP_PLUGIN_URL' constant.
== Upgrade Notice == == Upgrade Notice ==
When query_posts() or WP_Query() is used, some options didn't work properly. When you post comments, the back quotes in the content was removed. These bugs and some minor ones are fixed. Documentations and doc strings are revised. WordPress 3.9 beta was tested. When auto upgrading fails, please try manual upgrade via FTP. When query_posts() or WP_Query() is used, some options didn't work properly. When you post comments, the back quotes in the content was removed. These bugs and some minor ones are fixed. Documentations and doc strings are revised. WordPress 3.9 was tested. When auto upgrading fails, please try manual upgrade via FTP.
== Changelog == == Changelog ==
= 1.6.1 (2014-04-22) =
* Fixed some bugs for using with WP Slimstat plugin.
* Display admin notice when not replacing the old db.php with the new one (when necessary).
* Add the feature for replacing the old db.php file with the button click.
* Fixed the Japanese translation catalog file.
= 1.6 (2014-04-17) = = 1.6 (2014-04-17) =
* Fixed the bug of error messaging control for the unknown query. * Fixed the bug of error messaging control for the unknown query.
* Fixed the bug for 'SQL_CALC_FOUND_ROW' statement. This is for the main query, WP_Query class and WP_Meta_Query concerning paging information. * Fixed the bug for 'SQL_CALC_FOUND_ROW' statement. This is for the main query, WP_Query class and WP_Meta_Query concerning paging information.

View File

@ -4,14 +4,14 @@ Plugin Name: SQLite Integration
Plugin URI: http://dogwood.skr.jp/wordpress/sqlite-integration/ Plugin URI: http://dogwood.skr.jp/wordpress/sqlite-integration/
Description: SQLite Integration is the plugin that enables WordPress to use SQLite. If you don't have MySQL and want to build a WordPress website, it's for you. Description: SQLite Integration is the plugin that enables WordPress to use SQLite. If you don't have MySQL and want to build a WordPress website, it's for you.
Author: Kojima Toshiyasu Author: Kojima Toshiyasu
Version: 1.6 Version: 1.6.1
Author URI: http://dogwood.skr.jp Author URI: http://dogwood.skr.jp
Text Domain: sqlite-integration Text Domain: sqlite-integration
Domain Path: /languages Domain Path: /languages
License: GPL2 or later License: GPL2 or later
*/ */
/* Copyright 2013 Kojima Toshiyasu (email: kjm@dogwood.skr.jp) /* Copyright 2013-2014 Kojima Toshiyasu (email: kjm@dogwood.skr.jp)
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation. published by the Free Software Foundation.
@ -44,6 +44,7 @@ $siteurl = get_option('siteurl');
/* /*
* Defines basic constants. * Defines basic constants.
*/ */
define('SQLITE_INTEGRATION_VERSION', '1.6.1');
define('SQLiteDir', dirname(plugin_basename(__FILE__))); define('SQLiteDir', dirname(plugin_basename(__FILE__)));
define('SQLiteFilePath', dirname(__FILE__)); define('SQLiteFilePath', dirname(__FILE__));
define('SQLiteDirName', basename(SQLiteFilePath)); define('SQLiteDirName', basename(SQLiteFilePath));
@ -114,8 +115,10 @@ class SQLiteIntegration {
} }
if (function_exists('is_multisite') && is_multisite()) { if (function_exists('is_multisite') && is_multisite()) {
add_action('network_admin_menu', array($this, 'add_network_pages')); add_action('network_admin_menu', array($this, 'add_network_pages'));
add_action('network_admin_notices', array('SQLiteIntegrationUtils', 'show_admin_notice'));
} else { } else {
add_action('admin_menu', array($this, 'add_pages')); add_action('admin_menu', array($this, 'add_pages'));
add_action('admin_notices', array('SQLiteIntegrationUtils', 'show_admin_notice'));
} }
// See the docstring for download_backup_db() in utilities/utility.php // See the docstring for download_backup_db() in utilities/utility.php
// We need this registration process. // We need this registration process.

View File

@ -25,6 +25,37 @@ class SQLiteIntegrationUtils {
function __construct() { function __construct() {
} }
/**
* Method to display update notice on the admin dashboard.
*
* Check if db.php file is replaced with the apropriate version,
* and if not, display notice.
*
*
*/
public static function show_admin_notice() {
$notice_string = __('Upgrading Notice: To finish upgrading, please activate SQLite Integration and go Setting >> SQLite Integration >> Miscellaneous, and click the button "update" at the bottom of the page. Or else replace wp-content/db.php with the one in sqlite-integration directory manually.', 'sqlite-integration');
$current_version = defined('SQLITE_INTEGRATION_VERSION') ? SQLITE_INTEGRATION_VERSION : '';
if (version_compare($current_version, '1.6.1', '=')) return;
$version = '';
if (defined('WP_CONTENT_DIR')) {
$path = WP_CONTENT_DIR . '/db.php';
} else {
$path = ABSPATH . 'wp-content/db.php';
}
if (!$file_handle = @fopen($path, 'r')) return;
while (($buffer = fgets($file_handle)) !== false) {
if (stripos($buffer, '@version') !== false) {
$version = str_ireplace('*@version ', '', $buffer);
$version = trim($version);
break;
}
}
fclose($file_handle);
if (empty($version) || version_compare($version, $current_version, '<')) {
echo '<div class="updated sqlite-notice" style="padding:10px;line-height:150%;font-size:12px"><span>'.$notice_string.'</span></div>';
}
}
/** /**
* Method to read a error log file and returns its contents. * Method to read a error log file and returns its contents.
* *
@ -176,7 +207,7 @@ class SQLiteIntegrationUtils {
* *
* If this file is not existent, shows message and returns false. * If this file is not existent, shows message and returns false.
* *
* @return string|boolean * @return string
* @access private * @access private
*/ */
private function show_db_php() { private function show_db_php() {
@ -188,14 +219,14 @@ class SQLiteIntegrationUtils {
if (file_exists($file)) { if (file_exists($file)) {
if (is_readable($file)) { if (is_readable($file)) {
$contents = file_get_contents($file); $contents = file_get_contents($file);
echo $contents; return $contents;
} else { } else {
echo 'file is not readable'; $contents = 'file is not readable';
} }
} else { } else {
echo 'file doesn\'t exist'; $contents = 'file doesn\'t exist';
return false;
} }
return $contents;
} }
/** /**
* Method to get the textarea content and write it to db.php file. * Method to get the textarea content and write it to db.php file.
@ -224,6 +255,37 @@ class SQLiteIntegrationUtils {
fclose($fh); fclose($fh);
return true; return true;
} }
/**
* Method to replace the old db.php with the new one.
*
* @return boolean
* @access private
*/
private function update_db_file() {
$new_file = PDODIR . 'db.php';
if (file_exists($new_file) && is_readable($new_file)) {
$contents = file_get_contents($new_file);
} else {
return false;
}
if (defined('WP_CONTENT_DIR')) {
$path = WP_CONTENT_DIR . '/db.php';
} else {
$path = ABSPATH . 'wp-content/db.php';
}
if (($handle = @fopen($path, 'w+')) && flock($handle, LOCK_EX)) {
if (fwrite($handle, $contents) == false) {
flock($handle, LOCK_UN);
fclose($handle);
return false;
}
flock($handle, LOCK_UN);
fclose($handle);
} else {
return false;
}
return true;
}
/** /**
* Method to optimize SQLite database. * Method to optimize SQLite database.
* *
@ -863,6 +925,19 @@ class SQLiteIntegrationUtils {
echo '<div id="message" class="updated fade">' . $message . '</div>'; echo '<div id="message" class="updated fade">' . $message . '</div>';
} }
} }
if (isset($_POST['sqliteintegration_update_db_file'])) {
check_admin_referer('sqliteintegration-db-update-stats');
$result = $this->update_db_file();
if ($result === false) {
$message = __('Couldn&quot;t update db.php file. Please replace it manually.', $domain);
echo '<div id="message" class="updated fade">'.$message.'</div>';
} else {
echo
'<script type="text/javascript">(function() {jQuery(".sqlite-notice").addClass("hidden");})(jQuery);</script>';
$message = __('Your db.php is updated.', $domain);
echo '<div id="message" class="updated fade">'.$message.'</div>';
}
}
if (isset($_GET['page']) && $_GET['page'] == 'setting-file') :?> if (isset($_GET['page']) && $_GET['page'] == 'setting-file') :?>
<div class="navigation"> <div class="navigation">
<ul class="navi-menu"> <ul class="navi-menu">
@ -937,22 +1012,18 @@ class SQLiteIntegrationUtils {
wp_nonce_field('sqlitewordpress-log-reset-stats'); wp_nonce_field('sqlitewordpress-log-reset-stats');
} }
?> ?>
<textarea name="errorlog" id="errorlog" cols="70" rows="10"> <?php $ret_val = $this->show_error_log();
<?php $ret_val = $this->show_error_log();
if ($ret_val === false || empty($ret_val)) { if ($ret_val === false || empty($ret_val)) {
$message = __('No error messages are found', $domain); $ret_val = __('No error messages are found', $domain);
echo $message;
} else {
echo $ret_val;
} }
?> ?>
</textarea> <textarea name="errorlog" id="errorlog" cols="70" rows="10"><?php echo $ret_val;?></textarea>
<p> <p>
<input type="submit" name="sqlitewordpress_log_reset" value="<?php _e('Clear Log', $domain)?>" onclick="return confirm('<?php _e('Are you sure to clear Log?\n\nClick [Cancel] to stop, [OK] to continue.', $domain);?>')" class="button-primary"> <input type="submit" name="sqlitewordpress_log_reset" value="<?php _e('Clear Log', $domain)?>" onclick="return confirm('<?php _e('Are you sure to clear Log?\n\nClick [Cancel] to stop, [OK] to continue.', $domain);?>')" class="button-primary">
</p> </p>
</form> </form>
<?php if (!(defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT) || !(defined('DISALLOW_FILE_DODS') && DISALLOW_FILE_MODS)) : ?> <?php if (!(defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT) || !(defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS)) : ?>
<?php echo '<h3>';?> <?php echo '<h3>';?>
<?php _e('Edit Initial File (wp-content/db.php)', $domain)?> <?php _e('Edit Initial File (wp-content/db.php)', $domain)?>
<?php echo '</h3><p>'; ?> <?php echo '</h3><p>'; ?>
@ -962,13 +1033,20 @@ class SQLiteIntegrationUtils {
<?php if (function_exists('wp_nonce_field')) { <?php if (function_exists('wp_nonce_field')) {
wp_nonce_field('sqlitewordpress-db-save-stats'); wp_nonce_field('sqlitewordpress-db-save-stats');
}?> }?>
<?php echo '<textarea name="dbfile" id="dbfile" cols="70" rows="10">'; ?> <?php $db_contents = $this->show_db_php();?>
<?php $this->show_db_php();?> <?php echo '<textarea name="dbfile" id="dbfile" cols="70" rows="10">'.$db_contents.'</textarea><p>'; ?>
<?php echo '</textarea><p>'; ?> <?php printf('<input type="submit" name="sqlitewordpress_db_save" value="%s" onclick="return confirm(\'%s\')" class="button-primary">', __('Save', $domain), __('Are you sure to save this file?\n\nClick [Cancel] to stop, [OK] to continue.', $domain)); ?>
<?php sprintf('<input type="submit" name="sqlitewordpress_db_save" value="%s" onclick="return confirm(\'%s\')" class="button-primary">', __('Save', $domain), __('Are you sure to save this file?\n\nClick [Cancel] to stop, [OK] to continue.', $domain)); ?>
<?php echo '</p></form>'; ?> <?php echo '</p></form>'; ?>
<?php endif;?> <?php endif;?>
<h3><?php __('Update db.php', $domain);?></h3>
<p><?php __('Replace the old db.php with the new one.', $domain);?></p>
<form action="" method="post">
<?php if (function_exists('wp_nonce_field')) {
wp_nonce_field('sqliteintegration-db-update-stats');
}
?>
<p><?php printf('<input type="submit" name="sqliteintegration_update_db_file" value="%s" onclick="return confirm(\'%s\')" class="button-primary">', __('Update', $domain), __('Are you sure to update this file?\n\nClick [Cancel] to stop, [OK] to continue.', $domain));?></p>
</form>
</div> </div>
<?php endif; <?php endif;
} }