Skip to content

Commit f46e976

Browse files
committed
Migrate email_setting
1 parent a88d8a0 commit f46e976

File tree

13 files changed

+152
-337
lines changed

13 files changed

+152
-337
lines changed

featherbb/Controller/Admin/Groups.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public function display($req, $res, $args)
2929
Container::get('hooks')->fire('controller.admin.groups.display');
3030

3131
$groups = $this->model->fetch_groups();
32-
var_dump($groups);
3332

3433
// Set default group
3534
if (Request::isPost()) {

featherbb/Controller/Install.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ public function create_db(array $data)
239239
'show.img.sig' => 1,
240240
'show.avatars' => 1,
241241
'show.sig' => 1,
242+
'email.setting' => 1
242243
));
243244
Container::get('prefs')->setGroup(2, array(
244245
'post.min_interval' => 0,
@@ -327,7 +328,7 @@ public function load_default_config(array $data)
327328
'o_additional_navlinks' => '',
328329
'o_report_method' => 0,
329330
'o_regs_report' => 0,
330-
'o_default_email_setting' => 1,
331+
// 'o_default_email_setting' => 1,
331332
'o_mailing_list' => $data['email'],
332333
'o_avatars' => $data['avatars'],
333334
'o_avatars_dir' => 'style/img/avatars',

featherbb/Controller/Profile.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ public function display($req, $res, $args)
9696
(!User::isAdminMod() || // and we are not an admin or mod
9797
(!User::isAdmin() && // or we aren't an admin and ...
9898
(!User::can('mod.edit_users') || // mods aren't allowed to edit users
99-
User::isAdmin($user['id']) || // or the user is an admin
100-
User::isAdminMod($user['id'])))) // or the user is another mod
99+
User::isAdmin($user) || // or the user is an admin
100+
User::isAdminMod($user)))) // or the user is another mod
101101
)
102102
{
103103
$user_info = $this->model->parse_user_info($user);

featherbb/Core/Interfaces/User.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,22 @@ public static function get($id = null)
2424

2525
/**
2626
* Load a user minimal infos, e.g for permissions and preferences
27-
* @param int $id The id of the user. If null (default), will return currently logged user
27+
* @param mixed $user Either a user id or user object.
2828
* @return object User id and group id
2929
*/
30-
public static function getBasic($id = null)
30+
public static function getBasic($user = null)
3131
{
32-
if (!$id || $id == Container::get('user')->id) {
32+
if (is_object($user) && isset($user->id) && isset($user->group_id)) {
33+
return $user;
34+
} elseif (!$user || (is_int($user) && intval($user) == Container::get('user')->id)) {
3335
// Get current user by default
3436
return Container::get('user');
3537
} else {
36-
// Load user from DB based on $id
38+
// Load user from DB based on ID
3739
return DB::for_table('users')
3840
->table_alias('u')
3941
->inner_join('groups', array('u.group_id', '=', 'g.g_id'), 'g')
40-
->where('u.id', $id)
42+
->where('u.id', $user)
4143
->select_many('u.id', 'u.group_id', 'g.g_moderator')
4244
->find_one();
4345
}
@@ -46,12 +48,12 @@ public static function getBasic($id = null)
4648
/**
4749
* Get a user preference value
4850
* @param string $pref The name of preference to get
49-
* @param int $id Optionnal user id. If not provided, will return pref for currently logged user
51+
* @param int $user Either a user id or user object.
5052
* @return string Value of the pref returned by Core/Preferences class
5153
*/
52-
public static function getPref($pref = null, $id = null)
54+
public static function getPref($pref = null, $user = null)
5355
{
54-
$user = self::getBasic($id);
56+
$user = self::getBasic($user);
5557
return Container::get('prefs')->get($user, $pref);
5658
}
5759

featherbb/Model/Admin/Options.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public function update_options()
7171
'regs_report' => Input::post('form_regs_report') != '1' ? '0' : '1',
7272
'rules' => Input::post('form_rules') != '1' ? '0' : '1',
7373
'rules_message' => Utils::trim(Input::post('form_rules_message')),
74-
'default_email_setting' => intval(Input::post('form_default_email_setting')),
74+
// 'default_email_setting' => intval(Input::post('form_default_email_setting')),
7575
'announcement' => Input::post('form_announcement') != '1' ? '0' : '1',
7676
'announcement_message' => Utils::trim(Input::post('form_announcement_message')),
7777
'maintenance' => Input::post('form_maintenance') != '1' ? '0' : '1',
@@ -89,6 +89,7 @@ public function update_options()
8989
'show.smilies.sig' => Input::post('form_smilies_sig') != '1' ? '0' : '1',
9090
'disp.topics' => intval(Input::post('form_disp_topics_default')),
9191
'disp.posts' => intval(Input::post('form_disp_posts_default')),
92+
'email.setting' => intval(Input::post('form_default_email_setting')),
9293
);
9394

9495
$form = Container::get('hooks')->fire('model.admin.options.update_options.form', $form);
@@ -188,10 +189,6 @@ public function update_options()
188189
throw new Error(__('Timeout error message'), 400);
189190
}
190191

191-
if ($form['default_email_setting'] < 0 || $form['default_email_setting'] > 2) {
192-
throw new Error(__('Bad request'), 400);
193-
}
194-
195192
if ($form['report_method'] < 0 || $form['report_method'] > 2) {
196193
throw new Error(__('Bad request'), 400);
197194
}
@@ -209,6 +206,10 @@ public function update_options()
209206
$prefs['disp.posts'] = 75;
210207
}
211208

