// echo $sql; MySqlQuery($sql); // на всякий случай ещё раз проверяем if (!CRights::canDeliveryInvitation($UserId, $RaidId, 1) or $pInvitationsCount > CSql::availableInvitationsCount($RaidId)) { CMmb::setErrorMessage('Не хватает прав или нет доступных приглашений'); return; } // А вот дальше собственно вставка приглашений на основании лотереи // и их привязка к команде $sql = " CREATE TEMPORARY TABLE\n\t\t\t\ttmp_lottoteams (\n\t\t\t\t num INT NOT NULL AUTO_INCREMENT PRIMARY KEY, \n team_id INT, \n user_id INT\n\t\t\t\t ) \n\t\t\t\tENGINE=MEMORY, AUTO_INCREMENT = 0"; $rs = MySqlQuery($sql); // отбираем в таблицу команды вне зачета с автонумерованной первой колонкой $sql = " INSERT INTO tmp_lottoteams (team_id, user_id)\n\t\t\t select t.team_id, MIN(tu.user_id) as user_id \n \t\t\tfrom Teams t\n \t\t\t\tinner join TeamUsers tu\n\t\t\t\t on t.team_id = tu.team_id\n\t\t\t\t\tinner join Distances d\n\t\t\t\t\ton t.distance_id = d.distance_id\n \t\t\twhere tu.invitationdelivery_id = {$newInvDeliveryId}\n\t\t\t\tgroup by t.team_id\n\t\t\t"; $rs = MySqlQuery($sql); // на всякий случай ещё раз проверяем if (!CRights::canDeliveryInvitation($UserId, $RaidId, 1) or $pInvitationsCount > CSql::availableInvitationsCount($RaidId)) { CMmb::setErrorMessage('Не хватает прав или нет доступных приглашений'); return; } // Если нужны разыне вероятности, то можно добавить стоьлко раз строчку команды, сколько "веса" она должна получить // находим случайно нужное число команд // вставляем приглешния $sql = " insert into Invitations (user_id, invitation_begindt, invitation_enddt, invitationdelivery_id)\n\t\t select user_id, NOW(), NOW(), {$newInvDeliveryId}\n\t\t from tmp_lottoteams\n \t\t ORDER BY RAND()\n\t\t LIMIT {$pInvitationsCount}\n\t\t \t "; // echo $sql; $rs = MySqlQuery($sql); // активируем команды , которые связаны с одной стороны с временой таблицы а через неё с приглашениями $sql = " update Teams t\n\t\t \t inner join tmp_lottoteams tmp\n\t\t\t on t.team_id = tmp.team_id\n\t\t\t inner join Invitations inv\n\t\t\t on inv.user_id = tmp.user_id\n\t\t set t.team_outofrange = 0, t.invitation_id = inv.invitation_id\n\t\t where inv.invitationdelivery_id = {$newInvDeliveryId}\n\t\t"; // echo $sql $rs = MySqlQuery($sql); // $sql = " DELETE FROM tmp_lottoteams "; // $rs = MySqlQuery($sql);
//{ print '<input type="button" onClick = "javascript: if (confirm(\'Вы уверены, что хотите выслать на адрес ' . trim($UserEmail) . ' новый пароль для ' . trim($UserName) . ' будет создан новый пароль и ? \')) { NewPassword(); }" name="ChangePasswordButton" value="Создать и выслать новый пароль" tabindex="' . ++$TabIndex . '">' . "\r\n"; //} } print '</td></tr>' . "\r\n"; } // Конец вывода кнопок $ModeratorUnionString = ''; // для Администратора добавляем кнопку "Сделать модератором" в правке пользователя if ($Administrator and $viewmode != 'Add') { $ModeratorUnionString .= '<input type="button" onClick = "javascript: if (confirm(\'Вы уверены, что хотите сделать этого пользователя модератором текущего марш-броска? \')) { MakeModerator(); }" name="ModeratorButton" value="' . $ModeratorButtonText . '" tabindex = "' . ++$TabIndex . '">'; } if (CRights::canAddToDevelopers($UserId, $RaidId, $pUserId)) { $ModeratorUnionString .= '<input type="button" onClick = "javascript: if (confirm(\'Вы уверены, что хотите добавить пользователя в волонтёры? \')) { MakeDeveloper(); }" name="DeveloperButton" value="Добавить в волонтёры" tabindex = "' . ++$TabIndex . '">'; } if (CRights::canDeliveryInvitation($UserId, $RaidId, 1)) { $ModeratorUnionString .= '<input type="button" onClick = "javascript: if (confirm(\'Вы уверены, что хотите выдать этому пользователю приглашение? \')) { SendInvitation(); }" name="InvitationButton" value="Выдать приглашение" tabindex = "' . ++$TabIndex . '">'; } if (CanRequestUserUnion($Administrator, $UserId, $pUserId)) { $ModeratorUnionString .= '<input type="button" onClick = "javascript: if (confirm(\'Вы уверены, что хотите оставить запрос на слияние этого пользователя с Вашей учетной записью? \')) { MakeUnionRequest(); }" name="UnionButton" value="' . $UnionButtonText . '" tabindex = "' . ++$TabIndex . '">'; } if (trim($ModeratorUnionString) != '') { print '<tr><td class = "input" style = "padding-top: 10px;">' . $ModeratorUnionString . '</td></tr>' . "\r\n"; } // Конец проверки, что есть кнопка сделать модератором или запросить слияние print '</tr>' . "\r\n"; if ($AllowEdit == 1) { print '<tr><td class = "input" style = "padding-top: 10px;">Ключ пользователя: ' . $pUserId . '</td></tr>' . "\r\n"; } // ============ Кнопка удаления всей команды для тех, кто имеет право if ($Administrator and $viewmode != 'Add') {
// смотрим максимальную дату приглашений по рейтингу // если нашли, то ставим её, а не дату окончания ММБ $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/>"; }