<?php
////////JSON//////////////////////////////////////////////////////////
define("JSON_DATA_BASE_DIR","../data/json");
// 自動実行用関数
// 30分おきにファイル保存
function jsonsave_auto_function() {
  date_default_timezone_set('Asia/Tokyo');
  $date = new DateTime('now');
  $json_date = $date->format('Y-m-d');
  // $json_date = date_i18n('Y-m-d');
  //$url='http://202.6.247.117/api/v1/infos?open_day='.$json_date;
$url = 'http://13.112.199.58/json/updata.json';
  //$url = 'http://zipcloud.ibsnet.co.jp/api/search?zipcode=6000000';
  $option = [
      CURLOPT_RETURNTRANSFER => true, //文字列として返す
      CURLOPT_TIMEOUT        => 3, // タイムアウト時間
      CURLOPT_SSL_VERIFYPEER => false,
      CURLOPT_SSL_VERIFYHOST => false,
      CURLOPT_CUSTOMREQUEST  => 'GET'
  ];

  $ch = curl_init($url);
  curl_setopt_array($ch, $option);

  $json    = curl_exec($ch);
  $info    = curl_getinfo($ch);
  $errorNo = curl_errno($ch);

  // OK以外はエラーなので空白配列を返す
  if ($errorNo !== CURLE_OK) {
      // 詳しくエラーハンドリングしたい場合はerrorNoで確認
      // タイムアウトの場合はCURLE_OPERATION_TIMEDOUT
      // var_dump($errorNo);
      return [];
  }

  // 200以外のステータスコードは失敗とみなし空配列を返す
  if ($info['http_code'] !== 200) {
      // var_dump($info['http_code']);
      return [];
  }
  // 文字列から変換
  $jsonArray = json_decode($json, true);


  //$filepaths = file_search(JSON_DATA_BASE_DIR);
  //ファイル名
  $sFileName = 'updata.json';
  //ファイルパス
  $sPath = JSON_DATA_BASE_DIR.'/'.$sFileName;
  //ディレクトリ確認
  // if(file_exists(JSON_DATA_BASE_DIR.'/')){
  //     //echo '・指定ファイルが既に存在しております。';
  //     //exit;
  // }else{
  //     //echo '・ファイルの存在確認完了。<br/>';
  //     mkdir(JSON_DATA_BASE_DIR.'/', 0775);
  //     //各二実に変更
  //     chmod(JSON_DATA_BASE_DIR.'/', 0775);
  // }

  //ファイルの存在確認
  if(file_exists($sPath)){
      //echo '・指定ファイルが既に存在しております。';
      //exit;
      //ファイルをオープン
      if($filepoint = fopen($sPath,"w")){
        //echo '・ファイルオープン完了。<br/>';
      }else{
        //echo '・ファイルオープン失敗。<br/>';
        exit;
      }
      //ファイルのロック
      if(flock($filepoint, LOCK_EX)){
        //echo '・ファイルロック完了。<br/>';
      }else{
        //echo '・ファイルロック失敗。<br/>';
        exit;
      }
      //ファイルへ書き込み
      $sWriteContents = $json;
      fwrite($filepoint,$sWriteContents);
  }else{
      //echo '・ファイルの存在確認完了。<br/>';
      //ファイルを作成
      if(touch($sPath)){
        //echo '・ファイル作成完了。<br/>';
      }else{
        //echo '・ファイル作成失敗。<br/>';
        exit;
      }
      //ファイルのパーティションの変更
      if(chmod($sPath,0755)){
        //echo '・ファイルパーミッション変更完了。<br/>';
      }else{
        //echo '・ファイルパーミッション変更失敗。<br/>';
        exit;
      }
      if($filepoint = fopen($sPath,"w")){
        //echo '・ファイルオープン完了。<br/>';
      }else{
        //echo '・ファイルオープン失敗。<br/>';
        exit;
      }
      //ファイルのロック
      if(flock($filepoint, LOCK_EX)){
        //echo '・ファイルロック完了。<br/>';
      }else{
        //echo '・ファイルロック失敗。<br/>';
        exit;
      }
      //ファイルへ書き込み
      $sWriteContents = $json;
      fwrite($filepoint,$sWriteContents);
  }

  //ファイルのアンロック
  if(flock($filepoint, LOCK_UN)){
      //echo '・ファイルアンロック完了。<br/>';
  }else{
      //echo '・ファイルアンロック失敗。<br/>';
      exit;
  }
  //ファイルを閉じる
  if(fclose($filepoint)){
    //echo '・ファイルクローズ完了。<br/>';
  }else{
    //echo '・ファイルクローズ失敗。<br/>';
    exit;
  }

  // ////本番用の複製////
  // $sPath = '../wp/json/'.$sFileName;
  // if(file_exists($sPath)){
  //     //echo '・指定ファイルが既に存在しております。';
  //     //exit;
  //     //ファイルをオープン
  //     if($filepoint = fopen($sPath,"w")){
  //       //echo '・ファイルオープン完了。<br/>';
  //     }else{
  //       //echo '・ファイルオープン失敗。<br/>';
  //       exit;
  //     }
  //     //ファイルのロック
  //     if(flock($filepoint, LOCK_EX)){
  //       //echo '・ファイルロック完了。<br/>';
  //     }else{
  //       //echo '・ファイルロック失敗。<br/>';
  //       exit;
  //     }
  //     //ファイルへ書き込み
  //     $sWriteContents = $json;
  //     fwrite($filepoint,$sWriteContents);
  // }else{
  //     //echo '・ファイルの存在確認完了。<br/>';
  //     //ファイルを作成
  //     if(touch($sPath)){
  //       //echo '・ファイル作成完了。<br/>';
  //     }else{
  //       //echo '・ファイル作成失敗。<br/>';
  //       exit;
  //     }
  //     //ファイルのパーティションの変更
  //     if(chmod($sPath,0755)){
  //       //echo '・ファイルパーミッション変更完了。<br/>';
  //     }else{
  //       //echo '・ファイルパーミッション変更失敗。<br/>';
  //       exit;
  //     }
  //     if($filepoint = fopen($sPath,"w")){
  //       //echo '・ファイルオープン完了。<br/>';
  //     }else{
  //       //echo '・ファイルオープン失敗。<br/>';
  //       exit;
  //     }
  //     //ファイルのロック
  //     if(flock($filepoint, LOCK_EX)){
  //       //echo '・ファイルロック完了。<br/>';
  //     }else{
  //       //echo '・ファイルロック失敗。<br/>';
  //       exit;
  //     }
  //     //ファイルへ書き込み
  //     $sWriteContents = $json;
  //     fwrite($filepoint,$sWriteContents);
  // }
  //
  // //ファイルのアンロック
  // if(flock($filepoint, LOCK_UN)){
  //     //echo '・ファイルアンロック完了。<br/>';
  // }else{
  //     //echo '・ファイルアンロック失敗。<br/>';
  //     exit;
  // }
  // //ファイルを閉じる
  // if(fclose($filepoint)){
  //   //echo '・ファイルクローズ完了。<br/>';
  // }else{
  //   //echo '・ファイルクローズ失敗。<br/>';
  //   exit;
  // }
  echo "<!-- jsonファイル取得なないろコメント -->";
}
add_action ( 'jsonsave_auto_function_cron', 'jsonsave_auto_function' );

