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);
function UACanLinkEdit($pUserId, $raidId, $userId) { $Admin = CSql::userAdmin($userId); $RaidModerator = CSql::userModerator($userId, $raidId); return $pUserId == $userId || $Admin || $RaidModerator ? 1 : 0; }
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";
$Label = empty($Row['userlink_name']) ? $Row['userlink_url'] : CMmbUI::toHtml($Row['userlink_name']); print '<div class="team_res">' . $Row['raid_name'] . ' ' . $Row['linktype_name'] . ' <a href = "' . CMmbUI::toHtml($Row['userlink_url']) . '" title = "' . CMmbUI::toHtml($Row['userlink_name']) . '">' . $Label . '</a>' . "\r\n"; print '<input type="button" style = "margin-left: 20px;" onClick = "javascript: if (confirm(\'Вы уверены, что хотите удалить впечатление ? \')) {DelLink(' . $Row['userlink_id'] . ');}" name="DelLinkButton" value="Удалить" tabindex = "' . ++$TabIndex . '">' . "\r\n"; print '</div>' . "\r\n"; } mysql_free_result($Result); $TabIndex = 1; $DisabledText = ''; $NewLinkName = 'Название (можно не заполнять)'; $NewLinkUrl = 'Адрес ссылки'; print '<div align = "left" style = "padding-top: 5px;">' . "\r\n"; // Показываем выпадающий список ММБ print '<select name="LinkRaidId" tabindex="' . ++$TabIndex . '">' . "\n"; $RaidCondition = ''; if (CSql::userModerator($UserId, $RaidId) == 1 and $UserId != $pUserId) { $RaidCondition = "where raid_id = {$RaidId}"; } $sql = "select raid_id, raid_name from Raids {$RaidCondition} order by raid_id desc"; $Result = MySqlQuery($sql); while ($Row = mysql_fetch_assoc($Result)) { $raidselected = $Row['raid_id'] == $RaidId ? ' selected ' : ''; print '<option value="' . $Row['raid_id'] . '" ' . $raidselected . ' >' . $Row['raid_name'] . "</option>\n"; } mysql_free_result($Result); print '</select>' . "\n"; // Показываем выпадающий список типов ссылок print '<select name="LinkTypeId" class="leftmargin" tabindex="' . ++$TabIndex . '">' . "\n"; $sql = "select linktype_id, linktype_name, linktype_textonly from LinkTypes where linktype_hide = 0 order by linktype_order asc "; $Result = MySqlQuery($sql); while ($Row = mysql_fetch_assoc($Result)) {
public static function canAddToDevelopers($userId, $raidId, $puserId) { $Super = CSql::userAdmin($userId) || CSql::userModerator($userId, $raidId); if (!$Super) { return false; } // проверяем, что не участник $sql = "select count(*) as teamuser\n \t\t\tfrom TeamUsers tu \n \t\t\t inner join Teams t\n \t\t\t on t.team_id = tu.team_id\n \t\t\t inner join Distances d\n \t\t\t on t.distance_id = d.distance_id\n\t \t\twhere tu.user_id = {$puserId}\n\t \t\t and t.team_hide = 0\n\t \t\t and d.raid_id = {$raidId}\n\t \t\t and tu.teamuser_hide = 0\n\t \t\t \n\t \t\t"; $teamuser = CSql::singleValue($sql, 'teamuser', false); if ($teamuser) { return false; } // проверяем, что не волонтёр уже $sql = "select count(*) as raiddeveloper\n \t\t\tfrom RaidDevelopers rd \n\t \t\twhere rd.user_id = {$puserId}\n\t \t\t and rd.raiddeveloper_hide = 0\n\t \t\t and rd.raid_id = {$raidId}\n\t \t\t"; $raiddeveloper = CSql::singleValue($sql, 'raiddeveloper', false); if ($raiddeveloper) { return false; } return true; }
/* echo '-1 '; echo $UserId; echo '-2 '; echo $RaidId; 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";
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 внёс изменения, чтобы разрешить регистрацию вне зачета