/** * 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)); } } }
/** * 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'); }