PageRenderTime 31ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/webapp/lib/db/review.php

https://github.com/openpne/OpenPNE2
PHP | 703 lines | 592 code | 88 blank | 23 comment | 66 complexity | 9bf605693c65c13de73b968fd6298ac6 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception
  1. <?php
  2. /**
  3. * @copyright 2005-2008 OpenPNE Project
  4. * @license http://www.php.net/license/3_01.txt PHP License 3.01
  5. */
  6. function db_review_c_review_list4member($c_member_id, $count = 10)
  7. {
  8. $sql = 'SELECT rev.c_review_id, rev.title, com.r_datetime' .
  9. ' FROM c_review_comment AS com LEFT JOIN c_review AS rev USING(c_review_id)' .
  10. ' WHERE com.c_member_id = ? ORDER BY com.r_datetime DESC';
  11. $params = array(intval($c_member_id));
  12. return db_get_all_limit($sql, 0, $count, $params);
  13. }
  14. function db_review_c_friend_review_list4c_member_id($c_member_id, $limit)
  15. {
  16. $friends = db_friend_c_member_id_list($c_member_id, true);
  17. if (!$friends) {
  18. return array();
  19. }
  20. $ids = implode(',', array_map('intval', $friends));
  21. $sql = 'SELECT * FROM c_review INNER JOIN c_review_comment USING (c_review_id)'
  22. . ' WHERE c_review_comment.c_member_id IN (' . $ids . ')'
  23. . ' ORDER BY c_review_comment.r_datetime DESC';
  24. $list = db_get_all_limit($sql, 0, $limit);
  25. foreach ($list as $key => $value) {
  26. $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  27. }
  28. return $list;
  29. }
  30. function db_review_c_friend_review_list_more4c_member_id($c_member_id, $page, $page_size)
  31. {
  32. $friends = db_friend_c_member_id_list($c_member_id, true);
  33. if (!$friends) {
  34. return array();
  35. }
  36. $ids = implode(',', array_map('intval', $friends));
  37. $sql = 'SELECT * FROM c_review INNER JOIN c_review_comment USING (c_review_id)'
  38. . ' WHERE c_review_comment.c_member_id IN (' . $ids . ')'
  39. . ' ORDER BY c_review_comment.r_datetime DESC';
  40. $list = db_get_all_page($sql, $page, $page_size, $params);
  41. foreach ($list as $key => $value) {
  42. $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  43. }
  44. $sql = 'SELECT COUNT(*) FROM c_review_comment WHERE c_member_id IN (' . $ids . ')';
  45. $total_num = db_get_one($sql);
  46. if ($total_num != 0) {
  47. $total_page_num = ceil($total_num / $page_size);
  48. if ($page >= $total_page_num) {
  49. $next = false;
  50. } else {
  51. $next = true;
  52. }
  53. if ($page <= 1) {
  54. $prev = false;
  55. } else {
  56. $prev = true;
  57. }
  58. }
  59. $start_num = ($page - 1) * $page_size + 1 ;
  60. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  61. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  62. }
  63. function db_review_new_commu_review4c_commu_id($c_commu_id , $limit)
  64. {
  65. $sql = "SELECT ccr.c_review_id, cr.title, ccr.r_datetime" .
  66. " FROM c_commu_review AS ccr , c_review AS cr" .
  67. " WHERE ccr.c_review_id = cr.c_review_id" .
  68. " AND ccr.c_commu_id = ?".
  69. " ORDER BY ccr.r_datetime DESC";
  70. $params = array(intval($c_commu_id));
  71. return db_get_all_limit($sql, 0, $limit, $params);
  72. }
  73. function do_review_review_add_category_disp()
  74. {
  75. $sql = 'SELECT c_review_category_id, category_disp FROM c_review_category';
  76. return db_get_assoc($sql);
  77. }
  78. function do_review_add_search_result($keyword, $category_id, $page)
  79. {
  80. $sql = 'SELECT category FROM c_review_category WHERE c_review_category_id = ?';
  81. $params = array(intval($category_id));
  82. if (!$category = db_get_one($sql, $params)) {
  83. return null;
  84. }
  85. require_once 'OpenPNE/Amazon.php';
  86. $amazon =& new OpenPNE_Amazon(AMAZON_ACCESS_KEY_ID, AMAZON_SECRET_ACCESS_KEY, AMAZON_AFFID);
  87. $amazon->setLocale(AMAZON_LOCALE);
  88. $amazon->setBaseUrl(AMAZON_BASEURL);
  89. if (OPENPNE_USE_HTTP_PROXY) {
  90. $amazon->setProxy(OPENPNE_HTTP_PROXY_HOST, OPENPNE_HTTP_PROXY_PORT);
  91. }
  92. $options = array(
  93. 'Keywords' => $keyword,
  94. 'ItemPage' => $page,
  95. 'ResponseGroup' => 'Large',
  96. );
  97. $products = $amazon->ItemSearch($category, $options);
  98. if (PEAR::isError($products)) {
  99. return null;
  100. }
  101. if (empty($products['Request']['IsValid']) || $products['Request']['IsValid'] !== 'True') {
  102. return null;
  103. }
  104. foreach ($products['Item'] as $key => $value) {
  105. if (is_array($value['ItemAttributes']['Author'])) {
  106. $authors = array_unique($value['ItemAttributes']['Author']);
  107. $products['Item'][$key]['author'] = implode(', ', $authors);
  108. }
  109. if (is_array($value['ItemAttributes']['Artist'])) {
  110. $artists = array_unique($value['ItemAttributes']['Artist']);
  111. $products['Item'][$key]['artist'] = implode(', ', $artists);
  112. }
  113. }
  114. $product_page = $products['Request']['ItemSearchRequest']['ItemPage'];
  115. $product_pages = $products['TotalPages'];
  116. $total_num = $products['TotalResults'];
  117. return array($products['Item'], $product_page, $product_pages, $total_num);
  118. }
  119. function db_review_write_product4asin($asin)
  120. {
  121. require_once 'OpenPNE/Amazon.php';
  122. $amazon =& new OpenPNE_Amazon(AMAZON_ACCESS_KEY_ID, AMAZON_SECRET_ACCESS_KEY, AMAZON_AFFID);
  123. $amazon->setLocale(AMAZON_LOCALE);
  124. $amazon->setBaseUrl(AMAZON_BASEURL);
  125. if (OPENPNE_USE_HTTP_PROXY) {
  126. $amazon->setProxy(OPENPNE_HTTP_PROXY_HOST, OPENPNE_HTTP_PROXY_PORT);
  127. }
  128. $keyword = mb_convert_encoding($keyword, "UTF-8", "auto");
  129. $options = array();
  130. $options['ResponseGroup'] = 'Large';
  131. $result = $amazon->ItemLookup($asin, $options);
  132. if (PEAR::isError($result)) {
  133. return false;
  134. }
  135. if (empty($result['Request']['IsValid']) || $result['Request']['IsValid'] !== 'True') {
  136. return null;
  137. }
  138. $product = $result['Item'][0];
  139. if (is_array($product['ItemAttributes']['Author'])) {
  140. $authors = array_unique($product['ItemAttributes']['Author']);
  141. $product['author'] = implode(', ', $authors);
  142. }
  143. if (is_array($product['ItemAttributes']['Artist'])) {
  144. $artists = array_unique($product['ItemAttributes']['Artist']);
  145. $product['artist'] = implode(', ', $artists);
  146. }
  147. return $product;
  148. }
  149. /**
  150. * orderby:
  151. * r_datetime => 作成順
  152. * r_num => 登録数順
  153. */
  154. function db_review_search_result4keyword_category($keyword, $category_id , $orderby, $page = 1, $page_size = 30)
  155. {
  156. $from = " FROM c_review INNER JOIN c_review_comment USING (c_review_id)";
  157. $wheres = array();
  158. $params = array();
  159. if ($keyword) {
  160. $wheres[] = 'c_review.title LIKE ?';
  161. $params[] = '%'.check_search_word($keyword).'%';
  162. }
  163. if ($category_id) {
  164. $wheres[] = 'c_review.c_review_category_id = ?';
  165. $params[] = intval($category_id);
  166. }
  167. if ($wheres) {
  168. $where = ' WHERE ' . implode(' AND ', $wheres);
  169. } else {
  170. $where = '';
  171. }
  172. switch ($orderby) {
  173. case "r_datetime":
  174. default:
  175. $order = " ORDER BY r_datetime2 DESC";
  176. break;
  177. case "r_num":
  178. $order = " ORDER BY write_num DESC, r_datetime2 DESC";
  179. break;
  180. }
  181. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  182. $group = " GROUP BY c_review.c_review_id" .
  183. ", c_review.title" .
  184. ", c_review.release_date" .
  185. ", c_review.manufacturer" .
  186. ", c_review.author" .
  187. ", c_review.c_review_category_id" .
  188. ", c_review.image_small" .
  189. ", c_review.image_medium" .
  190. ", c_review.image_large" .
  191. ", c_review.url" .
  192. ", c_review.asin" .
  193. ", c_review.list_price" .
  194. ", c_review.retail_price" .
  195. ", c_review.r_datetime";
  196. } else {
  197. $group = " GROUP BY c_review.c_review_id";
  198. }
  199. $sql = "SELECT" .
  200. " c_review.*" .
  201. ", MAX(c_review_comment.r_datetime) as r_datetime2" .
  202. ", COUNT(c_review_comment.c_review_comment_id) AS write_num" .
  203. $from .
  204. $where .
  205. $group .
  206. $order;
  207. $lst = db_get_all_page($sql, $page, $page_size, $params);
  208. //$lstに書き込み数を追加 + レビュー書き込み内容と日付を追加
  209. foreach ($lst as $key => $value) {
  210. $sql = "SELECT body FROM c_review_comment" .
  211. " WHERE c_review_id = ?" .
  212. " ORDER BY r_datetime DESC";
  213. $p2 = array(intval($value['c_review_id']));
  214. $lst[$key]['body'] = db_get_one($sql, $p2);
  215. }
  216. $sql = "SELECT COUNT(DISTINCT c_review.c_review_id)" . $from . $where;
  217. $total_num = db_get_one($sql, $params);
  218. if ($total_num != 0) {
  219. $total_page_num = ceil($total_num / $page_size);
  220. if ($page >= $total_page_num) {
  221. $next = false;
  222. } else {
  223. $next = true;
  224. }
  225. if ($page <= 1) {
  226. $prev = false;
  227. } else {
  228. $prev = true;
  229. }
  230. }
  231. $start_num = ($page - 1) * $page_size + 1 ;
  232. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  233. return array($lst, $prev, $next, $total_num, $start_num, $end_num);
  234. }
  235. function db_review_list_product_c_review4c_review_id($c_review_id)
  236. {
  237. $sql = 'SELECT * FROM c_review AS cr, c_review_category AS crc' .
  238. ' WHERE cr.c_review_category_id = crc.c_review_category_id' .
  239. ' AND c_review_id = ?';
  240. $params = array(intval($c_review_id));
  241. return db_get_row($sql, $params);
  242. }
  243. function db_review_list_product_c_review_list4c_review_id($c_review_id, $page, $page_size=30)
  244. {
  245. $sql = "SELECT crc.*, cm.c_member_id, cm.nickname, cm.image_filename" .
  246. " FROM c_review_comment AS crc, c_member AS cm" .
  247. " WHERE crc.c_member_id = cm.c_member_id" .
  248. " AND c_review_id = ?" .
  249. " ORDER BY r_datetime desc";
  250. $params = array(intval($c_review_id));
  251. $list = db_get_all_page($sql, $page, $page_size, $params);
  252. $total_num = db_review_count_c_review_comment4c_review_id($c_review_id);
  253. if ($total_num != 0) {
  254. $total_page_num = ceil($total_num / $page_size);
  255. if ($page >= $total_page_num) {
  256. $next = false;
  257. } else {
  258. $next = true;
  259. }
  260. if ($page <= 1) {
  261. $prev = false;
  262. } else {
  263. $prev = true;
  264. }
  265. }
  266. $start_num = ($page - 1) * $page_size + 1 ;
  267. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  268. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  269. }
  270. function db_review_list_product_c_review_list4c_member_id($c_member_id, $page, $page_size=30)
  271. {
  272. $sql = "SELECT cr.*, crc.*, crc2.category_disp" .
  273. " FROM c_review_comment AS crc, c_review AS cr, c_review_category AS crc2" .
  274. " WHERE crc.c_review_id = cr.c_review_id" .
  275. " AND cr.c_review_category_id = crc2.c_review_category_id" .
  276. " AND crc.c_member_id = ?" .
  277. " ORDER BY crc.r_datetime DESC";
  278. $params = array(intval($c_member_id));
  279. $list = db_get_all_page($sql, $page, $page_size, $params);
  280. foreach ($list as $key => $value) {
  281. $list[$key]['write_num'] = db_review_count_c_review_comment4c_review_id($value['c_review_id']);
  282. }
  283. $sql = "SELECT COUNT(*) FROM c_review_comment WHERE c_member_id = ?";
  284. $params = array(intval($c_member_id));
  285. $total_num = db_get_one($sql, $params);
  286. if ($total_num != 0) {
  287. $total_page_num = ceil($total_num / $page_size);
  288. if ($page >= $total_page_num) {
  289. $next = false;
  290. } else {
  291. $next = true;
  292. }
  293. if ($page <= 1) {
  294. $prev = false;
  295. } else {
  296. $prev = true;
  297. }
  298. }
  299. $start_num = ($page - 1) * $page_size + 1 ;
  300. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  301. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  302. }
  303. function db_review_add_write_c_review_comment4asin_c_member_id($asin, $c_member_id)
  304. {
  305. $sql = "SELECT * FROM c_review AS cr, c_review_comment AS crc" .
  306. " WHERE cr.c_review_id = crc.c_review_id" .
  307. " AND cr.asin = ?" .
  308. " AND crc.c_member_id = ?";
  309. $params = array($asin, intval($c_member_id));
  310. return db_get_row($sql, $params);
  311. }
  312. function db_review_clip_list_h_review_clip_list4c_member_id($c_member_id, $page, $page_size=30)
  313. {
  314. $sql = "SELECT * FROM c_review AS cr, c_review_clip AS crc" .
  315. " WHERE crc.c_review_id = cr.c_review_id" .
  316. " AND c_member_id = ?" .
  317. " ORDER BY crc.r_datetime";
  318. $params = array(intval($c_member_id));
  319. $list = db_get_all_page($sql, $page, $page_size, $params);
  320. //カテゴリの表示名を取得
  321. $category_disp = do_review_review_add_category_disp();
  322. //$lstに書き込み数 + カテゴリ名 を追加
  323. foreach ($list as $key => $value) {
  324. $list[$key]['write_num'] = db_review_count_c_review_comment4c_review_id($value['c_review_id']);
  325. $list[$key]['category_disp'] = $category_disp[$value['c_review_category_id']];
  326. }
  327. $sql = "SELECT COUNT(*) FROM c_review_clip WHERE c_member_id = ?";
  328. $params = array(intval($c_member_id));
  329. $total_num = db_get_one($sql, $params);
  330. if ($total_num != 0) {
  331. $total_page_num = ceil($total_num / $page_size);
  332. if ($page >= $total_page_num) {
  333. $next = false;
  334. } else {
  335. $next = true;
  336. }
  337. if ($page <= 1) {
  338. $prev = false;
  339. } else {
  340. $prev = true;
  341. }
  342. }
  343. $start_num = ($page - 1) * $page_size + 1 ;
  344. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  345. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  346. }
  347. function db_review_c_member_review_c_member_review4c_commu_id($c_commu_id, $page, $page_size=20)
  348. {
  349. $sql = " SELECT cr.*, ccr.*, crc.category_disp " .
  350. " FROM c_commu_review as ccr, c_review as cr, c_review_category as crc" .
  351. " WHERE ccr.c_review_id = cr.c_review_id" .
  352. " AND cr.c_review_category_id = crc.c_review_category_id" .
  353. " AND ccr.c_commu_id = ?" .
  354. " ORDER BY ccr.r_datetime";
  355. $params = array(intval($c_commu_id));
  356. $list = db_get_all_page($sql, $page, $page_size, $params);
  357. $sql = "SELECT COUNT(*) FROM c_commu_review WHERE c_commu_id = ?";
  358. $total_num = db_get_one($sql, $params);
  359. if ($total_num != 0) {
  360. $total_page_num = ceil($total_num / $page_size);
  361. if ($page >= $total_page_num) {
  362. $next = false;
  363. } else {
  364. $next = true;
  365. }
  366. if ($page <= 1) {
  367. $prev = false;
  368. } else {
  369. $prev = true;
  370. }
  371. }
  372. $start_num = ($page - 1) * $page_size + 1 ;
  373. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  374. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  375. }
  376. function db_review_c_member_review_add_confirm_c_member_review4c_review_id($c_review_id, $c_member_id)
  377. {
  378. if (!$c_review_id) {
  379. return array();
  380. }
  381. $c_review_id_str = implode(',', array_map('intval', $c_review_id));
  382. $sql = "SELECT * FROM c_review as cr, c_review_comment as crc , c_review_category as crc2 " .
  383. " WHERE cr.c_review_id = crc.c_review_id " .
  384. " AND cr.c_review_category_id = crc2.c_review_category_id " .
  385. " AND crc.c_member_id = ?".
  386. " AND cr.c_review_id IN (".$c_review_id_str.")";
  387. $params = array(intval($c_member_id));
  388. return db_get_all($sql, $params);
  389. }
  390. function db_review_c_review_add_c_review_category_id4category($category)
  391. {
  392. $sql = "SELECT c_review_category_id FROM c_review_category WHERE category = ?";
  393. $params = array($category);
  394. return db_get_one($sql, $params);
  395. }
  396. function db_review_edit_c_review_comment4c_review_comment_id_c_member_id($c_review_comment_id, $c_member_id)
  397. {
  398. $sql = "SELECT * FROM c_review_comment " .
  399. " WHERE c_review_comment_id = ?" .
  400. " AND c_member_id = ?";
  401. $params = array(intval($c_review_comment_id), intval($c_member_id));
  402. return db_get_row($sql, $params);
  403. }
  404. function db_review_edit_c_review_comment4c_review_comment_id($c_review_comment_id)
  405. {
  406. $sql = 'SELECT * FROM c_review_comment WHERE c_review_comment_id = ?';
  407. $params = array(intval($c_review_comment_id));
  408. return db_get_row($sql, $params);
  409. }
  410. function db_review_clip_add_c_review_id4c_review_id_c_member_id($c_review_id, $c_member_id)
  411. {
  412. $sql = "SELECT c_review_clip_id FROM c_review_clip" .
  413. " WHERE c_review_id = ?" .
  414. " AND c_member_id = ?";
  415. $params = array(intval($c_review_id), intval($c_member_id));
  416. return db_get_one($sql, $params);
  417. }
  418. function db_review_c_member_review_c_review_id4c_review_id_c_member_id($c_review_id, $c_member_id, $c_commu_id)
  419. {
  420. $sql = "SELECT c_commu_review_id FROM c_commu_review" .
  421. " WHERE c_commu_id = ?" .
  422. " AND c_review_id = ?" .
  423. " AND c_member_id = ?";
  424. $params = array(intval($c_commu_id), intval($c_review_id), intval($c_member_id));
  425. return db_get_one($sql, $params);
  426. }
  427. function db_review_edit_c_review4c_review_comment_id($c_review_comment_id)
  428. {
  429. $sql = "SELECT c_review.* FROM c_review, c_review_comment" .
  430. " WHERE c_review_comment.c_review_comment_id=?".
  431. " AND c_review_comment.c_review_id=c_review.c_review_id";
  432. $params = array(intval($c_review_comment_id));
  433. return db_get_row($sql, $params);
  434. }
  435. function db_review_common_c_review_id4c_review_comment_id($c_review_comment_id)
  436. {
  437. $sql = 'SELECT c_review_id FROM c_review_comment WHERE c_review_comment_id = ?';
  438. $params = array(intval($c_review_comment_id));
  439. return db_get_one($sql, $params);
  440. }
  441. function db_review_count_c_review_comment4c_review_id($c_review_id)
  442. {
  443. $sql = 'SELECT COUNT(*) FROM c_review_comment WHERE c_review_id = ?';
  444. $params = array(intval($c_review_id));
  445. return db_get_one($sql, $params);
  446. }
  447. /**
  448. * @copyright 2005-2008 OpenPNE Project
  449. * @license http://www.php.net/license/3_01.txt PHP License 3.01
  450. */
  451. function do_c_review_add_insert_c_review($product, $c_review_category_id)
  452. {
  453. $sql = 'SELECT c_review_id FROM c_review WHERE asin = ?';
  454. $params = array($product['ASIN']);
  455. if ($c_review_id = db_get_one($sql, $params)) {
  456. return $c_review_id;
  457. }
  458. $data = array(
  459. 'title' => $product['ItemAttributes']['Title'],
  460. 'release_date' => $product['ItemAttributes']['PublicationDate'],
  461. 'manufacturer' => $product['ItemAttributes']['Manufacturer'],
  462. 'author' => $product['author'],
  463. 'c_review_category_id' => intval($c_review_category_id),
  464. 'image_small' => $product['SmallImage']['URL'],
  465. 'image_medium' => $product['MediumImage']['URL'],
  466. 'image_large' => $product['LargeImage']['URL'],
  467. 'url' => $product['DetailPageURL'],
  468. 'asin' => $product['ASIN'],
  469. 'list_price' => $product['ListPrice']['FormattedPrice'],
  470. 'retail_price' => $product['OfferSummary']['LowestUsedPrice']['FormattedPrice'],
  471. 'r_datetime' => db_now(),
  472. );
  473. //TODO:暫定処理
  474. foreach ($data as $key => $value) {
  475. if (is_null($value)) {
  476. $data[$key] = '';
  477. }
  478. }
  479. return db_insert('c_review', $data);
  480. }
  481. function do_c_review_add_insert_c_review_comment($c_review_id , $c_member_id, $body, $satisfaction_level)
  482. {
  483. $data = array(
  484. 'c_review_id' => intval($c_review_id),
  485. 'c_member_id' => intval($c_member_id),
  486. 'body' => $body,
  487. 'satisfaction_level' => intval($satisfaction_level),
  488. 'r_datetime' => db_now(),
  489. 'u_datetime' => db_now(),
  490. );
  491. return db_insert('c_review_comment', $data);
  492. }
  493. function do_h_review_edit_update_c_review_comment($c_review_comment_id, $body, $satisfaction_level)
  494. {
  495. $data = array(
  496. 'body' => $body,
  497. 'satisfaction_level' => intval($satisfaction_level),
  498. 'u_datetime' => db_now(),
  499. );
  500. $where = array('c_review_comment_id' => intval($c_review_comment_id));
  501. return db_update('c_review_comment', $data, $where);
  502. }
  503. function do_h_review_edit_delete_c_review_comment($c_review_comment_id)
  504. {
  505. $sql = 'DELETE FROM c_review_comment WHERE c_review_comment_id = ?';
  506. $params = array(intval($c_review_comment_id));
  507. db_query($sql, $params);
  508. }
  509. function do_h_review_clip_add_insert_c_review_clip($c_review_id, $c_member_id)
  510. {
  511. $data = array(
  512. 'c_member_id' => intval($c_member_id),
  513. 'c_review_id' => intval($c_review_id),
  514. 'r_datetime' => db_now(),
  515. );
  516. return db_insert('c_review_clip', $data);
  517. }
  518. function do_c_member_review_insert_c_commu_review($c_review_id, $c_member_id, $c_commu_id)
  519. {
  520. $data = array(
  521. 'c_commu_id' => intval($c_commu_id),
  522. 'c_review_id' => intval($c_review_id),
  523. 'c_member_id' => intval($c_member_id),
  524. 'r_datetime' => db_now(),
  525. );
  526. return db_insert('c_commu_review', $data);
  527. }
  528. function do_h_review_clip_list_delete_c_review_clip($c_member_id , $c_review_clips)
  529. {
  530. if (!is_array($c_review_clips)) {
  531. return false;
  532. }
  533. $ids = implode(',', array_map('intval', $c_review_clips));
  534. $sql = 'DELETE FROM c_review_clip WHERE c_member_id = ?' .
  535. ' AND c_review_id IN ('.$ids.')';
  536. $params = array(intval($c_member_id));
  537. return db_query($sql, $params);
  538. }
  539. function do_delete_c_review4c_review_id($c_review_id)
  540. {
  541. $params = array(intval($c_review_id));
  542. // c_review
  543. $sql = 'DELETE FROM c_review WHERE c_review_id = ?';
  544. db_query($sql, $params);
  545. // c_review_clip
  546. $sql = 'DELETE FROM c_review_clip WHERE c_review_id = ?';
  547. db_query($sql, $params);
  548. // c_commu_review
  549. $sql = 'DELETE FROM c_commu_review WHERE c_review_id = ?';
  550. db_query($sql, $params);
  551. }
  552. //コミュニティのおすすめレビューを削除
  553. function db_review_delete_c_review4c_review_id($c_review_id)
  554. {
  555. $sql = 'DELETE FROM c_review WHERE c_review_id = ?';
  556. $params = array(intval($c_review_id));
  557. db_query($sql, $params);
  558. }
  559. //コミュニティのおすすめレビューを削除
  560. function db_review_delete_c_commu_review4c_commu_review_id($c_commu_review_id)
  561. {
  562. $sql = 'DELETE FROM c_commu_review WHERE c_commu_review_id = ?';
  563. $params = array(intval($c_commu_review_id));
  564. db_query($sql, $params);
  565. }
  566. //コミュニティのおすすめレビューを取得(一つ)
  567. function db_review_get_c_commu_review_one4c_commu_review_id($c_commu_review_id)
  568. {
  569. $sql = 'SELECT * FROM c_commu_review WHERE c_commu_review_id = ?';
  570. $params = array(intval($c_commu_review_id));
  571. return db_get_row($sql, $params);
  572. }
  573. function db_review_c_review_id4asin($asin)
  574. {
  575. $sql = 'SELECT c_review_id FROM c_review'
  576. . ' WHERE asin = ?';
  577. return db_get_one($sql, array($asin));
  578. }
  579. function db_review_update_old_c_review($c_review_id)
  580. {
  581. $timestamp = date('Y-m-d H:i:s', strtotime('-1 month'));
  582. $sql = 'SELECT * FROM c_review'
  583. . ' WHERE c_review_id = ?'
  584. . ' AND r_datetime < ?';
  585. $params = array(intval($c_review_id), $timestamp);
  586. $c_review = db_get_row($sql, $params);
  587. if ($c_review) {
  588. $asin = $c_review['asin'];
  589. $product = db_review_write_product4asin($asin);
  590. if ($product) {
  591. $data = array(
  592. 'title' => $product['ItemAttributes']['Title'],
  593. 'release_date' => $product['ItemAttributes']['PublicationDate'],
  594. 'manufacturer' => $product['ItemAttributes']['Manufacturer'],
  595. 'author' => $product['author'],
  596. 'image_small' => $product['SmallImage']['URL'],
  597. 'image_medium' => $product['MediumImage']['URL'],
  598. 'image_large' => $product['LargeImage']['URL'],
  599. 'url' => $product['DetailPageURL'],
  600. 'asin' => $product['ASIN'],
  601. 'list_price' => $product['ListPrice']['FormattedPrice'],
  602. 'retail_price' => $product['OfferSummary']['LowestUsedPrice']['FormattedPrice'],
  603. 'r_datetime' => db_now(),
  604. );
  605. foreach ($data as $key => $value) {
  606. if (is_null($value)) {
  607. $data[$key] = '';
  608. }
  609. }
  610. $where = array('c_review_id' => intval($c_review_id));
  611. db_update('c_review', $data, $where);
  612. }
  613. }
  614. }
  615. ?>