protected static function sendSms($n, $data)
 {
     $general = wa('shop')->getConfig()->getGeneralSettings();
     /**
      * @var waContact $customer
      */
     $customer = $data['customer'];
     if ($n['to'] == 'customer') {
         $to = $customer->get('phone', 'default');
         $log = sprintf(_w("Notification <strong>%s</strong> sent to customer."), $n['name']);
     } elseif ($n['to'] == 'admin') {
         $to = $general['phone'];
         $log = sprintf(_w("Notification <strong>%s</strong> sent to store admin."), $n['name']);
     } else {
         $to = $n['to'];
         $log = sprintf(_w("Notification <strong>%s</strong> sent to %s."), $n['name'], $n['to']);
     }
     if (!$to) {
         return;
     }
     $view = wa()->getView();
     foreach (array('shipping', 'billing') as $k) {
         $address = shopHelper::getOrderAddress($data['order']['params'], $k);
         $formatter = new waContactAddressOneLineFormatter(array('image' => false));
         $address = $formatter->format(array('data' => $address));
         $view->assign($k . '_address', $address['value']);
     }
     $order_id = $data['order']['id'];
     $data['order']['id'] = shopHelper::encodeOrderId($order_id);
     $view->assign('order_url', wa()->getRouteUrl('/frontend/myOrderByCode', array('id' => $order_id, 'code' => $data['order']['params']['auth_code']), true));
     $view->assign($data);
     $text = $view->fetch('string:' . $n['text']);
     $sms = new waSMS();
     if ($sms->send($to, $text, isset($n['from']) ? $n['from'] : null)) {
         $order_log_model = new shopOrderLogModel();
         $order_log_model->add(array('order_id' => $order_id, 'contact_id' => null, 'action_id' => '', 'text' => '<i class="icon16 mobile"></i> ' . $log, 'before_state_id' => $data['order']['state_id'], 'after_state_id' => $data['order']['state_id']));
     }
 }
Example #2
0
 /**
  * Helper to send one message: used during real sending, as well as for test emails from follow-ups settings page.
  */
 public static function sendOne($f, $o, $customer, $contact, $to, $view = null, $general = null)
 {
     if (!$view) {
         $view = wa()->getView();
     }
     if (!$general) {
         $general = wa('shop')->getConfig()->getGeneralSettings();
     }
     $workflow = new shopWorkflow();
     $items_model = new shopOrderItemsModel();
     $o['items'] = $items_model->getItems($o['id']);
     foreach ($o['items'] as &$i) {
         if (!empty($i['file_name'])) {
             $i['download_link'] = wa()->getRouteUrl('/frontend/myOrderDownload', array('id' => $o['id'], 'code' => $o['params']['auth_code'], 'item' => $i['id']), true);
         }
     }
     unset($i);
     // Assign template vars
     $view->clearAllAssign();
     $view->assign('followup', $f);
     // row from shop_followup
     $view->assign('order', $o);
     // row from shop_order, + 'params' key
     $view->assign('customer', $contact);
     // shopCustomer
     $view->assign('order_url', wa()->getRouteUrl('/frontend/myOrderByCode', array('id' => $o['id'], 'code' => $o['params']['auth_code']), true));
     $view->assign('status', $workflow->getStateById($o['state_id'])->getName());
     // $shipping_address, $billing_address
     foreach (array('shipping', 'billing') as $k) {
         $address = shopHelper::getOrderAddress($o['params'], $k);
         $formatter = new waContactAddressOneLineFormatter(array('image' => false));
         $address = $formatter->format(array('data' => $address));
         $view->assign($k . '_address', $address['value']);
     }
     // Build email from template
     $subject = $view->fetch('string:' . $f['subject']);
     $body = $view->fetch('string:' . $f['body']);
     $from = $general['email'];
     if ($f['from']) {
         $from = $f['from'];
     }
     // Send the message
     $message = new waMailMessage($subject, $body);
     $message->setTo($to);
     $message->setFrom($from, $general['name']);
     return $message->send();
 }
