<?php

//現在の時刻
define(TODAY,date("Ymd"));
define(TODAYS,date("YmdHi"));

#---------------------------------------------#
#            ケータイ電話のキャリアを取得
#---------------------------------------------#
function get_carrier()
{
	$agent=$_SERVER["HTTP_USER_AGENT"];
	/*
	if(ereg("iPhone|iPad|Android|dream|CUPCAKE|blackberry|webOS|incognito|webmate|MobileSafari|IEMobile|Windows Phone|Symbian",$agent)){
	*/

	// PC、スマホ、携帯　手動切り替え
	if( !empty($_GET['terminal']) ){
		$_COOKIE['terminal'] = $_GET['terminal'];
	  setcookie('terminal', $_GET['terminal'], 0);
	}

	// Cookie での 端末切り替え
	if( $_COOKIE['terminal'] == 'sp' ){
			$terminal="SP";
			define(PDir,'sp/');//ディレクトリ
	}else if( $_COOKIE['terminal'] == 'mo' ){
			$terminal="MO";
			define(PDir,'i/');//ディレクトリ
	}else if( $_COOKIE['terminal'] == 'pc' ){
			$terminal="PC";
			define(PDir,'pc/');//ディレクトリ
	}else{
		//	// スマホ (Android以外) iPad除く
			if(ereg("iPhone|dream|CUPCAKE|blackberry|webOS|incognito|webmate|MobileSafari|IEMobile|Windows Phone|Symbian",$agent)){
				$terminal="SP";
				define(PDir,'sp/');//ディレクトリ

			// Android（タブレット除く）
			}else if( ereg("Android",$agent) && ereg("Mobile",$agent) ){
				$terminal="SP";
				define(PDir,'sp/');//ディレクトリ

			}else if(ereg("DoCoMo|Vodafone|J-PHON|SoftBank|UP.Browser|KDDI",$agent) || GMAS_FLAG){
				$terminal="MO";
				define(PDir,'i/');//ディレクトリ
			}else{
				$terminal="PC";
				define(PDir,'pc/');//ディレクトリ
			}
	}

	define(Terminal,$terminal);

	return $terminal;
}

#---------------------------------------------#
#            ケータイ電話のキャリアを取得
#---------------------------------------------#
function get_mobile()
{
	$agent=$_SERVER["HTTP_USER_AGENT"];
	if(ereg("DoCoMo",$agent))
		$terminal=1;
	else if(ereg("Vodafone|J-PHON|SoftBank|WILLCOM|DDIPOCKET",$agent))
		$terminal=3;
	else if(ereg("UP.Browser|KDDI",$agent))
		$terminal=2;
	else if(ereg("iPhone|iPod",$agent))
		$terminal=11;
	else if(ereg("Android",$agent))
		$terminal=12;
	else
		$terminal=0;

	return($terminal);
}

#---------------------------------------------#
#            ケータイ電話の個別IDを取得
#---------------------------------------------#
function get_carrid($terminal=0)
{
	$agent=$_SERVER["HTTP_USER_AGENT"];
	$id="";
	if($terminal==1){
		preg_match("/^.+ser([0-9a-zA-Z]+).*$/", $agent, $match);
		$id = $match[1];
	}else if($terminal==2){
		$id = $_SERVER['HTTP_X_UP_SUBNO'];
	}else if($terminal==3){
		preg_match("/^.+\/SN([0-9a-zA-Z]+).*$/", $agent, $match);
		$id = $match[1];
	};
	return($id);
}

#---------------------------------------------#
#         			キャリア別プラグイン
#---------------------------------------------#
function plug_carry($QSS='',$PLUGIN='')
{
	if($QSS!='reguler' && $QSS!='mobilefan' && SPLUG && !$PLUGIN) $PLUGIN=SPLUG;
	if(!$QSS && !$PLUGIN) return;

	$plugin=$QSS;
	if($PLUGIN) $plugin=$PLUGIN;

	$soeji1=$soeji2="";
	if(Terminal=='MO'){ $soeji1="i/";$soeji2="-i"; };
	if(Terminal=='SP'){ $soeji1="sp/";$soeji2="-sp"; };
	if(preg_match("/".$soeji2."$/", $plugin)) $soeji2="";

	$SPLUG=ini_dir.$soeji1."inc-".$plugin.$soeji2.".php";
	if(!file_exists($SPLUG) && $soeji1) $SPLUG=ini_dir."inc-".$plugin.".php";

	return $SPLUG;
}

#---------------------------------------------#
#            	    		日付の計算
#---------------------------------------------#
function FutureDay($DAT='',$d='',$m='',$y='') {

	// 未来の日付を求める
	// 引数$DATには 20200831 のような形式の日付を表す文字列が入る。
	$DAT=substr($DAT,0,8)."0000";
	$stamp=TimeStamp($DAT,$d,$m,$y);
	$f_day=date("Ymd", $stamp);//."0000";
	return $f_day;

}

