HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.
Options
How to capture Vanilla Model Events in custom addon?
neelkanth
New
Hello,
I want to handle BeforeSaveDiscussion event of DiscussionModel in a custom plugin. So I created a plugin with below code and enabled it.
class MyPlugin extends Gdn_Plugin
{
public function __construct() { parent::__construct(); } public function DiscussionModel_BeforeSaveDiscussion_Handler($sender, $args) { echo "<pre>"; die("hello"); }
}
But it looks like this event is not getting called because discussion gets saved but "hello" is not printed. I have checked the browser's console.
I borrowed the above from the QnA plugin (plugins/QnA/class.qna.plugin.php):
public function DiscussionModel_BeforeSaveDiscussion_Handler($Sender, $Args)
{
$Sender->Validation->ApplyRule('Type', 'Required', T('Choose whether you want to ask a question or start a discussion.'));
$Post =& $Args['FormPostValues']; if ($Args['Insert'] && GetValue('Type', $Post) == 'Question') { $Post['QnA'] = 'Unanswered'; }
}
Can anyone please help me out here. I might be missing a very small thing here.
Thanks.
0
Comments
Verify that your plugin actually works first:
You should see the text appear above every page.
My themes: pure | minusbaseline - My plugins: CSSedit | HTMLedit | InfiniteScroll | BirthdayModule | [all] - PM me about customizations
VanillaSkins.com - Plugins, Themes and Graphics for Vanillaforums OS
@Bleistivt Thanks for reply. Yes 'I am alive!' is coming on top of page. But how should I check that my
is getting called or not inside custom plugin.
I have tried discussionController_render_before as well but no success.
Have you solved it? From time to time I faced similar issues when working with code that I thought could be no problem, because I simply have copied it. But deleting it and typing it by hand always solved that problem and I never investigated why it didn't worked in the first place. Your code above looks good and should work