Ejemplo n.º 1
0
<?php

require_once 'core.php';
if (!isset($_POST['from']) || !isset($_POST['channel_id']) || (int) $_POST['channel_id'] < 0 || !isset($_POST['message']) || !isset($_POST['signature']) || $_POST['signature'] != hash('sha512', $_POST['from'] . $_POST['channel_id'] . $_POST['message'] . FS_TO_CHAT_KEY)) {
    print 'Wrong input.';
    exit;
}
require_once 'chat.php';
global $memcache;
$chat = new Chat($memcache);
$chat->SetDatabase();
$chat->GetAuthInfo($_POST['from']);
if (isset($chat->user['error']) && $chat->user['error'] !== '') {
    print $chat->user['error'];
    exit;
}
if ($res = $chat->WriteMessage($_POST['message'])) {
    $chat->WriteChannelCache((int) $_POST['channel_id']);
    print $res;
    exit;
} else {
    print 'WriteMessage false';
    exit;
}
Ejemplo n.º 2
0
// для всех действий, кроме авторизации, проверяем установленный токен
if (empty($_REQUEST['token']) || $chat->user['token'] !== $_REQUEST['token']) {
    $chat->user['error'] = CHAT_TOKEN_VERIFICATION_FAILED;
    SendDefaultResponse($chat->user);
}
// выполняем действия для задачи
switch ($task) {
    case 'WriteMessage':
        if (isset($_POST['message']) && $_POST['message'] !== '') {
            $message = $_POST['message'];
        } else {
            $chat->user['error'] = CHAT_USER_MESSAGE_EMPTY;
            SendDefaultResponse($chat->user);
        }
        $chat->SetDatabase();
        $res = $chat->WriteMessage($message);
        if ($res !== false) {
            // для автомодерации, чтобы держать в памяти актуальное значение кол-ва сообщений
            // в чате и лишний раз не обращаться за ним в базу
            $chatMessagesCountMemcacheKey = 'AM_uid_' . $chat->user['uid'] . '_chatMsgCount';
            $currentChatMessagesCount = $memcache->Get($chatMessagesCountMemcacheKey);
            /* увеличивается только в случае, если была попытка проголосовать за бан
             * иначе если добавить сюда извлечение кол-ва и его установку,
             * будет много "холостых" запросов, хотя по факту нужны только для автомодерации
             */
            if ($currentChatMessagesCount > 0) {
                $memcache->Inc($chatMessagesCountMemcacheKey, 1);
            }
        } else {
            $chat->user['error'] = CHAT_USER_MESSAGE_ERROR;
        }