Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Finder/NewsFeed.php
<?php

namespace XF\Finder;

use
XF\Mvc\Entity\Finder;

class
NewsFeed extends Finder
{
    public function
beforeFeedId($feedId)
    {
        if (
$feedId)
        {
           
$this->where('news_feed_id', '<', $feedId);
        }

        return
$this;
    }

    public function
applyPrivacyChecks(\XF\Entity\User $viewingUser = null)
    {
        if (!
$viewingUser)
        {
           
$viewingUser = \XF::visitor();
        }

        if (
$viewingUser->canBypassUserPrivacy())
        {
           
// no limits
           
return $this;
        }

        if (
$viewingUser->user_id)
        {
           
$privacyConditions = [];
           
$privacyConditions[] = ['user_id', $viewingUser->user_id];
           
$privacyConditions[] = ['user_id', 0];
           
$privacyConditions[] = ['User.Privacy.allow_receive_news_feed', ['everyone', 'members']];
           
$privacyConditions[] = [
                [
'User.Privacy.allow_receive_news_feed', 'followed'],
                [
'User.Following|' . $viewingUser->user_id . '.user_id', '!=', null]
            ];

           
$this->whereOr($privacyConditions);
        }
        else
        {
           
$this->whereOr(
                [
'user_id' => 0],
                [
'User.Privacy.allow_receive_news_feed' => 'everyone']
            );
        }

        return
$this;
    }

    public function
forUser(\XF\Entity\User $user)
    {
        if (
$user->user_id)
        {
           
$following = $user->Profile->following ?: [];

           
$this->where('user_id', $following);
        }
        else
        {
           
$this->whereImpossible();
        }

        return
$this;
    }

    public function
byUser(\XF\Entity\User $user)
    {
       
$this->where('user_id', $user->user_id);

        return
$this;
    }
}