Пример #1
0
 public function actionSave()
 {
     $dwInput = $this->_input->filter(array('event_id' => XenForo_Input::STRING, 'description' => XenForo_Input::STRING, 'callback_class' => XenForo_Input::STRING, 'callback_method' => XenForo_Input::STRING, 'hint' => XenForo_Input::STRING, 'addon_id' => XenForo_Input::STRING));
     if (!empty($dwInput['event_id']) && empty($dwInput['description']) && empty($dwInput['callback_class']) && empty($dwInput['callback_class']) && !empty($dwInput['hint']) && !empty($dwInput['addon_id'])) {
         /** @var XenForo_Model_AddOn $addOnModel */
         $addOnModel = $this->getModelFromCache('XenForo_Model_AddOn');
         $addOn = $addOnModel->getAddOnById($dwInput['addon_id']);
         /** @var DevHelper_Model_Config $configModel */
         $configModel = $this->getModelFromCache('DevHelper_Model_Config');
         $config = $configModel->loadAddOnConfig($addOn);
         if (strpos($dwInput['event_id'], 'load_class') === 0) {
             $classPath = DevHelper_Generator_File::getClassPath($dwInput['hint']);
             if (is_file($classPath)) {
                 $method = DevHelper_Generator_Code_Listener::generateLoadClass($dwInput['hint'], $addOn, $config);
                 if ($method) {
                     $clazz = DevHelper_Generator_Code_Listener::getClassName($addOn, $config);
                     $this->_request->setParam('description', $dwInput['hint']);
                     $this->_request->setParam('callback_class', $clazz);
                     $this->_request->setParam('callback_method', $method);
                     XenForo_DataWriter::create('XenForo_DataWriter_CodeEventListener');
                 }
             }
         }
     }
     return parent::actionSave();
 }