/** * 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; } }
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'])); } }
/** * 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(); }