MailConfigForm.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace common\modules\config\models;
  3. use yii\base\Model;
  4. class MailConfigForm extends Model
  5. {
  6. use ConfigTrait;
  7. public $mailHost;
  8. public $mailUsername;
  9. public $mailPassword;
  10. public $mailPort;
  11. public $mailEncryption;
  12. public function rules()
  13. {
  14. return [
  15. // Host
  16. ['mailHost', 'required'],
  17. ['mailHost', 'string', 'max' => 255],
  18. // Username
  19. ['mailUsername', 'required'],
  20. ['mailUsername', 'string', 'max' => 255],
  21. // Password
  22. ['mailPassword', 'required'],
  23. ['mailPassword', 'string', 'max' => 255],
  24. // Port
  25. ['mailPort', 'required'],
  26. ['mailPort', 'integer'],
  27. // Encryption
  28. ['mailEncryption', 'string', 'max' => 10],
  29. ];
  30. }
  31. public function attributeLabels()
  32. {
  33. return [
  34. 'mailHost' => 'Host',
  35. 'mailUsername' => 'Username',
  36. 'mailPassword' => 'Password',
  37. 'mailPort' => 'Port',
  38. 'mailEncryption' => 'Encryption',
  39. ];
  40. }
  41. public function loadDefaultValues()
  42. {
  43. $config = $this->getConfig();
  44. $this->mailHost = $config->get('MAIL_HOST');
  45. $this->mailUsername = $config->get('MAIL_USERNAME');
  46. $this->mailPassword = $config->get('MAIL_PASSWORD');
  47. $this->mailPort = $config->get('MAIL_PORT');
  48. $this->mailEncryption = $config->get('MAIL_ENCRYPTION');
  49. }
  50. public function save($runValidation = true, $attributeNames = null)
  51. {
  52. if ($runValidation && !$this->validate($attributeNames)) {
  53. return false;
  54. }
  55. $config = $this->getConfig();
  56. $config->set('MAIL_HOST', $this->mailHost);
  57. $config->set('MAIL_USERNAME', $this->mailUsername);
  58. $config->set('MAIL_PASSWORD', $this->mailPassword);
  59. $config->set('MAIL_PORT', $this->mailPort);
  60. $config->set('MAIL_ENCRYPTION', $this->mailEncryption);
  61. return true;
  62. }
  63. }