<?php
// PukiWiki - Yet another WikiWikiWeb clone.
-// $Id: amazon.inc.php,v 1.14 2005/02/12 03:04:06 henoheno Exp $
-// Id: amazon.inc.php,v 1.1 2003/07/24 13:00:00 ´×¼Ë
+// amazon.inc.php
//
// Amazon plugin: Book-review maker via amazon.com/amazon.jp
//
// Copyright:
-// 2004 PukiWiki Developer Team
-// 2003 ´×¼Ë <raku@rakunet.org> (Original author)
+// 2004-2016 PukiWiki Development Team
+// 2003 閑舎 <raku@rakunet.org> (Original author)
//
// License: GNU/GPL
//
// ChangeLog:
-// * 2004/04/03 PukiWiki Developer Team (arino <arino@users.sourceforge.jp>)
+// * 2004/04/03 PukiWiki Developer Team (arino <arino@users.osdn.me>)
// - replace plugin_amazon_get_page().
// - PLUGIN_AMAZON_XML 'xml.amazon.com' -> 'xml.amazon.co.jp'
-// * 0.6 URL ¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢No image ¤òɽ¼¨¡¢²èÁüÇÛÃ֤ʤɽ¤Àµ¡£
-// ¥¤¥ó¥é¥¤¥ó¥×¥é¥°¥¤¥ó¤Î¸Æ¤Ó½Ð¤·Êý¤ò½¤Àµ¡£
-// ASIN ÈÖ¹æÉôʬ¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
-// ²èÁü¡¢¥¿¥¤¥È¥ë¤Î¥¥ã¥Ã¥·¥å¤Ë¤è¤ë®ÅÙ¤ÎÂçÉý¥¢¥Ã¥×¡£
-// * 0.7 ¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼À¸À®¤Î¥Ç¥Ð¥Ã¥°¡¢Ç§¾ÚÌäÂê¤Î°ì±þ¤Î¥¯¥ê¥¢¡£
-// * 0.8 amazon Á´¾¦ÉʤβèÁü¤òɽ¼¨¡£
-// ¥¢¥½¥·¥¨¥¤¥È ID ¤ËÂбþ¡£
-// * 0.9 RedHat9+php4.3.2+apache2.0.46 ¤Ç²èÁü¤¬ÅÓÃæ¤Þ¤Ç¤·¤«Æɤ߹þ¤Þ¤ì¤Ê¤¤ÌäÂê¤ËÂн衣
-// ÆüËܸì¥Ú¡¼¥¸¤Î²¼¤Ë¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼¤òºî¤í¤¦¤È¤¹¤ë¤Èʸ»ú²½¤±¤·¤Æºî¤ì¤Ê¤¤ÌäÂê¤Î²ò·è¡£
-// ½ñÀҤǤʤ¯ CD ¤Ê¤É¡¢ASIN Éôʬ¤¬Ä¹¤¯¤Æ¤â¥¿¥¤¥È¥ë¤ò¤¦¤Þ¤¯½¦¤¦¤è¤¦¤Ë¤¹¤ë¡£
-// ¼Ì±Æ¤Î¤ß¼è¤ê¹þ¤à¤Î¤Ç¤Ê¤±¤ì¤Ð¡¢B000002G6J.01 ¤È½ñ¤«¤º B000002G6J ¤È½ñ¤¤¤Æ¤â¼Ì±Æ¤¬½Ð¤ë¤è¤¦¤Ë¤¹¤ë¡£
-// ASIN ¤ËÂбþ¤¹¤ë¥¥ã¥Ã¥·¥å²èÁü/¥¥ã¥Ã¥·¥å¥¿¥¤¥È¥ë¤ò¤½¤ì¤¾¤ìºï½ü¤¹¤ëµ¡Ç½Äɲá£
-// proxy Âбþ(»î¸³Åª)¡£
-// proxy ¼ÂÁõ¤Î²áÄø¤Ç°ìÈ̥桼¥¶¤Î¤¿¤á¤Î AID ¤Ï¤Ê¤¯¤È¤â¼«Æ°À¸À®¤µ¤ì¤ë¤³¤È¤¬¤ï¤«¤ê¡¢ºï½ü¤·¤¿¡£
-// * 1.0 ¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼¤Ç¤Ê¤¯¡¢¥ì¥Ó¥å¡¼¤È¤¹¤ë¡£
-// ²èÁü¤Î¥¥ã¥Ã¥·¥å¤òºï½ü¤¹¤ë´ü¸Â¤òÀߤ±¤ë¡£
-// ¥¿¥¤¥È¥ë¡¢¼Ì±Æ¤ò Web Services ¤Î XML ¥¢¥¯¥»¥¹¤ÎÊýË¡¤Ë¤è¤Ã¤Æ get ¤¹¤ë¤³¤È¤Ç»þ´Ö¤òû½Ì¤¹¤ë¡£
-// ¥ì¥Ó¥å¡¼¥Ú¡¼¥¸À¸À®¤Î¥¿¥¤¥ß¥ó¥°¤Ë¤Ä¤¤¤ÆÃí¤òÆþ¤ì¤ë¡£
-// * 1.1 ÊÔ½¸À©¸Â¤ò¤«¤±¤Æ¤¤¤ë¾ì¹ç¡¢Éô³°¼Ô¤¬¥ì¥Ó¥å¡¼¤òºî¤í¤¦¤È¤·¤Æ¡¢¥Ú¡¼¥¸¤Ï¤Ç¤¤Ê¤¤¤¬ ASIN4774110655.tit ¤Ê¤É¤Î¥¥ã¥Ã¥·¥å¤¬¤Ç¤¤ë¤Î¤ò²ò·è¡£
-// ²èÁü¤ÎºÇ¸å¤¬ 01 ¤Î¾ì¹ç¡¢image ¤òºï½ü¤¹¤ë¤È noimage.jpg ¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦¥Ð¥°¤ò½¤Àµ¡£
-// 1.0 ¤ÇƳÆþ¤·¤¿ XML ¥¢¥¯¥»¥¹¤Ï¹â®¤À¤¬¡¢ÊÖ¤¹²èÁü¾ðÊ󤬥¦¥½¤Ê¤Î¤Ç¡¢09 ¤¬¤À¤á¤Ê¤é 01 ¤ò¥È¥é¥¤¤¹¤ë¡¢¤Ç»ÃÄêŪ¤Ë²ò·è¡£
+// * 0.6 URL が存在しない場合、No image を表示、画像配置など修正。
+// インラインプラグインの呼び出し方を修正。
+// ASIN 番号部分をチェックする。
+// 画像、タイトルのキャッシュによる速度の大幅アップ。
+// * 0.7 ブックレビュー生成のデバッグ、認証問題の一応のクリア。
+// * 0.8 amazon 全商品の画像を表示。
+// アソシエイト ID に対応。
+// * 0.9 RedHat9+php4.3.2+apache2.0.46 で画像が途中までしか読み込まれない問題に対処。
+// 日本語ページの下にブックレビューを作ろうとすると文字化けして作れない問題の解決。
+// 書籍でなく CD など、ASIN 部分が長くてもタイトルをうまく拾うようにする。
+// 写影のみ取り込むのでなければ、B000002G6J.01 と書かず B000002G6J と書いても写影が出るようにする。
+// ASIN に対応するキャッシュ画像/キャッシュタイトルをそれぞれ削除する機能追加。
+// proxy 対応(試験的)。
+// proxy 実装の過程で一般ユーザのための AID はなくとも自動生成されることがわかり、削除した。
+// * 1.0 ブックレビューでなく、レビューとする。
+// 画像のキャッシュを削除する期限を設ける。
+// タイトル、写影を Web Services の XML アクセスの方法によって get することで時間を短縮する。
+// レビューページ生成のタイミングについて注を入れる。
+// * 1.1 編集制限をかけている場合、部外者がレビューを作ろうとして、ページはできないが ASIN4774110655.tit などのキャッシュができるのを解決。
+// 画像の最後が 01 の場合、image を削除すると noimage.jpg となってしまうバグを修正。
+// 1.0 で導入した XML アクセスは高速だが、返す画像情報がウソなので、09 がだめなら 01 をトライする、で暫定的に解決。
//
// Caution!:
-// * Ãøºî¸¢¤¬´ØÏ¢¤¹¤ë°Ù¡¢www.amazon.co.jp ¤Î¥¢¥½¥·¥¨¥¤¥È¥×¥í¥°¥é¥à¤ò³Îǧ¤Î¾å¤´ÍøÍѲ¼¤µ¤¤¡£
-// * ¥ì¥Ó¥å¡¼¤Ï¡¢amazon ¥×¥é¥°¥¤¥ó¤¬¸Æ¤Ó½Ð¤¹ÊÔ½¸²èÌ̤Ϥ⤦½ÐÍè¤Æ PukiWiki ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢
-// Ãæ»ß¤¹¤ë¤Ê¤éÁ´Ê¸¤òºï½ü¤·¤Æ¥Ú¡¼¥¸¤Î¹¹¿·¥Ü¥¿¥ó¤ò²¡¤¹¤³¤È¡£
-// * ²¼¤Î PLUGIN_AMAZON_AID¡¢PROXY ¥µ¡¼¥Ð¤ÎÉôʬ¡¢expire ¤ÎÉôʬ¤òŬÅö¤ËÊÔ½¸¤·¤Æ»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤(¾¤Ï¤½¤Î¤Þ¤Þ¤Ç¤â Ok)¡£
+// * 著作権が関連する為、www.amazon.co.jp のアソシエイトプログラムを確認の上ご利用下さい。
+// * レビューは、amazon プラグインが呼び出す編集画面はもう出来て PukiWiki に登録されているので、
+// 中止するなら全文を削除してページの更新ボタンを押すこと。
+// * 下の PLUGIN_AMAZON_AID、PROXY サーバの部分、expire の部分を適当に編集して使用してください(他はそのままでも Ok)。
//
// Thanks to: Reimy and PukiWiki Developers Team
//
$amazon_aid = PLUGIN_AMAZON_AID . '/';
}
$amazon_body = <<<EOD
--ºî¼Ô: [[¤³¤³ÊÔ½¸¤Î¤³¤È]]
--ɾ¼Ô: ¤ªÌ¾Á°
--ÆüÉÕ: &date;
-**¤ªÁ¦¤áÂоÝ
-[[¤³¤³ÊÔ½¸¤Î¤³¤È]]
+-作者: [[ここ編集のこと]]
+-評者: お名前
+-日付: &date;
+**お薦め対象
+[[ここ編集のこと]]
#amazon(,clear)
-**´¶ÁÛ
-[[¤³¤³ÊÔ½¸¤Î¤³¤È]]
-
-// ¤Þ¤º¡¢¤³¤Î¥ì¥Ó¥å¡¼¤ò»ß¤á¤ë¾ì¹ç¡¢Á´Ê¸¤òºï½ü¤·¡¢¥Ú¡¼¥¸¤Î[¹¹¿·¥Ü¥¿¥ó]¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡ª(PukiWiki ¤Ë¤Ï¤â¤¦ÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹)
-// ³¤±¤ë¤Ê¤é¡¢¾å¤Î¡¢[[¤³¤³ÊÔ½¸¤Î¤³¤È]]Éôʬ¤ò³ç¸Ì¤ò´Þ¤á¤Æºï½ü¤·¡¢½ñ¤Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£
-// ¤ªÌ¾Á°¡¢Éôʬ¤Ï¤´¼«Ê¬¤Î̾Á°¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£»ä¤À¤È¡¢´×¼Ë¡¢¤Ç¤¹¡£
-// **¤ªÁ¦¤áÂоݡ¢¤è¤ê¾å¤Ï¡¢¿·¤·¤¤¹Ô¤òÄɲ䷤ʤ¤¤Ç¤¯¤À¤µ¤¤¡£Ìܼ¡ºîÀ®¤Ë»ÈÍѤ¹¤ë¤Î¤Ç¡£
-// //¤Ç»Ï¤Þ¤ë¥³¥á¥ó¥È¹Ô¤Ï¡¢ºÇ½ªÅª¤ËÁ´Éô¥«¥Ã¥È¤·¤Æ¤¯¤À¤µ¤¤¡£Ìܼ¡¤¬Àµ¾ï¤ËºîÀ®¤Ç¤¤Ê¤¤²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
+**感想
+[[ここ編集のこと]]
+
+// まず、このレビューを止める場合、全文を削除し、ページの[更新ボタン]を押してください!(PukiWiki にはもう登録されています)
+// 続けるなら、上の、[[ここ編集のこと]]部分を括弧を含めて削除し、書き直してください。
+// お名前、部分はご自分の名前に変更してください。私だと、閑舎、です。
+// **お薦め対象、より上は、新しい行を追加しないでください。目次作成に使用するので。
+// //で始まるコメント行は、最終的に全部カットしてください。目次が正常に作成できない可能性があります。
#comment
EOD;
}
'[,book-title|,image|,delimage|,deltitle|,delete])';
} else if (func_num_args() == 0) {
- // ¥ì¥Ó¥å¡¼ºîÀ®
+ // レビュー作成
if (PKWK_READONLY) return ''; // Show nothing
- $s_page = htmlspecialchars($vars['page']);
+ $s_page = htmlsc($vars['page']);
if ($s_page == '') $s_page = isset($vars['refer']) ? $vars['refer'] : '';
$ret = <<<EOD
<form action="$script" method="post">
<input type="hidden" name="refer" value="$s_page" />
ASIN:
<input type="text" name="asin" size="30" value="" />
- <input type="submit" value="¥ì¥Ó¥å¡¼ÊÔ½¸" /> (ISBN 10 ·å or ASIN 12 ·å)
+ <input type="submit" value="レビュー編集" /> (ISBN 10 桁 or ASIN 12 桁)
</div>
</form>
EOD;
$aryargs = func_get_args();
$align = strtolower($aryargs[1]);
- if ($align == 'clear') return '<div style="clear:both"></div>'; // ²þ¹ÔÁÞÆþ
- if ($align != 'left') $align = 'right'; // ÇÛÃÖ·èÄê
+ if ($align == 'clear') return '<div style="clear:both"></div>'; // 改行挿入
+ if ($align != 'left') $align = 'right'; // 配置決定
- $asin_all = htmlspecialchars($aryargs[0]); // for XSS
+ $asin_all = htmlsc($aryargs[0]); // for XSS
if (is_asin() == FALSE && $align != 'clear') return FALSE;
if ($aryargs[2] != '') {
- // ¥¿¥¤¥È¥ë»ØÄê
- $title = $alt = htmlspecialchars($aryargs[2]); // for XSS
+ // タイトル指定
+ $title = $alt = htmlsc($aryargs[2]); // for XSS
if ($alt == 'image') {
$alt = plugin_amazon_get_asin_title();
if ($alt == '') return FALSE;
}
}
} else {
- // ¥¿¥¤¥È¥ë¼«Æ°¼èÆÀ
+ // タイトル自動取得
$alt = $title = plugin_amazon_get_asin_title();
if ($alt == '') return FALSE;
}
$s_page = isset($vars['refer']) ? $vars['refer'] : '';
$asin_all = isset($vars['asin']) ?
- htmlspecialchars(rawurlencode(strip_bracket($vars['asin']))) : '';
+ htmlsc(rawurlencode(strip_bracket($vars['asin']))) : '';
if (! is_asin()) {
- $retvars['msg'] = '¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼ÊÔ½¸';
+ $retvars['msg'] = 'ブックレビュー編集';
$retvars['refer'] = & $s_page;
$retvars['body'] = plugin_amazon_convert();
return $retvars;
$title = plugin_amazon_get_asin_title();
if ($title == '' || preg_match('#^/#', $s_page)) {
// Invalid page name
- header('Location: ' . get_script_uri() . '?' . rawurlencode($s_page));
+ header('Location: ' . get_script_uri() . '?' . pagename_urlencode($s_page));
} else {
$body = '#amazon(' . $asin_all . ',,image)' . "\n" .
'*' . $title . "\n" . $amazon_body;
list($asin_all) = func_get_args();
- $asin_all = htmlspecialchars($asin_all); // for XSS
+ $asin_all = htmlsc($asin_all); // for XSS
if (! is_asin()) return FALSE;
$title = plugin_amazon_get_asin_title();
$url = PLUGIN_AMAZON_XML . $asin;
- if (file_exists(CACHE_DIR) === FALSE || is_writable(CACHE_DIR) === FALSE) $nocachable = 1; // ¥¥ã¥Ã¥·¥åÉԲĤξì¹ç
+ if (file_exists(CACHE_DIR) === FALSE || is_writable(CACHE_DIR) === FALSE) $nocachable = 1; // キャッシュ不可の場合
if (($title = plugin_amazon_cache_title_fetch(CACHE_DIR)) == FALSE) {
- $nocache = 1; // ¥¥ã¥Ã¥·¥å¸«¤Ä¤«¤é¤º
- $body = plugin_amazon_get_page($url); // ¤·¤«¤¿¤Ê¤¤¤Î¤Ç¼è¤ê¤Ë¤¤¤¯
+ $nocache = 1; // キャッシュ見つからず
+ $body = plugin_amazon_get_page($url); // しかたないので取りにいく
$tmpary = array();
$body = mb_convert_encoding($body, SOURCE_ENCODING, 'UTF-8');
preg_match('/<ProductName>([^<]*)</', $body, $tmpary);
}
}
-// ¥¿¥¤¥È¥ë¥¥ã¥Ã¥·¥å¤¬¤¢¤ë¤«Ä´¤Ù¤ë
+// タイトルキャッシュがあるか調べる
function plugin_amazon_cache_title_fetch($dir)
{
global $asin, $asin_ext, $asin_all;
}
}
-// ²èÁü¥¥ã¥Ã¥·¥å¤¬¤¢¤ë¤«Ä´¤Ù¤ë
+// 画像キャッシュがあるか調べる
function plugin_amazon_cache_image_fetch($dir)
{
global $asin, $asin_ext, $asin_all;
$size = getimagesize($tmpfile);
unlink($tmpfile);
}
- if ($body == '' || $size[1] <= 1) { // Ä̾ï¤Ï1¤¬Ê֤뤬ǰ¤Î¤¿¤á0¤Î¾ì¹ç¤â(reimy)
- // ¥¥ã¥Ã¥·¥å¤ò PLUGIN_AMAZON_NO_IMAGE ¤Î¥³¥Ô¡¼¤È¤¹¤ë
+ if ($body == '' || $size[1] <= 1) { // 通常は1が返るが念のため0の場合も(reimy)
+ // キャッシュを PLUGIN_AMAZON_NO_IMAGE のコピーとする
if ($asin_ext == '09') {
$url = 'http://images-jp.amazon.com/images/P/' . $asin . '.01.MZZZZZZZ.jpg';
$body = plugin_amazon_get_page($url);
function plugin_amazon_get_page($url)
{
- $data = http_request($url);
+ $data = pkwk_http_request($url);
return ($data['rc'] == 200) ? $data['data'] : '';
}
return TRUE;
}
}
-?>