/**
 * Handle marking single notifications as unread.
 *
 * @since BuddyPress (1.9.0)
 *
 * @return boolean
 */
function bp_notifications_action_mark_unread()
{
    // Bail if not the read screen
    if (!bp_is_notifications_component() || !bp_is_current_action('read')) {
        return false;
    }
    // Get the action
    $action = !empty($_GET['action']) ? $_GET['action'] : '';
    $nonce = !empty($_GET['_wpnonce']) ? $_GET['_wpnonce'] : '';
    $id = !empty($_GET['notification_id']) ? $_GET['notification_id'] : '';
    // Bail if no action or no ID
    if ('unread' !== $action || empty($id) || empty($nonce)) {
        return false;
    }
    // Check the nonce and mark the notification
    if (bp_verify_nonce_request('bp_notification_mark_unread_' . $id) && bp_notifications_mark_notification($id, true)) {
        bp_core_add_message(__('Notification successfully marked unread.', 'buddypress'));
    } else {
        bp_core_add_message(__('There was a problem marking that notification.', 'buddypress'), 'error');
    }
    // Redirect
    bp_core_redirect(bp_displayed_user_domain() . bp_get_notifications_slug() . '/read/');
}
/**
 * Handles bulk management (mark as read/unread, delete) of notifications.
 *
 * @since 2.2.0
 *
 * @return bool
 */
function bp_notifications_action_bulk_manage()
{
    // Bail if not the read or unread screen.
    if (!bp_is_notifications_component() || !(bp_is_current_action('read') || bp_is_current_action('unread'))) {
        return false;
    }
    // Get the action.
    $action = !empty($_POST['notification_bulk_action']) ? $_POST['notification_bulk_action'] : '';
    $nonce = !empty($_POST['notifications_bulk_nonce']) ? $_POST['notifications_bulk_nonce'] : '';
    $notifications = !empty($_POST['notifications']) ? $_POST['notifications'] : '';
    // Bail if no action or no IDs.
    if (!in_array($action, array('delete', 'read', 'unread')) || empty($notifications) || empty($nonce)) {
        return false;
    }
    // Check the nonce.
    if (!wp_verify_nonce($nonce, 'notifications_bulk_nonce')) {
        bp_core_add_message(__('There was a problem managing your notifications.', 'buddypress'), 'error');
        return false;
    }
    $notifications = wp_parse_id_list($notifications);
    // Delete, mark as read or unread depending on the user 'action'.
    switch ($action) {
        case 'delete':
            foreach ($notifications as $notification) {
                bp_notifications_delete_notification($notification);
            }
            bp_core_add_message(__('Notifications deleted.', 'buddypress'));
            break;
        case 'read':
            foreach ($notifications as $notification) {
                bp_notifications_mark_notification($notification, false);
            }
            bp_core_add_message(__('Notifications marked as read', 'buddypress'));
            break;
        case 'unread':
            foreach ($notifications as $notification) {
                bp_notifications_mark_notification($notification, true);
            }
            bp_core_add_message(__('Notifications marked as unread.', 'buddypress'));
            break;
    }
    // Redirect.
    bp_core_redirect(bp_displayed_user_domain() . bp_get_notifications_slug() . '/' . bp_current_action() . '/');
}