#---------------------------------------------#
#            	    	経過日数の計算
#---------------------------------------------#
function BetweenDay($DAT1='',$DAT2='') {

	$DAT1=substr($DAT1,0,8)."0000";
	$stamp1=TimeStamp($DAT1,0);
	$DAT2=substr($DAT2,0,8)."0000";
	$stamp2=TimeStamp($DAT2,0);

	$one_day = 60 * 60 * 24; //1日の秒数
	$a_day=floor(($stamp2 - $stamp1) / $one_day);

	return $a_day;

}

#---------------------------------------------#
#            	    	月の最終日を計算
#---------------------------------------------#
function LastDay($year='', $month='') {
	return date("t", mktime(0, 0, 0, $month, 1, $year));
    //return date("d", strtotime(sprintf("%d-%d-01 -1 day", $year, $month + 1)));
}

#---------------------------------------------#
#            	    タイムスタンプを求める
#---------------------------------------------#
function TimeStamp($DAT=array(),$d=0,$m=0,$y=0,$h=0) {

	$date["year"]= ereg_replace("([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})", "\\1", $DAT);
	$date["mon"]= ereg_replace("([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})", "\\2", $DAT);
	$date["mday"]= ereg_replace("([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})", "\\3", $DAT);
	$date["hour"]= ereg_replace("([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})", "\\4", $DAT);
	$date["min"]= ereg_replace("([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})", "\\5", $DAT);

	// 未来の日付を求める
	//$stamp = mktime(0, 0, 0, $date["mon"] + $m, $date["mday"] + $i, $date["year"] + $y);
	$stamp = mktime($date["hour"] + $h , $date["min"],0, $date["mon"] + $m , $date["mday"] + $d , $date["year"] + $y);

	return $stamp;
}

#---------------------------------------------#
#         月の日数が31日の場合もそうでない場合も正確に1ヶ月後の日数を算出できるようにする
#---------------------------------------------#
function addMonth($add_month) {
		//　タイムゾーンを日本時間にあわせる
		date_default_timezone_set('Asia/Tokyo');
		
		$date = date('Y-m-d');
		// 特殊な条件下でも機能するか試す。
        // 年月日別に分離
        $year = date('Y', strtotime($date));
        $month = date('n', strtotime($date));
        $day = date('j', strtotime($date));

        // 年を跨ぐ場合
        if ($month + $add_month > 12) {
        	$add_year = ($month + $add_month) / 12;
            $year += $add_year;
            // $month + $add_month を12で割った余りが0なら月は12月
            if( ($month + $add_month) % 12 === 0) {
				$month = 12;
			// それ以外は $month + $add_month を12で割った余りが月
			}else {
				$month = ($month + $add_month) % 12;
			}

        } else {
            $month = $month + $add_month;
        }

        // 算出結果の日付を返す
        if (checkdate($month, $day, $year)) {
            return date('Ymd', strtotime(sprintf('%04d-%02d-%02d', $year, $month, $day)));
        } else {
            // 2月31日などになった場合、月末の日付を返す
            return date('Ymd', strtotime(sprintf('%04d-%02d-01 -1 day', $year, ($month+1))));
        }
}

#---------------------------------------------#
#          多次元配列対応stripslashes
#---------------------------------------------#
function stripslashes_deep($value)
{
	//文字コード検出順番
	mb_language("Japanese");
	mb_internal_encoding("SJIS");
	mb_detect_order("ASCII, EUC-JP, SJIS, JIS, UTF-8");
	//mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS");

    if(is_array($value)){
		$value=array_map('stripslashes_deep', $value);
	}else{
		$value.=" ";
		$value=mb_convert_encoding($value, "EUC-JP", mb_detect_order());
		$value=stripslashes($value);
		$value=rtrim($value," ");
		$value=mb_convert_encoding($value, "SJIS", "EUC-JP");
	}

    return $value;
}

#---------------------------------------------#
#                     デコード処理
#---------------------------------------------#
function  decode($req=array())
{
	if(!sizeof($req)) { return; };
	$str_search = array('&',';',',','<','>','&lt;&gt;',"'",'!','"','$','^','*',"\t","\r\n","\r","\n","\0",'&#184;'); //不都合な文字（配列1）
	$str_replace = array('＆','&#59;','&#44;','&lt;','&gt;','<>','&#39;','&#33;','&quot;','&#36;','&#94;','&#42;',"","<br>","<br>","<br>","",','); //置き換える文字（配列2）
	$P=array();

	//文字コード検出順番
	mb_language("Japanese");
	mb_internal_encoding("SJIS");
	mb_detect_order("ASCII, EUC-JP, SJIS, JIS, UTF-8");
	//mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS");

	//多次元配列対応stripslashes実行
	if(get_magic_quotes_gpc()) $req=stripslashes_deep($req);

	foreach ($req as $key => $value) {
		if($key!="" && !is_array($value)){
			$value=mb_convert_encoding($value, "EUC-JP", "SJIS");
			$value=str_replace($str_search,$str_replace,$value);
			$P[$key]=mb_convert_encoding($value, "SJIS", "EUC-JP");
		}elseif($key!="" && is_array($value)){
			foreach ($value as $k => $v) {
				$v=mb_convert_encoding($v, "EUC-JP", "SJIS");
				$v=str_replace($str_search,$str_replace,$v);
				$P[$key][$k]=mb_convert_encoding($v, "SJIS", "EUC-JP");
			}
		}
	}
	return $P;
}

