require_once('../prepare.php');
require_once('lib/search_function.php');
//- テーマ検索「スイーツ」選択時はスイーツトップへ
if(9 == $p['theme'] && "theme" == $p['mode']){
$url = sprintf("%s/sweets/sweets_top.php",KTY_BASE_URL);
header("Location: ".$url);
exit;
}
function search_list( $p )
{
$this->db = cs4_open();
//- keywords文字化け対応(何故だ?)
if(!empty($p['page']) && $p['mode'] == "keywords"){
$p['keywords'] = base64_decode($p['keywords']);
}
//-- 追加絞り込み検索対応
if(!empty($p['pre_terms'])){
//- 前回検索条件を unserialize() してセット
$tmp_pre_terms = unserialize(base64_decode($p['pre_terms']));
$p['pre_terms'] = $tmp_pre_terms;
//- 絞り込みキーワードを保持する(表示用)
$add_keywords = "";
if("add" == $p['mode']){
$add_keywords = $p['keywords'];
}
//- mode を保持する
$p['mode'] = ($p['mode'] != $p['pre_terms']['mode']) ? $p['pre_terms']['mode'] : $p['mode'];
switch($p['mode']){
case "ing_select":
$p['vegetable'] = $p['pre_terms']['vegetable'];
$p['meat'] = $p['pre_terms']['meat'];
$p['fish'] = $p['pre_terms']['fish'];
$p['other'] = $p['pre_terms']['other'];
break;
case "mix_search":
$p['genre'] = $p['pre_terms']['genre'];
$p['ing_genre'] = $p['pre_terms']['ing_genre'];
$p['cook'] = $p['pre_terms']['cook'];
$p['kind'] = $p['pre_terms']['kind'];
$p['calorie'] = $p['pre_terms']['calorie'];
break;
case "theme":
$p['theme'] = $p['pre_terms']['theme'];
break;
case "keywords":
//- keywords を保持する
if(empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){
$p['keywords'] = $p['pre_terms']['keywords'];
}elseif(!empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){
$p['keywords'] = sprintf("%s %s",$p['keywords'] ,$p['pre_terms']['keywords']);
}
break;
case "rcp_name":
//- keywords を保持する
if(empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){
$p['keywords'] = $p['pre_terms']['keywords'];
}elseif(!empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){
$p['keywords'] = sprintf("%s %s",$p['keywords'] ,$p['pre_terms']['keywords']);
}
break;
}
//$p['keywords'] = (empty($p['keywords'])) ? $p['pre_terms']['keywords'] : $p['keywords'];
}
$terms = $p;
//---- 該当条件レシピ一覧を取得
$rcp_list = search_getRcpList($this->db,$terms);
//- mode毎にkeyphraseセット
switch($terms['mode']){
case "keywords":
$title = "キーワード(材料)から探す";
if(empty($terms['keywords'])){
if(!empty($terms['pre_terms']['keywords'])){
$tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['pre_terms']['keywords'])));
}
}else{
$tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['keywords'])));
}
$keyphrase[] = $tmp_key;
break;
case "rcp_name":
$title = "キーワード(レシピ名)から探す";
if(empty($terms['keywords'])){
if(!empty($terms['pre_terms']['keywords'])){
$tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['pre_terms']['keywords'])));
}
}else{
$tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['keywords'])));
}
$keyphrase[] = $tmp_key;
break;
case "ing_select":
$vegetable_list = array(
'101' => 'トマト',
'102' => 'キャベツ',
'103' => 'ニンジン',
'104' => 'タマネギ',
'105' => 'ピーマン',
'106' => 'ダイコン',
'107' => 'ホウレンソウ',
'108' => 'ナス',
'109' => 'カボチャ',
'110' => 'イモ類',
'111' => 'キノコ類'
);
$meat_list = array(
'201' => '牛肉',
'202' => '鶏肉',
'203' => '豚肉',
'204' => 'ひき肉',
'205' => '加工品'
);
$fish_list = array(
'301' => 'あじ・いわし',
'302' => 'かつお',
'303' => 'さけ',
'304' => 'さば',
'305' => 'さんま',
'306' => 'ぶり',
'307' => 'いか・たこ',
'308' => 'えび',
'309' => '貝類',
'310' => '缶詰・乾物・加工品'
);
$other_list = array(
'401' => '海藻類',
'402' => '乾物・加工品',
'403' => '卵・乳製品',
'404' => '豆・豆加工品'
);
$title = "";
$tmp_key = "";
if(empty($terms['vegetable'])){
if(!empty($terms['pre_terms']['vegetable'])){
$tmp_key = array('name' => 'vegetable','phrase' => sprintf("・野菜:%s",$vegetable_list[urldecode($terms['pre_terms']['vegetable'])]));
}
}else{
$tmp_key = array('name' => 'vegetable','phrase' => sprintf("・野菜:%s",$vegetable_list[urldecode($terms['vegetable'])]));
}
if(!empty($tmp_key)){
$keyphrase[] = $tmp_key;
}
$tmp_key = "";
if(empty($terms['meat'])){
if(!empty($terms['pre_terms']['meat'])){
$tmp_key = array('name' => 'meat','phrase' => sprintf("・お肉:%s",$meat_list[urldecode($terms['pre_terms']['vegetable'])]));
}
}else{
$tmp_key = array('name' => 'meat','phrase' => sprintf("・お肉:%s",$meat_list[urldecode($terms['meat'])]));
}
if(!empty($tmp_key)){
$keyphrase[] = $tmp_key;
}
$tmp_key = "";
if(empty($terms['fish'])){
if(!empty($terms['pre_terms']['fish'])){
$tmp_key = array('name' => 'fish','phrase' => sprintf("・お魚:%s",$fish_list[urldecode($terms['pre_terms']['fish'])]));
}
}else{
$tmp_key = array('name' => 'fish','phrase' => sprintf("・お魚:%s",$fish_list[urldecode($terms['fish'])]));
}
if(!empty($tmp_key)){
$keyphrase[] = $tmp_key;
}
$tmp_key = "";
if(empty($terms['other'])){
if(!empty($terms['pre_terms']['other'])){
$tmp_key = array('name' => 'other','phrase' => sprintf("・いろいろ素材:%s",$other_list[urldecode($terms['pre_terms']['other'])]));
}
}else{
$tmp_key = array('name' => 'other','phrase' => sprintf("・いろいろ素材:%s",$other_list[urldecode($terms['other'])]));
}
if(!empty($terms['keywords'])){
$keyphrase[] = array('name' => 'keywords','phrase' => sprintf("・絞り込み:%s",$terms['keywords'] ));
}
if(!empty($tmp_key)){
$keyphrase[] = $tmp_key;
}
break;
case "mix_search":
$title = "組み合わせから探す";
$ing_genre_arr = array(
'200' => '肉類',
'300' => '魚介類',
'401' => '海藻類',
'100' => '野菜類',
'402' => '乾物・加工品',
'403' => '卵・乳製品',
'404' => '豆・豆加工品'
);
$cal_arr = array(
'1' => '100kcal未満',
'2' => '100-199',
'3' => '200-299',
'4' => '300-399',
'5' => '400-499',
'6' => '500-599',
'7' => '600以上'
);
if(!empty($terms['genre']) && '0' != $terms['genre']){
$genre_detail = rcp_getMenuList($this->db,$terms['genre']);
$tmp_key = array('name' => 'genre','phrase' => sprintf("・ジャンル:%s",$genre_detail['r_menu_nm']));
$keyphrase[] = $tmp_key;
}
if(!empty($terms['ing_genre']) && '0' != $terms['ing_genre']){
$tmp_key = array('name' => 'ing_genre','phrase' => sprintf("・素材:%s",$ing_genre_arr[$terms['ing_genre']]));
$keyphrase[] = $tmp_key;
}
if(!empty($terms['cook']) && '0' != $terms['cook']){
$cook = bsc_get_rcp_howto_cook($this->db,$terms['cook']);
$tmp_key = array('name' => 'cook','phrase' => sprintf("・調理法:%s",$cook));
$keyphrase[] = $tmp_key;
}
if(!empty($terms['kind']) && '0' != $terms['kind']){
$kind = bsc_get_rcp_kind($this->db,$terms['kind']);
$tmp_key = array('name' => 'kind','phrase' => sprintf("・種類:%s",$kind[0]['r_knd_nm']));
$keyphrase[] = $tmp_key;
}
if(!empty($terms['calorie']) && '0' != $terms['calorie']){
$kind = bsc_get_rcp_kind($this->db,$terms['calorie']);
$tmp_key = array('name' => 'calorie','phrase' => sprintf("・カロリー:%s",$cal_arr[$terms['calorie']]));
$keyphrase[] = $tmp_key;
}
if(!empty($terms['keywords'])){
$keyphrase[] = array('name' => 'keywords','phrase' => sprintf("・絞り込み:%s",$terms['keywords'] ));
}
break;
case "tmp_search":
$title = "材料から探す";
if(!empty($terms['meat'])){
$meet = rcp_getIngDetail($this->db,$terms['ing_meet']);
$keyphrase[] = array('name' => 'ing_meet','phrase' => sprintf("・肉類:%s",$meet['mtr_nm']));
}
if(!empty($terms['fish'])){
$fish = rcp_getIngDetail($this->db,$terms['ing_fish']);
$keyphrase[] = array('name' => 'ing_fish','phrase' => sprintf("・魚介類:%s",$fish['mtr_nm']));
}
if(!empty($terms['vegetable'])){
$veget = rcp_getIngDetail($this->db,$terms['ing_veget']);
$keyphrase[] = array('name' => 'ing_veget','phrase' => sprintf("・野菜類:%s",$veget['mtr_nm']));
}
if(!empty($terms['other'])){
$other_ing = rcp_getIngDetail($this->db,$terms['ing_other']);
$keyphrase[] = array('name' => 'ing_other','phrase' => sprintf("・その他:%s",$other_ing['mtr_nm']));
}
break;
case "theme":
$style_arr = bsc_get_rcp_RcpStyle_arr($this->db);
$title = "選択テーマ";
$keyphrase[] = array('name' => 'theme','phrase' => sprintf("・%s",$style_arr[$terms['theme']]));
break;
}
//- ページ番号セット
$terms['page'] = (empty($terms['page'])) ? "1" : $terms['page'] ;
$count = ($rcp_list['list']) ? count($rcp_list['list']) : false ;
// デバッグ
if(constant('RECIPE_DEBUG_MODE')){
print "
-------------------
bh_recipe_search.php L178 Count -> ";
var_dump($count);
}
// テンプレート読み込み
$template =& loadTemplate( $p );
//- Keyphrase表示
for($i=0;$isetCurrentBlock('__SearchKey__');
$template->setVariable('keyphrase',$keyphrase[$i]['phrase']);
$template->parseCurrentBlock();
}
/*
//- 絞り込み条表示件
if(!empty($add_keywords)){
$template->setCurrentBlock('__AddKeywords__');
$template->setVariable('phrase',sprintf("・絞り込み:%s",$add_keywords));
$template->parseCurrentBlock();
}
*/
//- 検索エラーハンドリング
if($count){
$template->setCurrentBlock('__SerachResult__');
$template->setVariable('count',$count);
$template->parseCurrentBlock();
$template->hideBlock('__SearchError__');
}else{
$template->TouchBlock('__SearchError__');
}
//-- レシピ一覧作成
$start = ($terms['page'] - 1) * constant('RCP_LIST_COUNT');
$limit = (($start + constant('RCP_LIST_COUNT')) > $count) ? $count : $start + constant('RCP_LIST_COUNT');
$add_param = "";
for($i=0;$isetCurrentBlock('__RecipeList__');
$template->setVariable('url',$detail_url);
$template->setVariable('rcp_name',$rcp_list['list'][$i]['rcp_nm']);
$img_f = sprintf("%s_n-s.jpg",$rcp_list['list'][$i]['uniq_id']);
$img = sprintf("%s/%s",constant('IMG_DIR_RECIPE'),$img_f);
if(file_exists($img)){
$template->setVariable('img',sprintf("",str_replace(KTY_SERVER_ROOT,"",$img)));
}
$template->parseCurrentBlock();
//print $rcp_list['list'][$i]['rcp_no']." >>> ".$rcp_list['list'][$i]['rcp_nm']."
";
}
//- サーチエラー処理
if(1 > $count){
switch($terms['mode']){
case "words":
$template->TouchBlock('__SearchWords__');
break;
case "ing":
$template->TouchBlock('__SearchIng__');
break;
case "calorie":
$template->TouchBlock('__SearchCalorie__');
break;
case "style":
$template->TouchBlock('__SearchStyle__');
break;
case "quick":
default:
break;
}
}
//- キーワードが追加されたときは、既存に追加してセットする
$base_keywords = "";
$base_keywords .= sprintf("%s ",$terms['keywords']);
/*
if(!empty($terms['keywords']) && '' != $terms['keywords']){
if( !strstr( $base_keywords, $terms['keywords'] ) ){
$base_keywords .= sprintf("%s ",$terms['keywords']);
}
}
if(!empty($terms['add_keywords']) && '' != $terms['add_keywords']){
if( !strstr( $base_keywords, $terms['add_keywords'] ) ){
$base_keywords .= sprintf("%s ",$terms['add_keywords']);
}
}
if(!empty($terms['pre_terms']['keywords']) && '' != $terms['pre_terms']['keywords']){
if( !strstr( $base_keywords, $terms['pre_terms']['keywords'] ) ){
$base_keywords .= sprintf("%s ",$terms['pre_terms']['keywords']);
}
}
if(!empty($terms['pre_terms']['add_keywords']) && '' != $terms['pre_terms']['add_keywords']){
if( !strstr( $base_keywords, $terms['pre_terms']['add_keywords'] ) ){
$base_keywords .= sprintf("%s ",$terms['pre_terms']['add_keywords']);
}
}
*/
//- 新規検索フォーム表示(全mode共通)
$template->touchBlock('__SearchForm__');
/*
$template->setCurrentBlock('__SearchForm__');
if('0' < $count && $count != false){
$template->setVariable('mode',$terms['mode']);
$template->setVariable('add',true);
if(!empty($base_keywords)){
$template->setVariable('add_keywords',$base_keywords);
}
}else{
}
if(!empty($terms['main']) && '0' != $terms['main']){
$holder_name = sprintf("m_selected_%d",$terms['main']);
$template->setVariable($holder_name,'selected');
}
if(!empty($terms['cook']) && '0' != $terms['cook']){
$holder_name = sprintf("c_selected_%d",$terms['cook']);
$template->setVariable($holder_name,'selected');
}
$template->parseCurrentBlock();
*/
/*
if(!empty($terms['kind']) && '0' != $terms['kind']){
$holder_name = sprintf("k_selected_%d",$terms['kind']);
$template->setVariable($holder_name,'selected');
}
*/
$kind_arr = bsc_get_rcp_kind($this->db);
if(!empty($kind_arr)){
for($i=0;$isetCurrentBlock('__Kind__');
$template->setVariable('val',$kind_arr[$i]['uniq_id']);
$template->setVariable('show',$kind_arr[$i]['r_knd_nm']);
if($kind_arr[$i]['r_knd_no'] == $terms['kind']){
$template->setVariable('selected','selected');
}
$template->parseCurrentBlock();
}
}
if(constant('RECIPE_DEBUG_MODE')){
print "
Page Now -> ".$terms['page']."
\n";
print "Total Count -> ".$count."
\n";
print "Show Limit -> ".$limit."
\n";
}
$key_str = "";
if($terms['page'] > '1'){
$template->setCurrentBlock('__PagePrev__');
$template->setVariable('prev_page',($terms['page'] - 1));
$template->setVariable('page_mode_pre',$terms['mode']);
switch($terms['mode']){
case "ing_select":
for($i=0;$isetVariable('terms',$key_str);
break;
case "keywords":
case "rcp_name":
$template->setVariable('terms',sprintf("&keywords=%s&kw_mode=%s",urlencode(base64_encode($terms['keywords'])),$terms['kw_mode']));
break;
case "quick":
for($i=0;$isetVariable('terms',$key_str);
break;
case "ing":
for($i=0;$isetVariable('terms',$key_str);
break;
case "mix_search":
//$template->setVariable('terms',sprintf("&p[calorie]=%s",$terms['calorie']));
for($i=0;$isetVariable('terms',$key_str);
break;
case "theme":
//$template->setVariable('terms',sprintf("&p[%s]=%s",urlencode($terms['keywords'])));
for($i=0;$isetVariable('terms',$key_str);
break;
default:
break;
}
$template->parseCurrentBlock();
}else{
$template->hideBlock('__PagePrev__');
}
if($count > $limit){
$template->setCurrentBlock('__PageNext__');
$template->setVariable('next_page',($terms['page'] + 1));
$template->setVariable('page_mode_next',$terms['mode']);
switch($terms['mode']){
case "ing_select":
for($i=0;$isetVariable('terms',$key_str);
break;
case "keywords":
case "rcp_name":
$template->setVariable('terms',sprintf("&keywords=%s&kw_mode=%s",urlencode(base64_encode($terms['keywords'])),$terms['kw_mode']));
//print "encode -> ".urlencode($terms['keywords'])."
";
//$template->setVariable('terms',sprintf("&p[keywords]=%s&p[test]=1",base64_encode($terms['keywords'])));
//$template->setVariable('terms',sprintf("&p[keywords]=%s",$terms['keywords']));
break;
case "quick":
for($i=0;$isetVariable('terms',$key_str);
break;
case "mix_search":
for($i=0;$isetVariable('terms',$key_str);
break;
case "cal":
//$template->setVariable('terms',sprintf("&p[calorie]=%s",$terms['calorie']));
for($i=0;$isetVariable('terms',$key_str);
break;
case "theme":
for($i=0;$isetVariable('terms',$key_str);
break;
default:
break;
}
$template->parseCurrentBlock();
}else{
$template->hideBlock('__PageNext__');
}
//- pre_terms を一旦消去
$terms['pre_terms'] = "";
if(!empty($base_keywords)){
$terms['keywords'] = trim($base_keywords);
}
if(!$count || '0' == $count){
$terms = "";
}
if(constant('RECIPE_DEBUG_MODE')){
//print "\n
--- User Input Page ---\n
Set PreTerms Keywords -> ";
//var_dump($terms['keywords']);
}
if($count){
//- 絞り込み検索(フリーワードセット)
if(!empty($base_keywords)){
$_now_terms = serialize($terms);
$now_terms = base64_encode($_now_terms);
$template->setCurrentBlock('__SearchAddWords__');
$template->setVariable('add_keywords',mb_convert_kana(trim($base_keywords),"KV"));
$template->setVariable('pre_terms',$now_terms);
$template->parseCurrentBlock();
}else{
$template->touchBlock('__SearchAddWords__');
}
}
$template->parseCurrentBlock();
$template->show();
cs4_close($this->db);
}
//var_dump($p);
search_list( $p );
?>