ここ1年近く更新がありません。開発者は別の仕事で忙しいようです…
有効化するときに、データベースエラーとPHP Noticeが出ます。MySQL でも SQLite でも同じように出ているのですが、MySQL では有効化完了するのに、SQLite では有効化が完了しません。また、MySQL 用の関数も存在していて、残念ならが、SQLite Integrationでは対応しきれないので、プラグイン本体を書き換えることにします。
アーカイブを展開してできたファイル群から、camera-slideshow/index.php と camera-slideshow/lib/camera_functions.php の2つのファイルを書き換えます。index.php については、
40 |
if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) { |
この mysql_get_server_info() 関数を使わず、SQLite Integration の関数を使うようにします。ここで使う db_version() は、常に「システム要件で必須のバージョン番号」を返すようになっています。
40 |
if ( version_compare($wpdb->db_version(), '4.1.0', '>=') ) { |
さて、次に、camera_functions.php の中にある、camera_add_option() 関数を修正します。
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function camera_add_option($name, $value) { global $wpdb; $wpdb->camera = $wpdb->prefix . 'camera'; $table_name = $wpdb->camera; $value = maybe_serialize( $value ); if( !$wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) ) { $wpdb->insert( $wpdb->camera, array('name'=>$name,'value'=>$value) ); } else { $query = "SELECT * FROM $wpdb->camera WHERE name='$name' "; $result = mysql_query($query) or die(mysql_error()); if ( !mysql_num_rows($result) ) { $wpdb->insert( $wpdb->camera, array('name'=>$name,'value'=>$value) ); } } } |
19行目以降をを下のように書き換えます。
19 20 21 22 23 24 |
$result = $wpdb->query($query); if ( $result === false ) { die($wpdb->dbh->get_error_message()); } elseif ( 0 == $result ) { $wpdb->insert( $wpdb->camera, array('name'=>$name,'value'=>$value) ); } |
これも上と同じ考え方です。mysql_query()関数も再定義できません。さらに問題は、mysql_query()はresourceを返すのに、$wpdb->query()は、成功の場合はデータの数、失敗の場合はfalseを返しますから、データが存在する場合は、ここでdie()が実行されてしまいます。mysql_error()関数を書き換えるだけではすまないので、後の判定で処理をすることにします。データがなければ0が返りますから、次の命令が実行されるようになります。
さらに、もうひとつ。
32 |
global $current_user; |
このグローバル変数は空なので、get_currentuserinfo()関数を付け加えます。
32 |
global $current_user; get_currentuserinfo(); |
フォーラムPossible Bug With Pattern Overlayで報告されている修正を入れました。なお、このプラグインは英語でハードコーディングされているので、言語カタログが使えるように変えてあります。また、パッチと日本語カタログを同梱したアーカイブファイルを作りました。
- バージョン1.3.4.3用パッチファイル
- パッチファイルとpotファイル(zipフォーマット)
- パッチファイルとpotファイルと日本語カタログファイル(zipフォーマット)
camera-slideshow_1.3.4.3.patchはSQLite Integrationのダッシュボードからつかえます。アーカイブの中のlanguagesフォルダをWP_PLUGINDIR/camera-slideshow/の直下に置くと、日本語でドキュメントが読めます。MySQLでWordPressを使っている方には、こちらが役立つかもしれません。