/** * * * @param bool $Notify * @param bool $UserID */ public function post($Notify = false, $UserID = false) { if (is_numeric($Notify)) { $UserID = $Notify; $Notify = false; } if (!$UserID) { $UserID = Gdn::session()->UserID; } switch ($Notify) { case 'mods': $this->permission('Garden.Moderation.Manage'); $NotifyUserID = ActivityModel::NOTIFY_MODS; break; case 'admins': $this->permission('Garden.Settings.Manage'); $NotifyUserID = ActivityModel::NOTIFY_ADMINS; break; default: $this->permission('Garden.Profiles.Edit'); $NotifyUserID = ActivityModel::NOTIFY_PUBLIC; break; } $Activities = array(); if ($this->Form->authenticatedPostBack()) { $Data = $this->Form->formValues(); $Data = $this->ActivityModel->filterForm($Data); if (!isset($Data['Format']) || strcasecmp($Data['Format'], 'Raw') == 0) { $Data['Format'] = c('Garden.InputFormatter'); } if ($UserID != Gdn::session()->UserID) { // This is a wall post. $Activity = array('ActivityType' => 'WallPost', 'ActivityUserID' => $UserID, 'RegardingUserID' => Gdn::session()->UserID, 'HeadlineFormat' => t('HeadlineFormat.WallPost', '{RegardingUserID,you} → {ActivityUserID,you}'), 'Story' => $Data['Comment'], 'Format' => $Data['Format'], 'Data' => array('Bump' => true)); } else { // This is a status update. $Activity = array('ActivityType' => 'Status', 'HeadlineFormat' => t('HeadlineFormat.Status', '{ActivityUserID,user}'), 'Story' => $Data['Comment'], 'Format' => $Data['Format'], 'NotifyUserID' => $NotifyUserID, 'Data' => array('Bump' => true)); $this->setJson('StatusMessage', Gdn_Format::plainText($Activity['Story'], $Activity['Format'])); } $Activity = $this->ActivityModel->save($Activity, false, array('CheckSpam' => true)); if ($Activity == SPAM || $Activity == UNAPPROVED) { $this->StatusMessage = t('ActivityRequiresApproval', 'Your post will appear after it is approved.'); $this->render('Blank', 'Utility'); return; } if ($Activity) { if ($UserID == Gdn::session()->UserID && $NotifyUserID == ActivityModel::NOTIFY_PUBLIC) { Gdn::userModel()->setField(Gdn::session()->UserID, 'About', Gdn_Format::plainText($Activity['Story'], $Activity['Format'])); } $Activities = array($Activity); ActivityModel::joinUsers($Activities); $this->ActivityModel->calculateData($Activities); } else { $this->Form->setValidationResults($this->ActivityModel->validationResults()); $this->StatusMessage = $this->ActivityModel->Validation->resultsText(); // $this->render('Blank', 'Utility'); } } if ($this->deliveryType() == DELIVERY_TYPE_ALL) { $Target = $this->Request->get('Target', '/activity'); if (isSafeUrl($Target)) { redirect($Target); } else { redirect(url('/activity')); } } $this->setData('Activities', $Activities); $this->render('Activities'); }