Removes mail.lib.inc.php move function inside api.lib.php

Function api_mail was removed.
1.10.x
jmontoya 10 years ago
parent 551b30dc92
commit 4f762008bf
  1. 2
      main/admin/group_add.php
  2. 5
      main/inc/ajax/user_manager.ajax.php
  3. 1
      main/inc/global.inc.php
  4. 189
      main/inc/lib/api.lib.php
  5. 13
      main/inc/lib/events_email.class.php
  6. 239
      main/inc/lib/mail.lib.inc.php
  7. 2
      plugin/buycourses/src/process_confirm.php
  8. 1
      tests/main/inc/lib/login.lib.test.php
  9. 1
      tests/main/inc/lib/mail.lib.inc.test.php
  10. 2
      tests/main/inc/lib/system_announcements.lib.test.php

@ -141,7 +141,7 @@ if( $form->validate()) {
else {
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".get_lang('YouAreReg')." ".api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $username ."\n". get_lang('Pass')." : ".stripslashes($password)."\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $_configuration['root_web'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('SignatureFormula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
}
@api_mail($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
@api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}*/
Security::clear_token();

@ -101,14 +101,15 @@ switch ($action) {
'userId' => $user_id
);
$result = api_mail(
$result = api_mail_html(
$recipient_name,
$user_info['mail'],
$emailsubject,
$emailbody,
$sender_name,
$email_admin,
'',
null,
null,
$additionalParameters
);
event_system(LOG_USER_ENABLE, LOG_USER_ID, $user_id);

@ -109,7 +109,6 @@ require_once $lib_path.'banner.lib.php';
require_once $lib_path.'fileManage.lib.php';
require_once $lib_path.'fileUpload.lib.php';
require_once $lib_path.'fileDisplay.lib.php';
require_once $lib_path.'mail.lib.inc.php';
require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
require_once $lib_path.'course_category.lib.php';

@ -7782,3 +7782,192 @@ function api_create_protected_dir($name, $parentDirectory)
return $isCreated;
}
/**
* Sends an HTML email using the phpmailer class (and multipart/alternative to downgrade gracefully)
* Sender name and email can be specified, if not specified
* name and email of the platform admin are used
*
* @author Bert Vanderkimpen ICT&O UGent
* @author Yannick Warnier <yannick.warnier@beeznest.com>
*
* @param string name of recipient
* @param string email of recipient
* @param string email subject
* @param string email body
* @param string sender name
* @param string sender e-mail
* @param array extra headers in form $headers = array($name => $value) to allow parsing
* @param array data file (path and filename)
* @param array data to attach a file (optional)
* @param bool True for attaching a embedded file inside content html (optional)
* @return returns true if mail was sent
* @see class.phpmailer.php
*/
function api_mail_html(
$recipient_name,
$recipient_email,
$subject,
$message,
$senderName = '',
$senderEmail = '',
$extra_headers = array(),
$data_file = array(),
$embedded_image = false,
$additionalParameters = array()
) {
global $platform_email;
$mail = new PHPMailer();
$mail->Mailer = $platform_email['SMTP_MAILER'];
$mail->Host = $platform_email['SMTP_HOST'];
$mail->Port = $platform_email['SMTP_PORT'];
$mail->CharSet = $platform_email['SMTP_CHARSET'];
// Stay far below SMTP protocol 980 chars limit.
$mail->WordWrap = 200;
if ($platform_email['SMTP_AUTH']) {
$mail->SMTPAuth = 1;
$mail->Username = $platform_email['SMTP_USER'];
$mail->Password = $platform_email['SMTP_PASS'];
}
// 5 = low, 1 = high
$mail->Priority = 3;
$mail->SMTPKeepAlive = true;
// Default values
$notification = new Notification();
$defaultEmail = $notification->getDefaultPlatformSenderEmail();
$defaultName = $notification->getDefaultPlatformSenderName();
// Error to admin.
$mail->AddCustomHeader('Errors-To: '.$defaultEmail);
// If the parameter is set don't use the admin.
$senderName = !empty($senderName) ? $senderName : $defaultEmail;
$senderEmail = !empty($senderEmail) ? $senderEmail : $defaultName;
// Reply to first
if (isset($extra_headers['reply_to'])) {
$mail->AddReplyTo(
$extra_headers['reply_to']['mail'],
$extra_headers['reply_to']['name']
);
$mail->Sender = $extra_headers['reply_to']['mail'];
unset($extra_headers['reply_to']);
}
$mail->SetFrom($senderEmail, $senderName);
$mail->Subject = $subject;
$mail->AltBody = strip_tags(
str_replace('<br />', "\n", api_html_entity_decode($message))
);
// Send embedded image.
if ($embedded_image) {
// Get all images html inside content.
preg_match_all("/<img\s+.*?src=[\"\']?([^\"\' >]*)[\"\']?[^>]*>/i", $message, $m);
// Prepare new tag images.
$new_images_html = array();
$i = 1;
if (!empty($m[1])) {
foreach ($m[1] as $image_path) {
$real_path = realpath($image_path);
$filename = basename($image_path);
$image_cid = $filename.'_'.$i;
$encoding = 'base64';
$image_type = mime_content_type($real_path);
$mail->AddEmbeddedImage(
$real_path,
$image_cid,
$filename,
$encoding,
$image_type
);
$new_images_html[] = '<img src="cid:'.$image_cid.'" />';
$i++;
}
}
// Replace origin image for new embedded image html.
$x = 0;
if (!empty($m[0])) {
foreach ($m[0] as $orig_img) {
$message = str_replace($orig_img, $new_images_html[$x], $message);
$x++;
}
}
}
$message = str_replace(array("\n\r", "\n", "\r"), '<br />', $message);
$mail->Body = '<html><head></head><body>'.$message.'</body></html>';
// Attachment ...
if (!empty($data_file)) {
$mail->AddAttachment($data_file['path'], $data_file['filename']);
}
// Only valid addresses are accepted.
if (is_array($recipient_email)) {
foreach ($recipient_email as $dest) {
if (api_valid_email($dest)) {
$mail->AddAddress($dest, $recipient_name);
}
}
} else {
if (api_valid_email($recipient_email)) {
$mail->AddAddress($recipient_email, $recipient_name);
} else {
return 0;
}
}
if (is_array($extra_headers) && count($extra_headers) > 0) {
foreach ($extra_headers as $key => $value) {
switch (strtolower($key)) {
case 'encoding':
case 'content-transfer-encoding':
$mail->Encoding = $value;
break;
case 'charset':
$mail->Charset = $value;
break;
case 'contenttype':
case 'content-type':
$mail->ContentType = $value;
break;
default:
$mail->AddCustomHeader($key.':'.$value);
break;
}
}
} else {
if (!empty($extra_headers)) {
$mail->AddCustomHeader($extra_headers);
}
}
// WordWrap the html body (phpMailer only fixes AltBody) FS#2988
$mail->Body = $mail->WrapText($mail->Body, $mail->WordWrap);
// Send the mail message.
if (!$mail->Send()) {
error_log('ERROR: mail not sent to '.$recipient_name.' ('.$recipient_email.') because of '.$mail->ErrorInfo.'<br />');
return 0;
}
$plugin = new AppPlugin();
$installedPluginsList = $plugin->getInstalledPluginListObject();
foreach ($installedPluginsList as $installedPlugin) {
if ($installedPlugin->isMailPlugin and array_key_exists("smsType", $additionalParameters)) {
$className = str_replace("Plugin", "", get_class($installedPlugin));
$smsObject = new $className;
$smsObject->send($additionalParameters);
}
}
// Clear all the addresses.
$mail->ClearAddresses();
return 1;
}

@ -93,14 +93,11 @@ class EventsMail
$recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname']);
// checks if there's a file we need to join to the mail
if (isset($values["certificate_pdf_file"]))
{
if (isset($values["certificate_pdf_file"])) {
$message = str_replace("\n", "<br />", $message);
@api_mail_html($recipient_name, $user_info["mail"], $subject, $message, $sender_name, $email_admin, null, array($values['certificate_pdf_file']));
}
else
{
@api_mail($recipient_name, $user_info["mail"], $subject, $message, $sender_name, $email_admin);
api_mail_html($recipient_name, $user_info["mail"], $subject, $message, $sender_name, $email_admin, null, array($values['certificate_pdf_file']));
} else {
api_mail_html($recipient_name, $user_info["mail"], $subject, $message, $sender_name, $email_admin);
}
// If the mail only need to be send once (we know that thanks to the events.conf), we log it in the table
@ -150,7 +147,7 @@ class EventsMail
// we send the mail
$recipient_name = api_get_person_name($value['firstname'], $value['lastname']);
@api_mail($recipient_name, $value["email"], $subject, $message, $sender_name, $email_admin);
api_mail_html($recipient_name, $value["email"], $subject, $message, $sender_name, $email_admin);
// If the mail only need to be send once (we know that thanks to the events.conf, we log it in the table
if ($event_config[$event_name]["sending_mail_once"])

@ -1,239 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
/**
*
* @package chamilo.library
*/
// A regular expression for testing against valid email addresses.
// It should actually be revised for using the complete RFC3696 description:
// http://tools.ietf.org/html/rfc3696#section-3
//$regexp_rfc3696 = "^[0-9a-z_\.+-]+@(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2,3})$"; // Deprecated, 13-OCT-2010.
/**
* Sends email using the phpmailer class
* Sender name and email can be specified, if not specified
* name and email of the platform admin are used
*
* @author Bert Vanderkimpen ICT&O UGent
*
* @param recipient_name name of recipient
* @param recipient_email email of recipient
* @param message email body
* @param subject email subject
* @return returns true if mail was sent
* @see class.phpmailer.php
* @deprecated use api_mail_html()
*/
function api_mail(
$recipient_name,
$recipient_email,
$subject,
$message,
$sender_name = '',
$sender_email = '',
$extra_headers = '',
$additionalParameters = array()
) {
error_log("api_mail is deprecated. Using api_mail_html() on line ".__LINE__." of [".__FILE__."]");
return api_mail_html(
$recipient_name,
$recipient_email,
$subject,
$message,
$sender_name,
$sender_email,
$extra_headers,
null,
null,
$additionalParameters
);
}
/**
* Sends an HTML email using the phpmailer class (and multipart/alternative to downgrade gracefully)
* Sender name and email can be specified, if not specified
* name and email of the platform admin are used
*
* @author Bert Vanderkimpen ICT&O UGent
* @author Yannick Warnier <yannick.warnier@beeznest.com>
*
* @param string name of recipient
* @param string email of recipient
* @param string email subject
* @param string email body
* @param string sender name
* @param string sender e-mail
* @param array extra headers in form $headers = array($name => $value) to allow parsing
* @param array data file (path and filename)
* @param array data to attach a file (optional)
* @param bool True for attaching a embedded file inside content html (optional)
* @return returns true if mail was sent
* @see class.phpmailer.php
*/
function api_mail_html(
$recipient_name,
$recipient_email,
$subject,
$message,
$senderName = '',
$senderEmail = '',
$extra_headers = array(),
$data_file = array(),
$embedded_image = false,
$additionalParameters = array()
) {
global $platform_email;
$mail = new PHPMailer();
$mail->Mailer = $platform_email['SMTP_MAILER'];
$mail->Host = $platform_email['SMTP_HOST'];
$mail->Port = $platform_email['SMTP_PORT'];
$mail->CharSet = $platform_email['SMTP_CHARSET'];
// Stay far below SMTP protocol 980 chars limit.
$mail->WordWrap = 200;
if ($platform_email['SMTP_AUTH']) {
$mail->SMTPAuth = 1;
$mail->Username = $platform_email['SMTP_USER'];
$mail->Password = $platform_email['SMTP_PASS'];
}
// 5 = low, 1 = high
$mail->Priority = 3;
$mail->SMTPKeepAlive = true;
// Default values
$notification = new Notification();
$defaultEmail = $notification->getDefaultPlatformSenderEmail();
$defaultName = $notification->getDefaultPlatformSenderName();
// Error to admin.
$mail->AddCustomHeader('Errors-To: '.$defaultEmail);
// If the parameter is set don't use the admin.
$senderName = !empty($senderName) ? $senderName : $defaultEmail;
$senderEmail = !empty($senderEmail) ? $senderEmail : $defaultName;
// Reply to first
if (isset($extra_headers['reply_to'])) {
$mail->AddReplyTo(
$extra_headers['reply_to']['mail'],
$extra_headers['reply_to']['name']
);
$mail->Sender = $extra_headers['reply_to']['mail'];
unset($extra_headers['reply_to']);
}
$mail->SetFrom($senderEmail, $senderName);
$mail->Subject = $subject;
$mail->AltBody = strip_tags(
str_replace('<br />', "\n", api_html_entity_decode($message))
);
// Send embedded image.
if ($embedded_image) {
// Get all images html inside content.
preg_match_all("/<img\s+.*?src=[\"\']?([^\"\' >]*)[\"\']?[^>]*>/i", $message, $m);
// Prepare new tag images.
$new_images_html = array();
$i = 1;
if (!empty($m[1])) {
foreach ($m[1] as $image_path) {
$real_path = realpath($image_path);
$filename = basename($image_path);
$image_cid = $filename.'_'.$i;
$encoding = 'base64';
$image_type = mime_content_type($real_path);
$mail->AddEmbeddedImage(
$real_path,
$image_cid,
$filename,
$encoding,
$image_type
);
$new_images_html[] = '<img src="cid:'.$image_cid.'" />';
$i++;
}
}
// Replace origin image for new embedded image html.
$x = 0;
if (!empty($m[0])) {
foreach ($m[0] as $orig_img) {
$message = str_replace($orig_img, $new_images_html[$x], $message);
$x++;
}
}
}
$message = str_replace(array("\n\r", "\n", "\r"), '<br />', $message);
$mail->Body = '<html><head></head><body>'.$message.'</body></html>';
// Attachment ...
if (!empty($data_file)) {
$mail->AddAttachment($data_file['path'], $data_file['filename']);
}
// Only valid addresses are accepted.
if (is_array($recipient_email)) {
foreach ($recipient_email as $dest) {
if (api_valid_email($dest)) {
$mail->AddAddress($dest, $recipient_name);
}
}
} else {
if (api_valid_email($recipient_email)) {
$mail->AddAddress($recipient_email, $recipient_name);
} else {
return 0;
}
}
if (is_array($extra_headers) && count($extra_headers) > 0) {
foreach ($extra_headers as $key => $value) {
switch (strtolower($key)) {
case 'encoding':
case 'content-transfer-encoding':
$mail->Encoding = $value;
break;
case 'charset':
$mail->Charset = $value;
break;
case 'contenttype':
case 'content-type':
$mail->ContentType = $value;
break;
default:
$mail->AddCustomHeader($key.':'.$value);
break;
}
}
} else {
if (!empty($extra_headers)) {
$mail->AddCustomHeader($extra_headers);
}
}
// WordWrap the html body (phpMailer only fixes AltBody) FS#2988
$mail->Body = $mail->WrapText($mail->Body, $mail->WordWrap);
// Send the mail message.
if (!$mail->Send()) {
error_log('ERROR: mail not sent to '.$recipient_name.' ('.$recipient_email.') because of '.$mail->ErrorInfo.'<br />');
return 0;
}
$plugin = new AppPlugin();
$installedPluginsList = $plugin->getInstalledPluginListObject();
foreach ($installedPluginsList as $installedPlugin) {
if ($installedPlugin->isMailPlugin and array_key_exists("smsType", $additionalParameters)) {
$className = str_replace("Plugin", "", get_class($installedPlugin));
$smsObject = new $className;
$smsObject->send($additionalParameters);
}
}
// Clear all the addresses.
$mail->ClearAddresses();
return 1;
}

@ -72,7 +72,7 @@ if (isset($_POST['Confirm'])) {
$message = str_replace("{{reference}}", $reference, $message);
$message .= $text;
api_mail($name, $email, $asunto, $message);
api_mail_html($name, $email, $asunto, $message);
// Return to course list
header('Location:list.php');
}

@ -41,7 +41,6 @@ class TestLogin extends UnitTestCase {
}
function testhandle_encrypted_password() {
require_once api_get_path (LIBRARY_PATH).'mail.lib.inc.php';
global $charset;
global $_configuration;
ob_start();

@ -1,5 +1,4 @@
<?php
require_once(api_get_path(LIBRARY_PATH).'mail.lib.inc.php');
class TestMail extends UnitTestCase {

@ -1,7 +1,5 @@
<?php
require_once(api_get_path(LIBRARY_PATH).'system_announcements.lib.php');
require_once(api_get_path(LIBRARY_PATH).'mail.lib.inc.php');
class TestSystemAnnouncementManager extends UnitTestCase {

Loading…
Cancel
Save