function vieworder($filename) { global $modx, $shop_lang, $theme, $tsvshop, $tables, $moduleid, $modulea; $user = $modx->userLoggedIn(); $out = ""; $output_sales_notice = ""; $output_sales_error = ""; $temp = ""; $act = $_GET['act']; $id = _filter($_GET['idorder'], 1); $filename = empty($filename) ? TSVSHOP_PATH . 'addons/sales/tpl/orderview.tpl' : $filename; if ($user['usertype'] == "manager") { if (!empty($act) && $act == "vieworder" && $tables['sales'] != "none" && $tsvshop['dborders'] != "" && !empty($id) && is_numeric($id)) { if ($res = $modx->db->select('*', $tsvshop['dborders'], 'numorder = "' . $id . '"', 'numorder', '1')) { $row = $modx->db->getRow($res); $url = "index.php"; $tpl = get_file_contents($filename); $row1 = array('moduleurl' => $url, 'modulea' => $modulea, 'moduleid' => $moduleid, 'theme' => $theme); $tpltr = getStr($tpl, '<!--repeat-->', '<!--/repeat-->'); $row = array_merge($shop_lang, $row1, $row); foreach ($row as $key => $value) { if (in_array($key, explode(",", $tsvshop['SecFields']))) { $value = DeCryptMessage($value, $tsvshop['SecPassword']); } if ($key == "dateorder") { $value = date("d.m.Y H:i:s", $value); } if ($key == "status") { $tpl = str_replace('[+buildstatus+]', '<select name="status" id="status">' . buildstatus($value, explode("||", $tsvshop['StatusOrder'])) . '</select>', $tpl); } $tpl = str_replace('[+' . $key . '+]', $value, $tpl); } if ($res = $modx->db->select('*', $tsvshop['dborders_details'], 'numorder = "' . $id . '"', 'numorder')) { while ($order = $modx->db->getRow($res)) { $row = array_merge($row, $order); $r++; $temp = str_replace('[+moduleid+]', $_GET['id'], $tpltr); foreach ($order as $key => $value) { $temp = str_replace('[+' . $key . '+]', $value, $temp); } $temp = str_replace('[+num+]', $r, $temp); $out .= $temp; } $out = str_replace($tpltr, $out, $tpl); $out = preg_replace('/(\\[\\+.*?\\+\\])/', '', $out); return $out; } } //--- } } }
function tsv_showorder() { global $modx, $tsvshop; $dborders = $modx->getFullTableName('shop_order'); $dborders_details = $modx->getFullTableName('shop_order_detail'); $userid = $modx->getLoginUserID(); $i = explode(":", _filter($_GET['i'], 1)); $n = $i[0]; $c = $i[1]; $out = ""; $r = 0; $temp = ""; $filename = $modx->config['base_path'] . 'assets/snippets/tsvoffice/tpl/orderview.tpl'; if (!empty($n) && !empty($c) && !empty($userid)) { $res = $modx->db->select('*', $dborders, 'numorder = "' . $n . '" AND code="' . $c . '" AND userid="' . $userid . '"', 'numorder', '1'); $row = $modx->db->getRow($res); if ($res && is_array($row)) { //$row = $modx->db->getRow($res); $tpl = get_file_contents($filename); $tpltr = getStr($tpl, '<!--repeat-->', '<!--/repeat-->'); foreach ($row as $key => $value) { if (in_array($key, explode(",", $tsvshop['SecFields']))) { $value = DeCryptMessage($value, $tsvshop['SecPassword']); //echo "key=".$key.", value=".$value; } if ($key == "dateorder") { $value = date("d.m.Y H:i:s", $value); } // игнорируем дисконтную карту, проверим позже if ($key == "discountnum") { $value = '[+discountnum+]'; } // $tpl = str_replace('[+' . $key . '+]', $value, $tpl); } // Проверим валидна ли дисконтная карта и если её нет в базе выведем предупреждение if ($tsvshop['addons_discount_active'] == 'yes') { $discountres = $modx->db->query("SELECT * FROM " . $modx->getFullTableName('shop_discount') . " AS a WHERE a.discountnum = '" . $row['discountnum'] . "' AND a.active = 1 AND (a.use < a.count OR a.count = 0) AND (a.summa >= '" . $sub . "' OR a.summa = 0) LIMIT 1"); $discountrow = $modx->db->getRow($discountres); } if ($discountrow['discountnum']) { $tpl = str_replace('[+discountnum+]', $discountrow['discountnum'], $tpl); } else { $tpl = str_replace('[+discountnum+]', '<span class="error_discount">Карта указана неверно или неактивна</span>', $tpl); } // end if ($res = $modx->db->select('*', $dborders_details, 'numorder = "' . $n . '"', 'numorder')) { while ($row = $modx->db->getRow($res)) { $r++; $temp = $tpltr; foreach ($row as $key => $value) { $temp = str_replace('[+' . $key . '+]', $value, $temp); } $temp = str_replace('[+num+]', $r, $temp); $out .= $temp; } $out = str_replace($tpltr, $out, $tpl); $out = preg_replace('/(\\[\\+.*?\\+\\])/', '', $out); return $out; } } else { return '<div class="error">Извините, но такого заказа не существует.</div>'; } } else { return '<div class="error">Извините, но такого заказа не существует.</div>'; } // если номер заказа, ид пользователя и код доступа подходят, выдаем подробности заказа // backid }
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; }