#---------------------------------------------#
#                     	POST decode
#---------------------------------------------#
function  copy_decode($req=array())
{
	if(!sizeof($req)) { return; };
	$str_search = array(';',',','<','>','&lt;&gt;',"'",'!','"','$','^','*',"\t","\r\n","\r","\n","\0",'&#184;'); //不都合な文字（配列1）
	$str_replace = array('&#59;','&#44;','&lt;','&gt;','<>','&#39;','&#33;','&quot;','&#36;','&#94;','&#42;',"","<br>","<br>","<br>","",','); //置き換える文字（配列2）
	$Q=array();

	//文字コード検出順番
	mb_language("Japanese");
	mb_internal_encoding("SJIS");
	mb_detect_order("ASCII, EUC-JP, SJIS, JIS, UTF-8");
	//mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS");

	//多次元配列対応stripslashes実行
	if(get_magic_quotes_gpc()) $req=stripslashes_deep($req);

	//decode;
	foreach ($req as $key => $value) {
		if($key=="PHPSESSID"){ break; };
		if($key!=""){
			if(!is_array($value)){
				$value=mb_convert_encoding($value, "EUC-JP","auto");
				$value=str_replace($str_search,$str_replace,$value);
				$Q[$key]=mb_convert_encoding($value, "SJIS", "EUC-JP");
			}else{
				foreach($value as $k => $v){
					if(is_array($v)){
						$Q[$key][$k] = $v;
					}else{
						$v=mb_convert_encoding($v, "EUC-JP", "auto");
						$v=str_replace($str_search,$str_replace,$v);
						$Q[$key][$k]=mb_convert_encoding($v, "SJIS", "EUC-JP");
					}
				}
			}
		}
	}

	return $Q;
}

#---------------------------------------------#
#                     		text encode
#---------------------------------------------#
function  encode_text($req='')
{
	if(!$req) { return; };
	$str_search = array("<br>","&quot;","&#39;","&lt;","&gt;","&#44;","&#59;"); //不都合な文字（配列1）
	$str_replace = array("\n","'",'"',"<",">",",",";"); //置き換える文字（配列2）

	//encode;
	$R = str_replace($str_search,$str_replace,$req);
	return $R;

}

#---------------------------------------------#
#           拡張フォーム専用変換(特定タグ許可)
#---------------------------------------------#
function  encode_input($text='')
{
	if(!$text) { return; };
	if(Terminal!='PC') return $text;

	require_once(plug_dir."kses.php");

	//encode_textで一旦文字列のエスケープを除去
	$text=str_replace("'","",encode_text($text));
	$text=str_replace("\n","<br>",$text);

	$allowed = array(
	    'b' => array(),
	    'i' => array(),
	    'u' => array(),
	    'strike' => array(),
	    'div' => array('align' => 1),
	    'hr' => array('size' => 1),
	    'font' => array('color' => 1,'size' => 1),
	    'br' => array(),
	    'strong' => array(),
	    'em' => array(),
	    'p' => array('align' => 1)
	);

	$text = kses($text, $allowed, array('http', 'https'));
	//$text=autolink($text,0,1);

	//フォームの囲み記号を除去
	$text=preg_replace('/="([#A-Za-z0-9]*)"/','=\1',$text);

	//encode_textの逆処理でエスケープを復元
	$str_search = array("'",'"',",");//不都合な文字（配列1）
	$str_replace = array("&quot;","&#39;","&#44;");//置き換える文字（配列2）
	$R = str_replace($str_search,$str_replace,$text);

	return $R;
}

#---------------------------------------------#
#           フォーム専用変換encode_text(除外タグ)
#---------------------------------------------#
function  encode_form($tQ,$out='')
{
	if(!$tQ) { return; };
	if(is_array($tQ)){
		$Q=array();
		foreach($tQ as $k => $v){
			if($k==$out){
				if(Terminal=='PC') $Q{$k}=$v;
				elseif(is_array($v)){
					foreach($v as $a => $b) $Q{$k}[$a]=encode_text(strip_tags($b,"<br>,<>"));
				}else{
					$Q{$k}=encode_text(strip_tags($v,"<br>,<>"));
				}
			}else{
				if(is_array($v)){
					foreach($v as $a => $b) $Q{$k}[$a]=encode_text(strip_tags($b,"<br>,<>"));
				}else{
					$Q{$k}=encode_text(strip_tags($v,"<br>,<>"));
				}
			}
		}
	}else{
		$Q=encode_text(strip_tags($tQ,"<br>,<>"));
	}

	return $Q;
}


#---------------------------------------------#
#                      カラーセット
#---------------------------------------------#

