Exemple #1
0
function SendMailForAll($raidId, $msgSubject, $msgText, $sendingType)
{
    global $DebugMode;
    // $debagCond;
    $SessionId = mmb_validate($_COOKIE, CMmb::CookieName, '');
    $UserId = (int) CSql::userId($SessionId);
    $Admin = (int) CSql::userAdmin($UserId);
    // тут нужны проверки
    if ($raidId <= 0) {
        CMmb::setShortResult('Марш-бросок не найден', '');
        return -1;
    }
    if (empty($msgSubject) or trim($msgSubject) == 'Тема рассылки') {
        CMmb::setShortResult('Укажите тему сообщения', '');
        return -1;
    }
    if (empty($msgText) or trim($msgText) == 'Текст сообщения') {
        CMmb::setShortResult('Укажите текст сообщения', '');
        return -1;
    }
    if (empty($sendingType) or $sendingType == 0) {
        CMmb::setShortResult('Укажите тип рассылки', '');
        return -1;
    }
    //	echo $raidId, $msgSubject, $msgText, $sendingType, $Admin;
    // рассылать всем может только администратор
    if (!$Admin) {
        return -1;
    }
    if (isset($DebugMode) and $DebugMode == 1) {
        $debugCond = " and u.user_admin = 1 ";
    } else {
        $debugCond = "";
    }
    if ($sendingType == 1) {
        // информационное сообщение
        $sql = "  select tu.user_id, u.user_name, u.user_email \n             \t\tfrom TeamUsers tu\n             \t\t\tinner join Teams t\n             \t\t\ton tu.team_id = t.team_id\n             \t\t\tinner join Users u\n             \t\t\ton tu.user_id = u.user_id\n             \t\t\tinner join Distances d\n             \t\t\ton t.distance_id = d.distance_id\n             \t\twhere d.raid_id = {$raidId}\n             \t\t\tand t.team_hide = 0\n             \t\t\tand tu.teamuser_hide = 0\n             \t\t\t{$debugCond}\n             \t\t\tand u.user_allowsendorgmessages = 1\n             \t\torder by tu.user_id ";
    } elseif ($sendingType == 2) {
        // экстренная рассылка
        $sql = "  select tu.user_id, u.user_name, u.user_email \n             \t\tfrom TeamUsers tu\n             \t\t\tinner join Teams t\n             \t\t\ton tu.team_id = t.team_id\n             \t\t\tinner join Users u\n             \t\t\ton tu.user_id = u.user_id\n             \t\t\tinner join Distances d\n             \t\t\ton t.distance_id = d.distance_id\n             \t\twhere d.raid_id = {$raidId}\n             \t\t\tand t.team_hide = 0\n             \t\t\tand tu.teamuser_hide = 0\n             \t\t\t{$debugCond}\n             \t\torder by tu.user_id ";
    } elseif ($sendingType == 3) {
        // информаия об открытии регистрации или общая рассылка по всем пользователям вне ММБ
        $sql = "  select u.user_id, u.user_name, u.user_email \n             \t\tfrom  Users u\n             \t\twhere u.user_hide = 0\n            \t\t      {$debugCond}\n             \t\t      and u.user_allowsendorgmessages = 1\n             \t\torder by u.user_id ";
    } elseif ($sendingType == 4) {
        // рассылка тем, у кого есть приглашения, но чья команда не переведена в зачет
        $sql = "  select tu.user_id, u.user_name, u.user_email \n             \t\tfrom TeamUsers tu\n             \t\t\tinner join Teams t\n             \t\t\ton tu.team_id = t.team_id\n             \t\t\tinner join Users u\n             \t\t\ton tu.user_id = u.user_id\n             \t\t\tinner join Distances d\n             \t\t\ton t.distance_id = d.distance_id\n\t\t\t\tinner join Invitations inv\n\t\t\t\ton inv.user_id = inv.user_id\n\t\t\t\tinner join InvitationDeliveries invd\n\t\t\t\ton inv.invitationdelivery_id = invd.invitationdelivery_id\n\t\t\t\t   and invd.raid_id = d.raid_id\n\t\t\t\tleft outer join  Teams t2\n\t\t\t\ton inv.invitation_id = t2.invitation_id\n\t\t\twhere   d.raid_id = {$raidId}\n             \t\t\tand t.team_hide = 0\n             \t\t\tand tu.teamuser_hide = 0\n             \t\t\tand t.team_outofrange = 1\n\t\t\t\tand t.invitation_id is null\t\n\t\t\t\tand t2.team_id is null\n             \t\t\t{$debugCond}\n             \t\torder by tu.user_id ";
        // по идее условие на t.invitation_id is null лишнее
    } elseif ($sendingType == 5) {
        // рассылка тем, чья команда ожидает приглашения (перед удалением)
        $sql = "  select tu.user_id, u.user_name, u.user_email \n             \t\tfrom TeamUsers tu\n             \t\t\tinner join Teams t\n             \t\t\ton tu.team_id = t.team_id\n             \t\t\tinner join Users u\n             \t\t\ton tu.user_id = u.user_id\n             \t\t\tinner join Distances d\n             \t\t\ton t.distance_id = d.distance_id\n             \t\twhere d.raid_id = {$raidId}\n             \t\t\tand t.team_hide = 0\n             \t\t\tand tu.teamuser_hide = 0\n             \t\t\tand t.team_outofrange = 1\n\t\t\t\tand t.invitation_id is null  \n             \t\t\t{$debugCond}\n             \t\torder by tu.user_id ";
        // по идее условие на t.invitation_id is null лишнее
    } else {
        $sql = "";
    }
    //echo $sql;
    $UserResult = MySqlQuery($sql);
    while ($UserRow = mysql_fetch_assoc($UserResult)) {
        $UserEmail = $UserRow['user_email'];
        $UserName = $UserRow['user_name'];
        $Msg = '';
        $pTextArr = explode('\\r\\n', $msgText);
        foreach ($pTextArr as $NowString) {
            $Msg .= $NowString . "\r\n";
        }
        $Msg .= " \r\n";
        // добавляем комментарий
        if ($sendingType == 1 or $sendingType == 3) {
            $Msg .= "\r\n Если Вы не хотите получать информационные письма, то снимите соответствующую отметку в карточке пользователя на сайте ММБ \r\n \r\n";
        }
        //echo $sendingType." ".
        // Отправляем письмо
        SendMail(trim($UserEmail), $Msg, $UserName, $msgSubject);
    }
    mysql_free_result($UserResult);
    return 1;
}
Exemple #2
0
    }
    if ($SessionId <= 0) {
        CMmb::setErrorMessage('Сессия не найдена');
        return;
    }
    $pUserLinkId = trim($_POST['UserLinkId']);
    if (!isset($pUserLinkId)) {
        $pUserLinkId = 0;
    }
    if ($pUserLinkId <= 0) {
        CMmb::setErrorMessage('Ссылка не найдена');
        return;
    }
    $sql = "select raid_id \n\t           from  UserLinks \n\t           where userlink_id = {$pUserLinkId}\n\t\t   ";
    //     echo $sql;
    $raidId = CSql::singleValue($sql, 'raid_id');
    $userId = CSql::userId($SessionId);
    // Права на редактирование
    if (!UACanLinkEdit($pUserId, $raidId, $userId)) {
        return;
    }
    // выходим
    $Sql = "update  UserLinks set userlink_hide = 1 where userlink_id = {$pUserLinkId}";
    //    echo $sql;
    MySqlQuery($Sql);
    CMmb::setResult('Впечатление удалено', "ViewUserData", "");
} else {
    // если никаких действий не требуется
    //  $statustext = "<br/>";
}
//	print('view = '.$view.' action = '.$action);
Exemple #3
0
    }
}
$tmAction = CMmbLogger::addInterval('before action', $tmSt);
if ($action == "") {
    // Действие не указано
    $view = "MainPage";
} elseif ($action == "StartPage") {
    $view = $_REQUEST['view'];
} else {
    //  echo  $RaidId;
    // Обработчик событий, связанных с пользователем
    include "useraction.php";
    // Если у нас новая сессия после логина, логаута или
    // прихода по ссылке - заново определяем права доступа
    if ($SessionId != $OldSessionId) {
        $UserId = (int) CSql::userId($SessionId);
        // обновляем данные сессии (удаляем закрытые, пишем в cookies
        UpdateSession($SessionId);
        // 21/03/2016 хочется потихоньку перетащить всю существенную часть из GetPrivileges  и убрать этот вызов
        GetPrivileges($SessionId, $RaidId, $TeamId, $UserId, $Administrator, $TeamUser, $Moderator, $OldMmb, $RaidStage, $TeamOutOfRange);
    }
    // Обработчик событий, связанных с командой
    include "teamaction.php";
    // Обработчик событий, связанных с результатами команды
    include "teamresultaction.php";
    // Обработчик событий, связанных с администрированием
    include "adminaction.php";
    // Обработчик событий, связанных с марш-броском
    include "raidaction.php";
}
$tmActionEn = CMmbLogger::addInterval('---- action', $tmAction);