<?php

//--------------------------------------------------------------------
// Config
//--------------------------------------------------------------------
require_once(dirname( dirname(__FILE__) ).'/lib/PEAR/XML/RPC.php');

include XOOPS_ROOT_PATH."/header.php";

// this page uses smarty template
// this must be set before including main header.php
include_once dirname( dirname(__FILE__) ).'/class/diaryconfig.class.php';
include_once dirname( dirname(__FILE__) ).'/class/diary.class.php';
include_once dirname( dirname(__FILE__) ).'/class/category.class.php';
include_once dirname( dirname(__FILE__) ).'/class/photo.class.php';
include_once dirname( dirname(__FILE__) ).'/class/tag.class.php';
require_once dirname( dirname(__FILE__) ).'/lib/perm.php';

$dcfg =& DiaryConfig::getInstance();
$diary =& Diary::getInstance();
$category =& Category::getInstance();
$photo =& Photo::getInstance();
$tag =& Tag::getInstance();
$myts =& MyTextSanitizer::getInstance();

$xoopsOption['template_main']= $mydirname.'_edit.html';

require_once XOOPS_TRUST_PATH.'/libs/altsys/class/D3NotificationHandler.class.php' ; //naao added
//require_once dirname( dirname(__FILE__) ).'/include/functions.php' ; //naao added

//global $mydirname;
//--------------------------------------------------------------------
// GET Initial Valuses
//--------------------------------------------------------------------

$myname = "edit.php";

if(is_object($xoopsUser)) {
	$uid = $xoopsUser->getVar('uid');
	if (d3diary_check_isadmin($mydirname, $uid) && 0 < intval(d3diary_getpost_param('req_uid'))) {
		$req_uid = intval(d3diary_getpost_param('req_uid'));
		$uname = d3diary_get_xoopsuname($req_uid);
	} else {
		$req_uid = $uid;
		$uname = $xoopsUser->getVar('uname');
	}
} else {
    redirect_header(XOOPS_URL.'/user.php',2,_MD_IVUID_ERR);
	exit();
}

$xoopsTpl->assign("yd_uid", $req_uid);
$xoopsTpl->assign("yd_uname", $uname);