function  color_set($LINE_TAG,$CSS_TEXT,$CSS_TABLE)
{
	$sample_text=array("color=#000044","color=#FFFFFF","size=-1","size=-1 color=#FF6699","color=#FF6699","size=-1","size=-1","size=-1",'style="font-size:8pt; line-height:110%;"',"size=-1","size=-1");
	$sample_table=array("bgcolor=#000044","bgcolor=#000044","bgcolor=#FFFFFF","bgcolor=#044889","bgcolor=#dddddd","bgcolor=#2B3094","bgcolor=#666666",'style="padding: 1 10 1 10px;background-color:#770000;font-size:10px;font-weight:bold;"','style="margin: 1px;padding: 3px;border: 1px dotted #0000FF;background-color:#000429;"','style="padding: 1 10 1 10px;background-color:#000077;font-size:10px;font-weight:bold;"',"bgcolor=#000000");

	$i=0;
	while($sample_text[$i]){
		if($CSS_TEXT[$i]){ $sample_text[$i]=$CSS_TEXT[$i]; };
		define("CS_TEXT"."$i",$sample_text[$i]);
		++$i;
	}

	$i=0;
	while($sample_table[$i]){
		if($CSS_TABLE[$i]){ $sample_table[$i]=$CSS_TABLE[$i]; };
		define("CS_TABLE"."$i",$sample_table[$i]);
		++$i;
	}

	if(!$LINE_TAG){ $LINE_TAG="<hr size=1>\n"; };
	define(LINE_TAG,$LINE_TAG);
}

#---------------------------------------------#
#             		 	リクエスト生成（GET）
#---------------------------------------------#
//継承キー(TAB0(area1),TAB1(area2),TAB1B(area2B),TAB2(genre),TAB3,TAB4,ページ番号,商品ID,プラグイン(inc),フラグ,クライアントID,検索用,,コンパニオンID,プラグイン2,フラグ,'',pass,市町村)
//$RQKEY=array('K0','K1','KB','K2','K3','K4','peg','ct','plug','tag','ID','SC','OR','GID','ss','virtual','tag2','PAGE','tag3','tab','S0','S1','S2','S3','S4','NO','SKi');
$RQKEY=array('K0','K1','KB','K2','K3','K4','peg','ct','plug','tag','ID','SC','OR','GID','ss','virtual','tag2','PAGE','tag3','tab','S0','S1','S2','S3','S4','NO','SKi','area');

//GET
function get_requests($REQ=array())
{
	global $RQKEY;

	$req="";
	foreach ($RQKEY as $key) {
		$value=$_REQUEST[$key];
		foreach ($REQ as $key2) { //不用リクエスト
			if($key == $key2){ $value=""; };
		}
		if($value!=""){
			if(is_array($_REQUEST[$key])){
				foreach($_REQUEST[$key] as $k => $v){
					$t=str_replace("\0","",stripslashes(htmlspecialchars($v,ENT_QUOTES)));
					if($t!='') $req.="&".$key."[]=".$t;
				};
			}else{
				$req.="&$key=".str_replace("\0","",stripslashes(htmlspecialchars($value,ENT_QUOTES)));
			}
		}
	}
	return $req;
}

//PUT
function put_requests($REQ=array())
{
	global $RQKEY;

	$req="";
	foreach ($RQKEY as $key) {
		$value=$_REQUEST[$key];
		$flag=0;
		foreach ($REQ as $key2) { //不用リクエスト
			if($key == $key2){ $flag=1; };
		}
		if($flag){
			if(is_array($_REQUEST[$key])){
				foreach($_REQUEST[$key] as $k => $v){ $req.="&".$key."[]=".str_replace("\0","",stripslashes(htmlspecialchars($v,ENT_QUOTES))); };
			}else{
				$req.="&$key=".str_replace("\0","",stripslashes(htmlspecialchars($value,ENT_QUOTES)));
			}
		}
	}
	return $req;
}

#---------------------------------------------#
#                         継承キー生成（POST）
#---------------------------------------------#
function key_succession($KEY='')
{
	$TABLE="";
	if(!$KEY){ return false; };
	//その他変数を連想配列化
	if($KEY){
		$TEMP = split("&",$KEY);
		foreach ($TEMP as $row) {
			list ($key, $val) = split("=",$row);
			if(!$key){ continue; };
			$TABLE.="<input type=hidden name='$key' value='$val'>\n";
		}
	};
	return $TABLE;
}

#---------------------------------------------#
#             		 	任意のエラー画面
#---------------------------------------------#
function error($f='')
{
	echo($f."<br>");
	exit;
}

#---------------------------------------------#
#             		 	自動リンク生成
#---------------------------------------------#
function autolink($com,$flag=0)
{
	//削除URL
	$com = ereg_replace('[^=\"](https?|ftp)(:\/\/(www|mobile|smart).(cityheaven|girlsheaven-job).net\/[[:alnum:]\/\+\$\;\?\.%,!#~*/:@&=_-]+)', '>', $com);
	$com = ereg_replace('(https?|ftp)(:\/\/365diary.net\/[[:alnum:]\/\+\$\;\?\.%,!#~*/:@&=_-]+)', '', $com);
	$com = ereg_replace('(\"https?:\/\/(goo.gl)\/[[:alnum:]\/\+\$\;\"\'\?\.%,!#~*/:@&=_-]+)', '""', $com);
	$com = ereg_replace('(https?|ftp)(:\/\/(goo.gl)\/[[:alnum:]\/\+\$\;\?\.%,!#~*/:@&=_-]+)', '', $com);
	$com = str_replace('<a href="" target="_blank">女の子ページへ </a>', '女の子ページ', $com);
	$com = str_replace('<A HREF="" TARGET="_blank">女の子ページへ </A>', '女の子ページ', $com);

	if(!$flag){
		//autolink
		$com = ereg_replace("([a-zA-Z0-9_\.-]+\@)([a-zA-Z0-9_\.-]+)([a-zA-Z]+)","<a href=\"mailto:\\1\\2\\3\">\\1\\2\\3</a>",$com);
		if(Mobile) $com = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "<a href=\"\\1\\2\">\\1\\2</a>",$com);
		else $com = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "<a href=\"\\1\\2\" target=_blank>\\1\\2</a>",$com);

		//color=>|#000000|****|
		$com = mb_ereg_replace("\|(#[0-9a-fA-F]{6})\|(.*?)\|","<font color=\\1>\\2</font>",$com);
	}

	return $com;
}

