<?php
// $Id$
// FILE		::	quickpost.inc.php
// AUTHOR	::	Ryuji AMANO <info@joetsu.info>
// WEB		::	Ryu's Planning <http://ryus.joetsu.info/>
//

/*
  -保存部分はinsert.inc.php参照
  -bookmarkletは、ココログクィック投稿参照
 */
define("QUICKPOST_FORMAT", "#ping(http://ping.myblog.jp)\n**\n#category(#right,:Blog,WebWatch)\n***[[%s:%s]]\n%s\n\n----\n#comment(size:50,btn:つっこみ)\n[[<<Today>>>../]]\n");
define("QUICKPOST_BASENAME", "徒然日記");
define("QUICKPOST_PAGENAME", "Y-m-d");

function plugin_quickpost_action(){
	global $script,$post,$vars;
	global $_title_updated,$X_uid;
	//	global $_title_collided,$_msg_collided,$_title_updated;

	//$url = urldecode($vars['url']);
	$url = $vars['url'];
	if($url != "") {
		
		// bookmarkletで呼び出されたらこっち
		$pageName = QUICKPOST_BASENAME . "/" . date(QUICKPOST_PAGENAME);
		$pageName = strip_bracket($pageName);
		$no = 1;
		while (is_page($pageName))
		{
			$pageName = preg_replace("/-[1-9]$/","",$pageName)."-".$no;
			$no++;
		}
		//if(!is_page($pageName))
			$up_freeze_info = get_freezed_uppage($pageName);
		//else
		//	$up_freeze_info = array("",0,null,null,0);

		if ((!WIKI_ALLOW_NEWPAGE || $up_freeze_info[4]))
		{
			$retVars["msg"] = $pageName . "にQuickPost";
			$retVars["body"] = str_replace('$1',htmlspecialchars(strip_bracket($pageName)),_MD_PUKIWIKI_NO_AUTH);
			return $retVars;
		}
		else
		{
			//$title = urldecode($vars["title"]);
			$title = plugin_quickpost_uniDecode($vars["title"],'euc-jp');
			// $title = plugin_quickpost_get_title($url);
			$quote = plugin_quickpost_uniDecode($vars["msg"], 'euc-jp');
			$quote = preg_replace("/\r/",'',$quote);
			$quote = str_replace("\n","~\n",$quote);
			$quote = ">" . $quote;

			$memo_body = htmlspecialchars(sprintf(QUICKPOST_FORMAT, $title, $url, $quote));


			$s_page = htmlspecialchars($pageName);
			//	$s_digest = md5(@join('',get_source($pageName));

			// フォーム表示
			$body = <<<EOD
<form action="$script?plugin=quickpost" method="post">
<div>
<input type="hidden" name="refer" value="$s_page" />
<textarea name="msg" rows="10" cols="80" id="textarea">$memo_body</textarea><br />
<input type="submit" name="submit" value="送信" />
</div>
</form>
EOD;
			//		$retVars["page"] = $pageName . "にQuickPost";
			$retVars["msg"] = $pageName . "にQuickPost";
			$retVars["body"] = $body;
			return $retVars;
		}


	}elseif(isset($post["submit"])){
		// postされた
		if ($post['msg'] == '') {
			return;
		}
		
		$page = $post['refer'];
		$page_info = $aids = $gids = $freeze = "";
		
		$post["msg"] = preg_replace("/\r/",'',$post['msg']);
		$postdata = ($post['msg'] == '') ? '' : "\n{$post['msg']}\n";
		
		//編集権限継承がセットされている上位ページ凍結情報を得る
		$up_freezed = get_freezed_uppage($page);
		$page_info = "";
		//ページ情報のセット
		if ($up_freezed[0])
		{
			//編集権限継承あり
			$freeze = 1;
			$uid = $up_freezed[1];
			$aids = preg_replace("/(($|,)$uid,|,$)/","",join(",",$up_freezed[2]));
			$gids = preg_replace("/,$/","",join(",",$up_freezed[3]));
			$page_info = "#freeze\tuid:{$uid}\taid:{$aids}\tgid:{$gids}\n// author:{$X_uid}\n";
		}
		
		// ページ書き込み
		page_write($page,$page_info.$postdata,NULL,$aids,$gids,"","",$freeze,"");
		
		$title = $_title_updated;
		$retvars['msg'] = $title;
		$retvars["body"] = "";
		$post['page'] = $vars['page'] = $post["refer"] ;
		return $retvars;
	}
}


// IEのJavascriptでescape()された文字列をデコード
// http://vivian.stripper.jp/index.php?itemid=100 で発見
// $str = plugin_quickpost_uniDecode($str,'euc-jp');
function plugin_quickpost_uniDecode($str,$charcode){
	$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",plugin_quickpost_toUtf8,$str);
	return mb_convert_encoding($text, $charcode, 'utf-8');
}
function plugin_quickpost_toUtf8($ar){
	foreach($ar as $val){
		$val = intval(substr($val,2),16);
		if($val < 0x7F){        // 0000-007F
			$c .= chr($val);
		}elseif($val < 0x800) { // 0080-0800
			$c .= chr(0xC0 | ($val / 64));
			$c .= chr(0x80 | ($val % 64));
		}else{                // 0800-FFFF
			$c .= chr(0xE0 | (($val / 64) / 64));
			$c .= chr(0x80 | (($val / 64) % 64));
			$c .= chr(0x80 | ($val % 64));
		}
	}
	return $c;
}

?>