// cron登録処理
add_filter( 'cron_schedules', 'cron_add_30min' );
function cron_add_30min( $schedules ) {
    $schedules['30min'] = array(
        'interval' => 1*60,
        'display' => __( 'Once every 30 minutes' )
    );
    return $schedules;
}

if ( !wp_next_scheduled( 'jsonsave_auto_function_cron' ) ) {  // 何度も同じcronが登録されないように
  date_default_timezone_set('Asia/Tokyo');
  wp_schedule_event( time(), '30min', 'jsonsave_auto_function_cron' );
}


function json_load_Func($sr,$sya,$waku){
    $filepaths = file_search(JSON_DATA_BASE_DIR);
    $json = file_get_contents($filepaths[0]);
    // $json_date = $price = preg_replace('/[^0-9]/', '', $sr);
    // $json_date = substr($json_date, 0,8);
    // $day = new DateTime($json_date);
    // $json_date = $day->format('Y-m-d');
    // $url='http://202.6.247.117/api/v1/infos?open_day='.$json_date;
    // $option = [
    //     CURLOPT_RETURNTRANSFER => true, //文字列として返す
    //     CURLOPT_TIMEOUT        => 5, // タイムアウト時間
    //     CURLOPT_SSL_VERIFYPEER => false,
    //     CURLOPT_SSL_VERIFYHOST => false,
    //     CURLOPT_CUSTOMREQUEST => 'GET'
    // ];

    // $ch = curl_init($url);
    // curl_setopt_array($ch, $option);

    // $json    = curl_exec($ch);
    // $info    = curl_getinfo($ch);
    // $errorNo = curl_errno($ch);

    // // OK以外はエラーなので空白配列を返す
    // if ($errorNo !== CURLE_OK) {
    //     // 詳しくエラーハンドリングしたい場合はerrorNoで確認
    //     // タイムアウトの場合はCURLE_OPERATION_TIMEDOUT
    //     // var_dump($errorNo);
    //     return [];
    // }

    // // 200以外のステータスコードは失敗とみなし空配列を返す
    // if ($info['http_code'] !== 200) {
    //     // var_dump($info['http_code']);
    //     return [];
    // }
    // 文字列から変換
    $obj = json_decode($json , true);
    $SRdata = null;
    $racer_status = array();
    foreach ($obj as $key1 => $value1) {//ここ会場ごと
         $jyo = sprintf('%02d', $value1['vel_code']);
         $cancel_race = $value1['cancel_race_num'];
        foreach ($value1['races'] as $key2 => $value2) {//ここレースごと
            $race_no = sprintf('%02d', $value2['race_num']);
            $date = new DateTime($value2['race_start_at']);
            $race_date = $date->format('Ymd');
            foreach ($value2['athletes'] as $key3 => $value3) {//ここ車番ごと
                $SRdata = "SR".$race_date.$jyo.$race_no;
                if($sr === $SRdata && $sya == $value3['sha_num'] && $waku == $value3['waku_num']){
                  $racer_status = array('欠車'=>$value3['entry_status'],'ギア'=>$value3['gear_ratio']);
                }
            }
        }
    }

    //curl_close($ch);
echo "<!-- json取得なないろコメント -->";
return $racer_status;

}

