/** * * @see XenGallery_ViewPublic_Media_Add::renderHtml() */ public function renderHtml() { parent::renderHtml(); /* @var $tabModel Waindigo_Tabs_Model_Tab */ $tabModel = XenForo_Model::create('Waindigo_Tabs_Model_Tab'); /* @var $tabRuleModel Waindigo_Tabs_Model_TabRule */ $tabRuleModel = XenForo_Model::create('Waindigo_Tabs_Model_TabRule'); $tabRules = $tabRuleModel->getTabRules(array('match_content_type' => 'resource')); $resource = array('resource_category_id' => $this->_params['category']['resource_category_id']); $tabCreateTemplates = array(); foreach ($tabRules as $tabRuleId => $tabRule) { if (Waindigo_Tabs_Helper_Criteria::resourceMatchesCriteria($tabRule['match_criteria'], true, $resource)) { $tabCreateTemplates[$tabRuleId] = $tabModel->getCreateTemplate($tabRule, $this); } } $this->_params['tabCreateTemplates'] = $tabCreateTemplates; }
/** * * @see XenResource_DataWriter_Resource::_postSave() */ protected function _postSave() { parent::_postSave(); $postSaveChanges = array(); if ($this->isInsert() && $this->getOption(self::OPTION_CHECK_TAB_RULES)) { /* @var $tabModel Waindigo_Tabs_Model_Tab */ $tabModel = $this->getModelFromCache('Waindigo_Tabs_Model_Tab'); /* @var $tabRuleModel Waindigo_Tabs_Model_TabRule */ $tabRuleModel = $this->getModelFromCache('Waindigo_Tabs_Model_TabRule'); $tabRules = $tabRuleModel->getTabRules(array('match_content_type' => 'resource')); $tabId = $this->get('tab_id'); $extraTabData = array(); if (isset($GLOBALS['XenResource_ControllerPublic_Resource'])) { /* @var $controller XenResource_ControllerPublic_Resource */ $controller = $GLOBALS['XenResource_ControllerPublic_Resource']; $extraTabData = $controller->getInput()->filterSingle('extra_tab_data', XenForo_Input::ARRAY_SIMPLE); } $resource = $this->getMergedData(); $messageText = $this->_descriptionDw->get('message'); $parser = XenForo_BbCode_Parser::create(XenForo_BbCode_Formatter_Base::create('XenForo_BbCode_Formatter_BbCode_AutoLink', false)); $snippet = $parser->render(XenForo_Helper_String::wholeWordTrim($messageText, 500)); $messageParams = array('title' => $this->get('title'), 'tagLine' => $this->get('tag_line'), 'username' => $this->get('username'), 'resourceLink' => XenForo_Link::buildPublicLink('canonical:resources', $resource), 'snippet' => $snippet); $defaultMessage = new XenForo_Phrase('resource_message_create_resource', $messageParams, false); $params = array('user_id' => $this->get('user_id'), 'username' => $this->get('username'), 'title' => $this->get('title'), 'content_type' => 'resource', 'content_id' => $this->get('resource_id'), 'tag_line' => $this->get('tag_line')); $tabNameId = ''; foreach ($tabRules as $tabRuleId => $tabRule) { if (Waindigo_Tabs_Helper_Criteria::resourceMatchesCriteria($tabRule['match_criteria'], true, $resource)) { if ($tabRule['create_criteria']) { $createCriteria = unserialize($tabRule['create_criteria']); } else { $createCriteria = array(); } if (!empty($createCriteria['use_custom_message'])) { $params['message'] = new XenForo_Phrase($tabRuleModel->getTabRuleCustomMessagePhraseName($tabRuleId), $messageParams, false); } else { $params['message'] = $defaultMessage; } if (!empty($extraTabData[$tabRuleId])) { $params = array_merge($extraTabData[$tabRuleId], $params); } $tabId = $tabModel->createNewTab($tabRule['create_content_type'], $tabId, $tabRule['tab_name_id'], $createCriteria, $params); if ($tabId && !$tabNameId) { $tabNameId = $tabRule['match_tab_name_id']; } } } if ($tabId && $tabId != $this->get('tab_id')) { $this->set('tab_id', $tabId, '', array('setAfterPreSave' => true)); $postSaveChanges['tab_id'] = $tabId; if ($tabNameId) { $tabModel->insertTab($this->get('tab_id'), 'resource', $this->get('resource_id'), $tabNameId); } } } if (isset($GLOBALS['XenResource_ControllerPublic_Resource'])) { /* @var $controller XenResource_ControllerPublic_Resource */ $controller = $GLOBALS['XenResource_ControllerPublic_Resource']; // TODO: check permissions? $tabNameId = $controller->getInput()->filterSingle('tab_name_id', XenForo_Input::UINT); if ($tabNameId) { $this->_db->update('xf_tab_content', array('tab_name_id' => $tabNameId), 'content_id = ' . $this->_db->quote($this->get('resource_id')) . ' AND content_type = \'resource\''); } } if ($postSaveChanges) { $this->_db->update('xf_resource', $postSaveChanges, 'resource_id = ' . $this->_db->quote($this->get('resource_id'))); } if ($this->isChanged('tab_id') && $this->getExisting('tab_id') && $this->get('tab_id')) { $this->_db->update('xf_tab_content', array('tab_id' => $this->get('tab_id')), 'content_id = ' . $this->_db->quote($this->getExisting('media_id')) . ' AND content_type = \'resource\''); } }