/** * Show a user their settings for MyAlerts. * * @param MyBB $mybb MyBB core object. * @param DB_MySQLi|DB_MySQL $db Database object. * @param MyLanguage $lang Language object. * @param pluginSystem $plugins MyBB plugin system. * @param templates $templates Template manager. * @param array $theme Details about the current theme. */ function myalerts_alert_settings($mybb, $db, $lang, $plugins, $templates, $theme) { $alertTypes = MybbStuff_MyAlerts_AlertTypeManager::getInstance()->getAlertTypes(); if (strtolower($mybb->request_method) == 'post') { // Saving alert type settings $disabledAlerts = array(); foreach ($alertTypes as $alertCode => $alertType) { if (!isset($_POST[$alertCode]) && $alertType['can_be_user_disabled']) { $disabledAlerts[] = (int) $alertType['id']; } } if ($disabledAlerts != $mybb->user['myalerts_disabled_alert_types']) { // Different settings, so update $jsonEncodedDisabledAlerts = json_encode($disabledAlerts); $db->update_query('users', array('myalerts_disabled_alert_types' => $db->escape_string($jsonEncodedDisabledAlerts)), 'uid=' . (int) $mybb->user['uid']); } redirect('alerts.php?action=settings', $lang->myalerts_settings_updated, $lang->myalerts_settings_updated_title); } else { // Displaying alert type settings form $content = ''; global $headerinclude, $header, $footer, $usercpnav; add_breadcrumb($lang->myalerts_settings_page_title, 'alerts.php?action=settings'); require_once __DIR__ . '/inc/functions_user.php'; usercp_menu(); foreach ($alertTypes as $key => $value) { if ($value['enabled'] && $value['can_be_user_disabled']) { $altbg = alt_trow(); $tempKey = 'myalerts_setting_' . $key; $plugins->run_hooks('myalerts_load_lang'); $langline = $lang->{$tempKey}; $checked = ''; if (!in_array($value['id'], $mybb->user['myalerts_disabled_alert_types'])) { $checked = ' checked="checked"'; } eval("\$alertSettings .= \"" . $templates->get('myalerts_setting_row') . "\";"); } } eval("\$content = \"" . $templates->get('myalerts_settings_page') . "\";"); output_page($content); } }