Skip forbidden forums

This commit is contained in:
Alexander Yakovlev 2017-05-04 19:29:29 +07:00
parent af6a8e0e91
commit 1ed2b8fbd6
3 changed files with 23 additions and 5 deletions

View file

@ -14,7 +14,9 @@ function getLatestActiveThreads()
$limit = strtotime("3 days ago");
}
// Run the Query
$query = "SELECT DISTINCT `".MYBB_PREFIX."forums`.`name` AS `forumname`,
$query = "SELECT DISTINCT
`".MYBB_PREFIX."forums`.`fid`,
`".MYBB_PREFIX."forums`.`name` AS `forumname`,
`".MYBB_PREFIX."threads`.`subject`,
`".MYBB_PREFIX."threads`.`lastpost`,
`".MYBB_PREFIX."threads`.`username`,

View file

@ -5,6 +5,7 @@ require_once "email.php";
define("MYBB_ROOT", "../");
define("MYBB_PREFIX", "mybbfo_");
define("FORUM_ID", 0);// 0 means all forums
define("DATE_FORMAT", 'd/M/Y h:i A');
define("DRY_RUN", true);
$dsn = 'mysql:host=localhost;dbname=mybb;charset=utf8';
$usr = 'root';
@ -12,7 +13,7 @@ $pwd = '123456';
$pdo = new PDO($dsn, $usr, $pwd);
$threads = getLatestActiveThreads(FORUM_ID, 100, true);
$users = $pdo->prepare("SELECT email, username FROM ".MYBB_PREFIX."users
$users = $pdo->prepare("SELECT usergroup, email, username FROM ".MYBB_PREFIX."users
WHERE usergroup = 4
AND isSubscribed = 1");
$users->execute();
@ -34,10 +35,23 @@ $transport = Swift_SmtpTransport::newInstance($smtp['smtp_host'], $smtp['smtp_po
->setUsername($smtp['smtp_user'])
->setPassword($smtp['smtp_pass']);
$mailer = Swift_Mailer::newInstance($transport);
$forbidden = 'SELECT fid, gid FROM '.MYBB_PREFIX.'forumpermissions WHERE canviewthreads = 0';
$forbidden = $pdo->prepare($forbidden);
$forbidden->execute();
$forbidden = $forbidden->fetchAll();
$temp = $forbidden;
$forbidden = [];
foreach ($temp as $row) {
if (!isset($forbidden[$row['gid']])) {
$forbidden[$row['gid']] = [];
}
$forbidden[$row['gid']][] = $row['fid'];
}
foreach ($users as $user) {
$email = $user['email'];
$message = print_email($user['username'], $url.'/unsubscribe', $threads);
$message = print_email($user['username'], $url.'/unsubscribe', $threads, $forbidden[$user['usergroup']]);
if (DRY_RUN) {
echo $message;
}

View file

@ -1,6 +1,6 @@
<?php
define(DATE_FORMAT, 'd/M/Y h:i A');
function print_email($username, $unsubscription, $threads) {
// forbidden: forbidden forums IDs
function print_email($username, $unsubscription, $threads, $forbidden) {
$message = <<<END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
@ -24,6 +24,8 @@ function print_email($username, $unsubscription, $threads) {
<tbody>
END;
foreach ($threads as $thread) {
if (in_array($thread['fid'], $forbidden))
continue;
$message .= '
<tr>
<td style="padding: 0.5em">'.$thread['forumname'].'</td>