Cheetah
ChSMTPModule.php
Go to the documentation of this file.
1 <?php
2 
8 ch_import('ChWsbModule');
9 ch_import('ChWsbPaginate');
10 ch_import('ChWsbAlerts');
11 
12 require_once (CH_DIRECTORY_PATH_PLUGINS . "phpmailer/class.phpmailer.php");
13 require_once (CH_DIRECTORY_PATH_PLUGINS . "phpmailer/class.smtp.php");
14 
16 {
17  function __construct(&$aModule)
18  {
19  parent::__construct($aModule);
20  }
21 
22  function serviceSend ($sRecipientEmail, $sMailSubject, $sMailBody, $sMailHeader, $sMailParameters, $isHtml, $aRecipientInfo = array())
23  {
24  $iRet = true;
25 
26  if ($sRecipientEmail) {
27 
28  $mail = new PHPMailer();
29 
30  if ('on' == getParam('ch_smtp_on'))
31  $mail->IsSMTP();
32  //$mail->SMTPDebug = 2;
33 
34  $mail->CharSet = 'utf8';
35 
36  // smtp server auth or not
37  $mail->SMTPAuth = 'on' == getParam('ch_smtp_auth') ? true : false;
38 
39  // from settings, smtp server secure ssl/tls
40  $sParamSecure = getParam('ch_smtp_secure');
41  if ('SSL' == $sParamSecure || 'TLS' == $sParamSecure) {
42  $mail->SMTPSecure = strtolower($sParamSecure);
43 
44  if ('on' == getParam('ch_smtp_allow_selfsigned')) {
45  $mail->SMTPOptions = array(
46  'ssl' => array(
47  'verify_peer' => false,
48  'verify_peer_name' => false,
49  'allow_self_signed' => true
50  )
51  );
52  }
53  }
54 
55  // from settings, smtp server
56  $sParamHost = getParam('ch_smtp_host');
57  if ($sParamHost)
58  $mail->Host = $sParamHost;
59 
60  // smtp port 25, 465
61  $sParamPort = getParam('ch_smtp_port');
62  if ((int)$sParamPort > 0)
63  $mail->Port = $sParamPort;
64 
65  // from settings, username and passord of smtp server
66  $mail->Username = getParam ('ch_smtp_username');
67  $mail->Password = getParam ('ch_smtp_password');
68 
69  $sParamSender = trim(getParam('ch_smtp_from_email'));
70  if ($sParamSender)
71  $mail->From = $sParamSender;
72  else
73  $mail->From = $sSenderEmail;
74 
75  // get site name or some other name as sender's name
76  $mail->FromName = getParam ('ch_smtp_from_name');
77 
78  $mail->Subject = $sMailSubject;
79  if ($isHtml) {
80  $mail->Body = $sMailBody;
81  $mail->AltBody = $isHtml ? strip_tags($sMailBody) : $sMailBody;
82  } else {
83  $mail->Body = $sMailBody;
84  }
85 
86  $mail->WordWrap = 50; // set word wrap
87 
88  $mail->AddAddress($sRecipientEmail);
89 
90  // get attachments from attach directory
91  if ('on' == getParam ('ch_smtp_send_attachments')) {
92  if ($h = opendir(CH_DIRECTORY_PATH_MODULES . "cheetah/smtpmailer/data/attach/")) {
93  while (false !== ($sFile = readdir($h))) {
94  if ($sFile == "." || $sFile == ".." || $sFile[0] == ".") continue;
95  $mail->AddAttachment(CH_DIRECTORY_PATH_MODULES . "cheetah/smtpmailer/data/attach/" . $sFile, $sFile);
96  }
97  closedir($h);
98  }
99  }
100 
101  $mail->IsHTML($isHtml ? true : false);
102 
103  $iRet = $mail->Send();
104  if (!$iRet)
105  $this->log("Mailer Error ($sRecipientEmail): " . $mail->ErrorInfo);
106 
107  }
108 
109  //--- create system event [begin]
110  ch_import('ChWsbAlerts');
111  $aAlertData = array(
112  'email' => $sRecipientEmail,
113  'subject' => $sMailSubject,
114  'body' => $sMailBody,
115  'header' => $sMailHeader,
116  'params' => $sMailParameters,
117  'html' => $isHtml,
118  );
119 
120  $oZ = new ChWsbAlerts('profile', 'send_mail', $aRecipientInfo ? $aRecipientInfo['ID'] : 0, '', $aAlertData);
121  $oZ -> alert();
122  //--- create system event [ end ]
123 
124  return $iRet;
125  }
126 
128  {
129  if (!$this->isAdmin()) {
130  $this->_oTemplate->displayAccessDenied ();
131  return;
132  }
133 
134  $this->_oTemplate->pageStart();
135 
136  $iId = $this->_oDb->getSettingsCategory();
137  if(empty($iId)) {
138  echo MsgBox(_t('_sys_request_page_not_found_cpt'));
139  $this->_oTemplate->pageCodeAdmin (_t('_ch_smtp_administration'));
140  return;
141  }
142 
143  ch_import('ChWsbAdminSettings');
144 
145  $mixedResult = '';
146  if(isset($_POST['save']) && isset($_POST['cat'])) {
148  $mixedResult = $oSettings->saveChanges($_POST);
149  }
150 
152  $sResult = $oSettings->getForm();
153 
154  if($mixedResult !== true && !empty($mixedResult))
155  $sResult = $mixedResult . $sResult;
156 
157  $aVars = array (
158  'content' => $sResult,
159  );
160  echo $this->_oTemplate->adminBlock ($this->_oTemplate->parseHtmlByName('default_padding', $aVars), _t('_ch_smtp_administration'));
161 
162  $aVars = array (
163  'content' => _t('_ch_smtp_help_text')
164  );
165  echo $this->_oTemplate->adminBlock ($this->_oTemplate->parseHtmlByName('default_padding', $aVars), _t('_ch_smtp_help'));
166 
167  $aVars = array (
168  'content' => $this->formTester(),
169  );
170  echo $this->_oTemplate->adminBlock ($this->_oTemplate->parseHtmlByName('default_padding', $aVars), _t('_ch_smtp_tester'));
171 
172  $this->_oTemplate->addCssAdmin ('forms_adv.css');
173  $this->_oTemplate->pageCodeAdmin (_t('_ch_smtp_administration'));
174  }
175 
176  function formTester()
177  {
178  $sMsg = '';
179  if ($_POST['tester_submit']) {
180 
181  $sRecipient = process_pass_data($_POST['recipient']);
182  $sSubj = process_pass_data($_POST['subject']);
183  $sBody = process_pass_data($_POST['body']);
184  $isHTML = $_POST['html'] == 'on' ? true : false;
185 
186  if (sendMail($sRecipient, $sSubj, $sBody, 0, array(), $isHTML ? 'html' : ''))
187  $sMsg = MsgBox(_t('_ch_smtp_send_ok'));
188  else
189  $sMsg = MsgBox(_t('_ch_smtp_send_fail'));
190  }
191 
192  $aForm = array(
193  'form_attrs' => array(
194  'action' => CH_WSB_URL_ROOT . $this->_oConfig->getBaseUri() . 'administration/',
195  'method' => 'post',
196  ),
197  'inputs' => array (
198  'header' => array(
199  'type' => 'block_header',
200  'caption' => _t('_ch_smtp_tester'),
201  ),
202  'recipient' => array(
203  'type' => 'text',
204  'name' => 'recipient',
205  'caption' => _t('_ch_smtp_recipient'),
206  'value' => '',
207  ),
208  'subject' => array(
209  'type' => 'text',
210  'name' => 'subject',
211  'caption' => _t('_ch_smtp_subject'),
212  'value' => '',
213  ),
214  'body' => array(
215  'type' => 'textarea',
216  'name' => 'body',
217  'caption' => _t('_ch_smtp_body'),
218  'value' => '',
219  ),
220  'html' => array(
221  'type' => 'checkbox',
222  'name' => 'html',
223  'caption' => _t('_ch_smtp_is_html'),
224  'checked' => false,
225  ),
226  'Submit' => array(
227  'type' => 'submit',
228  'name' => 'tester_submit',
229  'value' => _t("_Submit"),
230  ),
231  )
232  );
233 
234  ch_import('ChTemplFormView');
236  return $sMsg . $oForm->getCode();
237  }
238 
239  function isAdmin ()
240  {
241  return $GLOBALS['logged']['admin'] ? true : false;
242  }
243 
244  function log ($s)
245  {
246  $fn = CH_DIRECTORY_PATH_MODULES . "cheetah/smtpmailer/data/logs/log.log";
247  $f = @fopen ($fn, 'a');
248  if (!$f) return;
249  fwrite ($f, date(DATE_RFC822) . "\t" . $s . "\n");
250  fclose ($f);
251  }
252 }
$oSettings
$oSettings
Definition: advanced_settings.php:20
ChTemplFormView
Definition: ChTemplFormView.php:11
true
if(!defined("TRUE_VAL")) define("TRUE_VAL" true
Definition: constants.inc.php:8
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
$f
global $f
Definition: callback.php:13
$sResult
$sResult
Definition: advanced_settings.php:26
$aModule
$aModule
Definition: classifieds.php:21
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
sendMail
sendMail( $sRecipientEmail, $sMailSubject, $sMailBody, $iRecipientID=0, $aPlus=array(), $sEmailFlag='html', $isDisableAlert=false, $bForceSend=false)
Definition: utils.inc.php:461
ChSMTPModule\serviceSend
serviceSend($sRecipientEmail, $sMailSubject, $sMailBody, $sMailHeader, $sMailParameters, $isHtml, $aRecipientInfo=array())
Definition: ChSMTPModule.php:22
php
$oZ
$oZ
Definition: db.php:20
$iId
$iId
Definition: license.php:15
$sMsg
$sMsg
Definition: actions.inc.php:22
ChSMTPModule
Definition: ChSMTPModule.php:16
$oForm
$oForm
Definition: host_tools.php:42
ChWsbAlerts
Definition: ChWsbAlerts.php:39
$sFile
$sFile
Definition: index.php:20
getParam
getParam($sParamName, $bUseCache=true)
Definition: db.inc.php:130
ChSMTPModule\log
log($s)
Definition: ChSMTPModule.php:244
ChSMTPModule\actionAdministration
actionAdministration()
Definition: ChSMTPModule.php:127
PHPMailer
ChWsbModule
Definition: ChWsbModule.php:41
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
ChWsbAdminSettings
Definition: ChWsbAdminSettings.php:35
ChSMTPModule\formTester
formTester()
Definition: ChSMTPModule.php:176
$aVars
$aVars
Definition: license.php:101
$s
$s
Definition: embed.php:13
process_pass_data
process_pass_data($text, $strip_tags=0)
Definition: utils.inc.php:290
ChSMTPModule\isAdmin
isAdmin()
Definition: ChSMTPModule.php:239
ChSMTPModule\__construct
__construct(&$aModule)
Definition: ChSMTPModule.php:17
$aForm
$aForm
Definition: forgot.php:43
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10