public static function canEditTeam($userId, $raidId, $teamId) { $teamMemberOrSuper = $teamId == CSql::userTeamId($userId, $raidId) || CSql::userAdmin($userId) || CSql::userModerator($userId, $raidId); if (!$teamMemberOrSuper) { return false; } $raidStage = CSql::raidStage($raidId); //$teamOutOfRange = CSql::teamOutOfRange($teamId); return $raidStage < 2; }
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 ($TeamId == CSql::userTeamId($UserId, $RaidId) or CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and !CSql::teamOutOfRange($TeamId) and CSql::raidStage($RaidId) < 2 or $viewmode != 'Add' and ($TeamId == CSql::userTeamId($UserId, $RaidId) or CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and CSql::teamOutOfRange($TeamId) and CSql::raidStage($RaidId) < 7 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"; // Ищем последнее пользовательское соглашение $sql = "select rf.raidfile_id, rf.raidfile_name\n\t\tfrom RaidFiles rf\n\t\twhere rf.raidfile_hide = 0 and rf.filetype_id = 8\n\t\torder by rf.raid_id DESC, rf.raidfile_id DESC\n\t\tLIMIT 0,1";
print '</select>' . "\r\n"; /* ===================================== */ // Режим отображения результатов $ResultViewMode = mmb_validate($_REQUEST, 'ResultViewMode', ''); print '</div>' . "\r\n"; print '<div align="left" style="margin-top:10px; margin-bottom:10px; font-size: 100%;">' . "\r\n"; $ReglamentLink = CSql::raidFileLink($RaidId, 1, true); if (!empty($ReglamentLink)) { print '<a style="font-size:80%; margin-right: 15px;" href="' . $ReglamentLink . '" title="Основные правила ММБ" target = "_blank">Положение</a>' . "\r\n"; } if ($UserId and $RaidId and CRights::canCreateTeam($UserId, $RaidId)) { print '<a style="font-size:80%; margin-right: 15px;" href="javascript:NewTeam();" title="Регистрация команды на ММБ">Заявить команду</a>' . "\r\n"; } $teamId = CSql::userTeamId($UserId, $RaidId); if ($teamId) { $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"; // можем / нужно ли показывать карты?
echo '0 '; echo !CSql::userTeamId($UserId, $RaidId); echo '1 '; echo CSql::userAdmin($UserId); echo '2 '; echo CSql::userModerator($UserId, $RaidId); echo '3 '; echo CSql::raidStage($RaidId); echo '4 '; */ if ($UserId and $RaidId and (!CSql::userTeamId($UserId, $RaidId) or CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and CSql::raidStage($RaidId) >= 1 and CSql::raidStage($RaidId) < 7) { print '<tr><td><a href="javascript:NewTeam();" title="Регистрация новой команды на выбранный выше ММБ">Новая команда</a></td></tr>' . "\r\n"; } // !! реализовать показ ссылки на свою команду, если она существует !! if (CSql::userTeamId($UserId, $RaidId)) { print '<tr><td><a href="' . $MyPHPScript . '?TeamId=' . CSql::userTeamId($UserId, $RaidId) . '" title="Просмотр карточки Вашей команды">Моя команда</a></td></tr>' . "\r\n"; } // Команды print '<tr><td><a href="?RaidId=' . $RaidId . '" title="Список зарегистрированных команд для выбранного выше ММБ">Команды</a></td></tr>' . "\r\n"; // Файлы print '<tr><td><a href="?files&RaidId=' . $RaidId . '" title="Ссылки на карты, легенды и т.п. для выбранного выше ММБ">Файлы</a></td></tr>' . "\r\n"; // Впечатления print '<tr><td><a href="?links&RaidId=' . $RaidId . '" title="Список впечатлений для выбранного выше ММБ">Впечатления</a></td></tr>' . "\r\n"; // Ввод/Правка марш-броска if ($Administrator) { print '<tr><td><a href="javascript:NewRaid();" title="Создание марш-броска">Новый марш-бросок</a></td></tr>' . "\r\n"; print '<tr><td><a href="javascript:ViewRaidInfo();" title="Параметры марш-броска">Марш-бросок</a></td></tr>' . "\r\n"; print '<tr><td><a href="javascript:ViewAdminModeratorsPage();" title="Список модераторов">Модераторы</a></td></tr>' . "\r\n"; print '<tr><td><a href="javascript:ViewUserUnionPage();" title="Администрирование заявок на слияние">Слияние пользователей</a></td></tr>' . "\r\n"; } // КП, точки сканирования, задание амнистий, импорт-экспорт, пересчет, объединение команд
setViewError('Пользователь запретил добавлять себя в команду другим пользователям.'); return; } // Проверка на наличие пользователя в другой команде $sql = "select count(*) as result\n\t\t\tfrom TeamUsers tu\n\t\t\t\tinner join Teams t on tu.team_id = t.team_id\n\t\t\t\tinner join Distances d on t.distance_id = d.distance_id\n\t\t\twhere teamuser_hide = 0 and d.raid_id = {$RaidId} and user_id = {$NewUserId}"; if (CSql::singleValue($sql, 'result') > 0) { $NewUserId = 0; setViewError('Пользователь с таким email уже включен в другую команду'); return; } // 19.05.2013 внёс изменения, чтобы разрешить регистрацию вне зачета // //if (!CanCreateTeam($Administrator, $Moderator, $OldMmb, $RaidStage, $TeamOutOfRange)) // Проверка на право добавить нового пользователя пользователя // флаг вне зачета не проверяется для добавления команды, так как он устанавливается позже при записи if (!($action == 'TeamChangeData' and ($TeamId == CSql::userTeamId($UserId, $RaidId) or CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and !CSql::teamOutOfRange($TeamId) and CSql::raidStage($RaidId) < 2 or $action == 'TeamChangeData' and ($TeamId == CSql::userTeamId($UserId, $RaidId) or CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and CSql::teamOutOfRange($TeamId) and CSql::raidStage($RaidId) < 7 or $action == 'AddTeam' and ($NewUserId == $UserId or CSql::userAdmin($UserId) or CSql::userModerator($UserId, $RaidId)) and CSql::raidStage($RaidId) < 7)) { $NewUserId = 0; setViewError('Добавление новых участников закрыто'); return; } } else { // Проверяем, что для новой команды передали email участника if ($action == "AddTeam") { $NewUserId = 0; setViewError('Для новой команды должен быть указан email участника.'); return; } $NewUserId = 0; } // Конец проверки на корректную передачу email // 19.05.2013 внёс изменения, чтобы разрешить регистрацию вне зачета