/** * Добавляет сообщение в обратную связь и отсылает письмо в необходимый отдел. * * @param int $uid uid пользователя, если он авторизован * @param string $login имя пользователя, если он не авторизован * @param string $email email пользователя, если он не авторизован * @param int $kind id отдела (1-общие вопросы, 2-ошибки на сайте, 3-финансовый вопрос, 4-лич.менеджер, 5-сбр) * @param string $msg сообщение * @param CFile $files прикрепленный файл * * @return string возможная ошибка */ public function Add($uid, $login, $email, $kind, $msg, $files, $additional = false) { global $DB; mt_srand(); $uc = md5(microtime(1) . mt_rand()); $uc = substr($uc, 0, 6) . substr($uc, 12, 6); $login = substr($login, 0, 64); $uid = intval($uid); $kind = intval($kind); if (intval($uid)) { $user = new users(); $user->GetUserByUID($uid); $login = $user->login; $email = $user->email; } $sql = 'INSERT INTO feedback ( uc, dept_id, user_id, user_login, email, question, request_time ) VALUES ( ?, ?, ?, ?, ?, ?, NOW() ) RETURNING id'; if (strtolower(mb_detect_encoding($login, array('utf-8'))) == 'utf-8') { $login = iconv('UTF-8', 'WINDOWS-1251//IGNORE', $login); } $sId = $DB->val($sql, $uc, $kind, $uid, $login, $email, $msg); if ($DB->error) { return 'Ошибка при отправке сообщения (db)'; } $mail = new smail(); if (count($files)) { foreach ($files as $attach) { $msg .= "\n\n=============================================\n"; $msg .= 'К этому письму прикреплен файл ' . WDCPREFIX . "/upload/about/feedback/{$attach->name}"; $msg .= "\n=============================================\n"; } } if ($kind == 2) { $msg .= "\n\n=============================================\n"; $msg .= 'Дополнительная информация: браузер: ' . (!empty($additional['browser']) ? $additional['browser'] : 'N/A') . ' ОС: ' . (!empty($additional['os']) ? $additional['os'] : 'N/A'); $msg .= "\n=============================================\n"; } $mail->FeedbackPost($login, $email, $kind, $msg, $uc, $sId); // Пишем статистику ображений в feedback $date = date('Y-m-d H:01:00'); $sql = 'SELECT date FROM stat_feedback WHERE date=? AND type=?'; $exist = $DB->val($sql, $date, $kind); if ($exist) { $sql = 'UPDATE stat_feedback SET count=count+1 WHERE date = ? AND type = ?'; } else { $sql = 'INSERT INTO stat_feedback(date,type,count) VALUES( ?, ?, 1 )'; } $DB->query($sql, $date, $kind); return ''; }