<?php
  //php5.4 버전용
   //error_reporting( E_ALL );  //에러표시
   //ini_set( "display_errors", 1 );

  require_once ('jwtGenerator.php'); //라이브러리1
  require_once ('fcmFunctions.php'); //라이브러리2
  require_once ('fcmProperties.php'); //정보입력


  
  function send_notification_fcm_httpv1($token, $datas){
    ///////////////////////////////////////fcm http v1 시작////////////////////////////////////////
    $tokenPath = TOKEN_SAVE_PATH;  //accesstoken파일 경로

    $accessTokenJson ='';
    //1. accesstoken 파일 불려오기
    if(file_exists($tokenPath)){
        $accessTokenJson = json_decode(file_get_contents($tokenPath), true);
        if (isAccessTokenExpired($accessTokenJson['access_token'])){ //accesstoken 유효기간 지남-> 새로발급
            $accessTokenStr = getAccessToken(KEY_PATH);//새로 발급
            file_put_contents($tokenPath,  $accessTokenStr);   //accesstoken 저장
            $accessTokenJson = json_decode($accessTokenStr, true);
        }
    } else { //accesstoken 파일 없다면 새로발급
        $accessTokenStr = getAccessToken(KEY_PATH); //새로 발급
        file_put_contents($tokenPath,  $accessTokenStr);  //accesstoken 저장
        $accessTokenJson = json_decode($accessTokenStr, true);
    }

    //echo "\n 0.accessTokenStr:".$accessTokenJson['access_token'];

    $priority = array (
        'headers' => array(
            'apns-priority'  => '10'
        )
    );

    //echo "\n 1.token:".$token;
    //echo "\n 1.token_json:".json_encode($token);

    $message = array(
        'token' => $token,
        //'token' => "",
        //'notification' => $notification,
        'apns' => $priority,
        'data' => $datas
    );
    
    $fields = array (
        "message" => $message
    );

    $message_str = json_encode($fields);
    //echo "\n 2.message_str:".$message_str;

    //header 설정 후 삽입
    $headers = array(
        'Authorization: Bearer '.$accessTokenJson['access_token'],
        'Content-Type: application/json',
        'Content-Length: '.strlen($message_str)
    );
    //3-2. file_get_contents 으로 전송
    $requestData = stream_context_create(
        array(
            'http' => array(
                'method' => 'POST',
                'header' => $headers,
                'timeout' => 30,
                'content' => $message_str
            )
        )
    );

    //3-1. curl 로 전송
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, FCM_URL);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_POST, 1);
    //curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($requestData)); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
    $result = curl_exec($ch);
    if($result === FALSE){
        // die('FCM Send Error: ' . curl_error($ch));
        printf("cUrl error (#%d): %s<br>\n",
        curl_errno($ch),
        htmlspecialchars(curl_error($ch)));

    }
    //$result = file_get_contents(FCM_URL, false, $requestData);

    echo "";
  }

  function send_notification_fcm_httpv1_org($token, $datas){
    ///////////////////////////////////////fcm http v1 시작////////////////////////////////////////
    $tokenPath = TOKEN_SAVE_PATH;  //accesstoken파일 경로

    $accessTokenJson ='';
    //1. accesstoken 파일 불려오기
    if(file_exists($tokenPath)){
        $accessTokenJson = json_decode(file_get_contents($tokenPath), true);
        if (isAccessTokenExpired($accessTokenJson['access_token'])){ //accesstoken 유효기간 지남-> 새로발급
            $accessTokenStr = getAccessToken(KEY_PATH);//새로 발급
            file_put_contents($tokenPath,  $accessTokenStr);   //accesstoken 저장
            $accessTokenJson = json_decode($accessTokenStr, true);
        }
    } else { //accesstoken 파일 없다면 새로발급
        $accessTokenStr = getAccessToken(KEY_PATH); //새로 발급
        file_put_contents($tokenPath,  $accessTokenStr);  //accesstoken 저장
        $accessTokenJson = json_decode($accessTokenStr, true);
    }
    $priority = array (
        'headers' => array(
            'apns-priority'  => '10'
        )
    );

    $message = array(
        'token' => $token,
        //'token' => "",
        //'notification' => $notification,
        'apns' => $priority,
        'data' => $datas
    );
    
    $fields = array (
        "message" => $message
    );

    $message_str = json_encode($fields);

    //header 설정 후 삽입
    $headers = array(
        'Authorization: Bearer '.$accessTokenJson['access_token'],
        'Content-Type: application/json',
        'Content-Length: '.strlen($message_str)
    );
    //3-2. file_get_contents 으로 전송
    $requestData = stream_context_create(
        array(
            'http' => array(
                'method' => 'POST',
                'header' => $headers,
                'timeout' => 30,
                'content' => $message_str
            )
        )
    );
    $result = file_get_contents(FCM_URL, false, $requestData);

    echo "\n*result:".$result;
  }
  

?>
