Skip forbidden forums
This commit is contained in:
parent
af6a8e0e91
commit
1ed2b8fbd6
|
@ -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`,
|
||||
|
|
18
digest.php
18
digest.php
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Reference in a new issue