Exemple #1
0
    /**
     * Добавляет сообщение в обратную связь и отсылает письмо в необходимый отдел.
     * 
     * @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 '';
    }