<?php

require_once XOOPS_TRUST_PATH.'/modules/d3forum/class/D3commentAbstract.class.php' ;
require_once  XOOPS_TRUST_PATH.'/modules/d3diary/include/functions.php' ; //

// a class for d3forum comment integration
class d3diaryD3commentContent extends D3commentAbstract {


function fetchSummary( $external_link_id )
{
	global $xoopsDB, $xoopsConfig, $xoopsUser;

	$db =& Database::getInstance() ;
	$myts =& MyTextSanitizer::getInstance();
	
	$module_handler =& xoops_gethandler( 'module' ) ;
	$module =& $module_handler->getByDirname( $this->mydirname ) ;
	
	$entryID = intval( $external_link_id ) ;
	$mydirname = $this->mydirname ;
	if( preg_match( '/[^0-9a-zA-Z_-]/' , $mydirname ) ) die( 'Invalid mydirname' ) ;

	if(is_object($xoopsUser)) {
		$uid = $xoopsUser->getVar('uid');
	} else {
		$uid = 0;
	}

	$sql = "SELECT d.bid AS bid, d.uid AS uid, d.cid AS cid, d.title AS title, d.diary AS diary, 
		d.openarea AS openarea_entry, d.dohtml AS dohtml, cfg.openarea AS openarea, cat.openarea AS openarea_category
		FROM ".$db->prefix($mydirname.'_diary')." d LEFT JOIN "
		.$db->prefix($mydirname.'_config')." cfg ON d.uid=cfg.uid LEFT JOIN "
		.$db->prefix($mydirname.'_category')." cat ON (d.cid=cat.cid AND d.uid=cat.uid) WHERE d.bid =".$entryID ;

	$content_row = $db->fetchArray( $db->query( $sql ) );
	
	$diary_uid = $content_row['uid'];
	$openarea = intval($content_row['openarea']);
	$openarea_entry = intval($content_row['openarea_entry']);
	$openarea_category = intval($content_row['openarea_category']);
	$dohtml = intval($content_row['dohtml']);

	//checking permission : if false, redirect
	$permission = d3diary_check_permission($mydirname, $diary_uid, $uid, $openarea, $openarea_entry, $openarea_category);

		if( $permission != true ) {
			redirect_header(XOOPS_URL.'/user.php',3,_NOPERM);
			exit();
		}

	$categoryID = $content_row['cid'];
	$uri = XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&bid='.$entryID.'&req_uid='.$diary_uid;

	if ($dohtml ==1){
		$str = strip_tags($myts->displayTarea($content_row['diary'],1,1,0,1));
	} else {
		$str = strip_tags($myts->displayTarea($content_row['diary'],0,1,1,0));
	}
	$summary = xoops_substr( $str , 0 , 255 );

	return array(
		'dirname' => $mydirname ,
		'module_name' => $module->getVar( 'name' ) ,
		'subject' => $myts->makeTboxData4Show( $content_row['title'] ) ,
		'uri' => $uri,
		'summary' => $summary,
	) ;
}

// callback on newtopic/edit/reply/delete  overrides function added 2009/03/31
function onUpdate( $mode , $link_id , $forum_id , $topic_id , $post_id = 0 )
{
	global $xoopsDB, $xoopsConfig, $xoopsUser;

	if (($mode != "newtopic") && ($mode != "reply")) return true ;
	
	// non-module integration returns false quickly
	if( ! is_object( $this->module ) ) return false ;
	$not_module =& $this->module ;
	$not_modid = $this->module->getVar('mid') ;
	$not_catinfo =& notificationCommentCategoryInfo( $not_modid ) ;
	// module without 'comment' notification
	if( empty( $not_catinfo ) ) return false ;

	$mydirname = $this->mydirname ;

	//get uname
	if(is_object($xoopsUser)) {
		$uname = $xoopsUser->getVar('uname');
	}
	
	$openarea_entry = 0; //default
	
	//get entry's title, bid, uid
	$sql = "SELECT * FROM " . $xoopsDB->prefix($mydirname.'_diary') . " WHERE bid = ".intval($link_id);
	$result = $xoopsDB->query($sql);
	while ( $dbdat = $xoopsDB->fetchArray($result)){
		$title = $dbdat['title'];
		$bid = intval($dbdat['bid']);
		$uid = intval($dbdat['uid']);
		$cid = intval($dbdat['cid']);
		$openarea_entry = intval($dbdat['openarea']);
	}

	$openarea_category = d3diary_get_openarea_cat($mydirname,$uid,$cid);
	
	// Trigger Notification
	$users2notify = d3diary_get_users_can_read_entry( $mydirname, $uid, $openarea_entry, $openarea_category);
	$not_handler =& D3NotificationHandler::getInstance() ;
	
	$comment_tags = array( 'ENTRY_TITLE' => $title , 'ENTRY_BLOGGER' => $uname , 'ENTRY_URI' => XOOPS_URL."/modules/".$mydirname."/index.php?page=detail&bid=".$link_id."&req_uid=".$uid."#comment" ) ;
	$not_handler->triggerEvent( $this->mydirname , 'd3diary' , 'blogger' , $uid , 'new_comment' , $comment_tags , $users2notify ) ;
	
	$not_category = $not_catinfo['name'] ;
	$not_itemid = $link_id ;
	$not_handler->triggerEvent( $this->mydirname , 'd3diary' , $not_category , $not_itemid , 'comment' , $comment_tags , $users2notify ) ;
	
	return true ;
}

// override function
function validate_id( $link_id )
{
	global $xoopsUser;

	$link_id = intval( $link_id ) ;
	$mydirname = $this->mydirname ;

	$db =& Database::getInstance() ;

	list( $count ) = $db->fetchRow( $db->query( "SELECT COUNT(*) FROM ".$db->prefix($mydirname."_diary")." WHERE bid=$link_id" ) ) ;
	if( $count <= 0 ) return false ;

	if(is_object($xoopsUser)) {
		$uid = $xoopsUser->getVar('uid');
	} else {
		$uid = 0;
	}

	$sql = "SELECT d.bid AS bid, d.uid AS uid, d.openarea AS openarea_entry, cfg.openarea AS openarea, 
		cat.openarea AS openarea_category
		FROM ".$db->prefix($mydirname.'_diary')." d LEFT JOIN "
		.$db->prefix($mydirname.'_config')." cfg ON d.uid=cfg.uid LEFT JOIN "
		.$db->prefix($mydirname.'_category')." cat ON (d.cid=cat.cid AND d.uid=cat.uid) WHERE d.bid =".$link_id ;

	$content_row = $db->fetchArray( $db->query( $sql ) );
	
	$diary_uid = $content_row['uid'];
	$openarea = intval($content_row['openarea']);
	$openarea_entry = intval($content_row['openarea_entry']);
	$openarea_category = intval($content_row['openarea_category']);
	$permission = d3diary_check_permission($mydirname, $diary_uid, $uid, $openarea, $openarea_entry, $openarea_category);
	if( $permission == true ) {
		return $link_id  ;
	}
	return false;

}

// set forum_dirname from config.comment_dirname
function setD3forumDirname( $d3forum_dirname = '' )
{
	if( ! empty($this->mod_config['comment_dirname'] ) ) {
    		$this->d3forum_dirname = $this->mod_config['comment_dirname'] ;
	} elseif( ! empty( $params['comment_dirname'] ) ) {
		$this->d3forum_dirname = $params['comment_dirname'] ;
	} elseif( $d3forum_dirname ) {
		$this->d3forum_dirname = $d3forum_dirname ;
	} else {
		$this->d3forum_dirname = 'd3forum' ;
	}
}

// d3comment for legacy comment callback overrides function added 2009/03/31
function processCommentNotifications( $mode , $link_id , $forum_id , $topic_id , $post_id )
{
	return true ;
}

}

?>