Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Import/Data/ProfilePost.php
<?php

namespace XF\Import\Data;

class
ProfilePost extends AbstractEmulatedData
{
    use
HasDeletionLogTrait;

    protected
$loggedIp;

   
/**
     * @var ProfilePostComment[]
     */
   
protected $comments = [];

    public function
getImportType()
    {
        return
'profile_post';
    }

    public function
getEntityShortName()
    {
        return
'XF:ProfilePost';
    }

    public function
setLoggedIp($loggedIp)
    {
       
$this->loggedIp = $loggedIp;
    }

    public function
addComment($oldCommentId, ProfilePostComment $comment)
    {
       
$this->comments[$oldCommentId] = $comment;
    }

    protected function
preSave($oldId)
    {
       
$this->forceNotEmpty('username', $oldId);
       
$this->forceNotEmpty('message', $oldId);

        if (
$this->message === '')
        {
           
// do something about it?
       
}

       
uasort($this->comments, function(ProfilePostComment $c1, ProfilePostComment $c2)
        {
            if (
$c1->comment_date == $c2->comment_date)
            {
                return
0;
            }

            return (
$c1->comment_date < $c2->comment_date ? -1 : 1);
        });

       
$firstComment = reset($this->comments);
       
$lastComment = end($this->comments);

        if (
$firstComment)
        {
           
$this->first_comment_date = $firstComment->comment_date;
           
$this->last_comment_date = $lastComment->comment_date;
        }

       
$commentCount = 0;
        foreach (
$this->comments AS $comment)
        {
            if (
$comment->message_state == 'visible')
            {
               
$commentCount++;
            }
        }
       
$this->comment_count = $commentCount;

        return
null;
    }

    protected function
postSave($oldId, $newId)
    {
        if (
$this->comments)
        {
            foreach (
$this->comments AS $oldCommentId => $comment)
            {
               
$comment->profile_post_id = $newId;
               
$comment->useTransaction(false);
               
$comment->checkExisting(false);

               
$comment->save($oldCommentId);
            }
        }

       
$this->logIp($this->loggedIp, $this->post_date);
       
$this->insertStateRecord($this->message_state, $this->post_date);

       
// note that the comment cache will be rebuilt when rebuilding profile posts so let's just skip that
   
}
}