print "</div>\n"; } mysql_free_result($Result); print "</td></tr>\n"; } // Закончили вывод списка участников // ============ Новый участник // Возможность добавлять участников заканчивается вместе с возможностью создавать команды // Обычный пользователь может добавлять новых участников при редактировании своей команды // Модератор/Администратор могут создавать новые команды с другим участником вместо себя //if (($AllowEdit == 1) && CanCreateTeam($Administrator, $Moderator, $OldMmb, $RaidStage, $TeamOutOfRange) && // (($viewmode <> "Add") || $Moderator || $Administrator)) // 21.03.2016 Определяем, когда можно добавлять нового пользователя // при добавлении команды можно только модераторам или администраторам // при правке - в зависимости от типа команды if ($viewmode != 'Add' and CRights::canEditTeam($UserId, $RaidId, $TeamId) or $viewmode == 'Add' and (CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and CSql::raidStage($RaidId) < 7) { print '<tr><td class="input" style="padding-top: 10px;">' . "\n"; // Предупредим команды в зачете о том, что они могут добавлять участников только до закрытия регистрации if ($TeamUser and !$TeamOutOfRange) { print 'Добавление новых участников в команду разрешено до ' . $RegistrationEnd . ".<br/>\n"; //print('После этой даты они могут участвовать в ММБ только в виде самостоятельной команды вне зачета.<br/>'."\n"); } print '<input type="text" name="NewTeamUserEmail" size="50" value="Email нового участника" tabindex="' . ++$TabIndex . '"' . CMmbUI::placeholder('Email нового участника') . 'title="Укажите e-mail пользователя, которого Вы хотите добавить в команду. Пользователь может запретить добавлять себя в команду в настройках своей учетной записи.">' . "\n"; print "</td></tr>\n"; } // 20/02/2014 Пользовательское соглашение if ($viewmode == "Add" && $AllowEdit == 1) { print '<tr><td class="input" style="padding-top: 10px; font-size: 80%;">' . "\n"; print '<b>Условия участия (выдержка из <a href="' . $RaidRulesLink . '">положения</a>):</b><br/>' . "\n"; // Ищем последнее пользовательское соглашение $ConfirmFile = trim($MyStoreHttpLink) . CSql::raidFileName(null, 8, true);
$linktypeselected = ''; $LinkNameDisabled = empty($Row['linktype_textonly']) ? 'false' : 'true'; print '<option value="' . $Row['linktype_id'] . '" ' . $linktypeselected . ' onclick = "javascript:document.UserLinksForm.NewLinkName.disabled=' . $LinkNameDisabled . ';">' . $Row['linktype_name'] . "</option>\n"; } mysql_free_result($Result); print '</select>' . "\n"; print '<input type="text" name="NewLinkName" size="30" value="' . $NewLinkName . '" tabindex = "' . ++$TabIndex . '" ' . $DisabledText . ' ' . CMmbUI::placeholder($NewLinkName) . ' title = "Название нового впечатления">' . "\r\n"; print "</div>\r\n"; print '<div align = "left" style = "padding-top: 5px;">' . "\r\n"; print '<input type="text" name="NewLinkUrl" size="50" value="' . $NewLinkUrl . '" tabindex = "' . ++$TabIndex . '" ' . $DisabledText . ' ' . CMmbUI::placeholder($NewLinkUrl) . ' title = "Адрес ссылки на впечатление">' . "\r\n"; print '<input type="button" onClick = "javascript: AddLink();" name="AddLinkButton" value="Добавить" tabindex = "' . ++$TabIndex . '">' . "\r\n"; print "</div></form>\r\n"; } // Конец блока ссылок на впечатления // 08.06.2016 Блок приглашений if ($viewmode != 'Add' and CRights::canViewUserInvitations($pUserId, $RaidId, $UserId)) { // Выводим спсиок print '<div style = "margin-top: 20px; margin-bottom: 10px; text-align: left">Приглашения:</div>' . "\r\n"; $sql = "select inv.invitation_id, inv.invitation_begindt as begindt, inv.invitation_enddt as enddt,\n\t\t idt.invitationdeliverytype_name as type_name, t.team_id, t.team_name, t.team_num,\n\t\t r.raid_id, r.raid_name\n \t\t\tfrom Invitations inv\n\t \t\t\tinner join InvitationDeliveries idev\n \t\t\t\ton inv.invitationdelivery_id = idev.invitationdelivery_id\n\t \t\t\tinner join InvitationDeliveryTypes idt\n \t\t\t\ton idev.invitationdelivery_type = idt.invitationdeliverytype_id\n \t\t\t\tinner join Raids r\n \t\t\t\ton idev.raid_id = r.raid_id\n \t\t\t\tleft outer join Teams t\n \t\t\t\ton inv.invitation_id = t.invitation_id\n\t \t\t\t and t.team_hide = 0\n\t\t \twhere inv.user_id = {$pUserId}\n\t\t\torder by r.raid_id desc, inv.invitation_id asc\n \t"; // echo 'sql '.$sql; $Result = MySqlQuery($sql); while ($Row = mysql_fetch_assoc($Result)) { print '<div class="team_res">' . $Row['raid_name'] . '; ' . $Row['type_name'] . '; выдано: ' . $Row['begindt'] . '; '; if (!empty($Row['team_id'])) { print 'использовано для команды: <a href = "?TeamId=' . $Row['team_id'] . '">' . $Row['team_name'] . ' (N' . $Row['team_num'] . ')</a>'; } else { print 'действительно до: ' . $Row['enddt']; } print "\r\n</div>\r\n"; } mysql_free_result($Result);
<?php /** * Created by PhpStorm. * User: Serge Titov * Date: 10.04.2016 * Time: 17:46 */ // Выходим, если файл был запрошен напрямую, а не через include if (!isset($MyPHPScript)) { return; } if (!CRights::canViewLogs($UserId)) { // нет прав -- вываливаемся return; } ?> <form name="LogsForm" action="<?php echo $MyPHPScript; ?> " method="post"> <input type="hidden" value="viewLogs" name="action"/> <div style="margin-bottom: 2ex;"> <?php // фильтруем типы ошибок и печатаем селект $allLevels = array(CMmbLogger::Trace, CMmbLogger::Debug, CMmbLogger::Info, CMmbLogger::Warn, CMmbLogger::Error, CMmbLogger::Critical); $levels = array(); $rawLevels = mmb_validate($_POST, 'levels', array()); if (!is_array($rawLevels)) {
if (CRights::canDeliveryInvitation($UserId, $RaidId, 1)) { print '<tr><td style = "padding-top: 5px; padding-bottom: 5px;"><input type="button" style = "width:185px;" name="RankInvitations" value="Пригласить по рейтингу" onclick = "javascript: RaidRankInvitations();" tabindex = "' . ++$TabIndex . '">' . "\r\n"; print ' приглашений <input type="text" name="RankInvitationsCount" size="4" maxlength="3" value="0" tabindex="' . ++$TabIndex . '"' . ' title=" приглашений"> не больше: ' . CSql::availableInvitationsCount($RaidId) . "\r\n"; // ============ Дата окончания print ' действуют до (гггг-мм-дд): <input type="text" name="InvitationsEndDate" size="10" value="" tabindex="' . ++$TabIndex . ' title="Дата окончания действия приглашений по рейтингу">' . "\r\n"; print '</td></tr>' . "\r\n"; } if (CRights::canDeliveryInvitation($UserId, $RaidId, 2)) { print '<tr><td style = "padding-top: 5px; padding-bottom: 5px;"><input type="button" style = "width:185px;" name="LottoInvitations" value="Пригласить по лотерее" onclick = "javascript: RaidLottoInvitations();" tabindex = "' . ++$TabIndex . '">' . "\r\n"; print ' приглашений <input type="text" name="LottoInvitationsCount" size="4" maxlength="3" value="0" tabindex="' . ++$TabIndex . '"' . ' title="Число приглашений"> не больше: ' . CSql::availableInvitationsCount($RaidId) . '</td></tr>' . "\r\n"; } if (CRights::canDeleteOutOfRangeTeams($UserId, $RaidId)) { print '<tr><td style = "padding-top: 5px; padding-bottom: 5px;"><input type="button" style = "width:185px;" name="OutOfRangeTeamsDelete" value="Удалить вне зачета" onclick = "javascript: RaidDeleteOutOfRangeTeams();" tabindex = "' . ++$TabIndex . '">' . "\r\n"; } print '<tr><td style = "padding-top: 25px; padding-bottom: 5px;"><input type="button" style = "width:185px;" name="Cardsdump" value="Получить карточки" onclick = "javascript: RaidCardsExport();" tabindex = "' . ++$TabIndex . '"></td></tr>' . "\r\n"; print '<tr><td style = "padding-top: 5px; padding-bottom: 5px;"><input type="button" style = "width:185px;" name="JSONdump" value="Список участников" onclick = "javascript: RaidTeamUsersExport();" tabindex = "' . ++$TabIndex . '"></td></tr>' . "\r\n"; print '<tr><td style = "padding-top: 5px; padding-bottom: 5px;"><input type="button" style = "width:185px;" name="RTUdump" value="Получить дамп" onclick = "javascript: JSON();" tabindex = "' . ++$TabIndex . '"></td></tr>' . "\r\n"; print '<tr><td style = "padding-top: 10px; padding-bottom: 10px;">Файл с данными:<br/><input type="file" name="android" /> <input type="button" style = "width:185px;" name = "LoadRaidDataFileButton" value="Загрузить" onclick = "javascript: LoadRaidDataFile(); " tabindex = "' . ++$TabIndex . '" /></td></tr>' . "\r\n";
$view = "ViewRaidTeams"; } elseif ($action == 'InviteTeam') { if ($TeamId <= 0) { CMmb::setErrorMessage('Команда не найдена'); return; } if ($RaidId <= 0) { CMmb::setErrorMessage('Марш-бросок не найден'); return; } if ($SessionId <= 0) { CMmb::setErrorMessage('Сессия не найдена'); return; } // Проверка возможности пригласить команду $inviteId = CRights::canInviteTeam($UserId, $TeamId); if (!$inviteId) { CMmb::setErrorMessage('Приглашение команды невозможно'); return; } else { $sql = "update Teams set team_outofrange = 0, invitation_id = {$inviteId}, invitation_usedt = NOW() where team_id = {$TeamId}"; $rs = MySqlQuery($sql); } $view = "ViewRaidTeams"; } elseif ($action == "CancelChangeTeamData") { $view = "ViewTeamData"; } elseif ($action == "ViewRaidTeams") { $view = "ViewRaidTeams"; } elseif ($action == 'JsonExport') { $RaidId = mmb_validateInt($_REQUEST, 'RaidId', -1); if ($RaidId <= 0) {
$sql = "select COALESCE(t.team_num, 0) as team_num\n\t\t\tfrom Teams t\n\t\t\twhere t.team_hide = 0 and t.team_id = {$teamId}"; $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'];
} $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 ,teamlevelpoint_date = NOW()\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 (!$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);
// смотрим максимальную дату приглашений по рейтингу // если нашли, то ставим её, а не дату окончания ММБ $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 "; $maxinvdt = CSql::singleValue($sql, 'maxinvdt', false); if (!empty($maxinvdt)) { $invEndDt = $maxinvdt; } $sql = "insert into InvitationDeliveries (raid_id, invitationdelivery_type, invitationdelivery_dt, user_id, invitationdelivery_amount)\n VALUES ({$RaidId}, 3, NOW(), {$UserId}, 1)"; //echo $sql; $newInvDeliveryId = MySqlQuery($sql); //echo "newInvDeliveryId= $newInvDeliveryId "; if ($newInvDeliveryId <= 0) { CMmb::setErrorSm('Ошибка записи раздачи приглашения.'); return; } if ($pUserId <= 0 or $UserId <= 0 or !CRights::canDeliveryInvitation($UserId, $RaidId, 1)) { CMmb::setErrorMessage('Не хватает прав или нет доступных приглашений'); return; } $sql = "insert into Invitations (user_id, invitation_begindt, invitation_enddt, invitationdelivery_id)\n VALUES ({$pUserId}, NOW(), '{$invEndDt}', {$newInvDeliveryId})"; //echo $sql; $newInvId = MySqlQuery($sql); if ($newInvId <= 0) { CMmb::setErrorSm('Ошибка записи приглашения.'); return; } CMmb::setResult('Приглашение выдано', "ViewUserData", ""); } else { // если никаких действий не требуется // $statustext = "<br/>"; }