コード例 #1
0
 /**
  * Rewrites DynamicConfiguration based on Database Stored Settings
  */
 public static function rewrite()
 {
     // Get Current Configuration
     $config = self::load();
     // Add Application Name to Configuration
     $config['name'] = Yii::$app->settings->get('name');
     // Add Default language
     $defaultLanguage = Yii::$app->settings->get('defaultLanguage');
     if ($defaultLanguage !== null && $defaultLanguage != "") {
         $config['language'] = Yii::$app->settings->get('defaultLanguage');
     } else {
         $config['language'] = Yii::$app->language;
     }
     $timeZone = Yii::$app->settings->get('timeZone');
     if ($timeZone != "") {
         $config['timeZone'] = $timeZone;
         $config['components']['formatter']['defaultTimeZone'] = $timeZone;
         $config['components']['formatterApp']['defaultTimeZone'] = $timeZone;
         $config['components']['formatterApp']['timeZone'] = $timeZone;
     }
     // Add Caching
     $cacheClass = Yii::$app->settings->get('cache.class');
     if (in_array($cacheClass, ['yii\\caching\\DummyCache', 'yii\\caching\\ApcCache', 'yii\\caching\\FileCache'])) {
         $config['components']['cache'] = ['class' => $cacheClass, 'keyPrefix' => Yii::$app->id];
     }
     // Add User settings
     $config['components']['user'] = array();
     if (Yii::$app->getModule('user')->settings->get('auth.defaultUserIdleTimeoutSec')) {
         $config['components']['user']['authTimeout'] = Yii::$app->getModule('user')->settings->get('auth.defaultUserIdleTimeoutSec');
     }
     // Install Mail Component
     $mail = [];
     $mail['transport'] = array();
     if (Yii::$app->settings->get('mailer.transportType') == 'smtp') {
         $mail['transport']['class'] = 'Swift_SmtpTransport';
         if (Yii::$app->settings->get('mailer.hostname')) {
             $mail['transport']['host'] = Yii::$app->settings->get('mailer.hostname');
         }
         if (Yii::$app->settings->get('mailer.username')) {
             $mail['transport']['username'] = Yii::$app->settings->get('mailer.username');
         } else {
             if (!Yii::$app->settings->get('mailer.password')) {
                 $mail['transport']['authMode'] = 'null';
             }
         }
         if (Yii::$app->settings->get('mailer.password')) {
             $mail['transport']['password'] = Yii::$app->settings->get('mailer.password');
         }
         if (Yii::$app->settings->get('mailer.encryption')) {
             $mail['transport']['encryption'] = Yii::$app->settings->get('mailer.encryption');
         }
         if (Yii::$app->settings->get('mailer.port')) {
             $mail['transport']['port'] = Yii::$app->settings->get('mailer.port');
         }
         /*
          if (Yii::$app->settings->get('mailer.allowSelfSignedCerts')) {
          $mail['transport']['ssl']['allow_self_signed'] = true;
          $mail['transport']['ssl']['verify_peer'] = false;
          }
         */
     } elseif (Yii::$app->settings->get('mailer.transportType') == 'php') {
         $mail['transport']['class'] = 'Swift_MailTransport';
     } else {
         $mail['useFileTransport'] = true;
     }
     $config['components']['mailer'] = $mail;
     $config = ArrayHelper::merge($config, ThemeHelper::getThemeConfig(Yii::$app->settings->get('theme')));
     $config['params']['config_created_at'] = time();
     $config['params']['horImageScrollOnMobile'] = Yii::$app->settings->get('horImageScrollOnMobile');
     self::save($config);
 }