Example #3
0
 /**
  * Adds various extra data to specified orders.
  *
  * @param array $orders Orders array
  * @param bool $single Whether only one order is specified; only in this case modified order data array is returned
  * @return null|array
  */
 public static function workupOrders(&$orders, $single = false)
 {
     if ($single) {
         $orders = array($orders);
     }
     $workflow = new shopWorkflow();
     $states = $workflow->getAllStates();
     foreach ($orders as &$order) {
         $order['id_str'] = self::encodeOrderId($order['id']);
         $order['total_str'] = wa_currency($order['total'], $order['currency']);
         if (!empty($order['create_datetime'])) {
             $order['create_datetime_str'] = wa_date('humandatetime', $order['create_datetime']);
         }
         $state = isset($states[$order['state_id']]) ? $states[$order['state_id']] : null;
         $icon = '';
         $style = '';
         if ($state) {
             /**
              * @var shopWorkflowState $state
              */
             $icon = $state->getOption('icon');
             $style = $state->getStyle();
         }
         $order['icon'] = $icon;
         $order['style'] = $style;
         if (isset($order['params'])) {
             // shipping_address_formatted
             $shipping_address = self::getOrderAddress($order['params'], 'shipping');
             $formatter = new waContactAddressOneLineFormatter();
             $order['shipping_address_formatted'] = $formatter->format(array('data' => $shipping_address));
             $order['shipping_address_formatted'] = $order['shipping_address_formatted']['value'];
             // Shipping and payment option names
             if (isset($order['params']['shipping_name'])) {
                 $order['shipping_name'] = htmlspecialchars($order['params']['shipping_name']);
             } else {
                 $order['shipping_name'] = '<span class="hint">' . _w('not specified') . '</span>';
             }
             if (isset($order['params']['payment_name'])) {
                 $order['payment_name'] = htmlspecialchars($order['params']['payment_name']);
             } else {
                 $order['payment_name'] = '<span class="hint">' . _w('not specified') . '</span>';
             }
         }
     }
     if ($single) {
         $orders = $orders[0];
         return $orders;
     }
 }
Example #4
0
<?php

return array(0 => waContactAddressField::__set_state(array('id' => 'address', 'options' => array('multi' => true, 'ext' => array('work' => 'work', 'home' => 'home', 'shipping' => 'shipping', 'billing' => 'billing'), 'storage' => 'data', 'fields' => array('region' => waContactRegionField::__set_state(array('rm' => NULL, 'id' => 'region', 'options' => array('storage' => 'data'), 'name' => array('en_US' => 'State'), '_type' => 'waContactRegionField')), 'city' => waContactStringField::__set_state(array('id' => 'city', 'options' => array('storage' => 'data', 'validators' => waStringValidator::__set_state(array('messages' => array('required' => 'Нужно заполнить', 'invalid' => 'Неверно', 'max_length' => 'Пожалуйста, не более 0 символов', 'min_length' => 'Пожалуйста, не менее 0 символов'), 'options' => array('required' => false, 'storage' => 'data'), 'errors' => array(), '_type' => 'waStringValidator'))), 'name' => array('en_US' => 'City'), '_type' => 'waContactStringField')), 'street' => waContactStringField::__set_state(array('id' => 'street', 'options' => array('storage' => 'data', 'validators' => waStringValidator::__set_state(array('messages' => array('required' => 'Нужно заполнить', 'invalid' => 'Неверно', 'max_length' => 'Пожалуйста, не более 0 символов', 'min_length' => 'Пожалуйста, не менее 0 символов'), 'options' => array('required' => false, 'storage' => 'data'), 'errors' => array(), '_type' => 'waStringValidator'))), 'name' => array('en_US' => 'Street address'), '_type' => 'waContactStringField')), 'zip' => waContactStringField::__set_state(array('id' => 'zip', 'options' => array('storage' => 'data', 'validators' => waStringValidator::__set_state(array('messages' => array('required' => 'Нужно заполнить', 'invalid' => 'Неверно', 'max_length' => 'Пожалуйста, не более 0 символов', 'min_length' => 'Пожалуйста, не менее 0 символов'), 'options' => array('required' => false, 'storage' => 'data'), 'errors' => array(), '_type' => 'waStringValidator'))), 'name' => array('en_US' => 'ZIP'), '_type' => 'waContactStringField')), 'lng' => waContactHiddenField::__set_state(array('id' => 'lng', 'options' => array('storage' => 'data'), 'name' => array('en_US' => 'Longitude'), '_type' => 'waContactHiddenField')), 'lat' => waContactHiddenField::__set_state(array('id' => 'lat', 'options' => array('storage' => 'data'), 'name' => array('en_US' => 'Latitude'), '_type' => 'waContactHiddenField')), 'country' => waContactCountryField::__set_state(array('model' => NULL, 'validate_range' => true, 'id' => 'country', 'options' => array('defaultOption' => 'Select country', 'storage' => 'data', 'formats' => array('value' => waContactCountryFormatter::__set_state(array('_type' => 'waContactCountryFormatter', 'options' => NULL)))), 'name' => array('en_US' => 'Country'), '_type' => 'waContactCountryField'))), 'formats' => array('js' => waContactAddressOneLineFormatter::__set_state(array('_type' => 'waContactAddressOneLineFormatter', 'options' => NULL)), 'forMap' => waContactAddressForMapFormatter::__set_state(array('_type' => 'waContactAddressForMapFormatter', 'options' => NULL))), 'required' => array(), 'allow_self_edit' => false, 'unique' => false), 'name' => array('en_US' => 'Address'), '_type' => 'waContactAddressField')));