209+
if ($prefs['email.setting'] < 0 || $prefs['email.setting'] > 2) {
210+
throw new Error(__('Bad request'), 400);
211+
}
212+
212213
foreach ($form as $key => $input) {
213214
// Only update values that have changed
214215
if (array_key_exists('o_'.$key, Container::get('forum_settings')) && ForumSettings::get('o_'.$key) != $input) {

featherbb/Model/Api/User.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function display($id)
2020
// Remove sensitive fields for regular users
2121
if (!$this->isAdMod) {
2222
Container::get('hooks')->bind('model.profile.get_user_info', function ($user) {
23-
$user = $user->select_delete_many(array('u.email', 'u.registration_ip', 'u.email_setting', 'u.notify_with_post', 'u.auto_notify', 'u.admin_note', 'u.last_visit'));
23+
$user = $user->select_delete_many(array('u.email', 'u.registration_ip', 'u.notify_with_post', 'u.auto_notify', 'u.admin_note', 'u.last_visit'));
2424
return $user;
2525
});
2626
}

featherbb/Model/Install.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ class Install
206206
`url` varchar(100) DEFAULT NULL,
207207
`location` varchar(30) DEFAULT NULL,
208208
`signature` text,
209-
`email_setting` tinyint(1) NOT NULL DEFAULT '1',
210209
`notify_with_post` tinyint(1) NOT NULL DEFAULT '0',
211210
`auto_notify` tinyint(1) NOT NULL DEFAULT '0',
212211
`num_posts` int(10) unsigned NOT NULL DEFAULT '0',

featherbb/Model/Post.php

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -995,7 +995,7 @@ public function send_notifications_new_topic($post, $cur_posting, $new_tid)
995995
array('fp.read_forum' => 'IS NULL'),
996996
array('fp.read_forum' => '1')
997997
);
998-
$result['select'] = array('u.id', 'u.email', 'u.notify_with_post');
998+
$result['select'] = array('u.id', 'u.group_id', 'u.email', 'u.notify_with_post');
999999

10001000
$result = DB::for_table('users')
10011001
->table_alias('u')
@@ -1027,15 +1027,16 @@ public function send_notifications_new_topic($post, $cur_posting, $new_tid)
10271027

10281028
// Loop through subscribed users and send emails
10291029
foreach($result as $cur_subscriber) {
1030+
$cur_subscriber['prefs'] = Container::get('prefs')->loadPrefs($cur_subscriber);
10301031
// Is the subscription email for User::getPref('language', $cur_subscriber['id']) cached or not?
1031-
if (!isset($notification_emails[User::getPref('language', $cur_subscriber['id'])])) {
1032-
if (file_exists(ForumEnv::get('FEATHER_ROOT').'featherbb/lang/'.User::getPref('language', $cur_subscriber['id']).'/mail_templates/new_topic.tpl')) {
1032+
if (!isset($notification_emails[$cur_subscriber['prefs']['language']])) {
1033+
if (file_exists(ForumEnv::get('FEATHER_ROOT').'featherbb/lang/'.$cur_subscriber['prefs']['language'].'/mail_templates/new_topic.tpl')) {
10331034
// Load the "new topic" template
1034-
$mail_tpl = trim(file_get_contents(ForumEnv::get('FEATHER_ROOT').'featherbb/lang/'.User::getPref('language', $cur_subscriber['id']).'/mail_templates/new_topic.tpl'));
1035+
$mail_tpl = trim(file_get_contents(ForumEnv::get('FEATHER_ROOT').'featherbb/lang/'.$cur_subscriber['prefs']['language'].'/mail_templates/new_topic.tpl'));
10351036
$mail_tpl = Container::get('hooks')->fire('model.post.send_notifications_new_topic_mail_tpl', $mail_tpl);
10361037

10371038
// Load the "new topic full" template (with post included)
1038-
$mail_tpl_full = trim(file_get_contents(ForumEnv::get('FEATHER_ROOT').'featherbb/lang/'.User::getPref('language', $cur_subscriber['id']).'/mail_templates/new_topic_full.tpl'));
1039+
$mail_tpl_full = trim(file_get_contents(ForumEnv::get('FEATHER_ROOT').'featherbb/lang/'.$cur_subscriber['prefs']['language'].'/mail_templates/new_topic_full.tpl'));
10391040

10401041
// The first row contains the subject (it also starts with "Subject:")
10411042
$first_crlf = strpos($mail_tpl, "\n");
@@ -1065,19 +1066,19 @@ public function send_notifications_new_topic($post, $cur_posting, $new_tid)
10651066
$mail_message_full = str_replace('<board_mailer>', ForumSettings::get('o_board_title'), $mail_message_full);
10661067
$mail_message_full = Container::get('hooks')->fire('model.post.send_notifications_new_topic_mail_message_full', $mail_message_full);
10671068

1068-
$notification_emails[User::getPref('language', $cur_subscriber['id'])][0] = $mail_subject;
1069-
$notification_emails[User::getPref('language', $cur_subscriber['id'])][1] = $mail_message;
1070-
$notification_emails[User::getPref('language', $cur_subscriber['id'])][2] = $mail_subject_full;
1071-
$notification_emails[User::getPref('language', $cur_subscriber['id'])][3] = $mail_message_full;
1069+
$notification_emails[$cur_subscriber['prefs']['language']][0] = $mail_subject;
1070+
$notification_emails[$cur_subscriber['prefs']['language']][1] = $mail_message;
1071+
$notification_emails[$cur_subscriber['prefs']['language']][2] = $mail_subject_full;
1072+
$notification_emails[$cur_subscriber['prefs']['language']][3] = $mail_message_full;
10721073
}
10731074
}
10741075

10751076
// We have to double check here because the templates could be missing
1076-
if (isset($notification_emails[User::getPref('language', $cur_subscriber['id'])])) {
1077+
if (isset($notification_emails[$cur_subscriber['prefs']['language']])) {
10771078
if ($cur_subscriber['notify_with_post'] == '0') {
1078-
Container::get('email')->feather_mail($cur_subscriber['email'], $notification_emails[User::getPref('language', $cur_subscriber['id'])][0], $notification_emails[User::getPref('language', $cur_subscriber['id'])][1]);
1079+
Container::get('email')->feather_mail($cur_subscriber['email'], $notification_emails[$cur_subscriber['prefs']['language']][0], $notification_emails[$cur_subscriber['prefs']['language']][1]);
10791080
} else {
1080-
Container::get('email')->feather_mail($cur_subscriber['email'], $notification_emails[User::getPref('language', $cur_subscriber['id'])][2], $notification_emails[User::getPref('language', $cur_subscriber['id'])][3]);
1081+
Container::get('email')->feather_mail($cur_subscriber['email'], $notification_emails[$cur_subscriber['prefs']['language']][2], $notification_emails[$cur_subscriber['prefs']['language']][3]);
10811082
}
10821083
}
10831084
}

featherbb/Model/Profile.php

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ public function update_profile($id, $info, $section)
877877
);
878878

879879
if ($form['email_setting'] < 0 || $form['email_setting'] > 2) {
880-
$form['email_setting'] = ForumSettings::get('o_default_email_setting');
880+
$form['email_setting'] = ForumSettings::get('email.setting');
881881
}
882882

883883
break;
@@ -1003,7 +1003,7 @@ public function update_profile($id, $info, $section)
10031003

10041004
public function get_user_info($id)
10051005
{
1006-
$user['select'] = array('u.id', 'u.username', 'u.email', 'u.title', 'u.realname', 'u.url', 'u.location', 'u.signature', 'u.email_setting', 'u.notify_with_post', 'u.auto_notify', 'u.num_posts', 'u.last_post', 'u.registered', 'u.registration_ip', 'u.admin_note', 'u.last_visit', 'g.g_id', 'g.g_user_title', 'g.g_moderator');
1006+
$user['select'] = array('u.id', 'u.group_id', 'u.username', 'u.email', 'u.title', 'u.realname', 'u.url', 'u.location', 'u.signature', 'u.notify_with_post', 'u.auto_notify', 'u.num_posts', 'u.last_post', 'u.registered', 'u.registration_ip', 'u.admin_note', 'u.last_visit', 'g.g_id', 'g.g_user_title', 'g.g_moderator');
10071007

10081008
$user = DB::for_table('users')
10091009
->table_alias('u')
@@ -1017,6 +1017,8 @@ public function get_user_info($id)
10171017
throw new Error(__('Bad request'), 404);
10181018
}
10191019

1020+
$user['prefs'] = Container::get('prefs')->loadPrefs($user);
1021+
10201022
return $user;
10211023
}
10221024

@@ -1049,9 +1051,9 @@ public function parse_user_info($user)
10491051
$user_info['personal'][] = '<dd><span class="website"><a href="'.$user['url'].'" rel="nofollow">'.$user['url'].'</a></span></dd>';
10501052
}
10511053

1052-
if ($user['email_setting'] == '0' && !User::get()->is_guest && User::can('email.send')) {
1054+
if ($user['prefs']['email.setting'] == '0' && !User::get()->is_guest && User::can('email.send')) {
10531055
$user['email_field'] = '<a href="mailto:'.Utils::escape($user['email']).'">'.Utils::escape($user['email']).'</a>';
1054-
} elseif ($user['email_setting'] == '1' && !User::get()->is_guest && User::can('email.send')) {
1056+
} elseif ($user['prefs']['email.setting'] == '1' && !User::get()->is_guest && User::can('email.send')) {
10551057
$user['email_field'] = '<a href="'.Router::pathFor('email', ['id' => $user['id']]).'">'.__('Send email').'</a>';
10561058
} else {
10571059
$user['email_field'] = '';
@@ -1295,8 +1297,8 @@ public function get_info_mail($recipient_id)
12951297
$mail = DB::for_table('users')
12961298
->select('username', 'recipient')
12971299
->select('email', 'recipient_email')
1298-
->select('id', 'recipient_id')
1299-
->select('email_setting')
1300+
->select('id')
1301+
->select('group_id')
13001302
->where('id', $recipient_id);
13011303
$mail = Container::get('hooks')->fireDB('model.profile.get_info_mail_query', $mail);
13021304
$mail = $mail->find_one();
@@ -1305,6 +1307,9 @@ public function get_info_mail($recipient_id)
13051307
throw new Error(__('Bad request'), 404);
13061308
}
13071309

1310+
$mail['recipient_id'] = $mail['id'];
1311+
$mail['email_setting'] = User::getPref('email.setting', $mail);
1312+
13081313
$mail = Container::get('hooks')->fireDB('model.profile.get_info_mail', $mail);
13091314

13101315
return $mail;

featherbb/Model/Register.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ public function insert_user($user)
138138
'group_id' => $intial_group_id,
139139
'password' => $password_hash,
140140
'email' => $user['email1'],
141-
'email_setting' => ForumSettings::get('o_default_email_setting'),
142141
'registered' => $now,
143142
'registration_ip' => Utils::getIp(),
144143
'last_visit' => $now,

0 commit comments

Comments
 (0)