#---------------------------------------------#
#             		 	自動カラー生成
#---------------------------------------------#
function autocolor($com='')
{
	$com = mb_ereg_replace("\|(#[0-9a-fA-F]{6})\|(.*?)\|","<font color=\\1>\\2</font>",$com);
	return $com;
}

#---------------------------------------------#
#                	SQLデータを連想配列化
#---------------------------------------------#
function  associative_array($DAT=array())
{
	trim($DAT,",");
	$ARRAY = split(",",$DAT);
	if(!$ARRAY){ return; };
	foreach ($ARRAY as $row) {
		list ($key, $val) = split("=>",$row);
		$PERIODS[$key]=$val;
	};
	return $PERIODS;
}

#---------------------------------------------#
#                	連想配列を分解結合
#---------------------------------------------#
function  associative_variable($DAT=array())
{
	if(!$DAT){ return; };
	$PERIODS="";
	foreach ($DAT as $key => $row) $PERIODS.=$key."=>".$row.",";
	if($PERIODS) $PERIODS=",".$PERIODS;

	return $PERIODS;
}

#---------------------------------------------#
#                	画像の最大公約数
#---------------------------------------------#
function  Size_width($Img='',$MaxW=0,$MaxH=0)
{
	if (!file_exists($Img) || !$MaxW || !$MaxH) return;

	list($W, $H, $type, $attr) = getimagesize($Img);
	// 画像表示縮小
	if ($W >= $MaxW || $H >= $MaxH || ($W <= $MaxW && $H <= $MaxH)) {
		$W2 = $MaxW / $W;
		$H2 = $MaxH / $H;
		if ($W2 < $H2) { $key = $W2; }else { $key = $H2; }
		$W = (int) ($W * $key) ;
		$H = (int) ($H * $key);
	}
	$Msize=array($W,$H);

	return $Msize;
}

#---------------------------------------------#
#           （新）sql読み込みモジュール::MDB
#---------------------------------------------#

//mysqlを読み込みデータ配列を作成する
//変数でリクエスト
function loadsqldata($query='',$NO='',$PAGE=''){
	// debug-kyoh
//	echo $query."<br><br>";
	// debug-kyoh

	//モジュール取り込み
	require_once 'MDB.php';

	// データソース名: 接続文字列です
	$dsn = "mysql://".sql_user.":".sql_pass."@".sql_local."/".sql_database;

	// MDB::connect は、成功した場合に PEAR MDB オブジェクト
	// 失敗した場合に PEAR MDB Error オブジェクトを返します
	$db = MDB::connect($dsn);

    $db->query('SET NAMES SJIS');

	// MDB::isError で、エラーと正常な接続を区別します
	if (MDB::isError($db)) { die ($db->getMessage()); }

	if(!$NO){ $NO=0; };
	if($PAGE){ $query.=" limit ".$NO.",".$PAGE; };

	//クエリー生成
	$result = $db->query($query);

	// $result がエラーでないことを常にチェックします
	//if (MDB::isError($result)) { die ($result->getMessage()); }
	//if (MDB::isError($result)) { die ($result->getDebugInfo()); }
	if (MDB::isError($result)) { return array(); }

	// データ配列作成
	$TEMPDATA=array();
	while ($row = $db->fetchInto($result, MDB_FETCHMODE_ASSOC)) {
		 $TEMPDATA[] = $row;
	}


	// 接続を閉じます
	$db->freeResult($result);
	$db->disconnect();

	if(!$TEMPDATA) $TEMPDATA=array();
    // debug-kyoh
//    echo $TEMPDATA."<br><br>";
    // debug-kyoh

    return $TEMPDATA;

}

#---------------------------------------------#
#              		（新）sql総数&PAGEno読み込み
#---------------------------------------------#

