Beispiel #1
0
/**
 * 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);
    }
}