$dcfg->uid=$req_uid;
$dcfg->readdb($mydirname);
if($dcfg->blogtype!=0){
    header("Location:".  XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=usr_config');
	exit();
}
$openarea = intval($dcfg->openarea)!=0 ? intval($dcfg->openarea) : 0;

$xoopsTpl->assign("yd_openarea", intval($dcfg->openarea));
$xoopsTpl->assign("yd_use_friend", intval($xoopsModuleConfig['use_friend']));

$diary->bid=intval(d3diary_getpost_param('bid'));
$diary->uid=$req_uid;
$diary->dohtml=intval(d3diary_getpost_param('dohtml'));
if($diary->bid>0 and !d3diary_check_editperm($mydirname, $diary->bid, $uid)){
    redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
	exit();
}
$xoopsTpl->assign("yd_photo_maxsize", $xoopsModuleConfig['photo_maxsize']);
$xoopsTpl->assign("yd_photo_maxpics", $xoopsModuleConfig['photo_maxpics']);
if(!empty($_POST['preview'])){
	$xoopsTpl->assign("preview", $_POST['preview']);	// naao 100417
}
d3diary_assign_smilylist();

$xoopsTpl->assign("yd_use_open_entry", intval($xoopsModuleConfig['use_open_entry']));

// module config  // added by naao
$xoopsTpl->assign("mod_config", $xoopsModuleConfig);

// assign html permission
$gperm_handler =& myXoopsGroupPermHandler::getInstance();
$member_handler =& xoops_gethandler('member');
$group_list =& $member_handler->getGroupList();
$gperm_config = array(
    'allow_html' => '_MD_D3DIARY_PERMDESC_ALLOW_HTML'
);
$html_unames = myPerm::getUsersByName('allow_html');
$xoopsTpl->assign("allow_html",in_array($uname,$html_unames));

// delete
if(!empty($_POST['delsub']) and $diary->bid>0){
	$diary->readdb($mydirname);

	$sql = "SELECT *
			  FROM ".$xoopsDB->prefix($mydirname.'_photo')."
	          WHERE uid=".intval($diary->uid)." and bid=".intval($diary->bid);
	$result = $xoopsDB->query($sql);
	
	$photo->uid=$diary->uid;
	$photo->bid=$diary->bid;
	while ( $dbdat = $xoopsDB->fetchArray($result) ) {
		$photo->pid=$dbdat['pid'];
		$photo->readdb($mydirname);
		/* delfile */
		unlink(XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$photo->pid.$photo->ptype);
		unlink(XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/t_'.$photo->pid.$photo->ptype);
		$photo->deletedb($mydirname);
	}

	$diary->deletedb($mydirname);

	// delete tags
	$tag->uid=$diary->uid;
	$tag->bid=$diary->bid;
	$tag->delete_by_bid($mydirname);

	redirect_header("index.php?req_uid=".$uid,2,_MD_DIARY_DELETED);

// edit
}elseif(!empty($_POST['submit1']) and $diary->bid>0){
	$diary->readdb($mydirname);
	if(empty($diary->create_time)){
	    redirect_header("index.php?page=edit",2,_MD_NODIARY_ERR);
		exit();
	}
	$diary->title=d3diary_getpost_param('title');
	$diary->diary=d3diary_getpost_param('diary');
	$diary->cid=d3diary_getpost_param('cid');
	$diary->dohtml=intval(d3diary_getpost_param('dohtml'));
	
	if ( ($diary->openarea == 100) && (intval(d3diary_getpost_param('openarea') != 100))) {
		if (intval(d3diary_getpost_param('update_time'))==1) {
			$update_create_time = true;
			
			// Trigger Notification  //naao added using "Altsys D3NotificationHandler"
			$users2notify = d3diary_get_users_can_read_entry( $mydirname, $req_uid, intval(d3diary_getpost_param('openarea')));
			$not_handler =& D3NotificationHandler::getInstance() ;
			
			$comment_tags = array( 'ENTRY_TITLE' => $diary->title , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
			$not_handler->triggerEvent( $mydirname , 'd3diary' , 'global' , 0 , 'new_entry' , $comment_tags , $users2notify ) ;

			$comment_tags = array( 'ENTRY_TITLE' => $diary->title , 'ENTRY_BLOGGER' => $uname , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
			$not_handler->triggerEvent( $mydirname , 'd3diary' , 'blogger' , $req_uid , 'new_entry' , $comment_tags , $users2notify ) ;
		
		} else {
			$update_create_time = false;
		}
	} else {
		$update_create_time = false;
	}
	
	$diary->openarea=intval(d3diary_getpost_param('openarea'));
	$openarea = intval($diary->openarea)!=0 ? intval($diary->openarea) : $openarea;

	$cname=d3diary_getpost_param('cname');
	$msg=d3diary_checkphoto($mydirname);
	// subscribe
	if(empty($msg)){
		// new category
		if($diary->cid==-1){
			$category->cname= $cname;
			if(!empty($category->cname)){
				$category->uid=$req_uid;
				$diary->cid=$category->insertdb($mydirname);
			}else{
				$diary->cid=0; // not categorized/other
			}
		}
		$yd_data['bid'] = $diary->bid;
		$yd_data['uid'] = $req_uid;
		$yd_data['cid'] = $diary->cid;
		$yd_data['title'] = htmlSpecialChars($diary->title);
		$yd_data['diary'] = $yd_data['diary4edit'] = htmlSpecialChars($diary->diary);
		$yd_data['openarea']=$diary->openarea;	// naao added
		$yd_data['dohtml'] = $diary->dohtml;
		//	var_dump($yd_data['dohtml']);
		$xoopsTpl->assign("yd_data", $yd_data);
		
		$diary->updatedb($mydirname, $update_create_time);
		// needs bid
		d3diary_regphoto($mydirname);

		d3diary_regtags($mydirname);

		$category->cid = $diary->cid;
		$category->uid=$req_uid;
		$category->readdb($mydirname);
		$openarea = intval($category->openarea)!=0 ? intval($category->openarea) : $openarea;
	    if (intval(d3diary_getpost_param('update_ping'))==1 && $openarea==0 ){
	    		$blogtitle=mb_convert_encoding($uname._MD_DIARY_TITLENAME, "UTF-8");
			$blogtopurl=mb_convert_encoding(XOOPS_URL.'/modules/'.$mydirname.'/index.php?req_uid='.$req_uid, "UTF-8");
			d3diary_ping_send($blogtitle, $blogtopurl);
	    }
		redirect_header("index.php?page=detail&amp;bid=".$diary->bid,2,_MD_DIARY_UPDATED);

	}else{
//		redirect_header("edit.php?bid=".$diary->bid,2,$msg);
		$yd_data['error'] = $msg;
		// input form
		assign_category($mydirname);
		$num_rows=d3diary_assign_photo();
		$yd_data['cname'] = htmlSpecialChars($cname);
		$yd_data['bid'] = $diary->bid;
		$yd_data['uid'] = $req_uid;
		$yd_data['cid'] = $diary->cid;
		$yd_data['title'] = htmlSpecialChars($diary->title);
		$yd_data['diary'] = $yd_data['diary4edit'] = htmlSpecialChars($diary->diary);
		$yd_data['photo_num'] = $num_rows;
		$yd_data['openarea']=$diary->openarea;	// naao added
		$yd_data['dohtml'] = $diary->dohtml;
		//	var_dump($yd_data['dohtml']);
		// set filename
		for($i=1;$i<=(3-$num_rows);$i++){
			$yd_data['filename'][$i] = $_FILES['filename']['name'][$i];
		}
		$xoopsTpl->assign("yd_data", $yd_data);
		$xoopsTpl->assign("mydirname", $mydirname);
	}

// create
}elseif(!empty($_POST['submit1'])){

	if($uid != $req_uid){
		redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
		exit();
	}

	$diary->title=d3diary_getpost_param('title');
	$diary->diary=d3diary_getpost_param('diary');
	$diary->cid=d3diary_getpost_param('cid');
	$diary->openarea=d3diary_getpost_param('openarea');	// naao added
	$openarea = intval($diary->openarea)!=0 ? intval($diary->openarea) : $openarea;

	$yd_data['dohtml'] = d3diary_getpost_param('dohtml');	// naao added
		//var_dump($yd_data['dohtml']);
	
	$cname=d3diary_getpost_param('cname');
	$msg=d3diary_checkphoto($mydirname);
	if(empty($msg)){
		// new category
		if($diary->cid==-1){
			$category->cname=$cname;
			if(!empty($category->cname)){
				$category->uid=$req_uid;
				$diary->cid=$category->insertdb($mydirname);
			}else{
				$diary->cid=0; // not categorized/other
			}
		}
		$yd_data['uid'] = $req_uid;
		$yd_data['cid'] = $diary->cid;
		$yd_data['title'] = htmlSpecialChars($diary->title);
		$yd_data['diary'] = htmlSpecialChars($diary->diary);
		$diary->bid=$diary->insertdb($mydirname);
		$yd_data['bid'] = $diary->bid;
		$yd_data['openarea']=$diary->openarea;	// naao added
		$yd_data['dohtml'] = $diary->dohtml;
		$xoopsTpl->assign("yd_data", $yd_data);
		$xoopsTpl->assign("mydirname", $mydirname);

		
		// Trigger Notification  //naao added using "Altsys D3NotificationHandler"

		$users2notify = d3diary_get_users_can_read_entry( $mydirname, $req_uid, $yd_data['openarea']);
		$not_handler =& D3NotificationHandler::getInstance() ;
		
		$comment_tags = array( 'ENTRY_TITLE' => $yd_data['title'] , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
		$not_handler->triggerEvent( $mydirname , 'd3diary' , 'global' , 0 , 'new_entry' , $comment_tags , $users2notify ) ;

		$comment_tags = array( 'ENTRY_TITLE' => $yd_data['title'] , 'ENTRY_BLOGGER' => $uname , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
		$not_handler->triggerEvent( $mydirname , 'd3diary' , 'blogger' , $req_uid , 'new_entry' , $comment_tags , $users2notify ) ;
		
		// needs bid
		d3diary_regphoto($mydirname);

		d3diary_regtags($mydirname);
		
		$category->cid = $diary->cid;
		$category->uid=$req_uid;
		$category->readdb($mydirname);
		$openarea = intval($category->openarea)!=0 ? intval($category->openarea) : $openarea;
	    if (intval(d3diary_getpost_param('update_ping'))==1 && $openarea==0 ){
	    		$blogtitle=mb_convert_encoding($uname._MD_DIARY_TITLENAME, "UTF-8");
			$blogtopurl=mb_convert_encoding(XOOPS_URL.'/modules/'.$mydirname.'/index.php?req_uid='.$req_uid, "UTF-8");
			d3diary_ping_send($blogtitle, $blogtopurl);
	    }

		// increment post	added 2009/06/30 ver0.02
		if( is_object( @$xoopsUser ) ) {
			$xoopsUser->incrementPost() ;
		}

		redirect_header("index.php?page=detail&amp;bid=".$diary->bid,2,_MD_DIARY_CREATED);
	}else{
		$yd_data['error'] = $msg;
		// input form
		d3diary_assign_category();
		$num_rows=d3diary_assign_photo($mydirname);
		$yd_data['cname'] = htmlSpecialChars($cname);
		$yd_data['bid'] = 0;
		$yd_data['uid'] = $req_uid;
		$yd_data['cid'] = $diary->cid;
		$yd_data['title'] = htmlSpecialChars($diary->title);
		$yd_data['diary'] = htmlSpecialChars($diary->diary);
		$yd_data['photo_num'] = $num_rows;
		$yd_data['openarea']=$diary->openarea;	// naao added
		$yd_data['dohtml'] = $diary->dohtml;
		// set filename
		for($i=1;$i<=(3-$num_rows);$i++){
			$yd_data['filename'][$i] = $_FILES['filename']['name'][$i];
		}
		$xoopsTpl->assign("yd_data", $yd_data);
		$xoopsTpl->assign("mydirname", $mydirname);
	}


// input form
}else{

	if($uid != $req_uid && $diary->bid <= 0){
		redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
		exit();
	}
	// delete photo - modifying data will be erased
	if(d3diary_getpost_param('photodel')==1 and $diary->bid>0){
		$photo->uid=$diary->uid;
		$photo->bid=$diary->bid;
		$photo->pid=d3diary_getpost_param('pid');
		$photo->readdb($mydirname);
		$photo->deletedbF($mydirname);
		/* delfile */
		unlink(XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$photo->pid.$photo->ptype);
		unlink(XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/t_'.$photo->pid.$photo->ptype);
		$yd_data['msg'] = _MD_FILEDELETED;
	}

	$diary->readdb($mydirname);

	d3diary_assign_category_foredit($mydirname, $req_uid);
	$num_rows=d3diary_assign_photo($mydirname);
	
		$yd_data['bid'] = $diary->bid;
		$yd_data['uid'] = $req_uid;
		$yd_data['photo_num'] = $num_rows;

	if(!empty($_POST['preview'])){
		$yd_data['cid']=d3diary_getpost_param('cid');
		if($yd_data['cid']>0){
			$category =& Category::getInstance();
			$category->uid = $diary->uid;
			$category->cid = intval($yd_data['cid']);
			$category->readdb($mydirname);
			$yd_data['cname'] = $category->cname;
		}else{
			$yd_data['cname'] = d3diary_getpost_param('cname');
		}
		$yd_data['title']=d3diary_getpost_param('title');
		$yd_data['openarea']=d3diary_getpost_param('openarea');	// naao added
		$yd_data['dohtml'] = d3diary_getpost_param('dohtml');	// naao added
		$yd_data['update_ping'] = intval(d3diary_getpost_param('update_ping'));

		// You Tube insert
		$pattern = '/\[\[YT:([\w\-]+)\]\]/i';
		$replacement ='<br /><object width="425" height="344">'.
		'<param name="movie" value="http://www.youtube.com/v/$1&hl=ja&fs=1"></param>'.
		'<param name="allowFullScreen" value="true"></param>'.
		'<embed src="http://www.youtube.com/v/$1&hl=ja&fs=1"'.
		'type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed>'.
		'</object><br />';

		//$yd_data['diary']=preg_replace($pattern, $replacement, $myts->previewTarea(d3diary_getpost_param('diary')));
		if ($yd_data['dohtml'] == "1") {
			// ($text, $html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1)
			$yd_data['diary']=preg_replace($pattern, $replacement, $myts->previewTarea(d3diary_getpost_param('diary'),1,1,0,1,0));
		} else {
			$yd_data['diary']=preg_replace($pattern, $replacement, $myts->previewTarea(d3diary_getpost_param('diary'),0,1,1,1,1));
		}
			$yd_data['diary4edit']= htmlSpecialChars(d3diary_getpost_param('diary'));

	} else {
		$yd_data['cid'] = $diary->cid;
		$yd_data['title'] = htmlSpecialChars($diary->title);
		$yd_data['diary'] = $yd_data['diary4edit'] =htmlSpecialChars($diary->diary);
		$yd_data['openarea']=$diary->openarea;	// naao added
		$yd_data['dohtml'] = $diary->dohtml;
	}
	if(!empty($diary->create_time)){
		$yd_data['create_time']   = $diary->create_time;
		$ctime = split("[-: ]", $diary->create_time);
		
		$yd_data['year']   = d3diary_MyformatTimestamp(mktime($ctime[3],$ctime[4],$ctime[5],$ctime[1],$ctime[2],$ctime[0]), "Y");
		$yd_data['month']   = d3diary_MyformatTimestamp(mktime($ctime[3],$ctime[4],$ctime[5],$ctime[1],$ctime[2],$ctime[0]), "m");
		$yd_data['day']   = d3diary_MyformatTimestamp(mktime($ctime[3],$ctime[4],$ctime[5],$ctime[1],$ctime[2],$ctime[0]), "d");
		$yd_data['time']   = d3diary_MyformatTimestamp(mktime($ctime[3],$ctime[4],$ctime[5],$ctime[1],$ctime[2],$ctime[0]), "H:i");

	}

		$xoopsTpl->assign("yd_data", $yd_data);
		$xoopsTpl->assign("mydirname", $mydirname);
	
	$pop_tags=array(); $perso_tags=array(); $_entry_tags=array(); $entry_tags=array();
	d3diary_get_taglist($mydirname, $req_uid, $diary->bid, $pop_tags, $person_tags, $_entry_tags);
	
	// use poet_tags for preview
	if(!empty($_POST['preview'])){
		$post_tags = d3diary_getpost_param('tags');
		if(!empty($post_tags)) {
			if (function_exists('mb_convert_kana')){
				preg_match_all("/\[(.+)\]/U", mb_convert_kana($post_tags, 'asKV'), $tags);
			} else {
				preg_match_all("/\[(.+)\]/U", $post_tags, $tags);
			}
			$arr_tags = array_unique($tags[1]);
			$i=0;
			foreach ($arr_tags as $_tag){
				$entry_tags[$i]['tag'] = $_tag;
				//$entry_tags[$i]['tag_urlenc'] = rawurlencode($_tag);
				$i++;
			}
		}
	} else {
		$entry_tags = $_entry_tags;
	}
	$xoopsTpl->assign("popTagArr",$pop_tags);
	$xoopsTpl->assign("myTagArr",$person_tags);
	$xoopsTpl->assign("bTagArr",$entry_tags);
	
	// assign module header for tags
	$d3diary_header = '<link rel="stylesheet" type="text/css" media="screen" href="'.XOOPS_URL.'/modules/'.$mydirname.'/include/tag.css" />'."\r\n";
	$d3diary_header .= '<script type="text/javascript" src="'.XOOPS_URL.'/modules/'.$mydirname.'/include/tag.js" charset="utf-8"></script>'."\r\n";
	if($xoopsModuleConfig['body_htmleditor']=="common_fckeditor"){
		$d3diary_header .= '<script type="text/javascript" src="'.XOOPS_URL.'/common/fckeditor/fckeditor.js"></script>'."\r\n";
	}
	$xoopsTpl->assign( 'xoops_module_header' ,$xoopsTpl->get_template_vars( 'xoops_module_header' ).$d3diary_header );

}

function d3diary_assign_photo($mydirname){
	global $diary, $xoopsDB, $xoopsTpl;
	
	$sql = "SELECT *
			  FROM ".$xoopsDB->prefix($mydirname.'_photo')."
	          WHERE uid=".intval($diary->uid)." and bid=".intval($diary->bid)." ORDER BY tstamp";

	$result = $xoopsDB->query($sql);
	$num_rows = $xoopsDB->getRowsNum($result);

	while ( $dbdat = $xoopsDB->fetchArray($result) ) {
		$yd_photo['pid']   = $dbdat['pid'];
		$yd_photo['pname']   = $dbdat['pid'].$dbdat['ptype'];
		$yd_photo['thumbnail']   = "t_".$dbdat['pid'].$dbdat['ptype'];
		$xoopsTpl->append("yd_photo", $yd_photo);
	}
	return $num_rows;
}

function d3diary_assign_tags($mydirname){
	global $diary, $xoopsDB, $xoopsTpl;
	
	$sql = "SELECT *
			  FROM ".$xoopsDB->prefix($mydirname.'_tag')."
	          WHERE uid=".intval($diary->uid)." and bid=".intval($diary->bid);

	$result = $xoopsDB->query($sql);
	$num_rows = $xoopsDB->getRowsNum($result);

	while ( $dbdat = $xoopsDB->fetchArray($result) ) {
		$yd_tag['id']   = intval($dbdat['id']);
		$yd_tag['tag_name']   = $myts->makeTboxData4Show($dbdat['tag_name']);
		$yd_tag['tag_group']   = $dbdat['tag_group'];
		$xoopsTpl->append("yd_tag", $yd_tag);
	}
	return $num_rows;
}

function d3diary_assign_smilylist(){
	global $xoopsDB, $xoopsTpl;
	
	$sql = "SELECT *
		  FROM ".$xoopsDB->prefix('smiles')."
	          WHERE display=1";
	$result = $xoopsDB->query($sql);
	$smilylist=_MD_SMILY_MENU;
	$smilylist.="&nbsp;[<a href='#moresmiley' onclick='javascript:openWithSelfMain(\"".XOOPS_URL."/misc.php?action=showpopups&amp;type=smilies&amp;target=diary\",\"smilies\",300,475);'>"._MD_MORE."</a>]<br />";
	$i=0;
	while ( $dbdat = $xoopsDB->fetchArray($result) ) {
		$smilylist.="<img onclick='xoopsCodeSmilie(\"diary\", \" ".$dbdat['code']." \");' onmouseover='style.cursor=\"hand\"' src='".XOOPS_URL."/uploads/".$dbdat['smile_url']."' alt='".$dbdat['emotion']."' />";
		$i++;
		if($i>=20){
			$i=0;
			$smilylist.="<br />";
		}
	}
	$xoopsTpl->assign("smilylist", $smilylist);
}

function d3diary_assign_category_foredit($mydirname, $uid){
	global $xoopsDB, $xoopsTpl, $myts, $xoopsModuleConfig;
	
	//$sql = "SELECT *
	//		  FROM ".$xoopsDB->prefix($mydirname.'_category')."
	//          WHERE uid=".intval($uid)." ORDER BY corder";

	// naao changed for common category (uid=0)
	$sql = "SELECT *
			  FROM ".$xoopsDB->prefix($mydirname.'_category')."
	          WHERE uid=".intval($uid)." OR uid=0 ORDER BY corder";

	$result = $xoopsDB->query($sql);

	while ( $dbdat = $xoopsDB->fetchArray($result) ) {
		if($dbdat['blogtype'] != 100){
			$catopt['cid']   = $dbdat['cid'];
			$catopt['cname']   = htmlspecialchars($dbdat['cname']);
			if (intval($xoopsModuleConfig['use_open_cat'])==1){
				if (intval($dbdat['openarea'])==0) $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_FOLLOW')."]";
				if (intval($dbdat['openarea'])==1) $catopt['cname'] .= "  &nbsp;[".constant('_MD_CONF2_1OLOSE')."]";
				if (intval($dbdat['openarea'])==2) $catopt['cname'] .= "  &nbsp;[".constant('_MD_CONF2_2FRIEND')."]";
				if (intval($dbdat['openarea'])==3) $catopt['cname'] .= "  &nbsp;[".constant('_MD_CONF2_3FRIEND2')."]";
				if (intval($dbdat['openarea'])==100) $catopt['cname'] .= " &nbsp; [".constant('_MD_CONF2_100HIDE')."]";
			}
			$catopt['corder']   = $dbdat['corder'];
			$catopt['blogtype']   = $dbdat['blogtype'];
			$catopt['dohtml']   = $dbdat['dohtml'];
			$xoopsTpl->append("catopt", $catopt);
		}
	}
}

function d3diary_checkphoto($mydirname){
	global $diary, $xoopsOption, $xoopsTpl, $xoopsModuleConfig;
	
	$postmax= intval($xoopsModuleConfig['photo_maxpics']); // max photo numbers
	$totalsize=0;

	for($i=0;$i<$postmax;$i++){
		/* check filesize */
		$totalsize+=intval($_FILES['filename']['size'][$i]);
		if(!empty($_FILES['filename']['name'][$i])){
			if($_FILES['filename']['size'][$i] <=0){
			   return _MD_NOFILE.":photo(".$i.")";
			}
			/* check filetype */
			$ptype = strrchr($_FILES['filename']['name'][$i], ".");
			if(strcasecmp($ptype, ".png")!=0 and strcasecmp($ptype, ".jpg")!=0 and
			   strcasecmp($ptype, ".jpeg")!=0 and strcasecmp($ptype, ".gif")!=0){
			   return _MD_IVTYPE.":photo(".$i.")";
			}
			list($width, $height, $type, $attr) = getimagesize($_FILES['filename']['tmp_name'][$i]);
			if($type <= 0 or $type >=4){
				   return _MD_IVTYPE.":photo(".$i.")";
			}
		}
	}
	if($totalsize > ($xoopsModuleConfig['photo_maxsize']*1024)){
	   return _MD_SIZEOVER;
	}

}

function d3diary_regphoto($mydirname){
	global $photo, $diary, $xoopsOption, $xoopsTpl, $xoopsModuleConfig;

	$th_size= empty( $xoopsModuleConfig['photo_thumbsize'] ) ? 160: intval($xoopsModuleConfig['photo_thumbsize']);
	$postmax= intval($xoopsModuleConfig['photo_maxpics']); // max photo numbers
	$photo->uid=$diary->uid;
	$photo->bid=$diary->bid;

	/* create dir */
//	$uploaddir = XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$diary->uid;
//	if(!is_dir($uploaddir)){
//		if(!mkdir($uploaddir)){
//		    redirect_header(XOOPS_URL.'/index.php',3,_MD_MKDIRERR);
//		}
//	}
	$uploaddir = XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/';

	for($i=0;$i<=$postmax;$i++){
		if(!empty($_FILES['filename']['name'][$i])){
			/* set timestamp to pid */
			$photo->pid   = 	md5(uniqid(rand(),1));
			$photo->ptype = strrchr($_FILES['filename']['name'][$i], ".");
			if(strcasecmp($photo->ptype, ".png")!=0 and strcasecmp($photo->ptype, ".jpg")!=0 and
			   strcasecmp($photo->ptype, ".jpeg")!=0 and strcasecmp($photo->ptype, ".gif")!=0){
			   continue;
			}

			list($width, $height, $type, $attr) = getimagesize($_FILES['filename']['tmp_name'][$i]);

			/* move */
			$uploadfile = XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$photo->pid.$photo->ptype;
			if (!move_uploaded_file($_FILES['filename']['tmp_name'][$i], $uploadfile)) {
			    redirect_header(XOOPS_URL.'/index.php',3,_MD_IVFILE);
			}
	
			/* create thumbnail*/
			$th_file = XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/t_'.$photo->pid.$photo->ptype;
			if($type == 1){
				$src_id = imagecreatefromgif($uploadfile);
			} elseif($type == 2){
				$src_id = imagecreatefromjpeg($uploadfile);
			} else {
				$src_id = imagecreatefrompng($uploadfile);
			}

			if($xoopsModuleConfig['photo_useresize']==1){
				// shrink large size data(640px)
				if($width>640 or $height>640){
					if($width >= $height){
						$th_width  = 640;
						$th_height = $height * $th_width / $width;
					} else {
						$th_height = 640;
						$th_width  = $width * $th_height / $height;
					}
					$dst_id = imagecreatetruecolor($th_width, $th_height);
					imagecopyresampled($dst_id, $src_id, 0, 0, 0, 0, $th_width, $th_height, $width, $height);
					if($type == 1){
						imagegif($dst_id, $uploadfile);
					} elseif($type == 2){
						imagejpeg($dst_id, $uploadfile);
					} else {
						imagepng($dst_id, $uploadfile);
					}
					imagedestroy($dst_id);
				}
				$xoopsTpl->assign("yd_useresize", 1);
			}

			// make sumbnail and save
			if($width>$th_size or $height>$th_size){
				if($width >= $height){
					$th_width  = $th_size;
					$th_height = $height * $th_width / $width;
				} else {
					$th_height = $th_size;
					$th_width  = $width * $th_height / $height;
				}
			}else{
				$th_width  = $width;
				$th_height = $height;
			}
			
			$dst_id = imagecreatetruecolor($th_width, $th_height);
			imagecopyresampled($dst_id, $src_id, 0, 0, 0, 0, $th_width, $th_height, $width, $height);
			if($type == 1){
				imagegif($dst_id, $th_file);
			} elseif($type == 2){
				imagejpeg($dst_id, $th_file);
			} else {
				imagepng($dst_id, $th_file);
			}
	
			imagedestroy($src_id);
			imagedestroy($dst_id);
			$photo->insertdb($mydirname);
		}
	}
	
}

function d3diary_regtags($mydirname){
	global $xoopsDB, $tag, $diary, $xoopsTpl, $xoopsModuleConfig;

	$post_tags = d3diary_getpost_param('tags');

	if(!empty($post_tags)) {
		if (function_exists('mb_convert_kana')){
			preg_match_all("/\[(.+)\]/U", mb_convert_kana($post_tags, 'asKV'), $tags);
		} else {
			preg_match_all("/\[(.+)\]/U", $post_tags, $tags);
		}
		$arr_tags = array_unique($tags[1]);
	} else {
		$arr_tags = array();
	}

		$sql = "SELECT *
			  FROM ".$xoopsDB->prefix($mydirname.'_tag')."
		          WHERE bid=".intval($diary->bid);

		$result = $xoopsDB->query($sql);

		$db_tags = array();
		while ( $dbdat = $xoopsDB->fetchArray($result) ) {
			$db_tags[] = $dbdat['tag_name'];
			if(!in_array($dbdat['tag_name'],$arr_tags)){
				// delete the tag
				$tag->tag_id = $dbdat['tag_id'];
				$tag->deletedb($mydirname);
			}
		}

		foreach ($arr_tags as $post_tag) {
			if(!in_array($post_tag, $db_tags)){
				//insert db
				$tag->bid = intval($diary->bid);
				$tag->uid = intval($diary->uid);
				$tag->tag_name = $post_tag;
				$tag->insertdb($mydirname);
			}
		}
}

function d3diary_ping_send($blogtitle, $blogtopurl) {
	global $xoopsModuleConfig;
	
	if (!empty($xoopsModuleConfig['updateping_url'])) {
		$arr_ping_servers = explode("\n", $xoopsModuleConfig['updateping_url']);
		$arr_ping_servers = array_map("trim" ,$arr_ping_servers);
		$arr_ping_servers2 = array_map("parse_url" ,$arr_ping_servers);
		$ping = array();
		
		foreach ($arr_ping_servers2 as $ping_server){
			$ping[$ping_server['host']] = $ping_server['path'] ;
		}
	
		$param = array(
			new XML_RPC_Value($blogtitle, 'string'),
			new XML_RPC_Value($blogtopurl, 'string')
		);
	
		$msg=new XML_RPC_Message('weblogUpdates.ping', $param);
	
		foreach($ping as $pingServer => $pingPath) {
			$client = new XML_RPC_Client($pingPath, $pingServer, 80);
			$response = $client->send($msg);
			if(!$response) {
				echo "timeout : ".$pingServer."<br />\n";
			}elseif($response->faultCode()) {
				echo "failed : ".$pingServer."<br />\n";
			}else {
				echo "success!! : ".$pingServer."<br />\n";
			}
		}
	}
}

include_once XOOPS_ROOT_PATH.'/footer.php';


?>
