getID() public method

Get a particular activity record.
public getID ( integer $activityID, boolean | string $dataSetType = false, array $options = [] ) : array | object
$activityID integer Unique ID of activity item.
$dataSetType boolean | string The format of the resulting data.
$options array Not used.
return array | object A single SQL result.
 /**
  * Delete an activity item.
  *
  * @since 2.0.0
  * @access public
  *
  * @param int $ActivityID Unique ID of item to delete.
  * @param string $TransientKey Verify intent.
  */
 public function delete($ActivityID = '', $TransientKey = '')
 {
     $session = Gdn::session();
     if (!$session->validateTransientKey($TransientKey)) {
         throw permissionException();
     }
     if (!is_numeric($ActivityID)) {
         throw Gdn_UserException('Invalid ID');
     }
     if (!$this->ActivityModel->canDelete($this->ActivityModel->getID($ActivityID))) {
         throw permissionException();
     }
     $this->ActivityModel->delete($ActivityID);
     if ($this->_DeliveryType === DELIVERY_TYPE_ALL) {
         $target = Gdn::request()->get('Target');
         if ($target) {
             // Bail with a redirect if we got one.
             redirect($target);
         } else {
             // We got this as a full page somehow, so send them back to /activity.
             $this->RedirectUrl = url('activity');
         }
     }
     $this->render();
 }
 /**
  * Comment on an activity item.
  *
  * @since 2.0.0
  * @access public
  */
 public function comment()
 {
     $this->permission('Garden.Profiles.Edit');
     $Session = Gdn::session();
     $this->Form->setModel($this->ActivityModel);
     $NewActivityID = 0;
     // Form submitted
     if ($this->Form->authenticatedPostBack()) {
         $Body = $this->Form->getValue('Body', '');
         $ActivityID = $this->Form->getValue('ActivityID', '');
         if (is_numeric($ActivityID) && $ActivityID > 0) {
             $activity = $this->ActivityModel->getID($ActivityID);
             if ($activity) {
                 if ($activity['NotifyUserID'] == ActivityModel::NOTIFY_ADMINS) {
                     $this->permission('Garden.Settings.Manage');
                 } elseif ($activity['NotifyUserID'] == ActivityModel::NOTIFY_MODS) {
                     $this->permission('Garden.Moderation.Manage');
                 }
             } else {
                 throw new Exception(t('Invalid activity'));
             }
             $ActivityComment = array('ActivityID' => $ActivityID, 'Body' => $Body, 'Format' => 'Text');
             $ID = $this->ActivityModel->comment($ActivityComment);
             if ($ID == SPAM || $ID == UNAPPROVED) {
                 $this->StatusMessage = t('ActivityCommentRequiresApproval', 'Your comment will appear after it is approved.');
                 $this->render('Blank', 'Utility');
                 return;
             }
             $this->Form->setValidationResults($this->ActivityModel->validationResults());
             if ($this->Form->errorCount() > 0) {
                 throw new Exception($this->ActivityModel->Validation->resultsText());
                 $this->errorMessage($this->Form->errors());
             }
         }
     }
     // Redirect back to the sending location if this isn't an ajax request
     if ($this->_DeliveryType === DELIVERY_TYPE_ALL) {
         $Target = $this->Form->getValue('Return');
         if (!$Target) {
             $Target = '/activity';
         }
         redirect($Target);
     } else {
         // Load the newly added comment.
         $this->setData('Comment', $this->ActivityModel->getComment($ID));
         // Set it in the appropriate view.
         $this->View = 'comment';
     }
     // And render
     $this->render();
 }
 /**
  * Delete an activity item.
  *
  * @since 2.0.0
  * @access public
  *
  * @param int $ActivityID Unique ID of item to delete.
  * @param string $TransientKey Verify intent.
  */
 public function delete($ActivityID = '', $TransientKey = '')
 {
     $session = Gdn::session();
     if (!$session->validateTransientKey($TransientKey)) {
         throw permissionException();
     }
     if (!is_numeric($ActivityID)) {
         throw Gdn_UserException('Invalid ID');
     }
     if (!$this->ActivityModel->canDelete($this->ActivityModel->getID($ActivityID))) {
         throw permissionException();
     }
     $this->ActivityModel->delete($ActivityID);
     if ($this->_DeliveryType === DELIVERY_TYPE_ALL) {
         redirect(GetIncomingValue('Target', $this->SelfUrl));
     }
     // Still here? Getting a 404.
     $this->ControllerName = 'Home';
     $this->View = 'FileNotFound';
     $this->render();
 }
Example #4
0
 /**
  * Get a record from the database.
  *
  * @param string $recordType The type of record to get. This is usually the un-prefixed table name of the record.
  * @param int $id The ID of the record.
  * @param bool $throw Whether or not to throw an exception if the record isn't found.
  * @return array|false Returns an array representation of the record or false if the record isn't found.
  * @throws Exception Throws an exception with a 404 code if the record isn't found and {@link $throw} is true.
  * @throws Gdn_UserException Throws an exception when {@link $recordType} is unknown.
  */
 function getRecord($recordType, $id, $throw = false)
 {
     $Row = false;
     switch (strtolower($recordType)) {
         case 'discussion':
             $Model = new DiscussionModel();
             $Row = $Model->getID($id);
             $Row->Url = DiscussionUrl($Row);
             $Row->ShareUrl = $Row->Url;
             if ($Row) {
                 return (array) $Row;
             }
             break;
         case 'comment':
             $Model = new CommentModel();
             $Row = $Model->getID($id, DATASET_TYPE_ARRAY);
             if ($Row) {
                 $Row['Url'] = Url("/discussion/comment/{$id}#Comment_{$id}", true);
                 $Model = new DiscussionModel();
                 $Discussion = $Model->getID($Row['DiscussionID']);
                 if ($Discussion) {
                     $Discussion->Url = DiscussionUrl($Discussion);
                     $Row['ShareUrl'] = $Discussion->Url;
                     $Row['Name'] = $Discussion->Name;
                     $Row['Discussion'] = (array) $Discussion;
                 }
                 return $Row;
             }
             break;
         case 'activity':
             $Model = new ActivityModel();
             $Row = $Model->getID($id, DATASET_TYPE_ARRAY);
             if ($Row) {
                 $Row['Name'] = formatString($Row['HeadlineFormat'], $Row);
                 $Row['Body'] = $Row['Story'];
                 return $Row;
             }
             break;
         default:
             throw new Gdn_UserException('Unknown record type requested.');
     }
     if ($throw) {
         throw NotFoundException();
     } else {
         return false;
     }
 }