pukiwikiプラグイン/tbrcv の変更点

お名前:


#author("2017-08-25T06:28:54+09:00","-","-")
#author("2017-08-26T09:50:26+09:00","-","-")
表記、そんな感じのものを作ったので、一応公開しておきます。~

*プラグイン概要 [#b232839f]

pukiwiki に「トラックバックの受信」機能を追加するプラグインです。

導入に当たっては、プラグインのインストール以外にスキンの書き換えを推奨します。~


*インストール方法 [#g3b6a1b4]

+本ページに添付されている下記ファイルをダウンロードし、pukiwiki の pluginフォルダに「tbrcv.inc.php」の名前で保存してください。
--pukiwiki 1.4.x 系:&attachref(tbrcv.inc.php_0.21);
--pukiwiki 1.5.x 系:&attachref(tbrcv.inc.php_1.21);
---1.4.x 系/1.5.x 系の差は、htmlspecialchars()/htmlsc() の差です。
---参考:[[pukiwikiノウハウ/1.4系と1.5系の差]]
+tbrcv.inc.php 内の先頭部分にある設定値を、運用環境に応じて変更してください。~
設定の詳細については後述します。
+pukiwiki に新規にトラックバック用のフォルダを作成してください。~
--初期状態であれば、以下のような位置に trackback というフォルダを作成します。
 pukiwikiフォルダ
 +attach
 +backup
   :
 +skin
 +trackback  ←これ
---フォルダ指定は、tbrcv.inc.php の先頭部分で定義されています。
+スキンの書き換えを行うことを推奨します。
--以下の内容を、スキンの任意ヶ所に記載してください。~
その場所に「現在表示されているページへのトラックバック数」と、詳細表示ページへのリンクが挿入されます。
 <?php
 require_once PLUGIN_DIR.'tbrcv.inc.php';
 echo plugin_tbrcv_init();
 ?>
 <?php
 echo plugin_tbrcv_get_link($page)
 ?>
+plugin ディレクトリにある rename プラグインを編集します。~
plugin_rename_get_files() の最初のほうにプラグインディレクトリを参照している部分があります。そこに以下の記載を追加してください。
 if (exist_plugin_convert('tbrcv')) $dirs[] = TRACKBACKR_DATA_DIR;


*使い方 [#n39ff98c]

上記インストールをすることで、自動的にトラックバックの受信処理が始まります。

以下、追加されている機能について説明します。

**当該ページへのトラックバック状況の表示 [#bf2c4616]

上記手順4で実施したスキン書き換えの結果、画面内に以下のようなリンクが作られるようになります。
 TrackBack(1)

このカッコ内の数字が、外部のページからそのページに対して行われているトラックバックの件数です。
この表示はリンクになっており、クリックすると以下のような一覧表が表示されます。

|サイト名|ページ名|URL|
|友瀬のはてな出張所|2017-02-05|http://d.hatena.ne.jp/HarukaTomose/20170205|
|概要|>|	テストだよ。 うまく飛ぶかな。 http://tomose.dynalias.net/RO/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9AI http://tomose.dynalias.net/junk/index.php?%C6%FC%B5%AD%2F2017-02-06|


**当該サイト全体でのトラックバック一覧 [#l11c8e49]
tbrcv はブロックプラグインとしても動作します。~
以下のように記載することで、サイト全体に対するトラックバックの一覧を得ることができます。

 #tbrcv
以下のような表形式で表示されます。

|ページ名|変更時刻|
|Top Page.|2017/02/25 15:27|
|Pukiwiki 関連。|2017/02/21 06:38|

ページ名部分はリンクになっています。それを操作することで、前述の「当該ページへのトラックバック状況」のページに移動できます。

*プラグインファイル内の設定と動作の変化 [#u03b89ff]
**一方的トラックバックの拒否 [#i76d2ecf]
'TRACKBACKR_BAN_NOLINK' を '1' に設定することで、「トラックバックを受信したページURL」が記載されていないページからのトラックバックを拒否することができます。~
いわゆる一方的なトラックバックスパムを拒絶できる、ということです。

**管理者による「受入承認」 [#x7848601]
'TRACKBACKR_NEED_ADMIT' を '1' に設定することで、受信したトラックバックを「一時保留」するように動作が変更されます。~
「一時保留」されたトラックバック要求は、まるで「受信していない」かのように表示されます:
例えば前述の「Trackback(1)」というような件数にカウントされませんし、一覧にも表示されません。

この「一時保留」に対しては、管理者が、後述の管理操作や trackbackフォルダのファイルを編集することで「承認」することが必要になります。

**管理操作 [#abe90ba9]
'TRACKBACKR_ALLOW_EDIT' を '1' に設定することで、受信したトラックバックの「削除」と「承認」をpukiwiki 画面から操作できるようになります。~
この設定にすると、前述の「当該ページへのトラックバック状況」において「[Goto ManagePage.]」というリンクが表示されるようになります。そちらで編集可能です。

※注意~
管理操作による「承認」「削除」機能は、当該ページに対する「書き込み権限」のある人物が実施できます。~
wikiシステムの特性上、「広く編集を許可している」ページにおいては容易に「削除」「承認」が可能になるので、注意してください。それが問題になるようなサイトでは、管理操作を有効にしないほうがよいでしょう。




*技術的な話。 [#f4c4cf55]
**トラックバック受信の記録 [#f5b6b594]

受信したトラックバックは、trackback フォルダ内にテキストファイル形式で保存されています。~
ファイル名は、当該ページの名前をエンコードしたものです。

%%元となるページを rename したとしても、現状、トラックバック側のファイル名は変更していません。%%~
%%そのため、rename をすると元ページにつけられていたトラックバックは失われます。%%
インストール手順の 5(renameプラグインの書き換え)をすることで、ページのrename をされた場合にもそのページへの受信トラックバックのリストも「追従」するようになっています。~
ただしその場合「トラックバック送信してきた相手」からはリンク先がなくなっているように見えてしまうため、alias プラグインで旧名を新名に対する別名として定義するのがよいでしょう。


**受信データの記録形式 [#fa9373fb]
前述の通り、受信データはtrackback フォルダ内にテキストファイル形式で保存されています。~

テキスト1行につき、トラックバック1件。~
各行はカンマ区切りのデータになっており、1つめのデータが「承認/未承認」のフラグです(承認なら1)。~



#divregion(めんどくさい話。,h2)
**めんどくさい話。 [#e604ce60]
ややデリケートなので、折りたたみします。

pukiwiki 公式版には、トラックバックは一時期サポートされたものの、現状は機能削除されています。~
詳しくは公式サイトを調べてほしいですが、そうなされた理由はいわゆる「盗作問題」のようです:普通の商品のトラックバックの実装を盗用して pukiwiki に入れてしまっていた、という話。

今回友瀬が作成したこのプラグインは、上記の観点において「白」だと主張します。~
理由は以下です:もしこの範囲において、それでも「著作権上の盗用の恐れがある」というのであれば、具体的な理由を教えてほしいと思います。

-下記Trackbackの仕様に基づいて、各種処理を検討・実装しました。~
http://www.nurs.or.jp/~sug/mt-static/docs/mttrackback.html#autodiscovery_of_trackback_ping_urls
--上記以外に、いくつかのサイトで「rssモードは削除された」という情報があったため、それは削除しています。
-pukiwiki プラグインの記載方法については、下記プラグインを参考にしました。
--attachref, vote:ボタンを押すことで既存ページの情報を書き換えるようなふるまい
--amazon:http通信発信のふるまい。実際には pukiwikiが提供している http_request()を使用しています。
--rss : http通信受信のふるまい
-実際の動作仕様の確認、および通信の試験については、「はてなブログ」を利用しました:自アカウントのブログと相互に通信し、動作詳細をあわせています。
--あくまで外部動作仕様であり、内部ソース類を参照したわけではありません。

#enddivregion

*変更履歴 [#d0dd33a5]
-2017.Feb.27 Ver0.2
--トラックバックの一覧で「概要」を表示するように変更。
-2017.Feb.28 Ver0.21
--Ver0.2 でXSS問題があったので修正。

*コメント [#i3d10e26]
ご意見などがあれば。
#comment2(below)
お名前: