コード例 #1
0
 /**
  * Save configuration
  */
 public function indexAction()
 {
     try {
         if (false == $this->_isSectionAllowed($this->getRequest()->getParam('section'))) {
             throw new Exception($this->_getHelper()->__('This section is not allowed.'));
         }
         // custom save logic
         $this->_saveSection();
         $section = $this->getRequest()->getParam('section');
         $website = $this->getRequest()->getParam('website');
         $store = $this->getRequest()->getParam('store');
         $configData = array('section' => $section, 'website' => $website, 'store' => $store, 'groups' => $this->_getGroupsForSave());
         /** @var Mage_Backend_Model_Config $configModel  */
         $configModel = $this->_configFactory->create(array('data' => $configData));
         $configModel->save();
         // re-init configuration
         $this->_configModel->reinit();
         $this->_eventManager->dispatch('admin_system_config_section_save_after', array('website' => $website, 'store' => $store, 'section' => $section));
         $this->_app->reinitStores();
         // website and store codes can be used in event implementation, so set them as well
         $this->_eventManager->dispatch("admin_system_config_changed_section_{$section}", array('website' => $website, 'store' => $store));
         $this->_session->addSuccess($this->_getHelper()->__('The configuration has been saved.'));
     } catch (Mage_Core_Exception $e) {
         $messages = explode("\n", $e->getMessage());
         foreach ($messages as $message) {
             $this->_session->addError($message);
         }
     } catch (Exception $e) {
         $this->_session->addException($e, $this->_getHelper()->__('An error occurred while saving this configuration:') . ' ' . $e->getMessage());
     }
     $this->_saveState($this->getRequest()->getPost('config_state'));
     $this->_redirect('*/system_config/edit', array('_current' => array('section', 'website', 'store')));
 }
コード例 #2
0
ファイル: Config.php プロジェクト: eneiasramos/Made_Cache
 /**
  * Reinitialize configuration. Instead of doing the actual reinitialization
  * we mark the cache as invalidated and set a timestamp that is later
  * matched with a cron scheduled config cache regenerator timestamp.
  *
  * @param   array $options
  * @return  Mage_Core_Model_Config
  */
 public function reinit($options = array())
 {
     $backend = Mage::app()->getCacheInstance()->getFrontend()->getBackend();
     if (get_class($backend) !== 'Made_Cache_Redis_Backend') {
         return parent::reinit($options);
     }
     if (in_array(self::SAVE_KEY, $options)) {
         // Mark the config cache as valid before we lock to prevent an
         // invalidate-regenerate race condition
         $cache = Mage::app()->getCacheInstance();
         $types = $cache->load(Mage_Core_Model_Cache::INVALIDATED_TYPES);
         if ($types) {
             $types = unserialize($types);
             if (isset($types[strtolower(self::CACHE_TAG)])) {
                 unset($types[strtolower(self::CACHE_TAG)]);
             }
             $cache->save(serialize($types), Mage_Core_Model_Cache::INVALIDATED_TYPES);
         }
         // If we got called by our observer, pass it on with a single
         // instance lock.
         $options = $this->getLockingOptions();
         if ($backend->acquireLock($options['lock_name'], $options['token'], $options['lock_timeout'])) {
             $this->_allowCacheForInit = false;
             $this->_useCache = false;
             $options['lock_acquired'] = true;
             $this->init($options);
             $backend->releaseLock($options['lock_name'], $options['token']);
         }
     } else {
         // Instead of reinitializing the cache, simply mark the config
         // cache as invalidated.
         Mage::app()->getCacheInstance()->invalidateType(strtolower(self::CACHE_TAG));
     }
     return $this;
 }