<?php
//-------------------------------------------------------------------//
// SDK-Sample-04「楽天Kobo電子書籍の検索」
//-------------------------------------------------------------------//
$app_title_head='SDK-Sample-04';
$app_title_header='「楽天Kobo電子書籍の検索」';
// ライブラリファイル等の読込
require_once dirname(__FILE__).'/../autoload.php';
require_once dirname(__FILE__).'/config.php';
require_once dirname(__FILE__).'/helper.php';
// 変数の初期化
$response = null;
$search_keyword = '';
$page = 1;
$search_sort = 'standard';
// 検索結果の取得
if (isset($_GET['search_keyword'])) {
// Clientインスタンスを生成 Make client instance
$rwsclient = new RakutenRws_Client();
// アプリIDをセット Set Application ID
$rwsclient->setApplicationId(RAKUTEN_APP_ID);
// アフィリエイトIDをセット (任意) Set Affiliate ID (Optional)
$rwsclient->setAffiliateId(RAKUTEN_APP_AFFILITE_ID);
// GETデータの取得
$search_keyword = $_GET['search_keyword'];
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$search_sort = $_GET['search_sort'];
$hits = '10';
// 検索用配列の準備
$serch_array = array(
'keyword' => $search_keyword,
'page' => $page,
'sort' => $search_sort,
'hits' => $hits,
);
// 楽天Kobo電子書籍検索API で電子書籍を検索
$response = $rwsclient->execute('KoboEbookSearch',$serch_array);
}
//-------------------------------------------------------------------//
// HTMLの表示
//-------------------------------------------------------------------//
show_header(); // ヘッダーの表示
show_credit_logo(); // クレジットロゴの表示
if($_GET){// GETデータが有る場合の表示
// フォームの表示
show_search_form($search_keyword,$search_sort);
if ($response && $response->isOk()) {// レスポンスが正常かどうかを isOk() で確認する
show_search_result($response);
// pagerの表示
show_pager($page,$response,$search_keyword,$search_sort);
}else{
// レスポンスが異常の場合、getMessage() でレスポンスメッセージを取得
echo '<p align="center">Error:'.$response->getMessage().'</p>';
}
}else{// GETデータが無い場合の表示
show_search_form($search_keyword,$search_sort);
show_usage();
}
show_footer(); // フッターの表示
//-------------------------------------------------------------------//
// 関数
//-------------------------------------------------------------------//
/**
* 使用方法の表示関数
*/
function show_usage(){
echo<<<EOD
<div class="usage">
<p>「Rukuten Developers」提供の楽天Kobo電子書籍検索APIを使用した「楽天Kobo電子書籍の検索プログラム」です。</p>
<p>※ソート順を指定してキーワード検索することが出来ます。</p>
<h3>【使用方法】</h3>
<ol>
<li>【ソート順】をドロップリストから選択します。</li>
<li>【キーワード】を入力します。</li>
<li>【検索】ボタンで検索します。</li>
<li>ページャーの数字リンクでページにジャンプ出来ます。</li>
<ol>
</div>
EOD;
}
/**
* Pagerの表示関数
*/
function show_pager($page,$response,$keyword,$sort){
echo '<div class="pager">';
echo $pager = pager(
(int)$page,
(int)$response['pageCount'],
'?search_keyword=%s&search_sort=%s&page=%d',
$keyword,
$sort
);
echo '</div>';
}
/**
* 検索結果の表示関数
*/
function show_search_result($result){
echo '<div align="center">';
echo '<table border=1>';
$no=0;
foreach ($result as $item) {
$no++;
echo '<tr>';
echo '<td rowspan=2>';
echo $no;
echo '</td>';
echo '<td colspan=2>';
// タイトル「title」
echo '<a href="' . $item['affiliateUrl'] . '" class="title" target="_blank">' . h(mb_strimwidth($item['title'], 0, 56, '...', 'UTF-8')) . '</a><br>';
echo '</td>';
echo '</tr>';
echo '<tr>';
echo '<td>';
// 出版社「publisherName」
echo '【出版社】'. $item['publisherName'];
echo '</td>';
echo '<td>';
// 商品価格「itemPrice」
echo '【価格】';
$item_price = $item['itemPrice'];
$formated_price = number_format($item_price);
echo $formated_price . '円';
echo '</td>';
echo '</tr>';
}
echo '</table>';
echo '</div>';
}
/**
* ヘッダー部の表示関数
*/
function show_header(){
global $app_title_head;
global $app_title_header;
echo<<<EOD
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>$app_title_head</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<header>
<h1 align="center"><a href="index.php">$app_title_header</a></h1>
</header>
EOD;
}
/**
* クレジットロゴ部の表示関数
*/
function show_credit_logo(){
echo<<<EOD
<div class="credit-logo">
<!-- Rakuten Web Services Attribution Snippet FROM HERE -->
<a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_31130.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="311" height="30"/></a>
<!-- Rakuten Web Services Attribution Snippet TO HERE -->
</div>
EOD;
}
/**
* フォーム部の表示関数
*/
function show_search_form($keyword,$sort){
echo '<nav class="search-form">';
echo '<form action="index.php" method="GET">';
echo '【キーワード】';
echo '<input id="keyword" class="keyword" name="search_keyword" type="text" value="'.
h($keyword).'">';
echo '<input type="submit" class="search-button" value="【検索】">';
echo '<br>';
echo '【ソート順】';
echo '<select name="search_sort">';
echo '<option value="standard"'.($sort == 'standard' ? ' selected' : '').'>標準ソート順</option>';
echo '<option value="+releaseDate"'.($sort == '+releaseDate' ? ' selected' : '').'>発売日の古い順</option>';
echo '<option value="-releaseDate"'.($sort == '-releaseDate' ? ' selected' : '').'>発売日の新しい順</option>';
echo '<option value="+itemPrice"'.($sort == '+itemPrice' ? ' selected' : '').'>価格が安い順</option>';
echo '<option value="-itemPrice"'.($sort == '-itemPrice' ? ' selected' : '').'>価格が高い順</option>';
echo '<option value="reviewCount"'.($sort == 'reviewCount' ? ' selected' : '').'>レビューの件数が多い順</option>';
echo '<option value="reviewAverage"'.($sort == 'reviewAverage' ? ' selected' : '').'>レビューの評価(平均)が高い順</option>';
echo '</select>';
echo '</form>';
echo '</nav>';
}
/**
* フッター部の表示関数
*/
function show_footer(){
echo<<<EOD
<div class="copyright" align="center">
<p><small>©2019 R10.Oh!Happy.JP</small></p>
</body>
</html>
EOD;
}
?>