//mysqlを読み込みデータ配列を作成する
//変数でリクエスト
function loadsqlpage($cell,$table,$where,$key,$no='',$count='no_log'){

	$query1="SELECT num FROM ( SELECT @i := @i +1 AS num,".$count.",week FROM ( SELECT @i :=0 ) AS dummy, ( SELECT no_log".$cell." FROM ".$table." where ".$where.$key." ) AS count) AS temp WHERE ".$count." =".$no;
	$query2="select count(".$count.") from ".$table." where ".$where;

	//モジュール取り込み
	require_once 'MDB.php';

	// データソース名: 接続文字列です
	$dsn = "mysql://".sql_user.":".sql_pass."@".sql_local."/".sql_database;

	// MDB::connect は、成功した場合に PEAR MDB オブジェクト
	// 失敗した場合に PEAR MDB Error オブジェクトを返します
	$db = MDB::connect($dsn);

    $db->query('SET NAMES SJIS');

	// MDB::isError で、エラーと正常な接続を区別します
	if (MDB::isError($db)) { die ($db->getMessage()); }

	//データー総数
	$PEG=$db->fetchOne($db->query($query1));
	$TOTAL=$db->fetchOne($db->query($query2));

	// 接続を閉じます
	$db->disconnect();

	if(!$TOTAL) $TOTAL=0;
	$PEG-=1;if($PEG<1) $PEG=0;
	if(!$no && $no!='0') $PEG="";

	return array($TOTAL,$PEG);

}


#---------------------------------------------#
#              		（新）sql総数読み込み
#---------------------------------------------#

//mysqlを読み込みデータ配列を作成する
//変数でリクエスト
function loadsqltotal($query=''){
//echo $query."<br><br>";

	//モジュール取り込み
	require_once 'MDB.php';

	// データソース名: 接続文字列です
	$dsn = "mysql://".sql_user.":".sql_pass."@".sql_local."/".sql_database;

	// MDB::connect は、成功した場合に PEAR MDB オブジェクト
	// 失敗した場合に PEAR MDB Error オブジェクトを返します
	$db = MDB::connect($dsn);

	$db->query('SET NAMES SJIS');

	// MDB::isError で、エラーと正常な接続を区別します
	if (MDB::isError($db)) { die ($db->getMessage()); }

	//データー総数
	$TOTAL=$db->fetchOne($db->query($query));

	// 接続を閉じます
	$db->disconnect();

	if(!$TOTAL) $TOTAL=0;
	return $TOTAL;

}


// debug-s kyoh
// refer from
// ad-box/mount/htdocs/mount/module_file_new/option/inc-shoplist.php
// ContCTno_discount($ID)
/**
 *　指定IDが、ゴチ券、見た割、ホテ割を実施しているかどうか
 *
 * @param $ID
 * @return array|void
 */
function checkDiscount($ID)
{
    if ($ID == '') return;

    $discount = array();

    // mount/module_file_new/option/discount.php は、discountpageのみしか対応していないため、SQL処理はコピーしてきた。
    $discount['ticket']="SELECT id_log FROM ".sql_tickettable." as b join ".sql_conttable." on (ct_log=no_ct) WHERE sys_log=1 and sys_ct=1 and start_ct<=".TODAY." and(end_ct is NULL or end_ct>=".TODAY.") and temp1_log>0";//ticket
    $discount['mitawari']="SELECT id_log FROM ".sql_mitawaritable." as a WHERE sys_log=1";//mitawari
    $discount['hotewari']="SELECT id_ct as id_log FROM ".sql_conttable." as c WHERE sys_ct=1 and flug_ct='hotewari' and start_ct<=".TODAY." and(end_ct is NULL or end_ct>=".TODAY.")"; //hotewari

    //契約読みこみ
    $data = array();
    $data['ticket'] = loadsqldata($discount['ticket'] . " and id_log=" . $ID, "0", "1");
    $data['mitawari'] = loadsqldata($discount['mitawari'] . " and id_log=" . $ID, "0", "1");
    $data['hotewari'] = loadsqldata($discount['hotewari'] . " and id_ct=" . $ID, "0", "1");
    return $data;
}
// debug-e kyoh

#---------------------------------------------#
#          				実ファイルの読込
#---------------------------------------------#
// 機能 ファイルの読込
// 引数 $file: ファイル名
//　　　$str: ファイル内容
function loadfile($file='',$NO=0,$PAGE=0) {
	if(!file_exists($file)) { return; };
	$t=0;$TEMP=array();$S=array();
	$str = @file($file);
	if($str){
		while($str[$t]){
			if($t<$NO) continue;
			$str[$t]=preg_replace("/\r|\n/","",$str[$t]);
			$TEMP=split(",",$str[$t]);
			$S[]=$TEMP;
			$t++;
			if($t>$PAGE && $PAGE) break;
		}
	}
	return $S;
}

#---------------------------------------------#
#           	   			file LOCK
#---------------------------------------------#
function filelock($lockfile='lock/lock.txt'){
	$retry = 3;
	# 30秒以上古いロックは削除する
	if (file_exists($lockfile)) {
		$mtime = filemtime($lockfile);
		if ($mtime < time() - 30) {
			if (file_exists($lockfile)) {rmdir($lockfile);};
		}
	}
	# ロック用ディレクトリを作成する
	while (!@mkdir($lockfile, 0755)) {
		if ($retry-- <= 0) { print $lockfile;exit;}
		sleep(1);
	}
}

