diff options
author | Igor Wiedler <igor@wiedler.ch> | 2012-03-23 11:43:54 +0100 |
---|---|---|
committer | Igor Wiedler <igor@wiedler.ch> | 2012-03-23 11:43:54 +0100 |
commit | e35aecb9bd051b46a804366cf461d426dc062404 (patch) | |
tree | 368f0e9b4870ba7e41dac2c21d304e64f595d03e /phpBB/includes/functions_posting.php | |
parent | baefbdb8825a37051a200203a0191d34caa12229 (diff) | |
parent | cc13bac412442a1d72affcc3222b6bfca094e92a (diff) | |
download | forums-e35aecb9bd051b46a804366cf461d426dc062404.tar forums-e35aecb9bd051b46a804366cf461d426dc062404.tar.gz forums-e35aecb9bd051b46a804366cf461d426dc062404.tar.bz2 forums-e35aecb9bd051b46a804366cf461d426dc062404.tar.xz forums-e35aecb9bd051b46a804366cf461d426dc062404.zip |
Merge remote-tracking branch 'upstream/develop' into feature/event-dispatcher
* upstream/develop: (30 commits)
[task/travis] Refactor php version check for dbunit install
[task/travis] Exclude functional and slow tests
[ticket/10719] Revert "Skip functional tests on PHP 5.2"
[task/travis-develop2] Update version from 5.3 to 5.3.2
[task/travis] Dropping support for 5.2 in develop branch
[task/travis] Some more small travis fixes
[task/travis] Rename travis phpunit config files
[task/travis] Fixing some travis issues
[ticket/10684] Adjust function and parameter name, minor changes.
[task/travis] Add automated testing to readme
[task/travis] Removing development information
[task/travis] Adding Travis Continuous Intergration Support
[ticket/10704] minor typo in a comment
[ticket/10717] Fix profile field sample in prosilverĀ“s memberlist_view.html
[ticket/10691] Fixed the speed of creating search index
[task/php54-ascraeus] Bring p_master#module_auth into PHP 5 era.
[task/php54] Disable E_STRICT in Olympus when running on PHP 5.4.
[task/php54] Refactor error_reporting call slightly.
[ticket/10690] Fix undefined UNAPPROVED_POSTS_ZERO_TOTAL in queue
[ticket/10689] Fix "First character"-option in "Find a member"-search
...
Diffstat (limited to 'phpBB/includes/functions_posting.php')
-rw-r--r-- | phpBB/includes/functions_posting.php | 46 |
1 files changed, 20 insertions, 26 deletions
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 4e4ce5bca7..b3816baedd 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -1180,36 +1180,32 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id $topic_title = ($topic_notification) ? $topic_title : $subject; $topic_title = censor_text($topic_title); - // Get banned User ID's - $sql = 'SELECT ban_userid - FROM ' . BANLIST_TABLE . ' - WHERE ban_userid <> 0 - AND ban_exclude <> 1'; - $result = $db->sql_query($sql); - - $sql_ignore_users = ANONYMOUS . ', ' . $user->data['user_id']; - while ($row = $db->sql_fetchrow($result)) + // Exclude guests, current user and banned users from notifications + if (!function_exists('phpbb_get_banned_user_ids')) { - $sql_ignore_users .= ', ' . (int) $row['ban_userid']; + include($phpbb_root_path . 'includes/functions_user.' . $phpEx); } - $db->sql_freeresult($result); + $sql_ignore_users = phpbb_get_banned_user_ids(); + $sql_ignore_users[ANONYMOUS] = ANONYMOUS; + $sql_ignore_users[$user->data['user_id']] = $user->data['user_id']; $notify_rows = array(); // -- get forum_userids || topic_userids $sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber FROM ' . (($topic_notification) ? TOPICS_WATCH_TABLE : FORUMS_WATCH_TABLE) . ' w, ' . USERS_TABLE . ' u - WHERE w.' . (($topic_notification) ? 'topic_id' : 'forum_id') . ' = ' . (($topic_notification) ? $topic_id : $forum_id) . " - AND w.user_id NOT IN ($sql_ignore_users) - AND w.notify_status = " . NOTIFY_YES . ' + WHERE w.' . (($topic_notification) ? 'topic_id' : 'forum_id') . ' = ' . (($topic_notification) ? $topic_id : $forum_id) . ' + AND ' . $db->sql_in_set('w.user_id', $sql_ignore_users, true) . ' + AND w.notify_status = ' . NOTIFY_YES . ' AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') AND u.user_id = w.user_id'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - $notify_rows[$row['user_id']] = array( - 'user_id' => $row['user_id'], + $notify_user_id = (int) $row['user_id']; + $notify_rows[$notify_user_id] = array( + 'user_id' => $notify_user_id, 'username' => $row['username'], 'user_email' => $row['user_email'], 'user_jabber' => $row['user_jabber'], @@ -1219,30 +1215,29 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id 'method' => $row['user_notify_type'], 'allowed' => false ); + + // Add users who have been already notified to ignore list + $sql_ignore_users[$notify_user_id] = $notify_user_id; } $db->sql_freeresult($result); // forum notification is sent to those not already receiving topic notifications if ($topic_notification) { - if (sizeof($notify_rows)) - { - $sql_ignore_users .= ', ' . implode(', ', array_keys($notify_rows)); - } - $sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u WHERE fw.forum_id = $forum_id - AND fw.user_id NOT IN ($sql_ignore_users) - AND fw.notify_status = " . NOTIFY_YES . ' + AND " . $db->sql_in_set('fw.user_id', $sql_ignore_users, true) . ' + AND fw.notify_status = ' . NOTIFY_YES . ' AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ') AND u.user_id = fw.user_id'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - $notify_rows[$row['user_id']] = array( - 'user_id' => $row['user_id'], + $notify_user_id = (int) $row['user_id']; + $notify_rows[$notify_user_id] = array( + 'user_id' => $notify_user_id, 'username' => $row['username'], 'user_email' => $row['user_email'], 'user_jabber' => $row['user_jabber'], @@ -1273,7 +1268,6 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id } } - // Now, we have to do a little step before really sending, we need to distinguish our users a little bit. ;) $msg_users = $delete_ids = $update_notification = array(); foreach ($notify_rows as $user_id => $row) |