にへるつおるぐ | src | ブログ | コンタクト | 統計 | 御串 | 小束 | 裏ミク | つ痛 | 顔本 |

10年ぶりに部屋に入るとコウモリや猫の巣窟だった

Nucleus CMS

2009-03-31 21:51:59 JST-9 | akebia | Nucleus | コメント | トラックバック | 履歴

稼動中のNP_Revisionに、このパッチを適用する場合、手順を誤ると厄介な事になることがあります。説明をよく読んで、理解して、注意深く行って下さい。また、このパッチを当てたNP_Revisionで履歴が記録された後に、NP_Revisionをこのパッチを当てる前のものに戻すと厄介なことになることがあるので注意して下さい。

対応するNP_Revisionはバージョンが0.7のものです。

このパッチには、「NP_Revisionをfancy URLで動作させるパッチ」の内容も含まれています。

オリジナルのNP_Revisionは、あけび猫の環境では、何故か、記事の初版を指定して表示させると、記事中の「"」や「'」といった引用符が「\"」や「\'」という風にエスケープされて表示されていました。(この現象は、版を指定した時のみ起こり、版を指定せずに普通に表示させた場合には起こらないことに注意して下さい。)このパッチは、このような現象を解消するものです。この現象の原因は、記事の初版を投稿した時に、データベースのnucleus_plugin_revisionテーブルに、引用符等がエスケープされた状態の記事が記録されてしまうことです。したがって、この現象を解消するには、先ず、既にデータベースに記録されてしまったデータの引用符等のエスケープを解除してから、次に、NP_Revisionにパッチを当てて、次回の記事の投稿から、引用符等がエスケープされていない状態の記事のデータが記録されるようにしなければなりません。(データベースはそのままでNP_Revisionに別のパッチを当てて、記事が表示される時にエスケープを解除させるという手もありますが、今回はあえてデータベースのデータを修正してみることにします。)

NP_Revisionをインストールするのが初めての場合には、下記の7番の手順だけ行えば十分です。稼動中のNP_Revisionに、このパッチを適用する場合には1番の手順から始めて下さい。

  1. Nucleusを管理者以外アク禁にするか、NP_Revisionを「プラグインの管理」から削除して、データベースのnucleus_plugin_revisionテーブルの内容が勝手に更新されないようにします。
  2. 適当なmysqlクライアント(mysqlやphpMyAdmin等)を使ってデータベースにアクセスし、nucleus_plugin_revisionテーブルを観察して、前述した現象に当てはまることを確認します。それから、そのテーブルの初版のレコードの「rcomment」フィールドの内容がどれも「Initial revision」で始まっていることを確認します。それから、初版以外のレコードの「rcomment」フィールドの内容がどれも「Initial revision」で始まっていないことを確認します。これらの条件が満たせない場合、この手順を続けると履歴データが壊れることがあるので、ここで手順を止めて下さい。ちなみに、「Initial revision」の「revision」の「n」の次には何も存在しないか、半角スペースが必要です。
  3. データベースをバックアップします。できれば、データベースを停止させて、データベースファイルをそっくりそのままコピーするのが無難(mysqldumpやphpMyAdminを使ったバックアップは、かなり注意深くやらないと、バックアップファイルが文字化けしていたり、復元するファイルを取り違えたりしてデータを失いがちなので )ですが、たとえば、「mysqldump --default-character-set=binary -p nucleus nucleus_plugin_revision > a.sql」とやって、nucleus_plugin_revisionだけバックアップすることもできます。(nucleusは実際の環境でのデータベース名、a.sqlは実際に希望するバックアップ先のファイル名に変更して下さい。ホスト名やユーザ名を指定しないといけないこともあります。)バックアップファイルは、テキストエディタ等で観察して文字化けとかしていないか確認しておきます。
  4. NP_RevisionFixDBをインストールし、その編集画面より履歴データの修正処理を行います。ラジオボタンを「はい」にして、「オプションの保存」のボタンをクリックするとよいです。この処理は1回だけ行います。何度も行うと、たとえば、記事中に「\\\\」という部分があった場合に、その「\」の数がどんどん減っていったり、本来エスケープしたい引用符等のエスケープまで解除されてしまうことが考えられます。
  5. 再びmysqlクライアントでnucleus_plugin_revisionテーブルを観察し、データが期待通りに修正されているか確認します。データが期待通りに修正されている場合には次の手順に進みます。データがおかしくなっていた場合には、バックアップを復元してなんとかします。バックアップの復元は、たとえば、「mysql -p nucleus < a.sql」とします。
  6. NP_Revision.phpのバージョンが「0.7」と異なる場合やオリジナルのものと異なる場合には、オリジナルの「0.7」のものに戻します。
  7. NP_Revision.phpにNP_Revision.php.patchを当てます。当て方は、「NP_Revisionをfancy URLで動作させるパッチ」と同じです。ただし、NP_Revision.php.patchの内容が異なるので注意して下さい。パッチを当てた後のNP_Revisionのバージョンが「0.7-3」以上になっていることを確認して下さい。
  8. NP_Revisionを「プラグインの管理」から削除している場合には、NP_Revision(もちろん、パッチを当てたもの)をインストールし直し、動作確認をして、アク禁している場合には、それを解除して、完了です。

NP_RevisionFixDBの役割は、既に引用符等がエスケープされてしまった履歴がある場合の修正処理のみなので、修正処理が終わったら誤って使われることがないように削除しておくのが無難です。NP_Revisionを初めてインストールする場合や、履歴を破棄する場合等、履歴データが存在しない場合には、NP_RevisionFixDBは全く必要なく、NP_Revision.phpにパッチを当てるだけで十分です。

稼動中のNP_Revisionに、このパッチを適用する場合には、上の手順どおり、必ず、データベースの修正を完了してから行って下さい。この手順を間違えて、いきなりパッチを当てると、データベースに引用符等がエスケープされた記事やそうでない記事が混在してしまい、あわてて、元に戻すと余計にミックスされて、駄目押しに、NP_RevisionFixDBを意味無く実行させてしまったりして、最終的には、手動でちまちま修正しないといけない事態に陥ることが考えられます。

このパッチを当てたNP_Revisionで履歴が記録された後に、NP_Revisionをこのパッチを当てる前のものに戻すことが無いようにして下さい。戻してしまうと、再び引用符等がエスケープされた記事のデータが記録されるようになり、前述のミックスされた場合と同じような事になります。

更新履歴

v0.7-4 (2010-3-6)
Revision overview画面の差分表のスタイルを修正した。

MyMiniCity 人気ブログランキングへ

Comments

No comments yet

Add Comment

Trackback

このトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。


http://2hz.org/akebia/