if (!UACanLinkEdit($pUserId, $pLinkRaidId, $userId)) { return; } // выходим // Прверяем, что нет ссылки с таким адресом $sql = "select count(*) as resultcount \n\t from UserLinks \n\t where trim(userlink_url) = '" . trim($pLinkUrl) . "'\n\t \t and linktype_id = {$pLinkTypeId}\n\t \t and raid_id = {$pLinkRaidId}\n\t\t \t and user_id = {$pUserId}\n\t\t and userlink_hide = 0\n\t\t "; // echo $sql; if (CSql::singleValue($sql, 'resultcount') > 0) { CMmb::setErrorSm('Уже есть впечатление с таким адресом.'); return; } // Прверяем, что не более трёх ссылок на ММБ $sql = "select count(*) as resultcount \n\t from UserLinks \n\t\t where raid_id = {$pLinkRaidId}\n\t\t and userlink_hide = 0\n\t\t and user_id = {$pUserId}"; //echo $sql; if (CSql::singleValue($sql, 'resultcount') >= 4) { CMmb::setErrorSm('Уже есть 4 впечатления на этот ММБ.'); return; } $Sql = "insert into UserLinks (userlink_name, userlink_url, linktype_id, userlink_hide, raid_id, user_id) \n\t\t values ('{$pLinkName}', '{$pLinkUrl}', {$pLinkTypeId}, 0, {$pLinkRaidId}, {$pUserId})"; // echo $sql; MySqlQuery($Sql); CMmb::setResult('Добавлено новое впечатление', 'ViewUserData', ""); } elseif ($action == 'DelLink') { $pUserId = $_POST['UserId']; if ($pUserId <= 0) { CMmb::setErrorMessage('Пользователь не найден'); return; } if ($SessionId <= 0) { CMmb::setErrorMessage('Сессия не найдена'); return;
function raidError($message) { global $viewmode; $viewmode = "Edit"; CMmb::setErrorSm($message); }
$pTlpDate = $_POST['TlpDate']; $pTlpTime = $_POST['TlpTime']; $pTlpComment = $_POST['TlpComment']; $pErrorId = $_POST['ErrorId']; $TlpYDTs = CSql::timeString($pTlpYear, $pTlpDate, $pTlpTime, false); // Если день и время пустые, то и год пустой считаем if ((int) $pTlpDate == 0 and (int) $pTlpTime == 0) { $TlpYDTs = "'0000-00-00 00:00:00'"; } if ($pTeamId <= 0 or $pLevelPointId <= 0) { teamEditError('Не определён ключ команды или ключ точки для результата.'); return; } $sql = " select count(*) as countresult\n\t from TeamLevelPoints\n\t where team_id = {$pTeamId}\n\t\t and levelpoint_id = {$pLevelPointId}\n\t\t\tand teamlevelpoint_id <> {$pTeamLevelPointId}"; if (CSql::singleValue($sql, 'countresult') > 0) { CMmb::setErrorSm('Результаты по точке уже есть.', 'ReturnAfterErrorTlp'); return; } $sql = "update TeamLevelPoints set levelpoint_id = {$pLevelPointId}\n\t ,team_id = {$pTeamId}\n\t ,error_id = {$pErrorId}\n\t ,teamlevelpoint_comment = '{$pTlpComment}'\n\t ,teamlevelpoint_datetime = {$TlpYDTs}\n\t where teamlevelpoint_id = {$pTeamLevelPointId}"; //echo $sql; MySqlQuery($sql); RecalcTeamResultFromTeamLevelPoints(0, $pTeamId); // RecalcTeamResultFromTeamLevelPoints(25, 0); /* $statustext = CheckLevelPoints($DistanceId); if (!empty($error)) { $alert = 1; } */ } elseif ($action == 'HideTlp') {
// проверяем if (!CRights::canDeliveryInvitation($UserId, $RaidId, 2)) { CMmb::setError('Невозможно провести лотерею.', $view, ''); return; } if ($pInvitationsCount > CSql::availableInvitationsCount($RaidId)) { CMmb::setError('Заявок указано больше, чем доступно.', $view, ''); return; } // можно добавить ещё проверку на то, что выдача по рангу не проводилась или, что лотерея не проводилась $sql = "insert into InvitationDeliveries (raid_id, invitationdelivery_type, invitationdelivery_dt, user_id, invitationdelivery_amount)\n\t\t\t\t\tVALUES ({$RaidId}, 2, NOW(), {$UserId}, {$pInvitationsCount})\n\t\t"; //echo $sql; $newInvDeliveryId = MySqlQuery($sql); //echo "newInvDeliveryId= $newInvDeliveryId "; if ($newInvDeliveryId <= 0) { CMmb::setErrorSm('Ошибка записи раздачи приглашения.'); return; } // Здесь нужна фиксация всех пользователей, которые участвуют в этом розыгрыше // не допускаем к лотерее новых пользователей // Если нужно не пускать тех, кто не вышел на старт или дисквалифицирован, то нужно дополнительно смотреть таблицу Users $sql = "update TeamUsers tu\n\t\t\tinner join Teams t\n\t\t\ton tu.team_id = t.team_id\n\t\t\tinner join Distances d\n\t\t\ton t.distance_id = d.distance_id\n\t\tset tu.invitationdelivery_id = {$newInvDeliveryId}\n\t\twhere t.team_hide = 0\n\t\t\tand t.team_outofrange = 1\n\t\t\tand COALESCE(tu.teamuser_new, 0) = 0\n\t\t\tand tu.teamuser_hide = 0\n\t\t\tand d.raid_id = {$RaidId}\n\t\t"; // echo $sql; MySqlQuery($sql); // на всякий случай ещё раз проверяем if (!CRights::canDeliveryInvitation($UserId, $RaidId, 1) or $pInvitationsCount > CSql::availableInvitationsCount($RaidId)) { CMmb::setErrorMessage('Не хватает прав или нет доступных приглашений'); return; } // А вот дальше собственно вставка приглашений на основании лотереи // и их привязка к команде