Exemplo n.º 1
0
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;
                }
            }
            //---
        }
    }
}
Exemplo n.º 2
0
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
}
Exemplo n.º 3
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;
 }