1: <?php
2:
3: /*****************************************************************************************
4: * X2Engine Open Source Edition is a customer relationship management program developed by
5: * X2Engine, Inc. Copyright (C) 2011-2016 X2Engine Inc.
6: *
7: * This program is free software; you can redistribute it and/or modify it under
8: * the terms of the GNU Affero General Public License version 3 as published by the
9: * Free Software Foundation with the addition of the following permission added
10: * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11: * IN WHICH THE COPYRIGHT IS OWNED BY X2ENGINE, X2ENGINE DISCLAIMS THE WARRANTY
12: * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13: *
14: * This program is distributed in the hope that it will be useful, but WITHOUT
15: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16: * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
17: * details.
18: *
19: * You should have received a copy of the GNU Affero General Public License along with
20: * this program; if not, see http://www.gnu.org/licenses or write to the Free
21: * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22: * 02110-1301 USA.
23: *
24: * You can contact X2Engine, Inc. P.O. Box 66752, Scotts Valley,
25: * California 95067, USA. or at email address contact@x2engine.com.
26: *
27: * The interactive user interfaces in modified source and object code versions
28: * of this program must display Appropriate Legal Notices, as required under
29: * Section 5 of the GNU Affero General Public License version 3.
30: *
31: * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32: * these Appropriate Legal Notices must retain the display of the "Powered by
33: * X2Engine" logo. If the display of the logo is not reasonably feasible for
34: * technical reasons, the Appropriate Legal Notices must display the words
35: * "Powered by X2Engine".
36: *****************************************************************************************/
37:
38: Yii::import('application.models.embedded.*');
39:
40: /**
41: * Authentication data for using an Amazon SES account to send email.
42: *
43: * Similar to EmailAccount but with certain details already filled in
44: * @package application.models.embedded
45: */
46: class SESAccount extends EmailAccount {
47:
48: public $email = '';
49: public $password = '';
50: public $port = 587;
51: public $security = 'tls';
52: public $senderName = '';
53: public $server = '';
54: public $user = '';
55:
56: public $sesEndpoints = array(
57: 'email-smtp.us-east-1.amazonaws.com' => 'US East (N. Virginia)',
58: 'email-smtp.us-west-2.amazonaws.com' => 'US West (Oregon)',
59: 'email-smtp.eu-west-1.amazonaws.com' => 'EU (Ireland)',
60: );
61:
62: public function attributeLabels(){
63: return array(
64: 'senderName' => Yii::t('app','Sender Name'),
65: 'user' => Yii::t('app', 'SMTP Login'),
66: 'email' => Yii::t('app','Email'),
67: 'password' => Yii::t('app','SMTP Password'),
68: 'server' => Yii::t('app', 'Endpoint Region'),
69: );
70: }
71:
72: public function modelLabel() {
73: return Yii::t('app','Amazon SES Email Account');
74: }
75:
76: public function renderInput ($attr) {
77: switch($attr){
78: case 'password':
79: echo X2Html::x2ActivePasswordField ($this, $attr, $this->htmlOptions ($attr), true);
80: break;
81: case 'server':
82: echo CHtml::activeDropDownList($this, 'server', $this->sesEndpoints, $this->htmlOptions ($attr));
83: break;
84: default:
85: parent::renderInput ($attr);
86: }
87: }
88:
89: public function renderInputs(){
90: $this->password = null;
91: echo CHtml::activeLabel($this, 'senderName');
92: $this->renderInput ('senderName');
93: echo CHtml::activeLabel($this, 'email');
94: $this->renderInput ('email');
95: echo CHtml::activeLabel($this, 'user');
96: $this->renderInput ('user');
97: echo CHtml::activeLabel($this, 'password');
98: $this->renderInput ('password');
99: echo CHtml::activeLabel($this, 'server');
100: $this->renderInput ('server');
101: echo '<br/>';
102: echo CHtml::errorSummary($this);
103: }
104:
105: public function rules(){
106: return array(
107: array('email', 'email'),
108: array('senderName,email,user,password,server', 'required'),
109: array('senderName,email,user,password,server', 'safe'),
110: );
111: }
112:
113: }
114:
115: ?>
116: