Ejemplo n.º 1
0
 /**
  * Write information about addons to the discussion if it is related to an addon.
  *
  * @param DiscussionController $Sender
  */
 public function discussionController_afterDiscussionTitle_handler($Sender)
 {
     $Discussion = $Sender->data('Discussion');
     $AddonID = val('AddonID', $Discussion);
     if (is_numeric($AddonID) && $AddonID > 0) {
         $Data = Gdn::database()->sql()->select('Name')->from('Addon')->where('AddonID', $AddonID)->get()->firstRow();
         if ($Data) {
             echo renderDiscussionAddonWarning($AddonID, $Data->Name, val('DiscussionID', $Discussion));
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Attach an addon to a discussion.
  *
  * @param null $DiscussionID Discussion for addon attachment.
  * @throws Gdn_UserException Discussion not found.
  */
 public function attachToDiscussion($DiscussionID = null)
 {
     $this->permission('Addons.Addon.Manage');
     $DiscussionModel = new DiscussionModel();
     $Discussion = $DiscussionModel->getID($DiscussionID);
     if ($Discussion) {
         $Addon = $this->AddonModel->getID($Discussion->AddonID);
         $this->Form->setData($Addon);
         $RedirectUrl = 'discussion/' . $Discussion->DiscussionID;
     } else {
         throw notFoundException('Discussion');
     }
     if ($this->Form->authenticatedPostBack()) {
         // Look up for an existing addon
         $FormValues = $this->Form->formValues();
         $Addon = false;
         if (val('Name', $FormValues, false)) {
             $Addon = $this->AddonModel->getWhere(array('a.Name' => $FormValues['Name']))->firstRow(DATASET_TYPE_ARRAY);
         }
         if ($Addon == false && val('AddonID', $FormValues, false)) {
             $Addon = $this->AddonModel->getID($FormValues['AddonID']);
         }
         if ($Addon == false) {
             $this->Form->addError(t('Unable to find addon via Name or ID'));
         }
         if ($this->Form->errorCount() == 0) {
             $DiscussionModel->setField($DiscussionID, 'AddonID', $Addon['AddonID']);
             if ($this->deliveryType() === DELIVERY_TYPE_ALL) {
                 safeRedirect($RedirectUrl ?: 'addon/' . $Addon['AddonID']);
             } else {
                 $this->informMessage(t('Successfully updated Attached Addon!'));
                 $this->jsonTarget('.Warning.AddonAttachment', null, 'Remove');
                 $this->jsonTarget('.ItemDiscussion .Message', renderDiscussionAddonWarning($Addon['AddonID'], $Addon['Name'], $Discussion->DiscussionID), 'Prepend');
                 $this->jsonTarget('a.AttachAddonDiscussion.Popup', t('Edit Addon Attachment...'), 'Text');
             }
         }
     }
     $this->render('attach');
 }