<?php

defined('MBQ_IN_IT') or exit;

MbqMain::$oClk->includeClass('MbqBaseWrEtPm');

/**
 * private message write class

 */
Class MbqWrEtPm extends MbqBaseWrEtPm {
    
    public function __construct() {
    }
    
    /**
     * add private message
     */
    public function addMbqEtPm($oMbqEtPm) {
        $toUser = array();
        $cryptmode = MbqMain::$oMbqAppEnv->pm->config->cryptmode;
        $date  = uddetime(MbqMain::$oMbqAppEnv->pm->config->timezone);
        $replyid = 0;
        for ($j= 0; $j<count($oMbqEtPm->userNames->oriValue); $j++){
            $toUser = JFactory::getUser($oMbqEtPm->userNames->oriValue[$j]);
            if(!$toUser->id){
                MbqError::alert('', "There is no user with this username: " . $oMbqEtPm->userNames->oriValue[$j] , '', MBQ_ERR_APP);
            }
            $savemessage = (is_array($oMbqEtPm->msgTitle->oriValue))? $oMbqEtPm->msgTitle->oriValue[$j] : $oMbqEtPm->msgTitle->oriValue;
            if($savemessage) $savemessage .= PHP_EOL . ' ';
            $savemessage .= (is_array($oMbqEtPm->msgContent->oriValue))? $oMbqEtPm->msgContent->oriValue[$j] : $oMbqEtPm->msgContent->oriValue;
            if (MbqMain::$oMbqAppEnv->pm->config->cryptmode>=1) 
                $savemessage = strip_tags($savemessage);
            else 
                $savemessage = addslashes(strip_tags($savemessage));
            $savemessage = $this->processToSave($savemessage);
            $msgId = uddeIMsaveRAWmessage(MbqMain::$oMbqAppEnv->oCurJUser->id, $toUser->id, $replyid, $savemessage, $date, MbqMain::$oMbqAppEnv->pm->config, $cryptmode);
            $oMbqEtPm->msgId->setOriValue($msgId);
        }
        return $oMbqEtPm;
    }
    
    public function processToSave($message){
        //$message = preg_replace('/\[img\](.*?)\[\/img\]/i', '<img alt="" src="$1"/>', $message);
        return $message;
    }

    public function deleteMbqEtPmMessage($oMbqEtPm) {
        $boxId = $oMbqEtPm->boxId->oriValue;
        $msgId =  $oMbqEtPm->msgId->oriValue;
        $deletetime = uddetime(MbqMain::$oMbqAppEnv->pm->config->timezone);
        $database = uddeIMgetDatabase();
        if($boxId==1){
            $userid =  $oMbqEtPm->userId->oriValue;
            if($database->setQuery("UPDATE #__uddeim SET totrash=1, totrashdate=".(int)$deletetime." WHERE toid=".(int)$userid." AND id=".(int)$msgId )->query())
                return true;
        }else{
            $userid =  $oMbqEtPm->msgFromId->oriValue;
            if($database->setQuery("UPDATE #__uddeim SET totrashoutbox=1, totrashdateoutbox=".(int)$deletetime." WHERE fromid=".(int)$userid." AND id=".(int)$msgId )->query())
                return true;
        }
	return false;
        //uddeIMpurgeMessageFromUser($fromid, $messageid);
    }
    

    

    public function markMbqEtPmUnread($userid, $msgId){
        $database = uddeIMgetDatabase();
	if($database->setQuery("UPDATE #__uddeim SET toread=0 WHERE toid=".(int)$userid." AND id=".(int)$msgId)->query())
                return (object) array('message'=>'Message Mark Unread');
        return false;
    }
    
    public function markMbqEtPmRead($userid, $msgId){
        $database = uddeIMgetDatabase();
	if($database->setQuery("UPDATE #__uddeim SET toread=1 WHERE toid=".(int)$userid." AND id=".(int)$msgId)->query())
                return (object) array('message'=>'Message Mark Read');
        return false;
    }
    
  
}

