Esempio n. 1
0
 public static function canDeliveryInvitation($userId, $raidId, $deliveryTypeId)
 {
     $Super = CSql::userAdmin($userId) || CSql::userModerator($userId, $raidId);
     if (!$Super) {
         return false;
     }
     $raidStage = CSql::raidStage($raidId);
     // по идее можно показывать и с 5, но обычно карты загружают позже
     // до открытия регистрации (до задания даты окончания регистрации) нельяз выдавать
     if ($raidStage > 2 or $raidStage < 1) {
         return false;
     }
     if (CSql::availableInvitationsCount($raidId) <= 0) {
         return false;
     }
     // здесь можно делеть ещё проверки на то, что приглашения уже раздавали и что лотерею уже проводили
     if ($deliveryTypeId == 3) {
         return true;
     } elseif ($deliveryTypeId == 1 or $deliveryTypeId == 2) {
         return $raidStage == 1;
     } else {
         return false;
     }
     return false;
 }
Esempio n. 2
0
                          onclick = "javascript: RaidUserRankRecalc();"
                          tabindex = "' . ++$TabIndex . '"></td></tr>' . "\r\n";
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";
Esempio n. 3
0
 // 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);