• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

The way to add some actions while extending controller

sonnb

Well-known member
#1
Hello,

I'm confusing the way to add extra actions to controller.

For example, after thread was created I need to set its state.

- We could do this by rewrite the action (copy full code then edit) but by this way, our addon might conflict with other addons that also extending the controller.
- Another way is execute parent::actionAddThread(); then add our actions.
PHP:
$return = parent::actionAddThread();
       
        if ($return instanceof XenForo_ControllerResponse_Redirect && $return->responseCode == 200)
        {
            preg_match_all('([0-9]+)',$return->redirectTarget, $match);
 
            $threadId =  $match[0][count($match[0])-1];
           
            if ($post_citation)
            {
                $writer = XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread');
                $writer->setExistingData($threadId);
 
                $postWriter = $writer->getFirstMessageDw();
                $postWriter->set('discussion_state', 'moderated');
                $postWriter->save();
            }
        }
But you could see that we only are to get threadId by search thread id from redirectTarget since the parent controller return XenForo_ControllerResponse_Redirect.

Is this an good way to do? Do you have any better way to perform this?
 

sonnb

Well-known member
#2
Just for more information: I need to do this inside controller because I need data from user's inputted data (not inside the code above).