megane9988
4/12/2013 - 4:52 AM

WordPress Shortcode counts attendance from a Zusaar event

WordPress Shortcode counts attendance from a Zusaar event

function zusaar_count($atts){
	extract(shortcode_atts(array(
		'zid' => null
	), $atts));
	// return $zid;
	
	define("ZUSAAR_API_EVENT_URI", "http://www.zusaar.com/api/event/?event_id="); //イベント自体のデータを取得。開催日時の取得用
	define("ZUSAAR_API_USER_URI", "http://www.zusaar.com/api/event/user/?event_id="); //イベント出席者のデータを取得
	
	$today = time(); // 現在の日付を確認
	$event_date = file_get_contents(ZUSAAR_API_EVENT_URI . $zid); //イベントのデータを取得
	$event_date = json_decode($event_date , true); //JSONを連想配列に返す
	$start = $event_date[event][0][started_at]; //開催日時の入っている配列
	$start = strtotime($start); //UNIX時に変換
	
	if($start > $today){ // 本日が開催時より前の状況では、以下の出席状況表示を開始。開催時より後は何も出力しない
	
		if(!is_null($zid)){
			$json = file_get_contents(ZUSAAR_API_USER_URI . $zid);
			$data = json_decode( $json , true ); //連想配列を返す
			$limit = $data[event][0][limit]; //定員数
			$current = $data[event][0][accepted]; //現在の申込数
			$waiting = $data[event][0][waiting]; //キャンセル待ち発生時は、キャンセル待ち数
			$left = $limit - $current; //定員に達していない場合の、残席数
			
/*
			echo "今日".$today . "<br>";
			echo "開始日時" .$start;
*/
			
			if($limit == $current){ 
				//満席の時の表示内容
				return "<p>現在満席です。<strong>" . esc_html($waiting) . "名</strong>の方がキャンセル待ちをしています。</p>";
				}else{
				//残席がある時の表示内容
				return "<p>あと<strong>" . esc_html($left) . "名</strong>様募集中です。</p>";
				}
			}
		}
	}
add_shortcode('zusaar','zusaar_count');