Monthly Archives: July 2013

SQLite Integration 1.1 リリース

English version is available in SQLite Integration 1.1 released

SQLite Integrationをアップデートしました。FeedWordPressを使っていると、エラーメッセージが出る、という質問がフォーラムにあがっていたので、調べました。

原因はFeedWordPressがshutdown hookに関数を登録していて、スクリプトが実行を終了するとhookに登録されている関数が呼ばれるのですが、SQLite Integrationは、これにdestruct()を登録してあったのでした。簡単に言うと、ページの読み込みが終わったところで、データベースとの接続が切断されるということになっていました。これを修正してあります。

FeedWordPressのコードを読んでいて、テーブルにインデックスを付けたり外したりするところがあって、そうえば、DROP INDEXの構文がMySQLとSQLiteでは若干違いがあったはずと気づき、処理を見直すと、MySQL用のクエリがそのままSQLiteに渡っていました。これも修正を入れました。FeedWordPressの説明では、インデックスを追加することで高速化するみたいなことが書いてありますが、たぶん気のせいでしょう。

さらにFeedWordPressを読んでいると、LOCATE()関数を使っているのがわかってしまいました。ユーザ定義関数に追加して書き換えることにしました。

後の2つはどうでもいいのですが、最初のものは大切なので、利用している方はアップデートしておいてください。

SQLite Integration 1.1 released

Japanese version is available in SQLite Integration 1.1 リリース

I updated SQLite Integration. One of the users posted an error report to the support forum and I looked into it.

The cause was this: FeedWordPress plugin adds a function to shutdown hook, and when the script finishes executing, that function is called. SQLite Integration adds destruct() function to the same hook, which causes the database connection is terminated everytime a page is loaded. I fixed this problem.

While I was reading the codes of FeedWordPress plugin, I found this plugin create and drop index to a table. I came across an idea long forgotten that there is a difference about DROP INDEX query between MySQL and SQLite. Reviewing my plugin, I noticed the query for MySQL is not rewritten and passed as is to SQLite. I also fixed this procedure. The document of FeedWordPress says this index will make faster the behaviour of this plugin, but probably you’ll never have such an effect, I’m afraid.

Further reading of the codes showed me that this plugin uses LOCATE() function in the query, about which I added a user defined function.

The last two are rather minor problems. But the first is more important a matter, so I recommend you to update your plugin right away.

Breadcrumb NavXT 日本語カタログ(追記)

English version is not available.

作者のJohn Havlik氏から返事をもらい、GlotPressのアカウントを作ってもらいました。フォーラムで通知した日本語カタログはマージしてくれるとのことですので、すぐに何かを翻訳するということはないのですが、多少修正するかもしれません。

うまく訳せていないところがあったら、お知らせいただけると助かります。

Breadcrumb NavXT 日本語カタログ

English version is not available.

WordPress.org のプラグインディレクトリには、翻訳プロジェクトへのリンクがある。->Breadcrumb NavXT翻訳プロジェクト

ところが、このプロジェクトページ、ログインしようとすると、自動でアカウントを作ることができない。作者のJohn HavlikのContactページに誘導されるのだが、Gmail のアドレスと Google+、Skype と Twitter へのリンクしかない。Contact ページだから、Contactフォームってわけじゃないのね… 作者とお友達になりたいわけではなくて、日本語カタログを contribute したいだけなんだが、どうすればいいのだ? というのを聞く場所もない。

とりあえず、Gmail アドレスに日本語カタログを添付ファイルで送ってみたが、何の反応もない。翻訳するからGlotPressにログインできるようにしてくれ、と丁寧なメールを出したがこれもなしのつぶて。最終手段で、サポートフォーラムで、日本語カタログを作ったから次のリリースで同梱してくれ、と書いた。

ということで、日本語カタログだけここに置きます。->breadcrumb-navxt-ja.zip(4.4.0用)

Google XML Sitemaps(3.2.9)パッチ

English version is available in Google XML Sitemaps(3.2.9) patch

SQLite Integrationで使うには、内部で使われているmysql_query()などの関数を書き換える必要があります。

PDO for WordPress と Google Sitemaps Generator for WordPress(2010-05-23)に報告と対策があります。パッチがそのままではrejectさてれしまったので、作りなおしました。->google-sitemap-generator_3.2.9.patch

Google (XML) Sitemaps Generator for WordPress Betaバージョン(現在4.0b11)では、パッチが必要なくなっています。その他、マルチサイト対応、多言語対応がなされています。その他、ChangeLogを参照してください。

