home > 投稿 > php:サイボウズOffice のスケジュールフィード
2008/05/09

php:サイボウズOffice のスケジュールフィード


ほんとはモバイル用カレンダーとかとSyncするためのAPIっぽいです。
perlでcybozu2icalていうのがあったので参考にしました。
<?
//サイボウズのスケジュールフィード


$cybozu = "http://foo.com/cgi-bin/cbag/ag.cgi"
$csv = parse_csv(get_schedule($int_id,$str_passwd));
print_r($csv);

function get_schedule($id,$pw){
	$data = array(
		'_System'	=> 'login',
		'_Login'	=> 1,
		'_Id'		=> $id,
		'Password'	=> $pw,
	);
	$data = http_build_query($data, "", "&");
	$context = array(
	    "http" => array(
	        "method"  => "POST",
	        "header"  => implode("\r\n",array(
	    		"Content-Type: application/x-www-form-urlencoded",
	    		"Content-Length: ".strlen($data)
			)),
	        "content" => $data
	    )
	);
	$s = file_get_contents($GLOBALS["cybozu"]."?page=SyncCalendar",false,stream_context_create($context));
	//$s = mb_conv($s,"SJIS>UTF8") ;
	//↓ShiftJIS は preg じゃなくて eregi で書いてくだされ
	return(preg_replace("/(\r\n)+relation\r\n.+$/isu","",$s));	
}

function parse_csv($s){
	$split_by_dq = explode('"',$s);
	$items = array();
	$id = 0;
	foreach($split_by_dq as $i => $value){
		if($i & 1){
			array_push($items[$id],$value);
		}else{
			$rows = explode("\n",$value);
			foreach($rows as $j => $row){
				$k = $id+$j;
				if(!isset($items[$k])) $items[$k] = array();
				$items[$k] = array_merge($items[$k],explode(",",$row));
			}
			$id = $k;
		}
	}
	return($items);
}
?>

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/560

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)