Пример #1
0
 public static function updateConfigurables()
 {
     Yii::$app->set('db', Yii::createObject(InstallerHelper::createDatabaseConfig(Yii::$app->session->get('db-config'))));
     Yii::$app->db->open();
     $conf = Configurable::find()->all();
     return ConfigurationUpdater::updateConfiguration($conf, false);
 }
Пример #2
0
 /**
  * Lists configurables by tabs and saves configuration
  * @return string
  * @throws \Exception
  * @throws \yii\web\ServerErrorHttpException
  */
 public function actionIndex()
 {
     /** @var Configurable[] $models */
     $models = Configurable::getDb()->cache(function ($db) {
         return Configurable::find()->orderBy(['sort_order' => SORT_ASC])->all($db);
     }, 86400, new TagDependency(['tags' => ActiveRecordHelper::getCommonTag(Configurable::className())]));
     foreach ($models as $model) {
         $configurableModel = $model->getConfigurableModel();
         $configurableModel->loadState();
     }
     if (Yii::$app->request->isPost === true) {
         if (ConfigurationUpdater::updateConfiguration($models, true)) {
             return $this->refresh();
         }
     }
     return $this->render('index', ['models' => $models]);
 }
Пример #3
0
 /**
  * @return bool
  */
 public function saveConfig()
 {
     /** @var ShopModule $module */
     if (null === ($module = Yii::$app->getModule('shop'))) {
         return false;
     }
     /** @var Configurable $configurable */
     if (null === ($configurable = Configurable::findOne(['module' => $module->id]))) {
         return false;
     }
     /** @var ConfigConfigurationModel $configurableModel */
     $configurableModel = $configurable->getConfigurableModel();
     $config = $this->attrStorage;
     yii\base\Event::on($configurableModel::className(), $configurableModel->configurationSaveEvent(), function (ConfigurationSaveEvent $event) use($config) {
         /** @var ConfigConfigurationModel $model */
         $model = $event->configurableModel;
         $model->ymlConfig = $config;
     });
     $models = [$configurable];
     return ConfigurationUpdater::updateConfiguration($models, false);
 }
Пример #4
0
 /**
  * Remove module configuration from config files.
  */
 public function removeConfig()
 {
     if ($this->getBehavior('configurableModule') !== null) {
         // This extension has config behavior
         // Find corresponding configurable
         $configurables = Configurable::find()->where('module!=:module', [':module' => $this->id])->all();
         if ($configurables !== null) {
             // The trick is to use previous saved values from other configurables
             // and exclude current module from configuration
             // that is done by setting not to load existing configuration
             ConfigurationUpdater::updateConfiguration($configurables, false, false);
         }
     }
     \yii\caching\TagDependency::invalidate(Yii::$app->cache, [ActiveRecordHelper::getCommonTag(Configurable::className())]);
 }