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); } }
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; }