public function callbackAction() { // Убедимся что кеш выключен Zend_Registry::get('target')->enable_cache(0); // Проверим: а правильно ли пришли данные? $gift = new gift(@$_POST["gift_id"]); if (!$gift->get('id') || !isset($_POST["phone"])) { die(json_encode(array('msg' => 'Извините, заказ звонка не удался'))); } $_POST["email"] = $_POST["email"] == 'Email' ? '' : $_POST["email"]; //Преобразовываем номер телефона к единому виду.В номере телефона оставляем только цифры. $_POST["phone"] = preg_replace("/\\D/", "", $_POST["phone"]); // Расчитаем стоимость заказа обратного звонка $_POST['price_call'] = floor($_POST['gift_price'] * Zend_Registry::get('config')->callback->percent / 25) / 4; //Проверяем что бы цена звонка была не меньше заданой в конфиге минимальной стоимости звонка $_POST['price_call'] = $_POST['price_call'] >= Zend_Registry::get('config')->callback->min_price_call ? $_POST['price_call'] : Zend_Registry::get('config')->callback->min_price_call; $_POST['price_call'] = $_POST['price_call'] <= Zend_Registry::get('config')->callback->max_price_call ? $_POST['price_call'] : Zend_Registry::get('config')->callback->max_price_call; $_POST['ip'] = $_SERVER["REMOTE_ADDR"]; $_POST['user_agent'] = $_SERVER["HTTP_USER_AGENT"]; // Первым делом отправляем письмо юзеру - чтобы не волновался, по идее будем еще ему слать СМС $shops = new shop((int) $_POST['shop_id']); if (!empty($_POST["email"])) { $work_time = $shops->get('work_time'); $et = new email_template('callback_user'); $et->assign('USER_NAME', $_POST["name"])->assign('GIFT_NAME', $gift->get('display_name'))->assign('SHOP_NAME', $shops->get('display_name'))->assign('URL_GIFT', "http://{$_SERVER['SERVER_NAME']}/" . $gift->get('local_url') . '/?utm_source=email&utm_medium=user&utm_campaign=callback_user')->assign('WORK_TIME', !empty($work_time) ? 'Время работы магазина: <strong>' . $work_time . '</strong>' : '')->send($_POST["email"], $_POST["name"])->send('*****@*****.**'); } //Записываем заказ звонка в таблицу p_stat_out в любом случае $stat = new stat(); $stat_id = $stat->insert(array('gift_id' => (int) $_POST["gift_id"], 'category_id' => (int) @$_POST["category_id"], 'gift_name' => $gift->get('display_name'), 'cpc' => (double) $_POST['price_call'], 'price' => (int) $_POST['gift_price'], 'partner_id' => (int) $shops->get('partner_id'), 'ip' => $_POST["ip"], 'user_agent' => $_POST["user_agent"], 'from_url' => $gift->get('local_url'), 'to_url' => $_POST["url"], 'click_type' => 2)); $callback = new p_callback(); //Проверяем наличие одинаковых записей за временный интервал $exist_reserves = $callback->select($count, array('filter' => array('gift_id' => (int) $_POST["gift_id"], 'name' => $_POST["name"], 'phone' => $_POST["phone"], 'email' => $_POST["email"], 'interval' => Zend_Registry::get('config')->callback->interval_order))); if (empty($exist_reserves)) { //Записываем заказ звонка в таблицу p_callback $callback->insert(array('name' => $_POST["name"], 'phone' => $_POST["phone"], 'email' => $_POST["email"], 'stat_id' => (int) $stat_id, 'gift_id' => (int) $_POST["gift_id"], 'gift_name' => $gift->get('display_name'), 'gift_price' => (int) $_POST['gift_price'], 'shop_id' => (int) $_POST['shop_id'], 'partner_id' => (int) $shops->get('partner_id'), 'to_url' => $_POST["url"], 'price_call' => (double) $_POST['price_call'], 'ip' => $_POST["ip"], 'user_agent' => $_POST["user_agent"], 'comment' => !empty($_POST['comment']) ? $_POST['comment'] : '')); //Отправляем письмо партнеру $et = new email_template('callback'); $et->assign('GIFT_NAME', $gift->get('display_name'))->assign('BUYER_NAME', $_POST["name"])->assign('PHONE', $_POST["phone"])->assign('EMAIL', $_POST["email"])->assign('SHOP_NAME', $shops->get('display_name'))->assign('URL_GIFT', $_POST["url"])->assign('STAT_URL', "http://{$_SERVER['SERVER_NAME']}/stat/callback/?utm_source=email&utm_medium=partner&utm_campaign=callback")->assign('COMMENT', !empty($_POST['comment']) ? $_POST['comment'] : '')->send(Zend_Registry::get('config')->server->enviroment == 'live' ? $shops->get('callback_email') : Zend_Registry::get('config')->log->error_email)->send('*****@*****.**'); } die(json_encode(array('msg' => 'Заказ звонка принят, спасибо'))); }