#---------------------------------------------#
#         			homepageリンク先生成
#---------------------------------------------#
//MO,DATA,GID,OFFI,count,otherOFFI
function HomeLink($term,$DATA,$GID='',$flag=0,$ANA='',$link='',$cflag="",$HOMELINK="")
{
	global $CONTRACT_LINK,$CONT_FLAG;

	if(!$term) $term=Terminal;
	if(!$DATA) return;
	$contract=($DATA["couse_".$term."_p"]+0);

	//URLを置き換え
	$URL=car_dir($DATA,$term,data_full);
	if($GID!='' && $URL) $URL.="?GID=".$GID;

	//オフィシャルURL
	$official = associative_array($DATA["official_p"]);// 契約商品
	$OFFI=$official[$term];
	if(!$OFFI) foreach($CONTRACT_LINK as $k => $v) if($official[$k]) $OFFI=$official[$k];
	if($link!='') $OFFI=$link;
	if(($flag || !$CONTRACT_LINK[$term][$contract]) && $OFFI) $URL=$OFFI;

	//モバイルファン
	if(CTPLUG=='fan' && !$flag){
		$dir=str_replace('#HOME#/',"",$CONTRACT_LINK[$term][2]);
		$URL="https://".$CONT_FLAG['fan'][1].$dir."view.php?ID=".$DATA["id_p"];
	}

	//ポータルカウンター
	if(MYHOME=='' && CTPLUG!='' && Terminal!='' && !$cflag) ana_count($DATA,$ANA);

	if($HOMELINK!='') $URL=$HOMELINK;//スルー

	return $URL;

}

#---------------------------------------------#
#         mobilefanリンク先生成
#---------------------------------------------#
function FanLink($term,$ID)
{
	global $SC_set;

	if(!$term) $term=Terminal;
	if(!$ID) return;

	$displog=PortSql($ID,"fan");//モバイルファン
	if(!$displog) return;
	$URL=$SC_set['adbox']['mobilefan']['link'][$term].$displog['fan']['no_log'];

	return $URL;

}

#---------------------------------------------#
#                      portalアクセス
#---------------------------------------------#

function  ana_count($DATA,$ANA)
{
	global $ANADATA;

	if(!$ANADATA) $ANADATA=array();
	$ANA_name=QSS;
	if($ANA) $ANA_name=$ANA;
	if(!$ANA_name) return;

	$DATA['anaqss']=$ANA_name;
	$ANADATA[]=$DATA;

}


#---------------------------------------------#
#                      サイトディレクトリ
#---------------------------------------------#
function  car_dir($DATA,$term,$durl="")
{
	global $CONTRACT_LINK;
	$contract=($DATA["couse_".$term."_p"]+0);
	$dir="";
	if($CONTRACT_LINK[$term][$contract] && $DATA['dir_p']) $dir=str_replace('#HOME#',$durl.$DATA['dir_p'],$CONTRACT_LINK[$term][$contract]);

	return $dir;
}

#---------------------------------------------#
#         			コンテンツ契約SQL
#---------------------------------------------#
function ContSql($CONT_TABLE,$CONT_QUERY_WHERE,$QSS=QSS)
{
	//契約追加
	$CONT_TABLE.=" join ".sql_conttable." on (";
	$CONT_TABLE.=" sys_ct='1' and flug_ct='".$QSS."' and no_ct=ct_log";
	$CONT_TABLE.=" and (";
	if(CTPLUG) $CONT_TABLE.="ctplug_ct='".CTPLUG."' or ";
		elseif(MYHOME!='') $CONT_TABLE.="ctplug_ct is not NULL or ";
	$CONT_TABLE.="ctplug_ct is NULL))";
	$CONT_QUERY_WHERE.=" and (start_ct<=".TODAY." and start_ct is not NULL) and (end_ct>=".TODAY." or end_ct is NULL)";

	$CONT_QUERY_WHERE=str_replace("(couse_".Terminal."_p>1)","couse_".Terminal."_p>0",$CONT_QUERY_WHERE);

	return array($CONT_TABLE,$CONT_QUERY_WHERE);
}

function ContSql_order($CONT_TABLE,$CONT_QUERY_WHERE,$QSS=QSS)
{
	//契約追加（複数）
	$CONT_TABLE.=" join ".sql_conttable." on (";
	$CONT_TABLE.=" sys_ct='1' and flug_ct='".$QSS."'";
	if(CTPLUG) $CONT_TABLE.=" and ctplug_ct='".CTPLUG."'";
	$CONT_TABLE.=" and (no_ct=ct_log or cts_log LIKE concat('%',no_ct,'%'))";
	$CONT_TABLE.=")";
	$CONT_QUERY_WHERE.=" and (start_ct<=".TODAY." and start_ct is not NULL) and (end_ct>=".TODAY." or end_ct is NULL)";

	$CONT_QUERY_WHERE=str_replace("(couse_".Terminal."_p>1)","couse_".Terminal."_p>0",$CONT_QUERY_WHERE);

	return array($CONT_TABLE,$CONT_QUERY_WHERE);
}

#---------------------------------------------#
#  各店舗ごとのパターン表示[未定] 部分の変更文字列を取得
#---------------------------------------------#
/**
 * 各店舗ごとに設定されている文字列を返答します。
 *
 * "client_shop_default_words"テーブルに直接
 * shop_id, def_wordsを設定してください。
 * 未設定の場合はnullを返答。
 *
 * @param $shop_id
 * @return string
 */