Betaバージョンでは、日本語カタログが不完全なので、暫定版を作りました。->google-sitemap-generator-beta-ja.zip

Google XML Sitemaps(3.2.9) patch

Japanese version is available in Google XML Sitemaps(3.2.9)パッチ

You’ve got to rewrite mysql_query() and some others in order to use it with SQLite Integration.

PDO for WordPress と Google Sitemaps Generator for WordPress(2010-05-23, written only in Japanese) reports workaround for PDO for SQLite plugin. But this patch is rejected for the newest version of Google XML Sitemap. I changed a little and newly created a patch file for SQLite Integration.->google-sitemap-generator_3.2.9.patch

Google (XML) Sitemaps Generator for WordPress Beta version (4.0b11 is the latest) works without patch file. And it doesn’t need static files and supports multisite installation and multilanguage. See the ChangeLog. I recommend this beta version.

Camera slideshow パッチ・国際化

English version is available in Camera slideshow patch for SQLite Integration

ここ1年近く更新がありません。開発者は別の仕事で忙しいようです…

有効化するときに、データベースエラーとPHP Noticeが出ます。MySQL でも SQLite でも同じように出ているのですが、MySQL では有効化完了するのに、SQLite では有効化が完了しません。また、MySQL 用の関数も存在していて、残念ならが、SQLite Integrationでは対応しきれないので、プラグイン本体を書き換えることにします。

アーカイブを展開してできたファイル群から、camera-slideshow/index.php と camera-slideshow/lib/camera_functions.php の2つのファイルを書き換えます。index.php については、

この mysql_get_server_info() 関数を使わず、SQLite Integration の関数を使うようにします。ここで使う db_version() は、常に「システム要件で必須のバージョン番号」を返すようになっています。

さて、次に、camera_functions.php の中にある、camera_add_option() 関数を修正します。

19行目以降をを下のように書き換えます。

これも上と同じ考え方です。mysql_query()関数も再定義できません。さらに問題は、mysql_query()はresourceを返すのに、$wpdb->query()は、成功の場合はデータの数、失敗の場合はfalseを返しますから、データが存在する場合は、ここでdie()が実行されてしまいます。mysql_error()関数を書き換えるだけではすまないので、後の判定で処理をすることにします。データがなければ0が返りますから、次の命令が実行されるようになります。

さらに、もうひとつ。

このグローバル変数は空なので、get_currentuserinfo()関数を付け加えます。

フォーラムPossible Bug With Pattern Overlayで報告されている修正を入れました。なお、このプラグインは英語でハードコーディングされているので、言語カタログが使えるように変えてあります。また、パッチと日本語カタログを同梱したアーカイブファイルを作りました。

camera-slideshow_1.3.4.3.patchはSQLite Integrationのダッシュボードからつかえます。アーカイブの中のlanguagesフォルダをWP_PLUGINDIR/camera-slideshow/の直下に置くと、日本語でドキュメントが読めます。MySQLでWordPressを使っている方には、こちらが役立つかもしれません。

Camera slideshow patch for SQLite Integration

Japanese version is available in Camera slideshow パッチ・国際化

When activated, database error is output in the PHP log file. MySQL or SQLite, the same message is seen. On MySQL we can finish activating, but on SQLite we can’t. And this plugin uses MySQL specific functions. So we’ve got to rewrite some codes to use it with SQLite Integration.

camera-slideshow/index.php and camera-slideshow/lib/camera_functions.php are our target files. First we rewrite index.php as follows:

We have no means to override PHP built-in functions like mysql_get_server_info() at least under standard server settings. We replace this function with $wpdb->db_version(), which returns the version number required by WordPress.

Next we rewrite camera_add_option() function in camera_functions.php whose definition is below.

I rewrote the line 19 and those that follow as follows:

This is the same as above, MySQL specific function. In this case, the return value of mysql_query() is not the same as $wpdb->query() and simple replacement is not enough. mysql_query() return resource when connection succeeds, false when connection fails, while $wpdb->query() returns the number of data (if there’s none, it returns 0), and false when error occurred. If the table exists and $wpdb->query() returns the number other than zero (more than one data is stored), this script execute die(). So I changed the if statement that follows.

And another change:

This global variable $current_user is empty, so I added get_currentuserinfo() function.

I also included the correction posted in the Forums Possible Bug With Pattern Overlay. This plugin is hard-coded in English language. I also made gettext work and pot file.

Patch file can be used in the dashboard of SQLite Integration. Languages folder in the archive must be placed in the folder WP_PLUGIN_DIR/camera-slideshow/. If you use WordPress with MySQL, this archive may help.