OSDN Git Service

Cleanup. 'and'/'or' for boorean => '&&'/'||'.
[pukiwiki/pukiwiki.git] / plugin / amazon.inc.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: amazon.inc.php,v 1.5 2004/12/25 01:47:20 henoheno Exp $
6 // Id: amazon.inc.php,v 1.1 2003/07/24 13:00:00 ´×¼Ë
7 //
8 // Copyright:
9 //      2004 PukiWiki Developer Team
10 //      2003 ´×¼Ë <raku@rakunet.org> (Original author)
11 //
12 // Thanks: To reimy and PukiWiki Developers Team.
13 //
14 // ChangeLog:
15 // * 2004/04/03 PukiWiki Developer Team (arino <arino@users.sourceforge.jp>)
16 //        - replace plugin_amazon_get_page().
17 //        - AMAZON_XML 'xml.amazon.com' -> 'xml.amazon.co.jp'
18 // * 0.6  URL ¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢No image ¤òɽ¼¨¡¢²èÁüÇÛÃ֤ʤɽ¤Àµ¡£
19 //        ¥¤¥ó¥é¥¤¥ó¥×¥é¥°¥¤¥ó¤Î¸Æ¤Ó½Ð¤·Êý¤ò½¤Àµ¡£
20 //        ASIN ÈÖ¹æÉôʬ¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
21 //        ²èÁü¡¢¥¿¥¤¥È¥ë¤Î¥­¥ã¥Ã¥·¥å¤Ë¤è¤ë®ÅÙ¤ÎÂçÉý¥¢¥Ã¥×¡£
22 // * 0.7  ¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼À¸À®¤Î¥Ç¥Ð¥Ã¥°¡¢Ç§¾ÚÌäÂê¤Î°ì±þ¤Î¥¯¥ê¥¢¡£
23 // * 0.8  amazon Á´¾¦ÉʤβèÁü¤òɽ¼¨¡£
24 //        ¥¢¥½¥·¥¨¥¤¥È ID ¤ËÂбþ¡£
25 // * 0.9  RedHat9+php4.3.2+apache2.0.46 ¤Ç²èÁü¤¬ÅÓÃæ¤Þ¤Ç¤·¤«Æɤ߹þ¤Þ¤ì¤Ê¤¤ÌäÂê¤ËÂн衣
26 //        ÆüËܸì¥Ú¡¼¥¸¤Î²¼¤Ë¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼¤òºî¤í¤¦¤È¤¹¤ë¤Èʸ»ú²½¤±¤·¤Æºî¤ì¤Ê¤¤ÌäÂê¤Î²ò·è¡£
27 //        ½ñÀҤǤʤ¯ CD ¤Ê¤É¡¢ASIN Éôʬ¤¬Ä¹¤¯¤Æ¤â¥¿¥¤¥È¥ë¤ò¤¦¤Þ¤¯½¦¤¦¤è¤¦¤Ë¤¹¤ë¡£
28 //        ¼Ì±Æ¤Î¤ß¼è¤ê¹þ¤à¤Î¤Ç¤Ê¤±¤ì¤Ð¡¢B000002G6J.01 ¤È½ñ¤«¤º B000002G6J ¤È½ñ¤¤¤Æ¤â¼Ì±Æ¤¬½Ð¤ë¤è¤¦¤Ë¤¹¤ë¡£
29 //        ASIN ¤ËÂбþ¤¹¤ë¥­¥ã¥Ã¥·¥å²èÁü/¥­¥ã¥Ã¥·¥å¥¿¥¤¥È¥ë¤ò¤½¤ì¤¾¤ìºï½ü¤¹¤ëµ¡Ç½Äɲá£
30 //        proxy Âбþ(»î¸³Åª)¡£
31 //        proxy ¼ÂÁõ¤Î²áÄø¤Ç°ìÈ̥桼¥¶¤Î¤¿¤á¤Î AID ¤Ï¤Ê¤¯¤È¤â¼«Æ°À¸À®¤µ¤ì¤ë¤³¤È¤¬¤ï¤«¤ê¡¢ºï½ü¤·¤¿¡£
32 // * 1.0  ¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼¤Ç¤Ê¤¯¡¢¥ì¥Ó¥å¡¼¤È¤¹¤ë¡£
33 //        ²èÁü¤Î¥­¥ã¥Ã¥·¥å¤òºï½ü¤¹¤ë´ü¸Â¤òÀߤ±¤ë¡£
34 //        ¥¿¥¤¥È¥ë¡¢¼Ì±Æ¤ò Web Services ¤Î XML ¥¢¥¯¥»¥¹¤ÎÊýË¡¤Ë¤è¤Ã¤Æ get ¤¹¤ë¤³¤È¤Ç»þ´Ö¤òû½Ì¤¹¤ë¡£
35 //        ¥ì¥Ó¥å¡¼¥Ú¡¼¥¸À¸À®¤Î¥¿¥¤¥ß¥ó¥°¤Ë¤Ä¤¤¤ÆÃí¤òÆþ¤ì¤ë¡£
36 // * 1.1  ÊÔ½¸À©¸Â¤ò¤«¤±¤Æ¤¤¤ë¾ì¹ç¡¢Éô³°¼Ô¤¬¥ì¥Ó¥å¡¼¤òºî¤í¤¦¤È¤·¤Æ¡¢¥Ú¡¼¥¸¤Ï¤Ç¤­¤Ê¤¤¤¬ ASIN4774110655.tit ¤Ê¤É¤Î¥­¥ã¥Ã¥·¥å¤¬¤Ç¤­¤ë¤Î¤ò²ò·è¡£
37 //        ²èÁü¤ÎºÇ¸å¤¬ 01 ¤Î¾ì¹ç¡¢image ¤òºï½ü¤¹¤ë¤È noimage.jpg ¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦¥Ð¥°¤ò½¤Àµ¡£
38 //        1.0 ¤ÇƳÆþ¤·¤¿ XML ¥¢¥¯¥»¥¹¤Ï¹â®¤À¤¬¡¢ÊÖ¤¹²èÁü¾ðÊ󤬥¦¥½¤Ê¤Î¤Ç¡¢09 ¤¬¤À¤á¤Ê¤é 01 ¤ò¥È¥é¥¤¤¹¤ë¡¢¤Ç»ÃÄêŪ¤Ë²ò·è¡£
39 //
40 // License: GNU/GPL
41 //
42 // Caution!:
43 // * Ãøºî¸¢¤¬´ØÏ¢¤¹¤ë°Ù¡¢www.amazon.co.jp ¤Î¥¢¥½¥·¥¨¥¤¥È¥×¥í¥°¥é¥à¤ò³Îǧ¤Î¾å¤´ÍøÍѲ¼¤µ¤¤¡£
44 // * ¥ì¥Ó¥å¡¼¤Ï¡¢amazon ¥×¥é¥°¥¤¥ó¤¬¸Æ¤Ó½Ð¤¹ÊÔ½¸²èÌ̤Ϥ⤦½ÐÍè¤Æ PukiWiki ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢
45 //   Ãæ»ß¤¹¤ë¤Ê¤éÁ´Ê¸¤òºï½ü¤·¤Æ¥Ú¡¼¥¸¤Î¹¹¿·¥Ü¥¿¥ó¤ò²¡¤¹¤³¤È¡£
46 // * ²¼¤Î AMAZON_AID¡¢PROXY ¥µ¡¼¥Ð¤ÎÉôʬ¡¢expire ¤ÎÉôʬ¤òŬÅö¤ËÊÔ½¸¤·¤Æ»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤(¾¤Ï¤½¤Î¤Þ¤Þ¤Ç¤â Ok)¡£
47 //
48
49 /////////////////////////////////////////////////
50 // amazon ¤Î¥¢¥½¥·¥¨¥¤¥È ID(¤Ê¤¤¤Ê¤é °ìÈ̥桼¥¶)
51 define('AMAZON_AID','');
52 /////////////////////////////////////////////////
53 // expire ²èÁü/¥¿¥¤¥È¥ë¥­¥ã¥Ã¥·¥å¤ò²¿Æü¤Çºï½ü¤¹¤ë¤«
54 define('AMAZON_EXPIRE_IMG',1);
55 define('AMAZON_EXPIRE_TIT',356);
56 /////////////////////////////////////////////////
57 // ²èÁü¤Ê¤·¤Î¾ì¹ç¤Î²èÁü
58 define('NO_IMAGE','./image/noimage.jpg');
59 /////////////////////////////////////////////////
60 // amazon ¥·¥ç¥Ã¥×
61 define('AMAZON_SHOP','http://www.amazon.co.jp/exec/obidos/ASIN/');
62 /////////////////////////////////////////////////
63 // amazon ¾¦ÉʾðÊóÌä¹ç¤» URI(dev-t ¤Ï¥Þ¥Ë¥å¥¢¥ë¤Î¥Ç¥£¥Õ¥©¥ë¥ÈÃÍ)
64 define('AMAZON_XML','http://xml.amazon.co.jp/onca/xml3?t=webservices-20&dev-t=GTYDRES564THU&type=lite&page=1&f=xml&locale=jp&AsinSearch=');
65
66 function plugin_amazon_init()
67 {
68   global $amazon_aid, $amazon_body;
69
70   if (AMAZON_AID == '') {
71     $amazon_aid = '';
72   } else {
73     $amazon_aid = AMAZON_AID . '/';
74   }
75   $amazon_body = <<<EOD
76 -ºî¼Ô: [[¤³¤³ÊÔ½¸¤Î¤³¤È]]
77 -ɾ¼Ô: ¤ªÌ¾Á°
78 -ÆüÉÕ: &date;
79 **¤ªÁ¦¤áÂоÝ
80 [[¤³¤³ÊÔ½¸¤Î¤³¤È]]
81
82 #amazon(,clear)
83 **´¶ÁÛ
84 [[¤³¤³ÊÔ½¸¤Î¤³¤È]]
85
86 // ¤Þ¤º¡¢¤³¤Î¥ì¥Ó¥å¡¼¤ò»ß¤á¤ë¾ì¹ç¡¢Á´Ê¸¤òºï½ü¤·¡¢¥Ú¡¼¥¸¤Î[¹¹¿·¥Ü¥¿¥ó]¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡ª(PukiWiki ¤Ë¤Ï¤â¤¦ÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹)
87 // Â³¤±¤ë¤Ê¤é¡¢¾å¤Î¡¢[[¤³¤³ÊÔ½¸¤Î¤³¤È]]Éôʬ¤ò³ç¸Ì¤ò´Þ¤á¤Æºï½ü¤·¡¢½ñ¤­Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£
88 // ¤ªÌ¾Á°¡¢Éôʬ¤Ï¤´¼«Ê¬¤Î̾Á°¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£»ä¤À¤È¡¢´×¼Ë¡¢¤Ç¤¹¡£
89 // **¤ªÁ¦¤áÂоݡ¢¤è¤ê¾å¤Ï¡¢¿·¤·¤¤¹Ô¤òÄɲ䷤ʤ¤¤Ç¤¯¤À¤µ¤¤¡£Ìܼ¡ºîÀ®¤Ë»ÈÍѤ¹¤ë¤Î¤Ç¡£
90 // //¤Ç»Ï¤Þ¤ë¥³¥á¥ó¥È¹Ô¤Ï¡¢ºÇ½ªÅª¤ËÁ´Éô¥«¥Ã¥È¤·¤Æ¤¯¤À¤µ¤¤¡£Ìܼ¡¤¬Àµ¾ï¤ËºîÀ®¤Ç¤­¤Ê¤¤²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£
91 #comment
92 EOD;
93 }
94
95 function plugin_amazon_convert()
96 {
97   global $script, $vars, $asin, $asin_all;
98
99   if (func_num_args() == 0) { // ¥ì¥Ó¥å¡¼ºîÀ®
100     $s_page = htmlspecialchars($vars['page']);
101     if ($s_page == '') {
102       $s_page = $vars['refer'];
103     }
104     $ret = <<<EOD
105 <form action="$script" method="post">
106  <div>
107   <input type="hidden" name="plugin" value="amazon" />
108   <input type="hidden" name="refer" value="$s_page" />
109   ASIN:
110   <input type="text" name="asin" size="30" value="" />
111   <input type="submit" value="¥ì¥Ó¥å¡¼ÊÔ½¸" /> (ISBN 10 ·å or ASIN 12 ·å)
112  </div>
113 </form>
114 EOD;
115     return $ret;
116   } elseif (func_num_args() < 1 || func_num_args() > 3) {
117     return false;
118   }
119   $aryargs = func_get_args();
120
121   $align = strtolower($aryargs[1]);
122   if ($align == 'clear') return '<div style="clear:both"></div>'; // ²þ¹ÔÁÞÆþ
123   if ($align != 'left') $align = 'right'; // ÇÛÃÖ·èÄê
124
125   $asin_all = htmlspecialchars($aryargs[0]);  // for XSS
126   if (is_asin() == false && $align != 'clear') return false;
127
128   if ($aryargs[2] != '') { // ¥¿¥¤¥È¥ë»ØÄ꤫¼«Æ°¼èÆÀ¤«
129     $title = $alt = htmlspecialchars($aryargs[2]); // for XSS
130     if ($alt == 'image') {
131       $alt = plugin_amazon_get_asin_title();
132       if ($alt == '') return false;
133       $title = '';
134     } elseif ($alt == 'delimage') {
135       if (unlink(CACHE_DIR . 'ASIN' . $asin . '.jpg')) {
136         return 'Image of ' . $asin . ' deleted...';
137       } else {
138         return 'Image of ' . $asin . ' NOT DELETED...';
139       }
140     } elseif ($alt == 'deltitle') {
141       if (unlink(CACHE_DIR . 'ASIN' . $asin . '.tit')) {
142         return 'Title of ' . $asin . ' deleted...';
143       } else {
144         return 'Title of ' . $asin . ' NOT DELETED...';
145       }
146     } elseif ($alt == 'delete') {
147       if ((unlink(CACHE_DIR . 'ASIN' . $asin . '.jpg') && unlink(CACHE_DIR . 'ASIN' . $asin . '.tit'))) {
148         return 'Title and Image of ' . $asin . ' deleted...';
149       } else {
150         return 'Title and Image of ' . $asin . ' NOT DELETED...';
151       }
152     }
153   } else {
154     $alt = $title = plugin_amazon_get_asin_title(); // ¥¿¥¤¥È¥ë¼«Æ°¼èÆÀ
155     if ($alt == '') return false;
156   }
157
158   return plugin_amazon_print_object($align, $alt, $title);
159 }
160
161 function plugin_amazon_action()
162 {
163   global $vars, $script, $edit_auth, $edit_auth_users;
164   global $amazon_body, $asin, $asin_all;
165
166   $asin_all = htmlspecialchars(rawurlencode(strip_bracket($vars['asin'])));
167
168   if (! is_asin()) {
169     $retvars['msg']   = '¥Ö¥Ã¥¯¥ì¥Ó¥å¡¼ÊÔ½¸';
170     $retvars['refer'] = $vars['refer'];
171     $retvars['body']  = plugin_amazon_convert();
172     return $retvars;
173
174   } else {
175     $s_page     = $vars['refer'];
176     $r_page     = $s_page . '/' . $asin;
177     $r_page_url = rawurlencode($r_page);
178
179     pkwk_headers_sent();
180     if ($edit_auth && (! isset($_SERVER['PHP_AUTH_USER']) ||
181         ! array_key_exists($_SERVER['PHP_AUTH_USER'], $edit_auth_users) ||
182         $edit_auth_users[$_SERVER['PHP_AUTH_USER']] != $_SERVER['PHP_AUTH_PW'])) {
183       header('Location: ' . get_script_uri() . '?cmd=read&page=' . $r_page_url);
184     } else {
185       $title = plugin_amazon_get_asin_title();
186       if ($title == '' || preg_match('/^\//', $s_page)) {
187         header('Location: ' . get_script_uri() . '?cmd=read&page=' . encode($s_page));
188       }
189       $body = '#amazon(' . $asin_all . ',,image)' . "\n" . '*' . $title . "\n" . $amazon_body;
190       plugin_amazon_review_save($r_page, $body);
191       header('Location: ' . get_script_uri() . '?cmd=edit&page=' . $r_page_url);
192     }
193     exit;
194   }
195 }
196
197 function plugin_amazon_inline()
198 {
199   global $amazon_aid;
200   global $asin, $asin_ext, $asin_all;
201
202   list($asin_all) = func_get_args();
203
204   $asin_all = htmlspecialchars($asin_all); // for XSS
205   if (! is_asin()) return false;
206
207   $title = plugin_amazon_get_asin_title();
208   if ($title == '')
209     return false;
210   else
211     return '<a href="' . AMAZON_SHOP . "$asin/$amazon_aid" . 'ref=nosim">' . "$title</a>\n";
212 }
213
214 function plugin_amazon_print_object($align, $alt, $title)
215 {
216   global $amazon_aid;
217   global $asin, $asin_ext, $asin_all;
218
219   $url = plugin_amazon_cache_image_fetch(CACHE_DIR);
220
221   if ($title == '') { // ¥¿¥¤¥È¥ë¤¬¤Ê¤±¤ì¤Ð¡¢²èÁü¤Î¤ßɽ¼¨
222     $div = '<div style="float:' . $align . ';margin:16px 16px 16px 16px;text-align:center">' . "\n";
223     $div .= ' <a href="' . AMAZON_SHOP . $asin . '/' . $amazon_aid . 'ref=nosim">' .
224         '<img src="' . $url . '" alt="' . $alt . '" /></a>' . "\n";
225     $div .= '</div>' . "\n";
226   } else {            // Ä̾ïɽ¼¨
227     $div = '<div style="float:' . $align . ';padding:.5em 1.5em .5em 1.5em;text-align:center">' . "\n";
228     $div .= ' <table style="width:110px;border:0;text-align:center"><tr><td style="text-align:center">' . "\n";
229     $div .= '  <a href="' . AMAZON_SHOP . $asin . '/' . $amazon_aid . 'ref=nosim">' .
230         '<img src="' . $url . '" alt="' . $alt  .'" /></a></td></tr>' . "\n";
231     $div .= '  <tr><td style="text-align:center"><a href="' .
232         AMAZON_SHOP . $asin . '/' . $amazon_aid . 'ref=nosim">' . $title . '</a></td>' . "\n";
233     $div .= ' </tr></table>' . "\n" . '</div>' . "\n";
234   }
235   return $div;
236 }
237
238 function plugin_amazon_get_asin_title()
239 {
240   global $asin, $asin_ext, $asin_all;
241
242   if ($asin_all == '') return '';
243
244   $nocache = $nocachable = 0;
245
246   $url = AMAZON_XML . $asin;
247
248   if (file_exists(CACHE_DIR) === false || is_writable(CACHE_DIR) === false) $nocachable = 1; // ¥­¥ã¥Ã¥·¥åÉԲĤξì¹ç
249
250   if (($title = plugin_amazon_cache_title_fetch(CACHE_DIR)) == false) {
251     $nocache = 1; // ¥­¥ã¥Ã¥·¥å¸«¤Ä¤«¤é¤º
252     $body = plugin_amazon_get_page($url); // ¤·¤«¤¿¤Ê¤¤¤Î¤Ç¼è¤ê¤Ë¤¤¤¯
253     $tmpary = array();
254     $body = mb_convert_encoding($body, SOURCE_ENCODING, 'UTF-8');
255     preg_match('/<ProductName>([^<]*)</', $body, $tmpary);
256     $title = trim($tmpary[1]);
257 //    $tmpary[1] = '';
258 //    preg_match("/<ImageUrlMedium>http:\/\/images-jp.amazon.com\/images\/P\/[^.]+\.(..)\./", $body, $tmpary);
259 //    if ($tmpary[1] != '') {
260 //      $asin_ext = $tmpary[1];
261 //      $asin_all = $asin . $asin_ext;
262 //    }
263   }
264
265   if ($title == '') return '';
266
267   if ($nocache == 1 && $nocachable != 1) plugin_amazon_cache_title_save($title, CACHE_DIR); // ¥¿¥¤¥È¥ë¤¬¤¢¤ì¤Ð¥­¥ã¥Ã¥·¥å¤ËÊݸ
268   return $title;
269 }
270
271 // ¥¿¥¤¥È¥ë¥­¥ã¥Ã¥·¥å¤¬¤¢¤ë¤«Ä´¤Ù¤ë
272 function plugin_amazon_cache_title_fetch($dir)
273 {
274   global $asin, $asin_ext, $asin_all;
275
276   $filename = $dir . 'ASIN' . $asin . '.tit';
277
278   $get_tit = 0;
279   if (!is_readable($filename)) {
280     $get_tit = 1;
281   } elseif (AMAZON_EXPIRE_TIT * 3600 * 24 < time() - filemtime($filename)) {
282     $get_tit = 1;
283   }
284
285   if ($get_tit) return false;
286
287   if (!($fp = @fopen($filename, 'r'))) return false;
288   $title = fgets($fp, 4096);
289 //  $tmp_ext = fgets($fp, 4096);
290 //  if ($tmp_ext != '') {
291 //    $asin_ext = $tmp_ext;
292 //  }
293   fclose($fp);
294
295   if (strlen($title) > 0)
296     return $title;
297   else
298     return false;
299 }
300
301 // ²èÁü¥­¥ã¥Ã¥·¥å¤¬¤¢¤ë¤«Ä´¤Ù¤ë
302 function plugin_amazon_cache_image_fetch($dir)
303 {
304   global $asin, $asin_ext, $asin_all;
305
306   $filename = $dir . 'ASIN' . $asin . '.jpg';
307
308   $get_img = 0;
309   if (!is_readable($filename)) {
310     $get_img = 1;
311   } elseif (AMAZON_EXPIRE_IMG * 3600 * 24 < time() - filemtime($filename)) {
312     $get_img = 1;
313   }
314
315   if ($get_img) {
316     $url = 'http://images-jp.amazon.com/images/P/' . $asin . '.' . $asin_ext . '.MZZZZZZZ.jpg';
317
318     if (!is_url($url)) return false; // URL ·Á¼°¥Á¥§¥Ã¥¯
319     $body = plugin_amazon_get_page($url);
320     if ($body != '') {
321       $tmpfile = $dir . 'ASIN' . $asin . '.jpg.0';
322       $fp = fopen($tmpfile, 'wb');
323       fwrite($fp, $body);
324       fclose($fp);
325       $size = getimagesize($tmpfile);
326       unlink($tmpfile);
327     }
328     if ($body == '' || $size[1] <= 1) { // Ä̾ï¤Ï1¤¬Ê֤뤬ǰ¤Î¤¿¤á0¤Î¾ì¹ç¤â(reimy)
329       // ¥­¥ã¥Ã¥·¥å¤ò NO_IMAGE ¤Î¥³¥Ô¡¼¤È¤¹¤ë
330       if ($asin_ext == '09') {
331         $url = 'http://images-jp.amazon.com/images/P/' . $asin . '.01.MZZZZZZZ.jpg';
332         $body = plugin_amazon_get_page($url);
333         if ($body != '') {
334           $tmpfile = $dir . 'ASIN' . $asin . '.jpg.0';
335           $fp = fopen($tmpfile, 'wb');
336           fwrite($fp, $body);
337           fclose($fp);
338           $size = getimagesize($tmpfile);
339           unlink($tmpfile);
340         }
341       }
342       if ($body == '' || $size[1] <= 1) {
343         $fp = fopen(NO_IMAGE, 'rb');
344         if (! $fp) return false;
345         $body = '';
346         while (!feof($fp)) {
347           $body .= fread($fp, 4096);
348         }
349         fclose ($fp);
350       }
351     }
352     plugin_amazon_cache_image_save($body, CACHE_DIR);
353   }
354   return $filename;
355 }
356
357 // ¥¿¥¤¥È¥ë¥­¥ã¥Ã¥·¥å¤òÊݸ
358 function plugin_amazon_cache_title_save($data, $dir)
359 {
360   global $asin, $asin_ext, $asin_all;
361
362   $filename = $dir . 'ASIN' . $asin . '.tit';
363
364   $fp = fopen($filename, 'w');
365   fwrite($fp, "$data");
366   fclose($fp);
367
368   return $filename;
369 }
370
371 // ²èÁü¥­¥ã¥Ã¥·¥å¤òÊݸ
372 function plugin_amazon_cache_image_save($data, $dir)
373 {
374   global $asin, $asin_ext, $asin_all;
375
376   $filename = $dir . 'ASIN' . $asin . '.jpg';
377
378   $fp = fopen($filename, 'wb');
379   fwrite($fp, $data);
380   fclose($fp);
381
382   return $filename;
383 }
384
385 // ½ñÀҥǡ¼¥¿¤òÊݸ
386 function plugin_amazon_review_save($page, $data)
387 {
388   global $asin, $asin_ext, $asin_all;
389
390   $filename = DATA_DIR . encode($page) . '.txt';
391
392   if (! is_readable($filename)) {
393     $fp = fopen($filename, 'w');
394     fwrite($fp, $data);
395     fclose($fp);
396     return true;
397   }
398   return false;
399 }
400
401 // ¥Í¥Ã¥È¾å¤Î URL ¤Î¥Ç¡¼¥¿¤ò¼è¤Ã¤Æ¤­¤ÆÊÖ¤¹(¤Ê¤±¤ì¤Ð¶õ¥Ç¡¼¥¿)
402 function plugin_amazon_get_page($url)
403 {
404         $data = http_request($url);
405
406         return ($data['rc'] == 200) ? $data['data'] : '';
407 }
408
409 // ASIN¤«¡©
410 function is_asin()
411 {
412   global $asin, $asin_ext, $asin_all;
413
414   $tmpary = array();
415   if (preg_match('/^([A-Z0-9]{10}).?([0-9][0-9])?$/', $asin_all, $tmpary) == false) {
416     return false;
417   } else {
418     $asin = $tmpary[1];
419     $asin_ext = $tmpary[2];
420     if ($asin_ext == '') {
421       $asin_ext = '09';
422     }
423     $asin_all = $asin . $asin_ext;
424     return true;
425   }
426 }
427
428 ?>