function get_default_words($shop_id)
{
	$ret = null;

	$query = "select def_words from client_shop_default_words where shop_id='" . $shop_id . "'";
	$data=loadsqldata($query,"","");
    if($data){ $ret = $data[0]['def_words']; }

	return $ret;
}

#---------------------------------------------#
#         			ポータル契約SQL
#---------------------------------------------#
function PortSql($ID,$ctplug='')
{
	//モバイルファン
	$cell=$table="";
	if($ctplug=='fan'){
		$cell=",no_log";
		$table=" join ".sql_mobilefantable." on (id_log=".$ID.")";
	}

	//SQL読みこみ
	$query="select ct_cp,ct_cp,start_cp,end_cp".$cell." from ".sql_disptable." ".$table." where id_cp='".$ID."' and sys_cp='1' and (end_cp is NULL or end_cp>=".TODAY.")";
	if(!MAS_FLAG) $query.=" and start_cp<=".TODAY;
	if($ctplug) $query.=" and ct_cp='".$ctplug."'";
	$data=loadsqldata($query,"","");

	$DISPLOG=array();
	if($data) foreach($data as $val) $DISPLOG[$val['ct_cp']]=array('start_cp'=>$val['start_cp'],'start_cp'=>$val['start_cp'],'end_cp'=>$val['end_cp'],'no_log'=>$val['no_log']);

	return $DISPLOG;
}

#---------------------------------------------#
#             		フリーワード生成
#---------------------------------------------#

function FREEWORD($KEY,$WORD) {

	//SQLフリーワード
	$S_WHERE="";
	if($WORD!=""){
		$i=0;
		$S_WHERE.=" and (";
		while($KEY[$i]){
			if($i) $S_WHERE.=" or ";
			$temp1=mb_convert_kana($WORD,"KRC","SJIS");
			$temp2=mb_convert_kana($WORD,"ka","SJIS");
			$temp3="";
			$temp3=$KEY[$i]." LIKE '%".$WORD."%'";
			if($temp1!=$WORD) $temp3.=" or ".$KEY[$i]." LIKE '%".$temp1."%'";
			if($temp1!=$temp2 && $WORD!=$temp2) $temp3.=" or ".$KEY[$i]." LIKE '%".$temp2."%'";
			//$temp3=query_p_cp($temp3,$KEY[$i]);
			$S_WHERE.=$temp3;
			++$i;
		};
		$S_WHERE.=")";
	};

	return $S_WHERE;
}

#---------------------------------------------#
#             日毎IPソート
#---------------------------------------------#

function SORT_TODAY($TODAY=TODAY) {

	if($_SERVER["REMOTE_ADDR"]){
		$ip=explode(".",$_SERVER["REMOTE_ADDR"]);
		$TODAY=$ip[3].$TODAY;
	}

	return $TODAY;
}


#---------------------------------------------#
#                            SQL設定
#---------------------------------------------#

#----------- クライアントSQL（maintable）-------#
$SQL_TABLE=client_shop_t;//（from節）
$SQL_QUERY_CELL=" id_p,sys_p,dir_p,couse_MO_p,couse_PC_p,couse_SP_p,tel_p,official_p";
$SQL_QUERY_CELL.=",name_p as name,namefuri_p,sort_p,area_p,genre_p";
$SQL_QUERY_KEY=" order by sort_p";
$SQL_QUERY_WHERE=" id_p<>''";

#---------------------------------------------#
#                     		処理実行
#---------------------------------------------#

//管理モード移行
if($customfile!="admin.php" || MYHOME=='') define('MAS_FLAG','0');
if($customfile!="admin-mem.php" || MYHOME=='') define('GMAS_FLAG','0');

//デコード処理
if($_POST){ $Q=copy_decode($_POST); }
if($_GET){ $Q=decode($_GET); };

//IDチェック
if(MYHOME!=''){
	$SQL_QUERY_WHERE.=" and dir_p='".MYHOME."'";
	$query="select id_p,dir_p from ".$SQL_TABLE." where ".$SQL_QUERY_WHERE;
	$ID=loadsqldata($query,0,1);
	if($ID[0]['id_p']=='' || !$ID) error('現在、このページは公開されておりません。 - 1'."co",1);
	define(ID,$ID[0]['id_p']);

}elseif($Q{'ID'}!='') define(ID,$Q{'ID'}); else define(ID,'');
if(ID!='' && CTPLUG!='fan') $SQL_QUERY_WHERE.=" and id_p='".ID."'";
else if(ID!='' && CTPLUG=='fan') $SQL_QUERY_WHERE.=" and M.no_log='".ID."'";

//処理変数
//コンテンツコード
define(QSS,$Q{'ss'});

//pluginページ設定
$splug=QSS;
if($Q{'plug'}) $splug=$Q{'plug'};
define(SPLUG,$splug);

//コンテンツNO or 契約コード
if($Q{'bord'}) define(CTNO,$Q{'bord'});
define(CTNO,'');

?>
