/** * Блокировка/разблокировка топика администратором сообщества. * * @param int $commune_id ID сообщества * @param int $topic_id ID топика * @param int $topic_id ID сообщения * @param string $action действие ('block' или 'unblock') * * @return bool true - успех, false - провал */ function BlockedTopic($commune_id = 0, $topic_id = 0, $msg_id = 0, $action = 'unblock') { global $session; session_start(); $objResponse = new xajaxResponse(); $commune_id = intval($commune_id); $topic_id = intval($topic_id); $msg_id = intval($msg_id); $uid = get_uid(false); if ($uid) { $status = commune::GetUserCommuneRel($commune_id, $uid); } if ($status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1 || hasPermissions('communes')) { commune::BlockedTopic($topic_id, $msg_id, $action); if ($action == 'block') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $user->GetUserByUID($uid); $html = "<div class='br-moderation-options'>\n <a href='/about/feedback/' class='lnk-feedback' style='color: #fff;'>Служба поддержки</a>\n <div class='br-mo-status'><strong>Сообщение заблокировано!</strong></div>\n <p class='br-mo-info'>" . ($user->login ? "Заблокировал: <a href='/users/{$user->login}' style='color: #FF6B3D'>{$user->uname} {$user->usurname} [{$user->login}]</a><br />" : '') . 'Дата блокировки: ' . dateFormat('d.m.Y', $blocked_time) . '.</p> </div>'; $objResponse->assign("theme-reason-{$topic_id}", 'innerHTML', $html); $objResponse->assign("theme-button-{$topic_id}", 'innerHTML', '<a href="javascript:void(0)" onclick="if(warning()) xajax_BlockedTopic(' . $commune_id . ',' . $topic_id . ',' . $msg_id . ',\'unblock\')" class="lnk-red">Разблокировать</a>'); } else { $objResponse->assign("theme-reason-{$topic_id}", 'innerHTML', ' '); $objResponse->assign("theme-button-{$topic_id}", 'innerHTML', '<a href="javascript:void(0)" onclick="if(warning()) xajax_BlockedTopic(' . $commune_id . ',' . $topic_id . ',' . $msg_id . ',\'block\')" class="lnk-red">Заблокировать</a>'); } } return $objResponse; }
/** * Голосование * * @param integer $commune_id ИД сообщества * @param integer $user_id Ид пользователя * @param integer $rating Голос * @return Возвращает: -1, если голос ПРОТИВ был принят; 1, если голос ЗА был принят; 0, если голос не принят или ошибка. Принят -- то есть, пошел в расчет, рейтинг изменился. */ function TopicVote($topic_id, $user_id, $rating) { global $DB; $vB = (int) self::GetUserTopicVote($topic_id, $user_id); if ($vB == 0) { $rating = $rating > 0 ? 1 : -1; } elseif ($vB < 0 && $rating > 0) { $rating = 0; } elseif ($vB > 0 && $rating < 0) { $rating = 0; } elseif ($vB == $rating) { return 0; } elseif ($vB < 0 && $rating < 0) { return 0; } elseif ($vB > 0 && $rating > 0) { return 0; } $sql = "UPDATE commune_users_messages SET rating = ?i\n WHERE message_id = ?i\n AND user_id = ?i;"; $res = $DB->query($sql, $rating, $topic_id, $user_id); if (!pg_affected_rows($res)) { $insert_table = self::getTableName('commune_users_messages', self::getCommuneIDByMessageID($topic_id)); $sql = "INSERT INTO {$insert_table} (message_id, user_id, rating)\n VALUES (?i, ?i, ?i)"; $res = $DB->query($sql, $topic_id, $user_id, $rating); } $rate = self::GetTopicRating($topic_id); $actionRate = commune_carma::actionByRate($rate, commune_carma::getScale('post')); if ($actionRate == 'banned') { $themes = current(commune::getCommunePostByIds(array($topic_id))); if (!commune_carma::isImmunity($themes['user_id'], array(), $topic_id) && $themes['id'] > 0) { commune::BlockedTopic($themes['theme_id'], $topic_id, 'block'); } } // $vB = (int)self::GetUserTopicVote($topic_id, $user_id); $vA = (int) self::GetUserTopicVote($topic_id, $user_id); return ($vA > $vB) - ($vA < $vB); }