Пример #1
0
 /**
  * notifyBuyers
  *
  * @param array $order_ids
  * @param integer $status
  * @return boolean
  */
 public function notifyBuyers($order_ids, $status)
 {
     $output = true;
     if (!is_array($order_ids)) {
         $order_ids = array($order_ids);
     }
     //Параметры сниппета Shopkeeper3
     $snippet_properties = array();
     $response = $this->modx->runProcessor('getsnippetproperties', array(), array('processors_path' => $this->modx->getOption('core_path') . 'components/shopkeeper3/processors/mgr/'));
     if (!$response->isError()) {
         $snippet_properties = $response->getObject();
     }
     require_once $this->modx->getOption('core_path') . "components/shopkeeper3/model/shopkeeper.class.php";
     $shopCart = new Shopkeeper($this->modx, $snippet_properties);
     $config = $shopCart->getConfig(array('statuses'));
     foreach ($order_ids as $order_id) {
         //Данные заказа
         $response = $this->modx->runProcessor('getorder', array('order_id' => $order_id), array('processors_path' => $this->modx->getOption('core_path') . 'components/shopkeeper3/processors/mgr/'));
         if ($response->isError()) {
             $output = false;
             break;
         } else {
             $order_data = $response->getObject();
             if (empty($order_data['email'])) {
                 continue;
             }
             //Параметры статуса
             $status_data = array();
             foreach ($config['statuses'] as $st) {
                 if ($st['id'] == $status) {
                     $status_data = $st;
                     break;
                 }
             }
             if (empty($status_data) || empty($status_data['tpl'])) {
                 continue;
             }
             $mainChunk = $shopCart->getChunk($status_data['tpl']);
             //Данные товаров заказа
             $purchasesArray = $order_data['purchases'];
             foreach ($purchasesArray as &$purchase) {
                 if (!empty($purchase['options'])) {
                     $p_options = $shopCart->getPurchasesOptionsData($purchase['options']);
                     $purchase = array_merge($purchase, $p_options);
                     unset($purchase['options']);
                 }
             }
             //Формируем письмо
             $orderOutputData = $shopCart->getOrderData($order_id);
             $chunkArr = array('orderID' => $order_data['id'], 'orderDate' => $order_data['date'], 'statusName' => $status_data['label'], 'orderCurrency' => $shopCart->config['currency'], 'orderOutputData' => $orderOutputData);
             unset($order_data['contacts'], $order_data['purchases']);
             $chunkArr = array_merge($order_data, $chunkArr);
             $mail_body = $shopCart->parseTpl($mainChunk, $chunkArr, $status_data['tpl']);
             $subject = $this->modx->lexicon('shk3.order_change_status');
             $this->SHKsendMail($subject, $mail_body, $order_data['email']);
         }
     }
     return $output;
 }
Пример #2
0
 function shk_currency_calc($properties, $base_price, $currency_id, $rate_ratio = 0)
 {
     $inverse = isset($properties['inverse']) ? $properties['inverse'] : false;
     //обратный перевод цены
     if (!$rate_ratio) {
         if (isset($_SESSION['shk_curr_rate']) && is_numeric($_SESSION['shk_curr_rate']) && !$inverse) {
             $rate_ratio = $_SESSION['shk_curr_rate'];
         } else {
             if (!isset($properties['currency_rate'])) {
                 require_once MODX_CORE_PATH . "components/shopkeeper3/model/shopkeeper.class.php";
                 $config = Shopkeeper::getConfig(array('currency_rate'));
                 $properties['currency_rate'] = $config['currency_rate'];
             }
             $rate_ratio = 1;
             if ($properties['currency_default'] != $currency_id) {
                 $rate_default = 1;
                 $rate = 1;
                 //Определяем курс по умолчанию и новый курс
                 foreach ($properties['currency_rate'] as $rt) {
                     if ($rt['id'] == $properties['currency_default']) {
                         $rate_default = Shopkeeper::cleanNumber($rt['value'], 'float');
                     } else {
                         if ($rt['id'] == $currency_id) {
                             $rate = Shopkeeper::cleanNumber($rt['value'], 'float');
                         }
                     }
                 }
                 if (!$inverse) {
                     $rate_ratio = $rate_default / $rate;
                     $_SESSION['shk_curr_rate'] = $rate_ratio;
                 } else {
                     $rate_ratio = $rate / $rate_default;
                 }
             }
         }
     }
     //Считаем цену по курсу
     if ($rate_ratio) {
         $price = $base_price * $rate_ratio;
         $price = round($price, ceil($price) == $price ? 0 : 2);
         return $price;
     } else {
         return $base_price;
     }
 }
Пример #3
0
 * Сниппет выводит данные из конфигурации Shopkeeper
 *
 */
$output = array();
$get = explode(',', $modx->getOption('get', $scriptProperties, ''));
$post_name = explode(',', $modx->getOption('post_name', $scriptProperties, $get));
$get = array_map('trim', $get);
$post_name = array_map('trim', $post_name);
$tpl = $modx->getOption('tpl', $scriptProperties, '');
$toPlaceholders = $modx->getOption('toPlaceholders', $scriptProperties, false);
$pl_prefix = $modx->getOption('pl_prefix', $scriptProperties, 'shkopt_');
if (empty($get)) {
    return '';
}
if (class_exists('Shopkeeper')) {
    $config = Shopkeeper::getConfig($get);
    //echo '<pre>' . print_r( $config, true ) . '</pre>';
    if (!empty($config)) {
        foreach ($get as $index => $opt_name) {
            if (!empty($config[$opt_name])) {
                $output[$opt_name] = '';
                foreach ($config[$opt_name] as $key => $conf) {
                    if (empty($conf['value'])) {
                        $conf['value'] = $conf['label'];
                    }
                    $conf['selected'] = isset($post_name[$index]) && isset($_POST[$post_name[$index]]) && $_POST[$post_name[$index]] == $conf['value'] ? 'selected="selected"' : '';
                    $output[$opt_name] .= $modx->getChunk($tpl, $conf) . PHP_EOL . "\t";
                }
            }
        }
    }