function json_cancelracelist_Func($sr){
    $filepaths = file_search(JSON_DATA_BASE_DIR);
    $json = file_get_contents($filepaths[0]);
    $obj = json_decode($json , true);
    $cancel_list = '<ul class="cancel_race">';
    $sr_jyo = substr($sr, -2, 2);
    foreach ($obj as $key1 => $value1) {//ここ会場ごと
        $jyo = sprintf('%02d', $value1['vel_code']);
        if($jyo === $sr_jyo){
          if($value1['cancel_race_num'] !== 0){
            //$cancel_list .= '<li><p>'.$value1['cancel_race_num'].'Rは開催が中止となりました</p></li>';
            foreach ($value1['stop_race_nums'] as $key2 => $value2) {
              $cancel_list .= '<li><p>'.$value2.'Rは開催が中止となりました</p></li>';
            }
          }
        }
    }
    $cancel_list .= '</ul>';
    return $cancel_list;
}


//処理稼働時間9時～23時フラグ
function NowTimeFlag_Func(){
  $flag = NULL;
  date_default_timezone_set('Asia/Tokyo');
  $date = new DateTime('now');
  $date = $date->format('H:i:s');//06:00:00
  if(strtotime($date) >= strtotime('09:00:00') && strtotime($date) <= strtotime('23:00:00')){
    //9時～23時
    $flag = "ok";
  }else{
    $flag = "no";
  }

  return $flag;
}


//////////////////////////////////////////////////////////////////

?>
