SettingWebsiteForm.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2016-03-23 12:54
  7. */
  8. namespace backend\models\form;
  9. use yii;
  10. use common\models\Options;
  11. class SettingWebsiteForm extends \common\models\Options
  12. {
  13. public $website_title;
  14. public $website_email;
  15. public $website_language;
  16. public $website_icp;
  17. public $website_statics_script;
  18. public $website_status;
  19. public $website_timezone;
  20. public $website_comment;
  21. public $website_comment_need_verify;
  22. public $website_url;
  23. public $seo_keywords;
  24. public $seo_description;
  25. /**
  26. * 填充网站配置
  27. *
  28. */
  29. public function init()
  30. {
  31. parent::init();
  32. $names = $this->getNames();
  33. $models = Options::find()->where(["in", "name", $names])->indexBy("name")->all();
  34. foreach ($names as $name) {
  35. if (isset($models[$name])) {
  36. $this->$name = $models[$name]->value;
  37. } else {
  38. $this->name = '';
  39. }
  40. }
  41. }
  42. /**
  43. * @inheritdoc
  44. */
  45. public function attributeLabels()
  46. {
  47. return [
  48. 'website_title' => yii::t('app', 'Website Title'),
  49. 'website_email' => yii::t('app', 'Website Email'),
  50. 'website_language' => yii::t('app', 'Website Language'),
  51. 'website_icp' => yii::t('app', 'Icp Sn'),
  52. 'website_statics_script' => yii::t('app', 'Statics Script'),
  53. 'website_status' => yii::t('app', 'Website Status'),
  54. 'website_timezone' => yii::t('app', 'Website Timezone'),
  55. 'website_comment' => yii::t('app', 'Open Comment'),
  56. 'website_comment_need_verify' => yii::t('app', 'Open Comment Verify'),
  57. 'website_url' => yii::t('app', 'Website Url'),
  58. 'seo_keywords' => yii::t('app', 'Seo Keywords'),
  59. 'seo_description' => yii::t('app', 'Seo Description'),
  60. ];
  61. }
  62. /**
  63. * @inheritdoc
  64. */
  65. public function rules()
  66. {
  67. return [
  68. [
  69. [
  70. 'website_title',
  71. 'website_language',
  72. 'website_icp',
  73. 'website_statics_script',
  74. 'website_timezone',
  75. 'seo_keywords',
  76. 'seo_description'
  77. ],
  78. 'string'
  79. ],
  80. [ 'website_url', 'required'],
  81. [ 'website_url', 'validatorWebsiteUrl'],
  82. [ 'website_email', 'email'],
  83. [['website_status', 'website_comment', 'website_comment_need_verify'], 'integer'],
  84. ];
  85. }
  86. public function validatorWebsiteUrl($attribute, $params)
  87. {
  88. if( strpos($this->$attribute, "https://") === 0 || strpos($this->$attribute, "http://") === 0 || strpos($this->$attribute, "//") === 0 ){
  89. return;
  90. }
  91. $this->addError($attribute, yii::t("app", '{attribute} must begin with https:// or http:// or //', ['attribute'=>yii::t('app', 'Website Url')]));
  92. return;
  93. }
  94. /**
  95. * 写入网站配置到数据库
  96. *
  97. * @return bool
  98. */
  99. public function setWebsiteConfig()
  100. {
  101. $names = $this->getNames();
  102. foreach ($names as $name) {
  103. $model = self::findOne(['name' => $name]);
  104. if ($model != null) {
  105. $value = $this->$name;
  106. $value === null && $value = '';
  107. $model->value = $value;
  108. $result = $model->save(false);
  109. } else {
  110. $model = new Options();
  111. $model->name = $name;
  112. $model->value = '';
  113. $result = $model->save(false);
  114. }
  115. if ($result == false) {
  116. return false;
  117. }
  118. }
  119. return true;
  120. }
  121. }