Skip to content

Instantly share code, notes, and snippets.

@Olivia231
Created December 7, 2020 18:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Olivia231/a18a40e495e54b0914ba1525bfb9923c to your computer and use it in GitHub Desktop.
Save Olivia231/a18a40e495e54b0914ba1525bfb9923c to your computer and use it in GitHub Desktop.
<?php
defined('SYSTEM') or die('Direct access denied.');
$op = clean($_GET['option']);
if(empty($op) || $op == 'all'){
$page_title = 'System wiadomości';
if($_POST['submit'])
{
$title = clean($_POST['title']);
$text = clean($_POST['text'], 1);
if ($title && $text)
{
if ($_POST['method'] == 0) //message on site
{
$sender = (int)$_POST['from'];
if($sender)
{
switch ($_POST['who'])
{
case '0':
$query = mysqliQuery($db, 'SELECT id FROM '.TBL_USERS.' WHERE rank = "0" && status = "1"');
break;
case '1':
$query = mysqliQuery($db, 'SELECT id FROM '.TBL_USERS.' WHERE rank = "1" && status = "1"');
break;
case '2':
$query = mysqliQuery($db, 'SELECT id FROM '.TBL_USERS.' WHERE rank = "2" && status = "1"');
break;
case '3':
$query = mysqliQuery($db, 'SELECT id FROM '.TBL_USERS);
break;
case '4':
$query = mysqliQuery($db, 'SELECT id FROM '.TBL_USERS.' WHERE rank = "0" && status = "0"');
break;
case '5':
$query = mysqliQuery($db, 'SELECT id FROM '.TBL_USERS.' WHERE rank = 1 && status = "0"');
break;
default: //students from dorms
$who = str_replace('d_', '', $_POST['who']);
$query = mysqliQuery($db, 'SELECT user_id FROM '.TBL_DORMS_USERS.' WHERE dorm_id = "'.$who.'"');
break;
}
while ($row = mysqli_fetch_array($query))
message_send($sender, $row[0], '<b>'.$title.'</b><br>'.$text);
$html .= info_box('Wysłano do '.mysqli_num_rows($query).' użytkowników.', 1);
}
else
$html .= info_box('Podaj ID nadawcy!');
} else if ($_POST['method'] == 1) {
switch ($_POST['who']) {
case '0':
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS.' WHERE rank = "0" && status = "1"');
break;
case '1':
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS.' WHERE rank = "1" && status = "1"');
break;
case '2':
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS.' WHERE rank = "2" && status = "1"');
break;
case '3':
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS);
break;
case '4':
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS.' WHERE rank = "0" && status = "0"');
break;
case '5':
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS.' WHERE rank = 1 && status = "0"');
break;
default: //students from dorms
$who = str_replace('d_', '', $_POST['who']);
$query = mysqliQuery($db, 'SELECT user_id FROM '.TBL_DORMS_USERS.' WHERE dorm_id = "'.$who.'"');
while ($row = mysqli_fetch_array($query))
$ids[] = $row[0];
foreach ($ids as $value)
$sql[] = 'id = "'.$value.'"';
$sql = implode(' AND ', $sql);
$query = mysqliQuery($db, 'SELECT email FROM '.TBL_USERS.' WHERE '.$sql);
break;
}
$emails = [];
while ($row = mysqli_fetch_array($query))
{
$emails[] = $row[0];
}
$mail['mails'] = $emails;
$mail['text'] = $text;
$mail['title'] = $title;
$mail['counter'] = mysqli_num_rows($query);
$mail = serialize($mail);
file_put_contents('modules/messages/temp.txt', $mail);
$start_sending = true;
}
}
else
$html .= info_box('Temat i treść są wymagane!');
}
$dorms = get_dorms();
foreach($dorms as $key=>$value){
$options .= '<option value="d_'.$key.'">'.$value.'</option>';
}
if ($start_sending)
$html = '<iframe src="'.href('option=start_sending').'" style="border: 0px;width:600px;height:40px;"></iframe>';
wysiwyg(1);
$html .= '<form action="" method="POST"><table class="ignis-form-table">
<tr><th>Metoda</th><td><input type="radio" name="method" value="0" checked> Na wiadomość na stronie - podaj ID nadawcy: <input type="number" name="from" value="'.$_SESSION['user'].'"><br>
<input type="radio" name="method" value="1"> Na adresy email użytkowników
</td></tr>
<tr><th>Odbiorca</th><td>
<select name="who">
<optgroup label="Społeczność szkoły">
<option value="0">Wszyscy aktywni uczniowie</option>
<option value="4">Wszyscy nieaktywni uczniowie</option>
<option value="1">Wszyscy aktywni profesorzy</option>
<option value="5">Wszyscy nieaktywni profesorzy</option>
<option value="2">Wszyscy pracownicy</option>
<option value="3">Wszystkie osoby</option>
<optgroup label="Uczniowie domów">
'.$options.'
</select></td></tr>
<tr><th>Temat</th><td><input type="text" name="title"></td></tr>
<tr><th></th><td><textarea name="text"></textarea></td></tr>
</table>
<input type="submit" value="Wyślij list" name="submit">
</form>';
theme_execute($page_title, $html, '', 'admin');
}
if ($op == 'start_sending')
{
$mail = file_get_contents('modules/messages/temp.txt');
$mail = unserialize($mail);
echo '<style>*{font-family: sans-serif;}</style>';
if(count($mail['mails']) == 0)
echo 'Wiadomości zostały wysłane do '.$mail['counter'].' osób!';
else
{
foreach ($mail['mails'] as $key => $value)
{
$i++;
email($value, $mail['title'], $mail['text']);
unset($mail['mails'][$key]);
if ($i == 2)
break;
}
$r = $mail['counter'] - count($mail['mails']);
$proc = (int)(($r / $mail['counter']) * 100);
echo 'Wysyłanie... '.$proc.'% <meta http-equiv="refresh" content="0">';
$mail = serialize($mail);
file_put_contents('modules/messages/temp.txt', $mail);
}
//ob_start();
//var_dump($mail);
//$s = ob_get_clean();
//$html .= 'wysyłam do: '.$s;
theme_execute($page_title, $html, 'blank', 'admin');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment