ConversationMessageModel::getRecent PHP Method

getRecent() public method

Events: BeforeGet.
Since: 2.0.0
public getRecent ( integer $ConversationID, integer $ViewingUserID, integer $Offset = '0', integer $Limit = '', array $Wheres = '' ) : Gdn_DataSet
$ConversationID integer Unique ID of conversation being viewed.
$ViewingUserID integer Unique ID of current user.
$Offset integer Number to skip.
$Limit integer Maximum to return.
$Wheres array SQL conditions.
return Gdn_DataSet SQL results.
    public function getRecent($ConversationID, $ViewingUserID, $Offset = '0', $Limit = '', $Wheres = '')
    {
        if ($Limit == '') {
            $Limit = Gdn::config('Conversations.Messages.PerPage', 50);
        }
        $Offset = !is_numeric($Offset) || $Offset < 0 ? 0 : $Offset;
        if (is_array($Wheres)) {
            $this->SQL->where($Wheres);
        }
        $this->fireEvent('BeforeGet');
        return $this->SQL->select('cm.*')->select('iu.Name', '', 'InsertName')->select('iu.Email', '', 'InsertEmail')->select('iu.Photo', '', 'InsertPhoto')->from('ConversationMessage cm')->join('Conversation c', 'cm.ConversationID = c.ConversationID')->join('UserConversation uc', 'c.ConversationID = uc.ConversationID and uc.UserID = ' . $ViewingUserID, 'left')->join('User iu', 'cm.InsertUserID = iu.UserID', 'left')->beginWhereGroup()->where('uc.DateCleared is null')->orWhere('uc.DateCleared <', 'cm.DateInserted', true, false)->endWhereGroup()->where('cm.ConversationID', $ConversationID)->orderBy('cm.DateInserted', 'asc')->limit($Limit, $Offset)->get();
    }