/public/api/Notify.php

https://bitbucket.org/AntonTyutin/pretty-simpla · PHP · 192 lines · 131 code · 43 blank · 18 comment · 12 complexity · 445f0e389b1d397c77d187963d06f218 MD5 · raw file

  1. <?php
  2. /**
  3. * Simpla CMS
  4. *
  5. * @copyright 2011 Denis Pikusov
  6. * @link http://simplacms.ru
  7. * @author Denis Pikusov
  8. *
  9. */
  10. class Notify extends Simpla
  11. {
  12. function email($to, $subject, $message, $from = '', $reply_to = '')
  13. {
  14. $headers = "MIME-Version: 1.0\n" ;
  15. $headers .= "Content-type: text/html; charset=utf-8; \r\n";
  16. $headers .= "From: $from\r\n";
  17. if(!empty($reply_to))
  18. $headers .= "reply-to: $reply_to\r\n";
  19. $subject = "=?utf-8?B?".base64_encode($subject)."?=";
  20. @mail($to, $subject, $message, $headers);
  21. }
  22. public function email_order_user($order_id)
  23. {
  24. if(!($order = $this->orders->get_order(intval($order_id))) || empty($order->email))
  25. return false;
  26. $purchases = $this->orders->get_purchases(array('order_id'=>$order->id));
  27. $this->design->assign('purchases', $purchases);
  28. $products_ids = array();
  29. $variants_ids = array();
  30. foreach($purchases as $purchase)
  31. {
  32. $products_ids[] = $purchase->product_id;
  33. $variants_ids[] = $purchase->variant_id;
  34. }
  35. $products = array();
  36. foreach($this->products->get_products(array('id'=>$products_ids)) as $p)
  37. $products[$p->id] = $p;
  38. $images = $this->products->get_images(array('product_id'=>$products_ids));
  39. foreach($images as $image)
  40. $products[$image->product_id]->images[] = $image;
  41. $variants = array();
  42. foreach($this->variants->get_variants(array('id'=>$variants_ids)) as $v)
  43. {
  44. $variants[$v->id] = $v;
  45. $products[$v->product_id]->variants[] = $v;
  46. }
  47. foreach($purchases as &$purchase)
  48. {
  49. if(!empty($products[$purchase->product_id]))
  50. $purchase->product = $products[$purchase->product_id];
  51. if(!empty($variants[$purchase->variant_id]))
  52. $purchase->variant = $variants[$purchase->variant_id];
  53. }
  54. // Способ доставки
  55. $delivery = $this->delivery->get_delivery($order->delivery_id);
  56. $this->design->assign('delivery', $delivery);
  57. $this->design->assign('order', $order);
  58. $this->design->assign('purchases', $purchases);
  59. // Отправляем письмо
  60. // Если в шаблон не передавалась валюта, передадим
  61. if ($this->design->smarty->getTemplateVars('currency') === null)
  62. {
  63. $this->design->assign('currency', reset($this->money->get_currencies(array('enabled'=>1))));
  64. }
  65. $email_template = $this->design->fetch($this->config->root_dir.'design/'.$this->settings->theme.'/html/email_order.tpl');
  66. $subject = $this->design->get_var('subject');
  67. $this->email($order->email, $subject, $email_template, $this->settings->notify_from_email);
  68. }
  69. public function email_order_admin($order_id)
  70. {
  71. if(!($order = $this->orders->get_order(intval($order_id))))
  72. return false;
  73. $purchases = $this->orders->get_purchases(array('order_id'=>$order->id));
  74. $this->design->assign('purchases', $purchases);
  75. $products_ids = array();
  76. $variants_ids = array();
  77. foreach($purchases as $purchase)
  78. {
  79. $products_ids[] = $purchase->product_id;
  80. $variants_ids[] = $purchase->variant_id;
  81. }
  82. $products = array();
  83. foreach($this->products->get_products(array('id'=>$products_ids)) as $p)
  84. $products[$p->id] = $p;
  85. $images = $this->products->get_images(array('product_id'=>$products_ids));
  86. foreach($images as $image)
  87. $products[$image->product_id]->images[] = $image;
  88. $variants = array();
  89. foreach($this->variants->get_variants(array('id'=>$variants_ids)) as $v)
  90. {
  91. $variants[$v->id] = $v;
  92. $products[$v->product_id]->variants[] = $v;
  93. }
  94. foreach($purchases as &$purchase)
  95. {
  96. if(!empty($products[$purchase->product_id]))
  97. $purchase->product = $products[$purchase->product_id];
  98. if(!empty($variants[$purchase->variant_id]))
  99. $purchase->variant = $variants[$purchase->variant_id];
  100. }
  101. // Способ доставки
  102. $delivery = $this->delivery->get_delivery($order->delivery_id);
  103. $this->design->assign('delivery', $delivery);
  104. // Пользователь
  105. $user = $this->users->get_user(intval($order->user_id));
  106. $this->design->assign('user', $user);
  107. $this->design->assign('order', $order);
  108. $this->design->assign('purchases', $purchases);
  109. // В основной валюте
  110. $this->design->assign('main_currency', $this->money->get_currency());
  111. // Отправляем письмо
  112. $email_template = $this->design->fetch($this->config->root_dir.'simpla/design/html/email_order_admin.tpl');
  113. $subject = $this->design->get_var('subject');
  114. $this->email($this->settings->order_email, $subject, $email_template, $this->settings->notify_from_email);
  115. }
  116. public function email_comment_admin($comment_id)
  117. {
  118. if(!($comment = $this->comments->get_comment(intval($comment_id))))
  119. return false;
  120. $this->design->assign('comment', $comment);
  121. // Отправляем письмо
  122. $email_template = $this->design->fetch($this->config->root_dir.'simpla/design/html/email_comment_admin.tpl');
  123. $subject = $this->design->get_var('subject');
  124. $this->email($this->settings->comment_email, $subject, $email_template, $this->settings->notify_from_email);
  125. }
  126. public function email_password_remind($user_id, $code)
  127. {
  128. if(!($user = $this->users->get_user(intval($user_id))))
  129. return false;
  130. $this->design->assign('user', $user);
  131. $this->design->assign('code', $code);
  132. // Отправляем письмо
  133. $email_template = $this->design->fetch($this->config->root_dir.'design/'.$this->settings->theme.'/html/email_password_remind.tpl');
  134. $subject = $this->design->get_var('subject');
  135. $this->email($user->email, $subject, $email_template, $this->settings->notify_from_email);
  136. $this->design->smarty->clearAssign('user');
  137. $this->design->smarty->clearAssign('code');
  138. }
  139. public function email_feedback_admin($feedback_id)
  140. {
  141. if(!($feedback = $this->feedbacks->get_feedback(intval($feedback_id))))
  142. return false;
  143. $this->design->assign('feedback', $feedback);
  144. // Отправляем письмо
  145. $email_template = $this->design->fetch($this->config->root_dir.'simpla/design/html/email_feedback_admin.tpl');
  146. $subject = $this->design->get_var('subject');
  147. $this->email($this->settings->comment_email, $subject, $email_template, "$feedback->name <$feedback->email>", "$feedback->name <$feedback->email>");
  148. }
  149. }