energine
[ class tree: energine ] [ index: energine ] [ all elements ]

Source for file Order.class.php

Documentation is available at Order.class.php

  1. <?php
  2. /**
  3.  * Содержит класс Order
  4.  *
  5.  * @package energine
  6.  * @subpackage shop
  7.  * @author dr.Pavka
  8.  * @copyright ColoCall 2006
  9.  * @version $Id$
  10.  */
  11.  
  12. //require_once('core/framework/DBWorker.class.php');
  13. //require_once('core/framework/User.class.php');
  14. //require_once('core/modules/shop/components/Basket.class.php');
  15. //require_once('core/modules/shop/components/OrderStatus.class.php');
  16.  
  17. /**
  18.  * Предназначен для формирования заказа пользователем
  19.  *
  20.  * @package energine
  21.  * @subpackage shop
  22.  * @author dr.Pavka
  23.  */
  24. class Order extends DBWorker {
  25.     /**
  26.      * Имя таблицы
  27.      *
  28.      */
  29.     const ORDER_TABLE_NAME = 'shop_orders';
  30.     /**
  31.      * Корзина
  32.      *
  33.      * @var Basket 
  34.      * @access private
  35.      */
  36.     private $basket;
  37.     /**
  38.      * Пользователь
  39.      *
  40.      * @var User 
  41.      * @access private
  42.      */
  43.     private $user;
  44.  
  45.     /**
  46.      * Конструктор класса
  47.      *
  48.      * @access public
  49.      */
  50.     public function __construct({
  51.         parent::__construct();
  52.         $this->basket = Basket::getInstance();
  53.     }
  54.     /**
  55.      * Устанавливает пользователя
  56.      *
  57.      * @return User 
  58.      * @access public
  59.      */
  60.  
  61.     public function setUser(User $user{
  62.         $this->user = $user;
  63.     }
  64.  
  65.     /**
  66.      * Возвращает корзину
  67.      *
  68.      * @return Basket 
  69.      * @access public
  70.      */
  71.  
  72.     public function getBasket({
  73.         return $this->basket;
  74.     }
  75.  
  76.     /**
  77.      * Возвращает пользователя
  78.      *
  79.      * @return User 
  80.      * @access public
  81.      */
  82.  
  83.     public function getUser({
  84.         return $this->user;
  85.     }
  86.     /**
  87.      * Создание заказа
  88.      *
  89.      * @param array 
  90.      * @return boolean 
  91.      * @access public
  92.      */
  93.  
  94.     public function create(array $userData{
  95.         $data['u_id'$this->user->getID();
  96.         $data['os_id'OrderStatus::getInstance()->getInitial();
  97.         $data['order_created'date('Y-m-d H:i:s');
  98.         $data['order_detail'serialize($this->basket->getFormattedContents());
  99.         $data['user_detail'serialize($userData);
  100.         $data['order_delivery_comment'$userData['order_delivery_comment'];
  101.         $res $this->dbh->modify(QAL::INSERTself::ORDER_TABLE_NAME$data);
  102.         return $res;
  103.     }
  104.     /**
  105.      * Отправка уведомления о заказе
  106.      *
  107.      * @param array 
  108.      * @return bool 
  109.      * @access public
  110.      */
  111.  
  112.     public function sendNotification($data{
  113.         $this->sendClientMail($data);
  114.  
  115.         if ($managerEmail $this->getConfigValue('mail.manager')) {
  116.             $this->sendManagerMail($dataexplode(' '$managerEmail));
  117.         
  118.         }
  119.  
  120.         return true;
  121.     }
  122.  
  123.     /**
  124.       * Возвращает текст письма отправляемого пользователю при отправке заказа
  125.       * Вынесено в отдельный метод для облегчения переписывания с потомках
  126.       *
  127.       * @return string 
  128.       * @access protected
  129.       */
  130.  
  131.     protected function sendClientMail($data{
  132.         //$data['order_id'], $data['u_name'], $data['u_fullname'], $data['order_delivery_comment'], $basketHTML
  133.         $mail new Mail();
  134.         $mail->setFrom($this->getConfigValue('mail.from'));
  135.         $mail->addTo($data['u_name']);
  136.         $mail->setSubject($this->translate('TXT_ORDER_CLIENT_SUBJECT'));
  137.         $data['basket'$this->buildBasketHTML()
  138.         if ($this->getUser()->getValue('u_password'=== true{
  139.             $body $this->translate('TXT_ORDER_CLIENT_MAIL_BODY');
  140.         }
  141.         else {
  142.             $data['u_password'$this->getUser()->getValue('u_password');
  143.             $body $this->translate('TXT_ORDER_NEW_CLIENT_MAIL_BODY');
  144.         }
  145.         $mail->setText($body$data);
  146.         $mail->send();
  147.     }
  148.  
  149.  
  150.     /**
  151.      * Возвращает текст письма администратору
  152.      *
  153.      *
  154.      * @param array $data 
  155.      * @return string 
  156.      * @access protected
  157.      */
  158.     protected function sendManagerMail($data$managerEmails{
  159.         $mail new Mail();
  160.         $mail->setFrom($this->getConfigValue('mail.from'));
  161.         foreach ($managerEmails as $email{
  162.             $mail->addTo($email);
  163.         }
  164.         $mail->setSubject($this->translate('TXT_ORDER_MANAGER_SUBJECT'));
  165.         $basketHTML $this->buildBasketHTML();
  166.         $body sprintf($this->translate('TXT_ORDER_MANAGER_MAIL_BODY')$data['order_id']$data['u_name']$data['u_fullname']$data['order_delivery_comment']$basketHTML);
  167.         $mail->setText($body);
  168.         $mail->send();
  169.     }
  170.  
  171.     /**
  172.      * Возвращает содержимое корзины в HTML
  173.      *
  174.      * @return string 
  175.      * @access protected
  176.      */
  177.     protected function buildBasketHTML({
  178.         $converter CurrencyConverter::getInstance();
  179.         //$discounts = Discounts::getInstance();
  180.         $contents $this->getBasket()->getFormattedContents();
  181.         $basketHTML '<table border="1">';
  182.         $basketHTML .= '<thead><tr>';
  183.         $basketHTML .= '<td>'.$this->translate('FIELD_PRODUCT_NAME')."</td>\t<td>".$this->translate('FIELD_BASKET_COUNT')."</td>\t<td>".$this->translate('FIELD_PRODUCT_PRICE')."</td>\t<td>".$this->translate('FIELD_PRODUCT_SUMM')."</td>\n";
  184.         $basketHTML .= '</tr></thead><tbody>';
  185.         $summ 0;
  186.         foreach ($contents as $key => $productInfo{
  187.             $basketHTML .= '<tr>';
  188.             $basketHTML .= '<td>'.$productInfo['product_name'.' '.$productInfo['product_code'."</td>\t";
  189.             $basketHTML .= '<td>'.$productInfo['basket_count'."</td>\t";
  190.             $basketHTML .= '<td>'.$productInfo['product_price'."</td>\t";
  191.             $basketHTML .= '<th>'.$productInfo['product_summ'."</th>\t";
  192.             $basketHTML .= "</tr>\n";
  193.             $summ += $productInfo['product_summ'];
  194.         }
  195.         $basketHTML .= '</tbody>';
  196.         $basketHTML .= '<tfoot>';
  197.         $basketHTML .= '<tr><td colspan="3">'.$this->translate('TXT_BASKET_SUMM')."</td>\t<td>".$converter->format($summ$converter->getIDByAbbr('HRN')).'</td></tr>';
  198.         /*if ($discounts->getDiscountForGroup() > 0) {
  199.             $basketHTML .= '<tr><td colspan="3">'.$this->translate('TXT_BASKET_SUMM_WITH_DISCOUNT').' '.$discounts->getDiscountForGroup().'%</td><td>'.number_format($discounts->calculateCost($summ), 2, '.', ' ').'</td></tr>';
  200.         }*/
  201.         $basketHTML .= '</tfoot>';
  202.         $basketHTML .= '</table>';
  203.         return $basketHTML;
  204.     }    
  205. }
В создании документации нам помог: phpDocumentor