/** * Function for setting Config value of current store * @param string $path, * @param string $value, */ public function setCurrentStoreConfigValue($path, $value) { $data = ['path' => $path, 'scope' => 'stores', 'scope_id' => $this->_storeId, 'scope_code' => $this->_storeCode, 'value' => $value]; $this->_backendModel->addData($data); $this->_transaction->addObject($this->_backendModel); $this->_transaction->save(); }
/** * Validate the theme if being in use in default, website, or store. * * @param string[] $themePaths * @return array */ public function validateIsThemeInUse($themePaths) { $messages = []; $themesById = []; foreach ($themePaths as $themePath) { $theme = $this->themeProvider->getThemeByFullPath($themePath); $themesById[$theme->getId()] = $themePath; } $configData = $this->configData->getCollection()->addFieldToFilter('path', DesignInterface::XML_PATH_THEME_ID)->addFieldToFilter('value', ['in' => array_keys($themesById)]); foreach ($configData as $row) { switch ($row['scope']) { case 'default': $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in default config' . '</error>'; break; case ScopeInterface::SCOPE_WEBSITES: $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in website ' . $this->storeManager->getWebsite($row['scope_id'])->getName() . '</error>'; break; case ScopeInterface::SCOPE_STORES: $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in store ' . $this->storeManager->getStore($row['scope_id'])->getName() . '</error>'; break; } } return $messages; }
/** * Get assigned scopes collection of a theme * * @param string $scope * @param string $configPath * @return \Magento\Core\Model\Resource\Config\Data\Collection */ protected function _getAssignedScopesCollection($scope, $configPath) { return $this->_configData->getCollection()->addFieldToFilter('scope', $scope)->addFieldToFilter('path', $configPath); }
/** * Set correct scope if isSingleStoreMode = true * * @param \Magento\Backend\Model\Config\Structure\Element\Field $fieldConfig * @param \Magento\Framework\App\Config\ValueInterface $dataObject * @return void */ protected function _checkSingleStoreMode(\Magento\Backend\Model\Config\Structure\Element\Field $fieldConfig, $dataObject) { $isSingleStoreMode = $this->_storeManager->isSingleStoreMode(); if (!$isSingleStoreMode) { return; } if (!$fieldConfig->showInDefault()) { $websites = $this->_storeManager->getWebsites(); $singleStoreWebsite = array_shift($websites); $dataObject->setScope('websites'); $dataObject->setWebsiteCode($singleStoreWebsite->getCode()); $dataObject->setScopeCode($singleStoreWebsite->getCode()); $dataObject->setScopeId($singleStoreWebsite->getId()); } }