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; }
} 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);
} } $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);