ActivityModel::joinComments PHP Метод

joinComments() публичный Метод

С версии: 2.1
public joinComments ( &$Activities )
    public function joinComments(&$Activities)
    {
        // Grab all of the activity IDs.
        $ActivityIDs = [];
        foreach ($Activities as $Activity) {
            if ($ID = val('CommentActivityID', $Activity['Data'])) {
                // This activity shares its comments with another activity.
                $ActivityIDs[] = $ID;
            } else {
                $ActivityIDs[] = $Activity['ActivityID'];
            }
        }
        $ActivityIDs = array_unique($ActivityIDs);
        $Comments = $this->getComments($ActivityIDs);
        $Comments = Gdn_DataSet::index($Comments, ['ActivityID'], ['Unique' => false]);
        foreach ($Activities as &$Activity) {
            $ID = val('CommentActivityID', $Activity['Data']);
            if (!$ID) {
                $ID = $Activity['ActivityID'];
            }
            if (isset($Comments[$ID])) {
                $Activity['Comments'] = $Comments[$ID];
            } else {
                $Activity['Comments'] = [];
            }
        }
    }

Usage Example

Пример #1
0
 /**
  * Default activity stream.
  *
  * @since 2.0.0
  * @access public
  *
  * @param int $Offset Number of activity items to skip.
  */
 public function index($Filter = false, $Page = false)
 {
     switch (strtolower($Filter)) {
         case 'mods':
             $this->title(t('Recent Moderator Activity'));
             $this->permission('Garden.Moderation.Manage');
             $NotifyUserID = ActivityModel::NOTIFY_MODS;
             break;
         case 'admins':
             $this->title(t('Recent Admin Activity'));
             $this->permission('Garden.Settings.Manage');
             $NotifyUserID = ActivityModel::NOTIFY_ADMINS;
             break;
         case '':
         case 'feed':
             // rss feed
             $Filter = 'public';
             $this->title(t('Recent Activity'));
             $this->permission('Garden.Activity.View');
             $NotifyUserID = ActivityModel::NOTIFY_PUBLIC;
             break;
         default:
             throw notFoundException();
     }
     // Which page to load
     list($Offset, $Limit) = offsetLimit($Page, c('Garden.Activities.PerPage', 30));
     $Offset = is_numeric($Offset) ? $Offset : 0;
     if ($Offset < 0) {
         $Offset = 0;
     }
     // Page meta.
     $this->addJsFile('activity.js');
     $this->addJsFile('spoilers.js');
     $this->addCssFile('spoilers.css');
     if ($this->Head) {
         $this->Head->addRss(url('/activity/feed.rss', true), $this->Head->title());
     }
     // Comment submission
     $Session = Gdn::session();
     $Comment = $this->Form->getFormValue('Comment');
     $Activities = $this->ActivityModel->getWhere(array('NotifyUserID' => $NotifyUserID), '', '', $Limit, $Offset)->resultArray();
     $this->ActivityModel->joinComments($Activities);
     $this->setData('Filter', strtolower($Filter));
     $this->setData('Activities', $Activities);
     $this->addModule('ActivityFilterModule');
     $this->View = 'all';
     $this->render();
 }