*/
/**
* is_Session セッションチェック関数
* @brief セッションチェック関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
*/
function is_Session()
{
// session_start();
session_change_start();
// IDのチェック
if( isset($_SESSION["S_ID"]) == False ){
// エラー
return( False );
}
return( True );
}
/**
* Set_Session セッション登録関数
* @brief セッション登録関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* @param $id id
* @param $mail メールアドレス
* @param $sessionFlg セッションフラグ(初期値False)
* @return 常にTrue
*/
function Set_Session($id, $sessionFlg = False)
{
if ( $sessionFlg == False ) {
// session_start();
session_change_start();
}
// IDの設定
$_SESSION["S_ID"] = $id;
return( True );
}
/**
* Get_Session セッション取得関数
* @brief セッション取得関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $id [out]id
* @param $mail [out]メールアドレス
* @return 常にTrue
*/
function Get_Session(&$id, &$mail)
{
// session_start();
// IDの取得
$id = $_SESSION["S_ID"];
return( True );
}
/**
* is_Sequence シーケンスチェック関数
* @brief シーケンスチェック関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコードの見直し修正
* @return シーケンス存在時True
*/
function is_Sequence()
{
// session_start();
// シーケンスのチェック
if( isset($_SESSION["S_sequence"]) == False ){
// エラー
return( False );
}
return( True );
}
/**
* Set_Sequence シーケンス登録関数
* @brief シーケンス登録関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $sequence シーケンス
* @return 常にTrue
*/
function Set_Sequence($sequence)
{
// session_start();
// sequenceの設定
$_SESSION["S_sequence"] = $sequence;
return( True );
}
/**
* Get_Sequence シーケンス取得関数
* @brief シーケンス取得関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $sequence [out]シーケンス
* @return 常にTrue
*/
function Get_Sequence(&$sequence)
{
// session_start();
// Sequenceの取得
$sequence = $_SESSION["S_sequence"];
return( True );
}
/**
* 入口・出口の経路検索用地点IDを取得する。
*/
function getOnOffSpotID($spot_name, $dividion, $obj)
{
$ret = array();
$m_kind = (1 + $dividion);
$sql = "select distinct r.onoff_id as tollbooth_id from tbl_matrix m ";
$sql .= "inner join tbl_onoff_mst r on (r.matrix_kind = m.matrix_kind and r.matrix_cd = m.matrix_cd) ";
$sql .= "where m.matrix_kind = ".$m_kind." ";
$sql .= "and m.onoff_name = '".$spot_name."' ";
$rs = ExecSql($obj, $sql);
if (!$rs || pg_numrows($rs) < 1) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
}else{
$rows = pg_numrows($rs);
for ($row = 0; $row < $rows; $row++){
$DATA = pg_fetch_object($rs, $row); // 結果セットからレコードを1行取得する
$ret[] = $DATA->tollbooth_id;
}
}
return $ret;
}
/**
* ランプ入力チェック関数
*/
function CheckSpot2( $Name, $dividion )
{
$retval = False;
$m_kind = (1 + $dividion);
// 入力チェック
if( empty( $Name ) ){
//入口(出口)を入力してください
return -1;
}
if( IsStringError( $Name ) ){
//該当する入口(出口)名がありません
return 0;
}
$sql = "select onoff_name as spot_name From tbl_matrix ";
$sql .= " where onoff_name = " . Q($Name) . " ";;
$sql .= " and matrix_kind = " . $m_kind . " ";
$sql .= " group by onoff_name";
$obj = OpenDBConnectAssign(AP_CONNECT_STR);
if (!$obj) {
ErrorLogWrite(ERR_DBOPEN, AP_CONNECT_STR, __FILE__, __LINE__);
return 0;
}
$rs = ExecSql($obj, $sql);
if ( !$rs ) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
return 0;
}
if ( pg_num_rows($rs) > 0 ){
$retval = 1;
}else{
$retval = 0;
}
CloseDB($obj);
//TODO 暫定処置
if($retval == 1){
// if(($Name == LAMP_SANPO) || (($dividion == 1) && ($Name == LAMP_KOBENAGATA))){
if($Name == LAMP_SANPO){
return -2;
}
}
return $retval;
}
/**
* 戻り画面セッション登録関数
*/
function Set_BackURL($url)
{
// session_start();
// BackURLの設定
$_SESSION["S_BackURL"] = $url;
return( True );
}
/**
* 戻り画面セッション取得関数
*/
function Get_BackURL(&$url)
{
// session_start();
// BackURLの設定
if( isset($_SESSION["S_BackURL"]) == True ){
$url = $_SESSION["S_BackURL"];
}
return( True );
}
/**
* セッションクリア関数
*/
function Clear_Session()
{
// セッションの有無をチェック
if ( session_id() == "" ) {
// session_start();
session_change_start();
}
$_SESSION = array(); // 全てのセッション情報の定義をクリア
@session_destroy(); // セッション情報を破棄
return( True );
}
/**
* AccessLogWrite アクセスログ書き込み関数
* @brief アクセスログ書き込み関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $text 動作状況等のログ文字列
* @return 常にTrue
*/
function AccessLogWrite($text)
{
$stamp = time();
$user = $_ENV["USER"];
if ( $user != "" ) {
$user = "_" . $user;
}
$fExt = date('ymd', $stamp);
$fname = FILE_ACCESSLOG . $user . "." . $fExt; // ファイル名の最後に[.YMMDD]追加
//リクエストHTTPヘッダからUser-Agentを取得
$agent = $_SERVER['HTTP_USER_AGENT'];
//POST,GET情報の取得
$info = "";
while (list($req, $reqval) = each ($_REQUEST)) {
$info .= $req . "=" . $reqval . ";";
}
$stamp = time();
$data = "[" . date('Y/m/d H:i:s', $stamp) . "]"; //YYYY/MM/DD HH:MM:SS
$data .= "[" . $agent . "]"; //USER-AGENT
if ($_SERVER['HTTP_X_JPHONE_UID']){
$data .= "[" . $_SERVER['HTTP_X_JPHONE_UID'] . "]"; //HTTP_X_JPHONE_UID
}
$data .= "[" . getenv('REMOTE_ADDR') . "]"; //環境変数から取得した,リモートアドレス
$data .= "[" . $_SERVER["PHP_SELF"] . "]"; //アクセスURL
$data .= "[" . $info . "]"; //POST情報
$data .= "[" . $text . "]"; //動作状況等のログ
$data .= "\n";
WriteLine($fname, $data, 'a+');
//PHPSESSID=NULL対応
if( isset($_GET['PHPSESSID']) ) { //セッション有無チェック
if( empty($_GET['PHPSESSID']) ) {
header("Location: " . BASE_URL . TOP_URL );
exit();
}
}
return( True );
}
/**
* ErrorLogWrite エラーログ書き込み関数
* @brief エラーログ書き込み関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $lvl ログレベル(小さい値ほど致命的なもの)
* @param $text 動作状況等のログ文字列
* @param $filename エラー発生ファイル
* @param $line エラー発生行
* @return 常にTrue
*/
function ErrorLogWrite($lvl, $text, $filename, $line)
{
if (LOG_LVL_AVAIL >= $lvl) { // ログの有効なレベルか?
$stamp = time();
$user = $_ENV["USER"];
if ( $user != "" ) {
$user = "_" . $user;
}
$fExt = date('ymd', $stamp);
$fname = FILE_ERRORLOG . $user . "." . $fExt; // ファイル名の最後に[.YMMDD]追加
//リクエストHTTPヘッダからUser-Agentを取得
$agent = $_SERVER['HTTP_USER_AGENT'];
//POST,GET情報の取得
$info = "";
while (list($req, $reqval) = each ($_REQUEST)) {
$info .= $req . "=" . $reqval . ";";
}
$stamp = time();
$data = "[" . date('Y/m/d H:i:s', $stamp) . "]"; // YYYY/MM/DD HH:MM:SS
$data .= "[" . $agent . "]"; // USER-AGENT
$data .= "[" . getenv('REMOTE_ADDR') . "]"; // 環境変数から取得した,リモートアドレス
$data .= "[" . $_SERVER["PHP_SELF"] . "]"; // アクセスURL
$data .= "[" . $info . "]"; // POST情報
$data .= "[file:" . $filename . "]"; // ファイル名
$data .= "[line:" . $line . "]"; // 行数
$data .= "[" . $text . "]"; // エラー内容
$data .= "\n";
WriteLine($fname, $data, 'a+');
}
return( True );
}
/**
* WriteLine ファイル書き込み関数
* @brief ファイル書き込み関数
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコードの見直し修正
* @param $fname ファイル名
* @param $data 書き込みデータ
* @param $filemode モード
* @return 常にTrue
*/
function WriteLine($fname, $data, $filemode)
{
// umask(000);
// ファイルオープン(Append mode)
if (!($fno = fopen($fname, $filemode))) {
print "エラーログファイルオープンエラー";
exit();
}
fwrite($fno, $data);
fclose($fno);
return( True );
}
/**
* OpenDBConnectAssign DBオープン
* @brief DBオープン
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $inConnectStr 接続文字列
* @return DBオブジェクト
*/
function OpenDBConnectAssign($inConnectStr)
{
$obj = @pg_connect($inConnectStr);
if(!$obj) {
// エラー処理
ErrorLogWrite(ERR_DBEXEC, $inConnectStr/*pg_last_error($obj)*/, __FILE__, __LINE__);
header("Location: " . BASE_URL . LOGOUT_URL . "?dbconnerror=1");
}
return $obj;
}
/**
* CloseDB DBクローズ
* @brief DBクローズ
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコードの見直し修正
* @param $obj DBオブジェクト
*/
function CloseDB($obj)
{
if ($obj != 0) {
pg_close($obj);
}
$obj = 0;
}
/**
* ExecSql SQL実行
* @brief SQL実行
* @author S.Nishimura
* @date 2012/02/09
* @version 1.0
* @note
* History
* @param $inObj DBオブジェクト
* @param $inSql SQL文
* @return 検索結果
*/
function ExecSql($inObj, $inSql)
{
//echo $inSql."
\n";
ErrorLogWrite(ERR_DBEXEC, $inSql, __FILE__, __LINE__);
$inSql = mb_convert_encoding($inSql, ENCODE_DB, ENCODE_SCR);
$rs = pg_query($inObj, $inSql);
if (!$rs) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($inObj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $inSql, __FILE__, __LINE__);
}
return ($rs);
}
/**
* EncodingDBData DBから取得した文字列をエンコードする
* @brief DBから取得した文字列をエンコードする
* @author S.Nishimura
* @date 2012/02/11
* @version 1.0
* @note
* History
* @param $inData エンコード対象文字列
* @return エンコード後文字列
*/
function EncodingDBData($inData)
{
$data = mb_convert_encoding($inData, ENCODE_SCR, ENCODE_DB);
return ($data);
}
/**
* ChkInt 入力・数値チェック
* @brief 入力・数値チェック
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $str 対象文字列
* @return エラーのときTrue
*/
function ChkInt($str)
{
if( empty($str) ){
$ret = True;
} else {
/*
if ( is_numeric($str) ) {
// 数値が入力されているか?
$ret = False;
} else {
$ret = True;
}
*/
//0から9の数値が入力されているかチェック
if(preg_match("/^[0-9]+$/", $str) == True ){
$ret = False;
}else {
$ret = True;
}
}
return $ret;
}
/**
* ChkLen 数値長さチェック
* @brief 数値長さチェック
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $str 対象文字列
* @return エラーのときTrue
*/
function ChkLen($str)
{
if ( chkInt($str) ) {
// 入力チェック
$ret = True;
} else {
if ( strlen($str) <= 2 ) {
// 2桁以下?
$ret = False;
}else {
$ret = True;
}
}
return $ret;
}
/**
* ChkMon 月入力チェック
* @brief 月入力チェック
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $str 対象文字列
* @return エラーのときTrue
*/
function ChkMon($str)
{
if ( chkLen($str) ) {
// 入力チェック
$ret = True;
} else {
if( ($str >= 1 ) && ( 12 >= $str ) ) {
// 1月から12月か?
$ret = False;
} else {
$ret = True;
}
}
return $ret;
}
/**
* ChkYear 年入力チェック
* @brief 年入力チェック
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $str 対象文字列
* @return エラーのときTrue
*/
function ChkYear($str)
{
if ( chkLen($str) ) {
// 入力チェック
$ret = True;
} else {
if( ( $str >= 6 ) && ( 20 >= $str ) ) {
// 06年から20年までか?
$ret = False;
} else {
$ret = True;
}
}
return $ret;
}
/**
* Q 文字をシングルクオーテーションでくるむ
* @brief 文字をシングルクオーテーションでくるむ
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $s 対象文字列
* @return シングルクオーテーションで囲まれた文字列
*/
function Q($s)
{
return ("'" . $s . "'");
}
/**
* QQ 文字をダブルクオーテーションでくるむ。
* @brief 文字をダブルクオーテーションでくるむ
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $s 対象文字列
* @return ダブルクオーテーションで囲まれた文字列
*/
function QQ($s)
{
return ("\"" . $s . "\"");
}
/**
* n2z 値が未設定の場合0を返す。。
* @brief 値が未設定の場合0を返す。
* @author K.Takahashi
* @date 2011/02/22
* @version 1.0
* @note
* History
* 1.0 2011/02/22 K.Kimura 新規作成
* @param $s 対象文字列
* @return 変換された文字列
*/
function n2z($s)
{
if(empty($s)){
return 0;
}else{
return $s;
}
}
/**
* session_change_start セッションIDがGETで与えられていた場合、セッションIDを変更する
* @brief セッションIDがGETで与えられていた場合、セッションIDを変更する
* 与えられなかった場合は、セッションを開始する
* GETで与えられたセッションIDに変更する
* Au端末 HTTPS→HTTP でセッションIDが変わる為、追加
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/07/20 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* 1.2 2008/12/25 T.Hayashi XSS回避処理追加
*/
function session_change_start()
{
$s_id = $_GET['PHPSESSID'];
if ( !is_null($s_id) && !empty($s_id) ){
$s_id = preg_replace('/^([0-9a-zA-Z]*)\.*/', '$1', trim($s_id));
if ( !empty($s_id) ) {
//TODO
//echo "session_id($s_id)
\n";
session_id($s_id);
}
}
return session_start();
}
/**
* RemoveZero 0を取り除く
* @brief 0を取り除く
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/06/01 K.Kimura 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $number 対象数値
* @return 結果文字列
*/
function RemoveZero($number)
{
if($number < 10){
return str_replace("0", "", $number);
}else{
return $number;
}
}
/**
* GetNodeData ノードマスタからノードIDに対応するノード名を取得
* @brief ノードマスタからノードIDに対応するノード名を取得
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pNodeID ノードID
* @param $pNodeName [out]ノード名
* @return 存在しないとき:0 DBエラー:-1 正常取得時:1
*/
function GetNodeData($pNodeID, &$pNodeName)
{
$obj = OpenDBConnectAssign(AP_CONNECT_STR);
if (!$obj) {
ErrorLogWrite(ERR_DBOPEN, AP_CONNECT_STR, __FILE__, __LINE__);
return -1;
}
$sql ="";
$sql .= " select node_name ";
$sql .= " from tbl_node ";
$sql .= " where node_id = '" . $pNodeID . "'";
// echo "DEBUG SQL GetNodeData --START----------------- ". date("Y/m/d H:i:s",time()) . " \n"; // Debug 201203
// echo "DEBUG SQL ■■■ " . $sql . " \n"; // Debug 201203
$rs = ExecSql($obj, $sql);
// echo "DEBUG SQL GetNodeData --END------------------- ". date("Y/m/d H:i:s",time()) . " \n"; // Debug 201203
if ( !$rs ) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
return -1;
}
$rows = pg_numrows($rs); // レコードの総数を取得
$row = 0; // 行カウンタを初期化
$pNodeName = "";
//レコードを配列に取得
while( $row < $rows ){
$DATA = pg_fetch_object( $rs, $row ); // 結果セットからレコードを1行取得する
//ルートID
$pNodeName = mb_convert_encoding($DATA->node_name,ENCODE_SCR,ENCODE_DB);
$row ++; // 行カウンタを進める
}
if ( $rows ==0 ) {
CloseDB($obj);
return 0;
}
CloseDB($obj);
return 1;
}
/**
* GetRouteLinkDatas ルートリンクデータからリンクデータを取得する
* @brief ルートリンクデータからリンクデータを取得する
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pROUTE_ID ルートID
* @param $pLINK_SEQUENCE [out]リンク順序
* @param $pLINK_ID [out]リンクID
* @return 存在しないとき:0 DBエラー:-1 正常取得時:1
*/
function GetRouteLinkDatas($pROUTE_ID, &$pLINK_SEQUENCE, &$pLINK_ID)
{
$obj = OpenDBConnectAssign(AP_CONNECT_STR);
if (!$obj) {
ErrorLogWrite(ERR_DBOPEN, AP_CONNECT_STR, __FILE__, __LINE__);
return -1;
}
$sql = "";
$sql .= " select route_id ";
$sql .= " , link_sequence ";
$sql .= " , link_id ";
$sql .= " from tbl_route_link ";
$sql .= " where route_id = " . $pROUTE_ID;
$sql .= " order by route_id ";
$sql .= " , link_sequence ";
$rs = ExecSql($obj, $sql);
if ( !$rs ) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
return -1;
}
$rows = pg_numrows($rs); // レコードの総数を取得
$row = 0; // 行カウンタを初期化
if ( $rows ==0 ) {
CloseDB($obj);
return 0;
}
$pLINK_SEQUENCE=array();
$pLINK_ID=array();
//レコードを配列に取得
while( $row < $rows ){
$DATA = pg_fetch_object( $rs, $row ); // 結果セットからレコードを1行取得する
//ルートID
$pLINK_SEQUENCE[] = $DATA->link_sequence;
$pLINK_ID[] = $DATA->link_id;
$row ++; // 行カウンタを進める
}
CloseDB($obj);
return 1;
}
/**
* LinkidToGosen()
* @brief リンク情報マスタより号線、号線名を取得
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pLINK_ID リンクID
* @param $pGOSEN [out]号線番号
* @param $pGOSEN_NAME [out]路線名称(号線番号無)
* @return 存在しないとき:0 DBエラー:-1 正常取得時:1
*/
function LinkidToGosen($pLINK_ID, &$pGOSEN, &$pGOSEN_NAME)
{
$obj = OpenDBConnectAssign(AP_CONNECT_STR);
if (!$obj) {
ErrorLogWrite(ERR_DBOPEN, AP_CONNECT_STR, __FILE__, __LINE__);
return -1;
}
$sql = "";
$sql .= " select gosen_no ";
$sql .= " , rosen_name1 ";
$sql .= " from tbl_link_id_info ";
$sql .= " left outer join tbl_rosen on rosen_no_display = rosen_no ";
$sql .= " where link_id = " . Q($pLINK_ID);
$sql .= " and rosen_mark_flg = 1";
$rs = ExecSql($obj, $sql);
if ( !$rs ) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
return -1;
}
$rows = pg_numrows($rs); // レコードの総数を取得
$row = 0; // 行カウンタを初期化
if ( $rows ==0 ) {
CloseDB($obj);
return 0;
}
$pGOSEN = "";
$pGOSEN_NAME = "";
//レコードを配列に取得
while( $row < $rows ){
$DATA = pg_fetch_object( $rs, $row ); // 結果セットからレコードを1行取得する
//ルートID
$pGOSEN = $DATA->gosen_no;
$pGOSEN_NAME = mb_convert_encoding($DATA->rosen_name1,ENCODE_SCR,ENCODE_DB);
$row ++; // 行カウンタを進める
}
CloseDB($obj);
return 1;
}
/**
* GetRouteDetailString ルートを表示する文字列を取得
* @brief ルートを表示する文字列を取得
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pROUTE_ID ルートID
* @param $pLINK_SEQUENCE [out]リンク順序
* @param $pLINK_ID [out]リンクID
* @return ルートを表示する文字列
*/
function GetRouteDetailString($pROUTE_ID)
{
GetRouteLinkDatas($pROUTE_ID, $LINK_SEQUENCE, $LINK_ID);
//echo " GetRouteLinkDatas";
//ルート名称文字列を作成する
$str = "";
for ($i = 0; $i < count($LINK_SEQUENCE); $i++) {
//現在ルートの最初
if($i == 0){
GetNodeData(substr($LINK_ID[$i],0,5),$NodeName);
$str .= $NodeName;
$str .= " → ";
LinkidToGosen($LINK_ID[$i],$gosen,$gosen_name);
if ($gosen != NULL){
GetLineName(RemoveZero( substr($LINK_ID[$i],1,2) ) ,$LineName);
$str .= $gosen."号".$gosen_name;
$str .= " → ";
}
$br_key = $gosen;
//現在ルートの最後
}else if($i == count($LINK_SEQUENCE) -1){
//号線が変わったら
LinkidToGosen($LINK_ID[$i],$gosen,$gosen_name);
if( $gosen != $br_key ){
GetLineName(RemoveZero( substr($LINK_ID[$i],6,2) ) ,$LineName);
$str .= $gosen."号".$gosen_name;
$str .= " → ";
}
GetNodeData(substr($LINK_ID[$i],5,5),$NodeName);
$str .= $NodeName;
}else{
$dispFlg = 0;
//リンクIDが入口の場合
if(substr($LINK_ID[$i],0,1) == "1"){
GetNodeData(substr($LINK_ID[$i],0,5),$NodeName);
$str .= $NodeName;
$str .= " → ";
$dispFlg = 1;
}
LinkidToGosen($LINK_ID[$i],$gosen,$gosen_name);
//号線が変わったら
if( $gosen != $br_key ){
GetLineName(RemoveZero( substr($LINK_ID[$i],6,2) ) ,$LineName);
$str .= $gosen."号".$gosen_name;
$str .= " → ";
$br_key = $gosen;
$dispFlg = 1;
}
//リンクIDが出口の場合
if(substr($LINK_ID[$i],5,1) == "2"){
GetNodeData(substr($LINK_ID[$i],5,5),$NodeName);
$str .= $NodeName;
$str .= "
";
$str .= "乗継";
$str .= "
";
$dispFlg = 1;
}
if($dispFlg == 0){
$str .= "[".$LINK_ID[$i]."]";
}
}
}
return $str;
}
/**
* GetRouteDetailString_O ルートを表示する文字列を取得
* @brief ルートを表示する文字列を取得
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pROUTE_ID ルートID
* @return ルートを表示する文字列
*/
function GetRouteDetailString_O($pROUTE_ID)
{
GetRouteLinkDatas($pROUTE_ID, $LINK_SEQUENCE, $LINK_ID);
//ルート名称文字列を作成する
$str = "";
for ($i = 0; $i < count($LINK_SEQUENCE); $i++) {
//現在ルートの最初
if($i == 0){
GetNodeData(substr($LINK_ID[$i],0,5),$NodeName);
$str .= $NodeName;
$str .= " → ";
GetLineName(RemoveZero( substr($LINK_ID[$i],1,2) ) ,$LineName);
$str .= $LineName;
$str .= " → ";
$br_key = RemoveZero( substr($LINK_ID[$i],1,2) );
//現在ルートの最後
}else if($i == count($LINK_SEQUENCE) -1){
//号線が変わったら
if( substr($LINK_ID[$i],6,2) != $br_key ){
GetLineName(RemoveZero( substr($LINK_ID[$i],6,2) ) ,$LineName);
$str .= $LineName;
$str .= " → ";
}
GetNodeData(substr($LINK_ID[$i],5,5),$NodeName);
$str .= $NodeName;
}else{
//リンクIDが入口の場合
if(substr($LINK_ID[$i],0,1) == "1"){
GetNodeData(substr($LINK_ID[$i],0,5),$NodeName);
$str .= $NodeName;
$str .= " → ";
}
//号線が変わったら
if(substr($LINK_ID[$i],0,1) != "8"
&& substr($LINK_ID[$i],5,1) != "8" ){ // 分岐の号線は判定対象外とする
if( substr($LINK_ID[$i],1,2) != $br_key ){
GetLineName(RemoveZero( substr($LINK_ID[$i],6,2) ) ,$LineName);
$str .= $LineName;
$str .= " → ";
$br_key = RemoveZero( substr($LINK_ID[$i],1,2) );
}
}
//リンクIDが出口の場合
if(substr($LINK_ID[$i],5,1) == "2"){
GetNodeData(substr($LINK_ID[$i],5,5),$NodeName);
$str .= $NodeName;
$str .= "
";
$str .= "乗継";
$str .= "
";
}
}
}
return $str;
}
/**
* GetLineName 号線マスタから号線名を取得する
* @brief 号線マスタから号線名を取得する
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pLINE 号線番号
* @param $pLINE_NAME [out]号線名
* @return DBエラー時-1
*/
function GetLineName($pLINE, &$pLINE_NAME)
{
$obj = OpenDBConnectAssign(AP_CONNECT_STR);
if (!$obj) {
ErrorLogWrite(ERR_DBOPEN, AP_CONNECT_STR, __FILE__, __LINE__);
return -1;
}
$sql = "";
$sql .= " select line_name ";
$sql .= " from tbl_line ";
$sql .= " where line = " . $pLINE;
if ( _DEBUG == True ) {
echo "*$sql*
\n";
}
$rs = ExecSql($obj, $sql);
if ( !$rs ) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
return -1;
}
$rows = pg_numrows($rs); // レコードの総数を取得
if ( $rows ==0 ) {
CloseDB($obj);
$pLINE_NAME = "";
}else{
//レコードを配列に取得
$DATA = pg_fetch_object( $rs ); // 結果セットからレコードを1行取得する
//ルートID
$pLINE_NAME = mb_convert_encoding($DATA->line_name,ENCODE_SCR,ENCODE_DB);
}
if ( _DEBUG == True ) {
echo "*$rows*
\n";
echo "*$pLINE_NAME*
\n";
}
CloseDB($obj);
return ;
}
/**
* GetWayName 上下線を含む線名を取得する。
* @brief コースマスタから号線名を取得する
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2006/10/26 Y.henmi 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $pLINE 号線番号
* @param $pLINE_NAME [out]号線名
* @return DBエラー時-1
*/
function GetWayName($pline,$pwaycode, &$pWAYNAME)
{
$obj = OpenDBConnectAssign(AP_CONNECT_STR);
if (!$obj) {
ErrorLogWrite(ERR_DBOPEN, AP_CONNECT_STR, __FILE__, __LINE__);
return false;
}
$sql = "";
$sql .= " SELECT distinct line_name || ' ' || way_code_name as wayname ";
$sql .= " FROM tbl_course ";
$sql .= " WHERE line = " . $pline . " ";
$sql .= " AND sub_line = 0 ";
$sql .= " AND way_code = " . $pwaycode . " ";
$rs = ExecSql($obj, $sql);
if ( !$rs ) {
ErrorLogWrite(ERR_DBEXEC, pg_last_error($obj), __FILE__, __LINE__);
ErrorLogWrite(ERR_DBEXEC, $sql, __FILE__, __LINE__);
CloseDB($obj);
return false;
}
$rows = pg_numrows($rs); // レコードの総数を取得
if ( $rows ==0 ) {
CloseDB($obj);
$pWAYNAME = "";
}else{
//レコードを配列に取得
$DATA = pg_fetch_object( $rs ); // 結果セットからレコードを1行取得する
//ルートID
$pWAYNAME = mb_convert_encoding($DATA->wayname,ENCODE_SCR,ENCODE_DB);
}
if ( _DEBUG == True ) {
echo "*$rows*
\n";
echo "*$pLINE_NAME*
\n";
}
CloseDB($obj);
return true;
}
function Set_SearchVariables($entrance, $exit, $route_id, $vehicle_size, $day, $time, $url)
{
$_SESSION["S_Search_entrance"] = $entrance;
$_SESSION["S_Search_exit"] = $exit;
$_SESSION["S_Search_route_id"] = $route_id;
$_SESSION["S_Search_vehicle_size"] = $vehicle_size;
$_SESSION["S_Search_day"] = $day;
$_SESSION["S_Search_time"] = $time;
$_SESSION["S_Search_url"] = $url;
return( True );
}
function Get_SearchVariables(&$entrance, &$exit, &$route_id, &$vehicle_size, &$day, &$time, &$url)
{
// session_start();
// BackURLの設定
if( isset($_SESSION["S_Search_entrance"]) ){
$entrance = $_SESSION["S_Search_entrance"];
}
if( isset($_SESSION["S_Search_exit"]) ){
$exit = $_SESSION["S_Search_exit"];
}
if( isset($_SESSION["S_Search_route_id"]) ){
$route_id = $_SESSION["S_Search_route_id"];
}
if( isset($_SESSION["S_Search_vehicle_size"]) ){
$vehicle_size = $_SESSION["S_Search_vehicle_size"];
}
if( isset($_SESSION["S_Search_day"]) ){
$day = $_SESSION["S_Search_day"];
}
if( isset($_SESSION["S_Search_time"]) ){
$time = $_SESSION["S_Search_time"];
}
if( isset($_SESSION["S_Search_url"]) ){
$url = $_SESSION["S_Search_url"];
}
return( True );
}
function clear_SearchVariables()
{
unset( $_SESSION["S_Search_entrance"] );
unset( $_SESSION["S_Search_exit"] );
unset( $_SESSION["S_Search_route_id"] );
unset( $_SESSION["S_Search_vehicle_size"] );
unset( $_SESSION["S_Search_day"] );
unset( $_SESSION["S_Search_time"] );
unset( $_SESSION["S_Search_url"] );
}
/**
* GetWeekdayValue 0:平日,1:土曜日,2:日曜・祝日を判定
* @brief 0:平日,1:土曜日,2:日曜・祝日を判定
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2007/02/14 AM Garcia 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* 1.2 2008/12/11 T.Hayashi 関数名変更
GetWeekdayValueとGetWeekdayValuefを統一
* @param $Weekday [out]0:平日,1:土曜日,2:日曜・祝日
*/
function GetWeekdayValue(&$Weekday)
{
$etc_rate_obj = new EtcRate(0);
$time_now = time();
if($etc_rate_obj->isHoliday($time_now)){ // yyyyMMdd
$Weekday = 2;
}else{
$weekday_now = date("w");
$weekday_now = date("w");
switch($weekday_now){
case 0:
$Weekday = 2;
break;
case 1:
case 2:
case 3:
case 4:
case 5:
$Weekday = 0;
break;
case 6:
$Weekday = 1;
break;
}
}
}
/**
* IsStringError 文字入力チェック
* @brief 文字入力チェック
* @author H.Toribe
* @date 2008/03/31
* @version 1.1
* @note
* History
* 1.0 2007/02/14 AM Garcia 新規作成
* 1.1 2008/03/31 H.Toribe ソースコード見直し修正
* @param $String 対象文字列
* @return エラーのときTrue
*/
function IsStringError( $String )
{
for( $i=0; $i" ) return True;
if ( $c == "'" ) return True;
if ( $c == "%" ) return True;
if ( $c == "\"" ) return True;
if ( $c == "\\" ) return True;
}
return( False );
}
/**
* GetNextUrl URLにパラメータを追加して返す
* @brief URLにパラメータを追加して返す
* @author H.Toribe
* @date 2008/03/31
* @version 1.0
* @note
* History
* 1.0 2008/03/31 H.Toribe 新規作成
* @param $sid セッションID
* @param $setuid UID
* @param $params パラメータを連想配列で渡す
* @return URLにパラメータを追加して返す
*/
function GetNextUrl($nextUrl, $sid='', $setuid='', $params=array()){
$arystr = array();
if( $sid != '' ){
$params["PHPSESSID"] = $sid;
$params["uid"] = $setuid;
}
if( count($params) > 0 ){
foreach( $params as $key => $value){
if( !empty($value) ){
$arystr[] = $key . "=" . $value;
}
}
}
$result = ( count($arystr) > 0 )? BASE_URL.$nextUrl."?".implode("&",$arystr) : BASE_URL.$nextUrl;
return $result;
}
/**
* GetNextUrl2 URLにパラメータを追加して返す
* @brief URLにパラメータを追加して返す
* @author H.Toribe
* @date 2008/03/31
* @version 1.0
* @note
* History
* 1.0 2008/03/31 H.Toribe 新規作成
* @param $sid セッションID
* @param $setuid UID
* @param $params パラメータを連想配列で渡す
* @return URLにパラメータを追加して返す
*/
function GetNextUrl2($nextUrl, $sid='', $setuid='', $params=array()){
$arystr = array();
if( $sid != '' ){
$params["PHPSESSID"] = $sid;
$params["uid"] = $setuid;
}
if( count($params) > 0 ){
foreach( $params as $key => $value){
if( !empty($value) ){
$arystr[] = $key . "=" . $value;
}
}
}
$result = ( count($arystr) > 0 )? "href= ".BASE_URL.$nextUrl."?".implode("&",$arystr) : "href= ".BASE_URL.$nextUrl;
return $result;
}
/**
* ReadLine ファイルの内容を返す
* @brief ファイルの内容を返す
* @author H.Toribe
* @date 2008/03/31
* @version 1.0
* @note
* History
* 1.0 2008/03/31 H.Toribe 新規作成
* @param $file ファイル名
* @return ファイルの内容を返す
*/
function ReadLine( $file )
{
$arystr = array();
$fp = fopen( $file , "r");
if( $fp == False ) { exit(); }
while (!feof($fp)) {
$arystr[] = fgets($fp);
}
fclose($fp);
return implode("
", $arystr);
}
function getReceivedData( $names )
{
$values = array();
foreach ($names as $name) {
if( !empty( $_GET[ $name ] ) || !empty( $_POST[ $name ] )){
$str = empty( $_GET[ $name ] ) ? $_POST[ $name ] : $_GET[ $name ];
$values[ $name ] = htmlentities( mb_convert_encoding( $str, 'SJIS', 'SJIS'), ENT_QUOTES, 'SJIS');
if( ( $name != 'url' ) && ( strpos($str, '%') !== False ) ){
// RewriteRuleの影響でurldecodeしないと文字化け
$values[ $name ] = urldecode( $values[ $name ] );
}
} else {
$values[ $name ] = '';
}
}
return $values;
}
function getReceivedData2( $names ){
$values = array();
foreach ($names as $i => $name) {
if( !empty( $_GET[ $name ] ) || !empty( $_POST[ $name ] )){
$str = (empty($_GET[ $name ])) ? $_POST[ $name ] : $_GET[ $name ];
//$values[ $name ] = htmlentities( mb_convert_encoding( $str, 'SJIS', 'SJIS'), ENT_QUOTES, 'SJIS');
$values[ $name ] = mb_convert_encoding( $str, 'SJIS', 'SJIS');
if( ( $name != 'url' ) ){
$i = 0;
while (strpos($values[ $name ], '%') !== False) {
// RewriteRuleの影響でurldecodeしないと文字化け
$values[ $name ] = urldecode( $values[ $name ] );
if ($i++ > 20) {
break;
}
}
}
} else {
$values[ $name ] = '';
}
}
return $values;
}
?>