// Действие на текстовом поле по клику $OnClickText = ' onClick="javascript:this.value = \'\';"'; // Надпись на кнопке $SaveButtonText = 'Добавить интервал амнистии'; $pLevelPointDiscountId = 0; } else { $pLevelPointDiscountId = mmb_validateInt($_POST, 'LevelPointDiscountId'); if ($pLevelPointDiscountId <= 0) { return; } $sql = "select lpd.levelpointdiscount_id, \n\t lpd.levelpointdiscount_value, \n\t lpd.levelpointdiscount_start, \n\t lpd.levelpointdiscount_finish,\n\t\t lpd.distance_id,\n\t\t lpd.levelpoint_id \n\t\tfrom LevelPointDiscounts lpd\n\t\twhere lpd.levelpointdiscount_id = {$pLevelPointDiscountId}"; $Row = CSql::singleRow($sql); // Если вернулись после ошибки переменные не нужно инициализировать if ($viewsubmode == "ReturnAfterError") { ReverseClearArrays(); $DistanceId = mmb_validateInt($_POST, 'DistanceId'); $LevelPointId = $_POST['LevelPointId']; $DiscountValue = $_POST['DiscountValue']; $DiscountStart = $_POST['DiscountStart']; $DiscountFinish = $_POST['DiscountFinish']; } else { $DiscountValue = $Row['levelpointdiscount_value']; $DiscountStart = $Row['levelpointdiscount_start']; $DiscountFinish = $Row['levelpointdiscount_finish']; $DistanceId = $Row['distance_id']; $LevelPointId = $Row['levelpoint_id']; } $NextActionName = 'LevelPointDiscountChange'; $OnClickText = ''; $SaveButtonText = 'Сохранить изменения в амнистии'; }
if (!is_array($rawLevels)) { $rawLevels = array($rawLevels); } foreach ($allLevels as $lev) { if (in_array($lev, $rawLevels)) { $levels[] = $lev; } } print "Типы сообщений: <select name=\"levels[]\" size=\"6\" multiple style=\"margin-left: 10px; margin-right: 5px; vertical-align: top;\"\n onchange=\"document.LogsForm.submit();\">"; foreach ($allLevels as $lev) { $sel = in_array($lev, $levels) ? ' selected="selected"' : ''; print "<option value=\"{$lev}\"{$sel}>{$lev}</option>\n"; } print "</select>\n\n"; // фильтруем кол-во ошибок и печатаем селект $limit = mmb_validateInt($_REQUEST, 'num_rec', 100); print 'Количество: <select name="num_rec" style="margin-left: 10px; margin-right: 5px;" onchange="document.LogsForm.submit();">'; foreach (array(100, 500, 1000, 5000) as $lim) { $sel = $lim == $limit ? ' selected="selected"' : ''; print "<option value=\"{$lim}\"{$sel}>{$lim}</option>\n"; } print "</select>\n"; $searchVal = ReverseEscapeString(mmb_validate($_REQUEST, 'search', '')); print "<input type=\"text\" placeholder=\"Искать\" name=\"search\" onchange=\"document.LogsForm.submit()\" style=\"margin-left: 2em;\" value='" . CMmbUI::toHtml($searchVal) . "'/>"; print "</div>\n"; $cond = count($levels) == 0 ? 'true' : "logs_level in ('" . implode("', '", $levels) . "')"; if ($searchVal == '') { $searchCond = 'true'; } else { $search = array("%", "_", "[", "]"); $replace = array("\\%", "\\_", "\\[", "\\]");
// Если вернулись после ошибки переменные не нужно инициализировать if ($viewsubmode == "ReturnAfterError") { ReverseClearArrays(); $ScanPointName = $_POST['ScanPointName']; } else { $ScanPointName = 'Название точки сканирования'; } // Определяем следующее действие $NextActionName = 'AddScanPoint'; // Действие на текстовом поле по клику $OnClickText = ' onClick="javascript:this.value = \'\';"'; // Надпись на кнопке $SaveButtonText = 'Добавить точку сканирования'; $pScanPointId = 0; } else { $pScanPointId = mmb_validateInt($_POST, 'ScanPointId'); if ($pScanPointId <= 0) { return; } // Если вернулись после ошибки переменные не нужно инициализировать if ($viewsubmode == "ReturnAfterError") { ReverseClearArrays(); $ScanPointName = $_POST['ScanPointName']; } else { $sql = "select sp.scanpoint_id,\n\t sp.scanpoint_name,\n\t\t sp.scanpoint_order\n\t\tfrom ScanPoints sp\n\t\twhere sp.scanpoint_id = {$pScanPointId}"; $ScanPointName = CSql::singleValue($sql, 'scanpoint_name'); } $NextActionName = 'ScanPointChange'; $OnClickText = ''; $SaveButtonText = 'Сохранить изменения точки сканирования'; }
$RaidFileComment = $_POST['RaidFileComment']; } else { //$LevelPointId = 0; $FileTypeId = 0; $RaidFileComment = 'Описание файла'; } // Определяем следующее действие $NextActionName = 'AddRaidFile'; // Действие на текстовом поле по клику $OnClickText = ' onClick="javascript:this.value = \'\';"'; // Надпись на кнопке $SaveButtonText = 'Загрузить файл'; $pRaidFileId = 0; $RaidFileName = ''; } else { $pRaidFileId = mmb_validateInt($_POST, 'RaidFileId'); if ($pRaidFileId <= 0) { return; } $sql = "select rf.raidfile_id, ft.filetype_id, \n\t rf.raidfile_comment, rf.raidfile_name\n\t\tfrom RaidFiles rf\n\t\t inner join FileTypes ft\n\t\t on rf.filetype_id = ft.filetype_id\n\t\twhere rf.raidfile_id = {$pRaidFileId}"; $Row = CSql::singleRow($sql); // Если вернулись после ошибки переменные не нужно инициализировать if ($viewsubmode == "ReturnAfterError") { ReverseClearArrays(); $FileTypeId = $_POST['FileTypeId']; // $LevelPointId = $_POST['LevelPointId']; $RaidFileComment = $_POST['RaidFileComment']; $RaidFileName = ''; } else { $FileTypeId = $Row['filetype_id']; //$LevelPointId = $Row['levelpoint_id'];
} // Всегда разрешаем ввод нового пользователя $AllowEdit = 1; // Определяем следующее действие $NextActionName = 'AddUser'; // Действие на текстовом поле по клику $SaveButtonText = 'Зарегистрировать'; // Кнопка "Сделать модератором" не выводится при добавлении пользователя $ModeratorButtonText = ''; // Кнопка "Запросить слияние" не выводится при добавлении пользователя $UnionButtonText = ''; } else { // просмотр существующего //echo $viewsubmode; // $pUserId = mmb_validateInt($_REQUEST, 'UserId', -1); if ($pUserId <= 0) { // должен быть определен пользователь, которого смотрят return; } $sql = "select user_email, CASE WHEN COALESCE(u.user_noshow, 0) = 1 and user_id <> {$UserId} THEN '{$Anonimus}' ELSE u.user_name END as user_name,\n\t\t user_birthyear, user_prohibitadd, user_city, user_phone, user_noshow, \n\t\t user_allowsendchangeinfo, user_allowsendorgmessages from Users u where user_id = {$pUserId}"; $row = CSql::singleRow($sql); // Если вернулись после ошибки переменные не нужно инициализировать if ($viewsubmode == "ReturnAfterError") { ReverseClearArrays(); $UserEmail = $_POST['UserEmail']; $UserName = $_POST['UserName']; $UserBirthYear = (int) $_POST['UserBirthYear']; $UserProhibitAdd = mmb_isOn($_POST, 'UserProhibitAdd'); $UserCity = $_POST['UserCity']; $UserPhone = $_POST['UserPhone'];
$teamNum = (int) CSql::singleValue($sql, 'team_num'); if ($teamNum) { print "<a style=\"font-size:80%; margin-right: 15px;\" href=\"#{$teamNum}\" title=\"Переход к строке Вашей команды\">Моя команда</a>\r\n"; } } $StartLink = CSql::raidFileLink($RaidId, 10, true); if (!empty($StartLink)) { print '<a style="font-size:80%; margin-right: 15px;" href="' . $StartLink . '" title="Информация о месте и порядке старта ММБ" target = "_blank">Старт</a>' . "\r\n"; } print '<a style="font-size:80%; margin-right: 15px;" href="?links&RaidId=' . $RaidId . '" title="Страница впечатлений: отчеты, фотографии, треки...">Впечатления</a>' . "\r\n"; print '<a style="font-size:80%; margin-right: 15px;" href="?files&RaidId=' . $RaidId . '" title="Все материалы ММБ: положение, карты, легенды...">Материалы</a>' . "\r\n"; print '<a style="font-size:80%; margin-right: 15px;" href="javascript: JsonExport();">Json</a> ' . "\r\n"; // можем / нужно ли показывать карты? $mapQuery = "select raidfile_name, raidfile_comment\n\t from RaidFiles\n\t where raid_id = {$RaidId} \n\t \tand filetype_id = 4 \n\t \tand substr(lower(raidfile_name), -4) in ('.png','.gif','.jpg','jpeg')\n\t \tand raidfile_hide = 0\n\t \t\t\torder by raidfile_id asc"; $canShowMaps = CRights::canShowImages($RaidId) && CSql::rowCount($mapQuery) > 0; $showMapImages = mmb_validateInt($_GET, 'showMap', '0'); if ($canShowMaps) { if ($showMapImages == 1) { print '<a style="font-size:80%; margin-right: 15px;" href="?protocol&RaidId=' . $RaidId . '&showMap=0" title="Не отображать карты в протоколе - можно смотреть на странцие материалов">Скрыть карты</a> ' . "\r\n"; } else { print '<a style="font-size:80%; margin-right: 15px;" href="?protocol&RaidId=' . $RaidId . '&showMap=1" title="Отображать карты на этой странице - время загрзуки может заметно вырасти!">Показать карты</a> ' . "\r\n"; } } print '</div>' . "\r\n"; // собственно вывод карт if ($canShowMaps and $showMapImages) { print '<div align="left" style="margin-top:10px; margin-bottom:10px; font-size: 100%;">' . "\r\n"; $Result = MySqlQuery($mapQuery); while ($Row = mysql_fetch_assoc($Result)) { $ImageLink = $Row['raidfile_name']; $ImageComment = $Row['raidfile_comment'];
$sql = " update Teams set team_hide = 0\n\t\t\t where team_id = {$TeamId}"; MySqlQuery($sql); $sql = " update TeamUsers set teamuser_hide = 0\n\t\t\t where team_id = {$TeamId}"; MySqlQuery($sql); $sql = " update TeamUnionLogs set union_status = 2\n\t\t\t where union_status = 1\n\t\t\t and teamunionlog_hide = 0 "; MySqlQuery($sql); RecalcTeamResultFromTeamLevelPoints(0, $TeamId); CMmb::setResult('Команды объединены', "ViewRaidTeams"); } elseif ($action == "CancelUnionTeams") { // Действие вызывается нажатием кнопки "Объединить" // Права if (!$Administrator and !$Moderator) { CMmb::setErrorMessage('Нет прав на отмену объединения'); return; } $pParentTeamId = mmb_validateInt($_POST, 'TeamId'); if ($RaidId <= 0) { setUnionError('Не указан ММБ.'); return; } if ($pParentTeamId <= 0) { setUnionError('Не указана команда.'); return; } // Проверяем, что команда есть в объединении $sql = " select teamunionlog_id\n\t from TeamUnionLogs \n\t\t\t where teamunionlog_hide = 0 \n and union_status = 2\n\t\t\t and team_parentid = {$pParentTeamId}"; if (CSql::rowCount($sql) <= 0) { setUnionError('Команды нет в объединении'); return; } // Приступаем, собственно к отмене:
if ($CanViewResults) print('<option value="Place" '.($OrderType == 'Place' ? 'selected' :'').">возрастанию места</option>\r\n"); if ($Administrator || $Moderator) print('<option value="Errors" '.($OrderType == 'Errors' ? 'selected' :'').">наличию ошибок</option>\r\n"); print('</select>'."\r\n"); } print("Фильтровать: \r\n"); $distanceId = mmb_validate($_REQUEST, 'DistanceId', ''); $DistanceCondition = empty($distanceId) ? 'true' : "d.distance_id = $distanceId"; $GpsFilter = (mmb_validateInt($_REQUEST, 'GPSFilter', 0)) == 1 ? 1 : 0; $GpsCondition = $GpsFilter ? "t.team_usegps = 0" : "true"; $sql = "select distance_id, distance_name from Distances where distance_hide = 0 and raid_id = $RaidId order by distance_name"; //echo 'sql '.$sql; $Result = MySqlQuery($sql); if (mysql_num_rows($Result) > 1) { print('<select name="DistanceId" style = "margin-left: 10px; margin-right: 5px;" onchange="DistanceIdChange();" tabindex="'.(++$TabIndex).'">'."\r\n"); $selected = (0 == $distanceId) ? ' selected' : ''; print("<option value=\"0\" $selected>дистанцию</option>\r\n");
if (isset($_GET['badges'])) { $action = "ViewAllBadgesPage"; } else { if (isset($_GET['amnesty'])) { $action = "ViewLevelPointDiscountsPage"; } else { if (isset($_GET['files'])) { $action = "ViewRaidFilesPage"; } else { if (isset($_GET['links'])) { $action = "ViewUsersLinksPage"; } else { if (isset($_GET['changepasswordsessionid'])) { $action = "sendpasswordafterrequest"; } else { if (mmb_validateInt($_GET, 'RaidId', '') !== false) { // должно идти предпоследним $action = "ViewRaidTeams"; } else { $action = ""; } } } } } } } } } } $tmAction = CMmbLogger::addInterval('before action', $tmSt);
// RecalcTeamResultFromTeamLevelPoints(25, 0); /* $statustext = CheckLevelPoints($DistanceId); if (!empty($error)) { $alert = 1; } */ } elseif ($action == 'HideTlp') { // if (!$Administrator && !$Moderator) if (!CRights::canEditPointResult($UserId, $RaidId, $TeamId)) { CMmb::setMessage('Нет прав на правку результата для точки'); return; } $pTeamLevelPointId = mmb_validateInt($_POST, 'TeamLevelPointId'); $pTeamId = mmb_validateInt($_POST, 'TeamId'); if ($pTeamId <= 0) { teamEditError('Не определён ключ команды.'); return; } if ($pTeamLevelPointId <= 0) { teamEditError('Не определён ключ результата для точки.'); return; } $sql = "delete from TeamLevelPoints where teamlevelpoint_id = {$pTeamLevelPointId}"; MySqlQuery($sql); RecalcTeamResultFromTeamLevelPoints(0, $pTeamId); /* $statustext = CheckLevelPoints($DistanceId); if (!empty($error)) {
// Проверка возможности редактировать результаты if (!CanEditResults($Administrator, $Moderator, $TeamUser, $OldMmb, $RaidStage, $TeamOutOfRange)) { $statustext = 'Изменение результатов команды запрещено'; return; } // Получаем информацию об этапах, которые могла проходить команда $sql = "select l.level_id, l.level_name, l.level_pointnames, l.level_starttype, l.level_pointpenalties,\n\t\tl.level_begtime, l.level_maxbegtime, l.level_minendtime, l.level_endtime,\n\t\ttl.teamlevel_begtime, tl.teamlevel_endtime,\n\t\ttl.teamlevel_points, tl.teamlevel_progress, tl.teamlevel_penalty,\n\t\ttl.teamlevel_id\n\t\tfrom Teams t\n\t\t\tinner join Distances d on t.distance_id = d.distance_id\n\t\t\tinner join Levels l on d.distance_id = l.distance_id\n\t\t\tleft outer join TeamLevels tl on l.level_id = tl.level_id and t.team_id = tl.team_id and tl.teamlevel_hide = 0\n\t\twhere l.level_hide = 0 and t.team_id = {$TeamId}"; $rs = MySqlQuery($sql); // ================ Цикл обработки данных по этапам $statustext = ""; while ($Row = mysql_fetch_assoc($rs)) { // По этому ключу потом определяем, есть ли уже строчка в TeamLevels или её нужно создать $TeamLevelId = $Row['teamlevel_id']; $levelPfx = 'Level' . $Row['level_id']; // Обрабатываем сход с этапа $TeamLevelProgress = mmb_validateInt($_POST, $levelPfx . '_progress', 0); // Вычисляем время выхода на этап $BegYear = mmb_validate($_POST, $levelPfx . '_begyear', ''); $BegDate = mmb_validate($_POST, $levelPfx . '_begdate', ''); $BegTime = mmb_validate($_POST, $levelPfx . '_begtime', ''); $BegYDTs = CSql::timeString($BegYear, $BegDate, $BegTime); // Конвертируем в даты php для сравнения $BegYDT = strtotime(substr(trim($BegYDTs), 1, -1)); $BegMinYDT = strtotime(substr(trim($Row['level_begtime']), 1, -1)); $BegMaxYDT = strtotime(substr(trim($Row['level_maxbegtime']), 1, -1)); // Обнуляем время старта, если он не в порядке готовности if ($Row['level_starttype'] != 1) { $BegYDTs = "NULL"; } else { if ($BegYDT < $BegMinYDT or $BegYDT > $BegMaxYDT) { if ($TeamLevelProgress > 0) {
} $sql = " select count(*) as countresult\r\n\t\t from LevelPoints\r\n\t\t where levelpoint_hide = 0 and distance_id = {$pDistanceId}\r\n\t\t and pointtype_id in (1,2,3,4)\r\n\t\t and (levelpoint_order <= {$pDiscountFinish}\r\n\t\t\tand levelpoint_order >= {$pDiscountStart})"; if ((int) CSql::singleValue($sql, 'countresult') > 0) { raidError('Интервал содержит запрещённые для амнистии точки.'); return; } $sql = "update LevelPointDiscounts set levelpointdiscount_value = {$pDiscountValue}\r\n\t ,levelpointdiscount_start = {$pDiscountStart}\r\n\t ,levelpointdiscount_finish = {$pDiscountFinish}\r\n\t ,levelpoint_id = {$pLevelPointId}\r\n\t where \tlevelpointdiscount_id = {$pLevelPointDiscountId}"; //echo $sql; MySqlQuery($sql); $viewmode = "Add"; } elseif ($action == 'HideLevelPointDiscount') { if (!$Administrator && !$Moderator) { CMmb::setMessage('Нет прав на правку интервала'); return; } $pLevelPointDiscountId = mmb_validateInt($_POST, 'LevelPointDiscountId'); if ($pLevelPointDiscountId <= 0) { raidError('Не определён ключ интервала.'); return; } $sql = "update LevelPointDiscounts set levelpointdiscount_hide = 1\r\n\t where levelpointdiscount_id = {$pLevelPointDiscountId}"; MySqlQuery($sql); CMmb::setViews('ViewLevelPointDiscounts', 'Add'); } elseif ($action == 'RecalculateLevels') { if (!$Administrator && !$Moderator) { CMmb::setMessage('Нет прав на правку'); return; } CMmb::setViews('ViewLevelPoints', 'Add'); $pDistanceId = (int) $_POST['DistanceId']; if ($pDistanceId <= 0) {
} // можно добавить ещё проверку на то, что выдача по рангу не проводилась или, что лотерея не проводилась $pInvitationsEndDate = trim($pInvitationsEndDate) . ' 23:59:59'; $sql = "insert into Invitations (user_id, invitation_begindt, invitation_enddt, invitationdelivery_id)\n\t\tSELECT \tu.user_id, NOW(), '{$pInvitationsEndDate}', {$newInvDeliveryId}\n\t\tFROM Users u\n\t\tWHERE COALESCE(u.user_noinvitation, 0) = 0\n\t\tORDER BY u.user_r6 DESC\n\t\tLIMIT 0, {$pInvitationsCount}\n\t\t"; //echo $sql; MySqlQuery($sql); CMmb::setShortResult('Приглашения по рейтингу выданы', ''); //CMmb::setResult('', "ViewAdminDataPage", ""); return; } elseif ($action == 'LottoInvitations') { CMmb::setViews('ViewAdminDataPage', ''); if ($RaidId <= 0) { CMmb::setError('Марш-бросок не найден.', $view, ''); return; } $pInvitationsCount = mmb_validateInt($_POST, 'LottoInvitationsCount'); if ($pInvitationsCount <= 0) { CMmb::setError('Не указано число приглашений.', $view, ''); return; } // пересчитываем рейтинг на всякий случай RecalcUsersRank($RaidId); // проверяем if (!CRights::canDeliveryInvitation($UserId, $RaidId, 2)) { CMmb::setError('Невозможно провести лотерею.', $view, ''); return; } if ($pInvitationsCount > CSql::availableInvitationsCount($RaidId)) { CMmb::setError('Заявок указано больше, чем доступно.', $view, ''); return; }
return; } // 19.06.2015 Добавил level_id чтобы проставить ввести точки по старым ММБ, // потом можно и нужно убрать $sql = "select tlp.levelpoint_id, \n\t lp.levelpoint_name as lp_name,\n\t tlp.teamlevelpoint_comment as tlp_comment,\n\t\t tlp.teamlevelpoint_duration, \n\t\t tlp.teamlevelpoint_penalty as tlp_penalty, \n\t\t tlp.teamlevelpoint_result as tlp_result, \n\t\t tlp.teamlevelpoint_datetime, \n\t\t COALESCE(tlp.error_id, 0) as error_id,\n\t\t DATE_FORMAT(tlp.teamlevelpoint_datetime, '%Y') as tlp_syear,\n\t\t DATE_FORMAT(tlp.teamlevelpoint_datetime, '%d%m') as tlp_sdate,\n\t\t DATE_FORMAT(tlp.teamlevelpoint_datetime, '%H%i%s') as tlp_stime,\n\t\t DATE_FORMAT(tlp.teamlevelpoint_duration, '%H%i%s') as tlp_duration\n\t\tfrom TeamLevelPoints tlp\n\t\t inner join LevelPoints lp\n\t\t on lp.levelpoint_id = tlp.levelpoint_id\n\t\twhere tlp.teamlevelpoint_id = {$pTeamLevelPointId}"; $Row = CSql::singleRow($sql); // Если вернулись после ошибки переменные не нужно инициализировать if ($viewsubmode == "ReturnAfterErrorTlp") { ReverseClearArrays(); $LevelPointId = mmb_validateInt($_POST, 'LevelPointId'); $TlpComment = $_POST['TlpComment']; $TlpYear = $_POST['TlpYear']; $TlpDate = $_POST['TlpDate']; $TlpTime = $_POST['TlpTime']; $PointName = ''; $ErrorId = mmb_validateInt($_POST, 'ErrorId'); } else { $LevelPointId = $Row['levelpoint_id']; $TlpComment = $Row['tlp_comment']; $TlpYear = $Row['tlp_syear']; $TlpDate = $Row['tlp_sdate']; $TlpTime = $Row['tlp_stime']; $PointName = $Row['lp_name']; $ErrorId = $Row['error_id']; } $NextActionName = 'ChangeTlp'; $OnClickText = ''; $SaveButtonText = 'Сохранить результат'; } // В форме правки выводится только день и время, год считаем по дате регистарции ММБ и не выводим if (empty($TlpYear) or (int) $TlpYear == 0) {
$Msg .= "Команда N {$Row['team_num']}, Дистанция: {$Row['distance_name']}, ММБ: " . trim($Row['raid_name']) . ".\n"; $Msg .= "Автор изменений: {$ChangeDataUserName}.\n"; $Msg .= "Вы можете увидеть результат на сайте и при необходимости внести свои изменения.\n\n"; $Msg .= "P.S. Изменения может вносить любой из участников команды, а также модератор ММБ."; // Отправляем письмо SendMail($Row['user_email'], $Msg, $Row['user_name']); } mysql_free_result($Result); } // Конец отправки писем // Если передали альтернативную страницу, на которую переходить (пока только одна возможность - на список команд) if (empty($view)) { $view = "ViewTeamData"; } } elseif ($action == 'FindTeam') { $TeamNum = mmb_validateInt($_REQUEST, 'TeamNum', ''); if ($TeamNum === false) { CMmb::setShortResult('Не указан номер команды', ''); return; } $sql = "select team_id from Teams t\n\t\t\tinner join Distances d on t.distance_id = d.distance_id\n\t\twhere d.raid_id = {$RaidId} and t.team_hide = 0 and t.team_num = " . (int) $TeamNum; $TeamId = CSql::singleValue($sql, 'team_id'); // Поменялся TeamId, заново определяем права доступа GetPrivileges($SessionId, $RaidId, $TeamId, $UserId, $Administrator, $TeamUser, $Moderator, $OldMmb, $RaidStage, $TeamOutOfRange); if ($TeamId <= 0) { CMmb::setResult('Команда с номером ' . (int) $TeamNum . ' не найдена', ''); return; } $view = "ViewTeamData"; } elseif ($action == 'TeamInfo' or $action == 'TlpInfo' or $action == 'AddTlp' or $action == 'ChangeTlp' or $action == 'HideTlp') { if ($TeamId <= 0) {
$sql = "select raid_id \n from UserLinks \n where userlink_id = {$pUserLinkId}"; // echo $sql; $raidId = CSql::singleValue($sql, 'raid_id'); $userId = CSql::userId($SessionId); // Права на редактирование if (!UACanLinkEdit($pUserId, $raidId, $userId)) { return; } // выходим $Sql = "update UserLinks set userlink_hide = 1 where userlink_id = {$pUserLinkId}"; // echo $sql; MySqlQuery($Sql); CMmb::setResult('Впечатление удалено', "ViewUserData", ""); } elseif ($action == "SendInvitation") { // Действие вызывается нажатием кнопки "Выдать приглашение" $pUserId = mmb_validateInt($_POST, 'UserId'); if ($pUserId <= 0 or $UserId <= 0 or !CRights::canDeliveryInvitation($UserId, $RaidId, 1)) { CMmb::setErrorMessage('Не хватает прав или нет доступных приглашений'); return; } // вставляем запись о розадче // Нахождим дату окончания регистрации $sql = "select ADDTIME(r.raid_registrationenddate, '23:59:59') as invenddt\n from Raids r\n where r.raid_id = {$RaidId}\n and r.raid_registrationenddate is not null\n "; $invEndDt = CSql::singleValue($sql, 'invenddt', false); if (empty($invEndDt)) { CMmb::setErrorSm('Не определена дата окончания действия приглашения.'); return; } // смотрим максимальную дату приглашений по рейтингу // если нашли, то ставим её, а не дату окончания ММБ $sql = "select MAX(inv.invitation_enddt) as maxinvdt\n from InvitationDeliveries invd\n inner join Invitations inv\n on invd.invitationdelivery_id = inv.invitationdelivery_id\n where invd.raid_id = {$RaidId}\n and inv.invitation_enddt > NOW()\n and invd.invitationdelivery_type = 1 \n ";