BBCode::media PHP Method

media() public method

Build and return a list of attachments for the current page.
public media ( ) : array
return array
    public function media()
    {
        if ($this->media === null) {
            $controller = Gdn::controller();
            $commentIDList = [];
            $comments = $controller->data('Comments');
            $discussionID = $controller->data('Discussion.DiscussionID');
            $mediaArray = [];
            // If we have comments, iterate through them and build an array of their IDs.
            if ($comments instanceof Gdn_DataSet && $comments->numRows()) {
                $comments->dataSeek(-1);
                while ($comment = $comments->nextRow()) {
                    $commentIDList[] = $comment->CommentID;
                }
            } elseif (isset($controller->Discussion) && $controller->Discussion) {
                $commentIDList[] = $controller->DiscussionID = $controller->Discussion->DiscussionID;
            }
            if (isset($controller->Comment) && isset($controller->Comment->CommentID)) {
                $commentIDList[] = $controller->Comment->CommentID;
            }
            $this->fireEvent('BeforePreloadDiscussionMedia');
            $mediaQuery = Gdn::sql()->select('m.*')->from('Media m')->beginWhereGroup()->where('m.ForeignID', $discussionID)->where('m.ForeignTable', 'discussion')->endWhereGroup();
            if (count($commentIDList)) {
                $mediaQuery->orOp()->beginWhereGroup()->whereIn('m.ForeignID', $commentIDList)->where('m.ForeignTable', 'comment')->endWhereGroup();
            }
            $mediaResult = $mediaQuery->get()->result();
            if ($mediaResult) {
                foreach ($mediaResult as $media) {
                    $mediaArray[$media->MediaID] = $media;
                }
            }
            $this->media = $mediaArray;
        }
        return $this->media;
    }