// アドオン利用権限確認 require_once dirname(__DIR__, 2) . '/libs/common_addon.php'; // OGP、METAタグ関連 try { // 特殊文字をエスケープ $cl_stm_cd = SQLIN($_REQUEST['scd']); $sql = "SELECT * FROM cl_stm_tb WHERE cl_stm_cd = :cl_stm_cd"; $obj = $db->prepare($sql); $obj->bindValue(":cl_stm_cd", $cl_stm_cd, PDO::PARAM_STR); $obj->execute(); if (!$shop = $obj->fetch(PDO::FETCH_ASSOC)) { // お店が存在しない header ("location:" .BASE_SSL_URL. "/404.php"); exit; } elseif ($shop['status'] == "2") { // 2:削除 // お店が削除されている header ("location:" .BASE_SSL_URL. "/404.php"); exit; } elseif ($shop['cl_stm_type'] == "1" || $shop['cl_stm_type'] == "2") { // cl_stm_type 1:投稿, 2:飲食店トライアル // 投稿店・無料店は取り合えず非表示 header ("location:" .BASE_SSL_URL. "/404.php"); exit; } else { // ステータスが有効のショップ http_response_code(200); //$_SESSION['scd'] = $shop['cl_stm_cd']; // ユーザー登録時の紐付け setcookie('scd', $shop['cl_stm_cd'], time() + 60 * 86400, '/', COOKIE_TARGET); // 掲載フラグが0ならば掲載 掲載フラグが0以外でもプレビューの場合は掲載 if($shop['publish_flg'] !== 0 && $_GET['pv'] != 1 && empty($_GET['preview_token'])) { header ("location:" .BASE_SSL_URL. "/404.php"); exit; } // カレントパス $currentUrl = BASE_SSL_URL . "/storeDetail.php?scd=" . $shop['cl_stm_cd']; // 画像URI $url = SHOP_CDN . $shop['cl_stm_cd'] . "_L.jpg"; @$headers = get_headers($url); // 画像リンク切れの判定(画像を消してしまった等)herokuで遅いので省略 if (stripos($headers[0], "200 OK")) { $main_thumnail = $url; } else { $main_thumnail = BASE_SSL_URL . "/assets/img/noimage_seihoukei_gray.svg"; } // twitterの専用画像があるか判定 $twitter_image_path = S3_BASE_URL . 'pic/sns_ogp_tw/' . $shop['cl_stm_cd'] . '.jpg'; $headers = @get_headers($twitter_image_path); if (stripos($headers[0], "200 OK")) { $twitter_thumnail = $twitter_image_path; } else { // 無い場合はアイキャッチをメタタグに設定 $twitter_thumnail = $main_thumnail; } // facebookの専用画像があるか判定 $facebook_image_path = S3_BASE_URL . 'pic/sns_ogp_fb/' . $shop['cl_stm_cd'] . '.jpg'; $headers = @get_headers($facebook_image_path); if (stripos($headers[0], "200 OK")) { $facebook_thumnail = $facebook_image_path; } else { // 無い場合はアイキャッチをメタタグに設定 $facebook_thumnail = $main_thumnail; } // カバー画像(メインの背景) if ($shop['cl_stm_cover']) { if (strstr($shop['cl_stm_cover'], 'cover_')) { $cover_img_path = COV_CDN . $shop['cl_stm_cover']; } else { $cover_img_path = COV_CDN . $shop['cl_stm_cover'] . "/" . $shop['cl_stm_cover'] . ".jpg"; } } else { $cover_img_path = "assets/img/headers/masonry2.jpg"; } // 列数(itemrows) $sql = "SELECT * FROM cl_stm_info WHERE cl_stm_cd = :cl_stm_cd"; $obj = $db->prepare($sql); $obj->bindValue(":cl_stm_cd", $shop['cl_stm_cd'], PDO::PARAM_STR); $obj->execute(); $stmInfo = $obj->fetch(PDO::FETCH_ASSOC); // METAタグ if ($_SERVER['SCRIPT_NAME'] == '/f/route.php' && isset($_REQUEST['page_id']) && $_REQUEST['page_id'] > 0) { $sql = " SELECT meta.cl_stm_cd , case when meta.cl_meta_title is null or meta.cl_meta_title = '' then :cl_stm_name || ' | ' || :cl_stm_catch_copy else meta.cl_meta_title end as cl_meta_title , case when freepage.file_page_description is null or freepage.file_page_description = '' then :cl_stm_list_text else freepage.file_page_description end cl_meta_disp , '' AS cl_meta_keyword , meta.regist_date , meta.update_date , meta.status FROM cl_stm_meta meta INNER JOIN cl_stm_freepage_tree_data freepage ON meta.cl_stm_cd = freepage.cl_stm_cd AND freepage.id = :page_id WHERE meta.cl_stm_cd = :cl_stm_cd AND freepage.status = 0 AND freepage.delete_flag = false"; $obj = $db->prepare($sql); $obj->bindValue(":cl_stm_name", $shop['cl_stm_name'], PDO::PARAM_STR); $obj->bindValue(":cl_stm_catch_copy", $shop['cl_stm_catch_copy'], PDO::PARAM_STR); $obj->bindValue(":cl_stm_list_text", $shop['cl_stm_list_text'], PDO::PARAM_STR); $obj->bindValue(":cl_stm_cd", $shop['cl_stm_cd'], PDO::PARAM_STR); $obj->bindValue(":page_id", $_REQUEST['page_id'], PDO::PARAM_INT); $obj->execute(); $rand = mt_rand(); } else { $sql = "SELECT * FROM cl_stm_meta WHERE cl_stm_cd = :cl_stm_cd"; $obj = $db->prepare($sql); $obj->bindValue(":cl_stm_cd", $shop['cl_stm_cd'], PDO::PARAM_STR); $obj->execute(); $rand = mt_rand(); } if ($meta = $obj->fetch(PDO::FETCH_ASSOC)) { $cl_meta_title = $meta['cl_meta_title']; $cl_meta_disp = $meta['cl_meta_disp']; // 各種タグ 改行コードを削除して出力 $cl_meta_disp = str_replace(array("\r\n", "\r", "\n"), '', $cl_meta_disp); // メタタグ・OGP設定 $OGP_title = sprintf("\n", $cl_meta_title); $OGP_description = sprintf("\n", $cl_meta_disp); $OGP_url = sprintf("\n", $currentUrl); $OGP_image = sprintf("\n", $facebook_thumnail); $Tw_title = sprintf("\n", $cl_meta_title); $Tw_description = sprintf("\n", $cl_meta_disp); $Tw_url = sprintf("\n", $currentUrl); $Tw_image = sprintf("\n", $twitter_thumnail); $META_title = $cl_meta_title; $META_description = $cl_meta_disp; $META_keyword = $meta['cl_meta_keyword']; } else { // 改行コードを削除して出力 $meta_list_text = str_replace(array("\r\n", "\r", "\n"), '', $shop['cl_stm_list_text']); $OGP_title = sprintf("\n", $shop['cl_stm_name']); $OGP_description = sprintf("\n", $meta_list_text); $OGP_url = sprintf("\n", $currentUrl); $OGP_image = sprintf("\n", $facebook_thumnail); $Tw_title = sprintf("\n", $shop['cl_stm_name']); $Tw_description = sprintf("\n", $meta_list_text); $Tw_url = sprintf("\n", $currentUrl); $Tw_image = sprintf("\n", $twitter_thumnail); $META_title = $shop['cl_stm_name']; $META_description = $meta_list_text; $META_keyword = PG_KEYWORD; } /**************************************************/ /********** ソーシャルカウント取得&更新 ******************/ /**************************************************/ $AP_ID = "1581362032128406"; $AP_SECRET = "a7770f73fb66e5cdd0def1aeb8c89d7d"; $access_token = $AP_ID . "|" . $AP_SECRET; $url = "https://home.tsuku2.jp/storeDetail.php?scd=" . $shop['cl_stm_cd']; //チェックするURL /**************************************************/ /************** お気に入り取得&更新 ******************/ /**************************************************/ try { $sql = "SELECT no FROM cl_stm_wish_tb WHERE wished_id = :wished_id AND type = :type AND status = :status"; $obj = $db->prepare($sql); $obj->bindValue(":wished_id", $shop['cl_stm_cd'], PDO::PARAM_STR); $obj->bindValue(":type", 3, PDO::PARAM_INT); $obj->bindValue(":status", 0, PDO::PARAM_INT); $obj->execute(); } catch (PDOException $e) { die($e->getMessage()); } $wish_cnt = $obj->rowCount(); // カウント数が同じ以下だったら更新しない if ($shop['wishcnt'] < $wish_cnt && !empty($wish_cnt)) { try { $update_sql = " UPDATE cl_stm_tb SET wishcnt = :wishcnt , per_update = NOW() WHERE cl_stm_cd = :cl_stm_cd "; $update_obj = $db->prepare($update_sql); $update_obj->bindValue(":wishcnt", $wish_cnt, PDO::PARAM_INT); $update_obj->bindValue(":cl_stm_cd", $shop['cl_stm_cd'], PDO::PARAM_STR); $update_obj->execute(); } catch (PDOException $e) { Er_writeLog($update_sql, $e->getMessage()); echo "クエリエラー"; exit; } } else { $wish_cnt = $shop['wishcnt']; } } } catch (PDOException $e) { die($e->getMessage()); } // プレビュートークンが有る場合はCSSを適応する require_once dirname(__DIR__, 2) . '/contents/libs/themePreview.php'; // プレビュートークン指定時にエラーが有った場合はalertを表示する $preview_token_error_msg_script = null; if (isset($_GET['preview_token'])) { $preview_template = themePreview_get_preview_css($_GET['preview_token'], $shop['cl_stm_cd']); if (!empty($preview_template['error'])) { $preview_token_error_msg_script = "alert('" . $preview_template['message'] . "')"; } } // テーマ if (!empty($preview_template['css_path']) && !empty($preview_template['error']) || empty($preview_template['css_path'])) { // テーマを取得 try { $sql = "SELECT * FROM cl_stm_shop_top_theme_type_mst WHERE status = :status ORDER BY orders"; $obj = $db->prepare($sql); $obj->bindValue(":status", 0, PDO::PARAM_INT); $obj->execute(); $mst_preview_data = $obj->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { die($e->getMessage()); } // テンプレートが設定されていない場合はmstの1番目になっているはず if (!empty($shop['shop_top_theme_type'])) { foreach ($mst_preview_data as $row) { if ($row['no'] == $shop['shop_top_theme_type']) { $preview_template['css_path'] = $row['css_path']; break; } } } // 最終補完 if (empty($shop['shop_top_theme_type'])) { $preview_template['css_path'] = $mst_preview_data[0]['css_path']; } } // header関連処理 // storeDetail,storeOrigin と他store関連ページの保持データ差分吸収 if(isset($shop[0]) && !empty($shop[0])) { $store_header_footer_data = $shop[0]; } else { $store_header_footer_data = $shop; } // アイコンの表示制御 try { $get_disp_flg_sql = " SELECT fanclub_icon_disp_flg , favorite_icon_disp_flg , mailmag_flg FROM cl_stm_tb WHERE cl_stm_cd = :cl_stm_cd "; $get_disp_flg_obj = $db->prepare($get_disp_flg_sql); $get_disp_flg_obj->bindValue(":cl_stm_cd", $store_header_footer_data['cl_stm_cd'], PDO::PARAM_STR); $get_disp_flg_obj->execute(); $icon_disp_flgs = $get_disp_flg_obj->fetch(PDO::FETCH_ASSOC); } catch (PDOException $e) { Er_writeLog($get_disp_flg_sql, $e->getMessage()); echo "アイコン表示制御データ取得エラー"; exit; } // ファンクラブ if(!empty($UsrObj) && $UsrObj['fanclub_cl_stm_cd'] == $store_header_footer_data['cl_stm_cd']) { $header_nav_sub_fan = 'active'; $no_event = "style=\"pointer-events: none;\""; } else { $header_nav_sub_fan = ''; $no_event = ''; } // お気に入り if(!empty($UsrObj)) { // 既にお気に入りに登録されている? try { $sql = "SELECT * FROM cl_stm_wish_tb WHERE id = :id AND type = :type AND wished_id = :wished_id AND status = :status"; $obj = $db->prepare($sql); $obj->bindValue(":id", $UsrObj['id'], PDO::PARAM_STR); $obj->bindValue(":type", 3, PDO::PARAM_INT); // タイプ(1:商品 2:クーポン 3:ショップ 4:グルメページ 5:ウェブチケ 6:サロン) $obj->bindValue(":wished_id", $store_header_footer_data['cl_stm_cd'], PDO::PARAM_STR); $obj->bindValue(":status", 0, PDO::PARAM_INT); $obj->execute(); if ($wished = $obj->fetch(PDO::FETCH_ASSOC)) { $header_nav_sub_fav = 'active'; } else { $header_nav_sub_fav = ''; } } catch (PDOException $e) { Er_writeLog($sql, $e->getMessage()); echo "お気に入り管理テーブル検索時エラー"; exit; } } // メルマガ購読済みか判定 if (!empty($UsrObj)) { try { $check_mailmag_reading_sql = " SELECT no FROM cl_stm_mailmagazine WHERE cl_stm_cd = :cl_stm_cd AND usr_id = :user_id AND status = :status "; $check_mailmag_reading_obj = $db->prepare($check_mailmag_reading_sql); $check_mailmag_reading_obj->bindValue(":cl_stm_cd", $store_header_footer_data['cl_stm_cd'], PDO::PARAM_STR); $check_mailmag_reading_obj->bindValue(":user_id", $UsrObj['id'], PDO::PARAM_STR); $check_mailmag_reading_obj->bindValue(":status", 1, PDO::PARAM_INT); $check_mailmag_reading_obj->execute(); if ($reading_mailmag = $check_mailmag_reading_obj->fetch(PDO::FETCH_ASSOC)) { $header_nav_sub_mailmag = 'active'; } else { $header_nav_sub_mailmag = ''; } } catch (PDOException $e) { Er_writeLog($check_mailmag_reading_sql, $e->getMessage()); echo "メルマガ管理テーブル検索時エラー"; exit; } } use libs\freepage\GlobalMenu; include_once dirname(__DIR__, 3).'/libs/freepage/GlobalMenu.php'; try { $gb = new GlobalMenu(); $gb ->make_html_pc() ->make_html_sp(); $menu_pc = $gb->get_html_pc(); $menu_sp = $gb->get_html_sp(); } catch (Exception $e) { echo '
ページを正しく表示できません。
ご迷惑をおかけして申し訳ございません。
'; die(); } // フリーページのテンプレート変更のためにショップコードを取得する if(empty($shop) && empty($shop[0])) { $shop['cl_stm_cd'] = $gb->get_cl_stm_cd(); }