action.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. global $_,$conf;
  3. switch($_['action']){
  4. case 'sendmail_mail_preview':
  5. global $myUser;
  6. if(!$myUser->connected()) throw new Exception("Permission denied");
  7. require_once(__DIR__.SLASH.'page.sheet.mail.php');
  8. break;
  9. //Ajout ou modification d'élément mail
  10. case 'sendmail_mail_send':
  11. Action::write(function(&$response){
  12. global $myUser,$conf,$_;
  13. if(!$myUser->connected()) throw new Exception("Permission denied");
  14. Plugin::callHook("sendmail_before_send",array(&$_));
  15. if(!isset($_['from']) || empty($_['from'])) throw new Exception("Veuillez préciser l'adresse de l'expediteur");
  16. if(!isset($_['recipient']) || empty($_['recipient'])) throw new Exception("Veuillez préciser au moins un destinataire");
  17. $_['recipient'] = array_merge_recursive($_['recipient'], array('to'=>array(),'cc'=>array(),'cci'=>array()));
  18. foreach($_['recipient'] as $type => $mails)
  19. foreach($mails as $i => $mail)
  20. if(empty($mail) || !filter_var($mail, FILTER_VALIDATE_EMAIL)) throw new Exception('Le mail "'.$mail.'" n\'est pas correctement formaté');
  21. //Envoi du mail
  22. $mail = new Mail();
  23. $mail->recipients = $_['recipient'];
  24. $mail->expeditor = $_['from'];
  25. $mail->reply = $_['from'];
  26. $mail->title = html_entity_decode($_['subject'],ENT_QUOTES,'UTF-8');
  27. $mail->message = html_entity_decode($_['message']);
  28. if(!empty($_['files'])){
  29. $files = json_decode($_['files'],true);
  30. if($files!=false && count($files)!=0){
  31. foreach ($files as $file) {
  32. $path = isset($file['temporary']) ? File::temp().SLASH.str_replace(array('/', '\\'), SLASH, $file['path']) : str_replace(array('/', '\\'), SLASH, $file['path']);
  33. if(strpos($path, File::dir()) === false)
  34. $path = File::dir().SLASH.$path;
  35. //Vérification de l'existence fichier
  36. if(!file_exists($path)) continue;
  37. $mail->attachments[] = array(
  38. 'name' => $file['name'],
  39. 'type' => mime_content_type($path),
  40. 'stream'=> file_get_contents($path)
  41. );
  42. }
  43. }
  44. }
  45. $mail->send();
  46. Plugin::callHook("sendmail_after_send",array($_, $mail));
  47. $response['message'] = 'E-mail envoyé';
  48. $response['data'] = $_;
  49. });
  50. break;
  51. //Sauvegarde des configurations de sendmail
  52. case 'sendmail_setting_save':
  53. Action::write(function(&$response){
  54. global $myUser,$_,$conf;
  55. User::check_access('sendmail','configure');
  56. foreach(Configuration::setting('sendmail') as $key=>$value)
  57. if(is_array($value)) $allowed[] = $key;
  58. foreach ($_['fields'] as $key => $value) {
  59. if(!in_array($key, $allowed)) continue;
  60. if($key=='sendmail_default_signature') $value = html_entity_decode($value);
  61. $conf->put($key,$value);
  62. }
  63. });
  64. break;
  65. //Sauvegarde des préférences user de sendmail
  66. case 'sendmail_user_save_preference':
  67. Action::write(function(&$response){
  68. global $myUser,$_,$conf;
  69. User::check_access('sendmail','edit');
  70. if(!isset($_['preferences']) || !isset($_['preferences']['sendmail_email_signature'])) throw new Exception("Vous devez saisir une signature e-mail");
  71. $myUser->preference('sendmail_email_signature',html_entity_decode($_['preferences']['sendmail_email_signature']));
  72. });
  73. break;
  74. }
  75. ?>