/** * Обработчик действия: Заказ. */ function Order() { if (empty($_REQUEST['captcha']) || md5(strtolower($_REQUEST['captcha'])) != A_Session::get('captcha')) { $this->errors['captcha'] = true; return false; } A_Session::unregister('captcha'); /////////////////////////////////////////////////////////////////////// if (isset($_REQUEST['id'])) { $_REQUEST['count'] = 1; $this->AddBasket(false); } /////////////////////////////////////////////////////////////////////// if (empty(A::$OPTIONS['useorder'])) { A::goUrl(getSectionLink(SECTION)); } $basket = A_Session::get("shoplite_basket", array()); $all = array('count' => 0, 'oldsum' => 0, 'sum' => 0, 'discount' => 0); foreach ($basket as $i => $brow) { $basket[$i]['data'] = $brow['data'] = A::$OBSERVER->Modifier('shoplite_prepareValues', $brow['section'], $brow['data']); $basket[$i]['id'] = $i; $basket[$i]['oldsum'] = $brow['oldsum'] = $brow['data']['oldprice'] * $brow['count']; $basket[$i]['sum'] = $brow['sum'] = $brow['data']['price'] * $brow['count']; $basket[$i]['discount'] = $brow['discount'] = !empty($brow['data']['discount']) ? $brow['data']['discount'] * $brow['count'] : 0; foreach ($brow['dynamic'] as $key => $value) { $basket[$i]['data'][$key] = !empty($brow['data'][$key . '_options'][$value]) ? $brow['data'][$key . '_options'][$value] : ""; } $all['count'] += $brow['count']; $all['oldsum'] += $brow['oldsum']; $all['sum'] += $brow['sum']; $all['discount'] += $brow['discount']; } $basket = A::$OBSERVER->Modifier('shoplite_orderBasket', SECTION, $basket); $order = array('date' => time(), 'userdata' => serialize($_REQUEST), 'basket' => serialize($basket), 'count' => $all['count'], 'sum' => $all['sum'], 'pay' => !empty($_REQUEST['pay']) ? (int) $_REQUEST['pay'] : 0); if (A::$AUTH->isLogin()) { $order['iduser'] = A::$AUTH->id; } $order['id'] = A::$DB->Insert(SECTION . "_orders", $order); $order['pay'] = function_exists('pay_getname') ? pay_getname($order['pay']) : "Наличные"; $mail = new A_Mail(A::$OPTIONS['mail_toadmin']); if (!empty($_REQUEST['email'])) { $mail->setFrom($_REQUEST['email'], !empty($_REQUEST['name']) ? $_REQUEST['name'] : ''); } $mail->Assign("order", $order); $mail->Assign('basket', $basket); $mail->Assign('all', $all); $mail->Assign("data", $_REQUEST); $mail->Assign("valute", A::$OPTIONS['valute']); $mail->send(A::$OPTIONS['email']); $content = preg_replace("/\r/", "", $mail->fetch($mail->template)); $content = preg_replace("/^[^\n]*\n/i", "", $content); A::$DB->Update(SECTION . "_orders", array('content' => $content), "id=" . $order['id']); if (!empty($_REQUEST['email']) && !empty(A::$OPTIONS['mail_touser'])) { $mail = new A_Mail(A::$OPTIONS['mail_touser']); $mail->Assign("order", $order); $mail->Assign('basket', $basket); $mail->Assign('all', $all); $mail->Assign("data", $_REQUEST); $mail->Assign("valute", A::$OPTIONS['valute']); $mail->send($_REQUEST['email']); } A_Session::set(SECTION . "_idorder", $order['id']); A_Session::unregister("shoplite_basket"); if ($section = getSectionByModule('robopay')) { A::goUrl(getSectionLink($section)); } elseif ($section = getSectionByModule('pay')) { if (!empty($_REQUEST['pay'])) { A::goUrl(getSectionLink($section)); } } else { A::goUrl(getSectionLink(SECTION) . "?sendorder=ok"); } }
/** * Обработчик действия: Отправка сообщения. */ function sendMessage() { if (empty($_REQUEST['captcha']) || md5(strtolower($_REQUEST['captcha'])) != A_Session::get('captcha')) { $this->errors['captcha'] = true; return false; } A_Session::unregister('captcha'); $mail = new A_Mail(A::$OPTIONS['template'], "html"); if (!empty($_REQUEST['email'])) { $mail->setFrom($_REQUEST['email'], !empty($_REQUEST['name']) ? $_REQUEST['name'] : ''); } $mail->Assign("data", $_REQUEST); $fields = array(); A::$DB->query("SELECT * FROM " . DOMAIN . "_fields WHERE item='" . SECTION . "' ORDER BY sort"); while ($row = A::$DB->fetchRow()) { if ($row['type'] == "select" || $row['type'] == "mselect") { $row['options'] = loadList($row['property']); if ($row['type'] == "mselect") { $row['value'] = array(); $values = isset($_REQUEST[$row['field']]) ? $_REQUEST[$row['field']] : array(); foreach ($values as $value) { $row['value'][] = isset($row['options'][$value]) ? is_array($row['options'][$value]) ? $row['options'][$value]['name'] : $row['options'][$value] : ""; } $row['value'] = implode(", ", $row['value']); } else { $row['value'] = isset($_REQUEST[$row['field']]) ? (int) $_REQUEST[$row['field']] : 0; $row['value'] = isset($row['options'][$row['value']]) ? $row['options'][$row['value']] : ""; if (is_array($row['value'])) { $row['data'] = $row['value']; $row['value'] = !empty($row['data']['name']) ? $row['data']['name'] : ""; } } } elseif ($row['type'] == "file") { if (isset($_FILES[$row['field']]['tmp_name']) && is_file($_FILES[$row['field']]['tmp_name'])) { $mail->addAttachment($_FILES[$row['field']]['tmp_name'], $_FILES[$row['field']]['name'], $_FILES[$row['field']]['type']); } } else { $row['value'] = isset($_REQUEST[$row['field']]) ? strip_tags($_REQUEST[$row['field']]) : ""; } if ($row['type'] == "float") { $row['value'] = round($row['value'], 2); } $row['name'] = $row['name_' . LANG]; $fields[$row['field']] = $row; } A::$DB->free(); $mail->Assign("fields", $fields); if (isset($fields['subject'])) { $mail->setSubject($fields['subject']['value']); } if (isset($_REQUEST['mailto']) && isset($fields['mailto']['options'][$_REQUEST['mailto']]['email'])) { $mail->send($fields['mailto']['options'][$_REQUEST['mailto']]['email']); } elseif (!empty(A::$OPTIONS['email'])) { $mail->send(A::$OPTIONS['email']); } $data = array('date' => time(), 'message' => $mail->getContent(), 'data' => serialize($fields)); if (A::$AUTH->isLogin()) { $data['iduser'] = A::$AUTH->id; } if ($id = A::$DB->Insert(SECTION . "_arch", $data)) { A_Session::set(SECTION . "_id", $id); A::goUrl(getSectionLink(SECTION) . "message.html"); } else { return false; } }