Esempio n. 1
0
 function sortByPrice($a_doc, $b_doc)
 {
     $sortDirPrice = isset($sortDirPrice) ? $sortDirPrice : 'ASC';
     $a_stamp = tsv_CalcPrice($a_doc['price'], 1, '');
     $b_stamp = tsv_CalcPrice($b_doc['price'], 1, '');
     if ($GLOBALS['sortDirPrice'] == 'ASC') {
         return $a_stamp < $b_stamp ? -1 : ($a_stamp > $b_stamp ? 1 : 0);
     }
     if ($GLOBALS['sortDirPrice'] == 'DESC') {
         return $a_stamp < $b_stamp ? 1 : ($a_stamp > $b_stamp ? -1 : 0);
     }
 }
Esempio n. 2
0
 function tsv_Finish(&$fields)
 {
     global $modx, $session, $tsvshop, $shop_lang, $mail;
     include $modx->config['base_path'] . MGR_DIR . "/includes/controls/class.phpmailer.php";
     include TSVSHOP_PATH . "include/config.inc.php";
     if (!$mail) {
         $mail = new PHPMailer();
     }
     $order = $orderfields = array();
     $today = date("d.m.Y ");
     $strMessageBody = "";
     $strMessageBody1 = "";
     //Подключаем чанк письма - переменная tplmail
     $tplmail = getTpl($tsvshop['tplmailadmin']);
     $tplmail1 = getTpl($tsvshop['tplmailklient']);
     //Выделяем из него ту часть, которая отвечает за таблицу товаров
     $tablemail = preg_replace("#.*?(<!--table-->(.*?)<!--/table-->|\$)#is", "\$2", $tplmail);
     $tablemail1 = preg_replace("#.*?(<!--table-->(.*?)<!--/table-->|\$)#is", "\$2", $tplmail1);
     $table = "";
     $table1 = "";
     //Поля по умолчанию
     $fields['dateorder'] = time();
     $status = explode("||", $tsvshop['StatusOrder']);
     //$fields['status'] = $status[0];   //тут выводим статус по умолчанию
     $tmpstatus = explode("==", $status[0]);
     //тут выводим статус по умолчанию
     $fields['status'] = $tmpstatus[0];
     $payinfo = explode("_", $fields['payments']);
     $fields['payments'] = $payinfo[1];
     $evt = $modx->invokeEvent("TSVshopOnUserFormFieldsRender", array("fields" => $fields));
     if (is_array($evt) && !empty($evt[0])) {
         $fields = $evt[0];
     }
     if (sizeof($tsvshop['customfields']) > 0) {
         //v5.3
         //добавление в БД недостающих полей
         tsv_AddFieldstoDB($tsvshop['dborders'], $tsvshop['customfields']);
         foreach ($tsvshop['customfields'] as $cfield) {
             //проверяем кастомные поля на существование
             $cfield = _filter(trim($cfield));
             if (!empty($_SESSION[$session]['result'][$cfield])) {
                 $order[$cfield] = _filter($_SESSION[$session]['result'][$cfield]);
             }
             if (!empty($fields[$cfield])) {
                 if (empty($order[$cfield])) {
                     $order[$cfield] = _filter($fields[$cfield]);
                 }
                 if (empty($_SESSION[$session]['result'][$cfield])) {
                     $_SESSION[$session]['result'][$cfield] = _filter($fields[$cfield]);
                 }
             }
         }
     }
     //формируем поля для данных заказа
     $sf = explode(",", $tsvshop['sysfields']);
     //v5.3
     //добавление в БД недостающих полей
     tsv_AddFieldstoDB($tsvshop['dborders'], $tsvshop['sysfields']);
     foreach ($sf as $sfield) {
         $sfield = _filter(trim($sfield));
         if (!empty($_SESSION[$session]['result'][$sfield])) {
             if (in_array($sfield, explode(",", $tsvshop['SecFields']))) {
                 $_SESSION[$session]['result'][$sfield] = CryptMessage($_SESSION[$session]['result'][$sfield], $tsvshop['SecPassword']);
             }
             $order[$sfield] = $_SESSION[$session]['result'][$sfield];
         }
         if (!empty($fields[$sfield])) {
             if (in_array($sfield, explode(",", $tsvshop['SecFields']))) {
                 $fields[$sfield] = CryptMessage($fields[$sfield], $tsvshop['SecPassword']);
             }
             if (empty($order[$sfield])) {
                 $order[$sfield] = $fields[$sfield];
             }
             if (empty($_SESSION[$session]['result'][$sfield])) {
                 $_SESSION[$session]['result'][$sfield] = $fields[$sfield];
             }
         }
     }
     //запись данных о заказе в базу данных
     if (sizeof($order) > 0) {
         $modx->db->insert($order, $tsvshop['dborders']);
     }
     //берем последний ИД заказа функцией $numorder=$modx->db->getInsertId();
     $numorder = $modx->db->getInsertId();
     $_SESSION[$session]['result']['numorder'] = $numorder;
     $_SESSION[$session]['result']['payment'] = $payinfo[1];
     $_SESSION[$session]['result']['paytype'] = $payinfo[0];
     $order['numorder'] = _filter($_SESSION[$session]['result']['numorder']);
     //формируем поля для подробностей заказа
     $count = sizeof($_SESSION[$session]['orders']);
     if (!empty($count)) {
         for ($i = $count - 1; $i >= 0; $i--) {
             $tmp = $tablemail;
             // для письма
             $tmp1 = $tablemail1;
             // для письма
             $price = tsv_CalcPrice($_SESSION[$session]['orders'][$i]['price'], $_SESSION[$session]['orders'][$i]['qty'], $_SESSION[$session]['orders'][$i]['opt']);
             $orderfields = array('numorder' => $numorder, 'name' => $_SESSION[$session]['orders'][$i]['name'], 'articul' => $_SESSION[$session]['orders'][$i]['articul'], 'price' => $price, 'icon' => $_SESSION[$session]['orders'][$i]['icon'], 'quantity' => $_SESSION[$session]['orders'][$i]['qty'], 'url' => $_SESSION[$session]['orders'][$i]['url'], 'options' => $_SESSION[$session]['orders'][$i]['opt'], 'typeitem' => $_SESSION[$session]['orders'][$i]['typeitem']);
             //формируем таблицу товаров для письма  v 5.0.1
             foreach ($_SESSION[$session]['orders'][$i] as $key => $val) {
                 switch ($key) {
                     case 'price':
                         $tmp = str_replace("[+shop.mail.price+]", $price, $tmp);
                         $tmp1 = str_replace("[+shop.mail.price+]", $price, $tmp1);
                         break;
                     case 'qty':
                         $tmp = str_replace("[+shop.mail.quantity+]", $val, $tmp);
                         $tmp1 = str_replace("[+shop.mail.quantity+]", $val, $tmp1);
                         break;
                     default:
                         $tmp = str_replace("[+shop.mail." . $key . "+]", $val, $tmp);
                         $tmp1 = str_replace("[+shop.mail." . $key . "+]", $val, $tmp1);
                         $tmp = str_replace("[+shop.mail.num+]", $i, $tmp);
                         $tmp1 = str_replace("[+shop.mail.num+]", $i, $tmp1);
                         break;
                 }
             }
             $tmp = str_replace("[+shop.mail.summa+]", tsv_CalcPrice($_SESSION[$session]['orders'][$i]['price'], $_SESSION[$session]['orders'][$i]['qty'], $_SESSION[$session]['orders'][$i]['opt']) * $_SESSION[$session]['orders'][$i]['qty'], $tmp);
             $tmp1 = str_replace("[+shop.mail.summa+]", tsv_CalcPrice($_SESSION[$session]['orders'][$i]['price'], $_SESSION[$session]['orders'][$i]['qty'], $_SESSION[$session]['orders'][$i]['opt']) * $_SESSION[$session]['orders'][$i]['qty'], $tmp1);
             $table .= $tmp;
             $table1 .= $tmp1;
             //записываем заказы в таблицу
             if (sizeof($orderfields) > 0) {
                 $modx->db->insert($orderfields, $tsvshop['dborders_details']);
             }
         }
     }
     //вставляем в шаблон письма сформированную таблицу заказа
     $strMessageBody = str_replace($tablemail, $table, $tplmail);
     $strMessageBody1 = str_replace($tablemail1, $table1, $tplmail1);
     $cf = explode(",", $tsvshop['sysfields']) + $tsvshop['customfields'];
     foreach ($fields as $key => $value) {
         if (is_array($cf) && !in_array($key, $cf)) {
             $strMessageBody = str_replace("[+shop.mail." . $key . "+]", _filter($value), $strMessageBody);
             $strMessageBody1 = str_replace("[+shop.mail." . $key . "+]", _filter($value), $strMessageBody1);
         }
     }
     $strMessageBody = str_replace("[+shop.mail.monetary+]", $tsvshop['MonetarySymbol'], $strMessageBody);
     $strMessageBody1 = str_replace("[+shop.mail.monetary+]", $tsvshop['MonetarySymbol'], $strMessageBody1);
     //if (sizeof($order)>0) {
     if (sizeof($_SESSION[$session]['result']) > 0) {
         foreach ($_SESSION[$session]['result'] as $key => $val) {
             if ($key == "dateorder") {
                 $val = date("d.m.Y H:i:s", $val);
             }
             if (in_array($key, explode(",", $tsvshop['SecFields']))) {
                 $val = DeCryptMessage($val, $tsvshop['SecPassword']);
             }
             $strMessageBody = str_replace("[+shop.mail." . $key . "+]", $val, $strMessageBody);
             $strMessageBody1 = str_replace("[+shop.mail." . $key . "+]", $val, $strMessageBody1);
         }
     }
     //и результат помещаем в переменную $fields['orderData']
     $fields['orderData'] = $table;
     //отсылаем письма админу
     //$modx->webAlert(print_r($order));
     $strMessageBody = preg_replace('/(\\[\\+.*?\\+\\])/', '', $strMessageBody);
     $strMessageBody1 = preg_replace('/(\\[\\+.*?\\+\\])/', '', $strMessageBody1);
     //обрабатываем текст писем на сниппеты и чанки
     $modx->minParserPasses = 2;
     $strMessageBody = $modx->evalSnippets($strMessageBody);
     $strMessageBody1 = $modx->evalSnippets($strMessageBody1);
     if (empty($tsvshop['SmtpFromEmail'])) {
         $tsvshop['SmtpFromEmail'] = $tsvshop['youremail'];
     }
     tsv_sendMail($tsvshop['SmtpFromEmail'], $tsvshop['SubjectMailAdmin'], $strMessageBody, 'true');
     //и клиенту
     if (in_array('email', explode(",", $tsvshop['SecFields']))) {
         $fields['email'] = DeCryptMessage($fields['email'], $tsvshop['SecPassword']);
     }
     tsv_sendMail($fields['email'], $tsvshop['SubjectMailUser'], $strMessageBody1, 'true');
     $_SESSION['tsvshopfin']['orders'] = $_SESSION[$session]['orders'];
     $_SESSION['tsvshopfin']['result'] = $_SESSION[$session]['result'];
     //if (sizeof($orderfields)>0) {$evt = $modx->invokeEvent("TSVshopOnOrderSuccess",array("fields" =>$_SESSION['tsvshopfin']));}
     $modx->invokeEvent("TSVshopOnOrderSuccess");
     $_SESSION[$session] = array();
     return true;
 }