Ejemplo n.º 1
0
 /**
  * Create the forum subscriptions CSV when requested.
  *
  * @since    1.0.0
  */
 public function run_forum_subscriptions_csv()
 {
     // Output headers so that the file is downloaded rather than displayed.
     header('Content-Type: text/csv; charset=utf-8');
     header('Content-Disposition: attachment; filename=cc-forum-subscriptions.csv');
     // Create a file pointer connected to the output stream.
     $output = fopen('php://output', 'w');
     // Write a header row.
     $row = array('user_id', 'user_email', 'subscribed_to_forum_id', 'subscribed_to_forum_title', 'subscribed_to_forum_by_user_id', 'subscribed_to_forum_by_user_email', 'forum_date');
     fputcsv($output, $row);
     // Use a WP_User_Query meta_query to find users who have subscribed to forums.
     $args = array('meta_key' => 'wp__bbp_forum_subscriptions', 'meta_compare' => 'EXISTS');
     $user_query = new WP_User_Query($args);
     // User Loop
     if (!empty($user_query->results)) {
         foreach ($user_query->results as $user) {
             $subscriptions = bbp_get_user_subscribed_forum_ids($user->ID);
             if (empty($subscriptions)) {
                 continue;
             }
             $topics = new WP_QUERY(array('post_type' => 'forum', 'post__in' => $subscriptions, 'cache_results' => false, 'update_post_meta_cache' => false, 'update_post_term_cache' => false));
             if (!empty($topics->posts)) {
                 foreach ($topics->posts as $item) {
                     $op = get_userdata($item->post_author);
                     $row = array($user->ID, $user->user_email, $item->ID, $item->post_title, $item->post_author, $op->user_email, $item->post_date);
                     fputcsv($output, $row);
                 }
             }
         }
     }
     fclose($output);
     exit;
 }
Ejemplo n.º 2
0
/**
 * Check if a forum is in user's subscription list or not
 *
 * @since 2.5.0 bbPress (r5156)
 *
 * @param int $user_id Optional. User id
 * @param int $forum_id Optional. Topic id
 * @param array $subscribed_ids Optional. Array of forum ID's to check
 * @uses bbp_get_user_id() To get the user id
 * @uses bbp_get_forum() To get the forum
 * @uses bbp_get_forum_id() To get the forum id
 * @uses bbp_is_object_of_user() To check if the user has a subscription
 * @uses apply_filters() Calls 'bbp_is_user_subscribed' with the bool, user id,
 *                        forum id and subsriptions
 * @return bool True if the forum is in user's subscriptions, otherwise false
 */
function bbp_is_user_subscribed_to_forum($user_id = 0, $forum_id = 0, $subscribed_ids = array())
{
    // Assume user is not subscribed
    $retval = false;
    // Validate user
    $user_id = bbp_get_user_id($user_id, true, true);
    if (!empty($user_id)) {
        // Get subscription ID's if none passed
        if (empty($subscribed_ids)) {
            $subscribed_ids = bbp_get_user_subscribed_forum_ids($user_id);
        }
        // User has forum subscriptions
        if (!empty($subscribed_ids)) {
            // Checking a specific forum id
            if (!empty($forum_id)) {
                $forum = bbp_get_forum($forum_id);
                $forum_id = !empty($forum) ? $forum->ID : 0;
                // Using the global forum id
            } elseif (bbp_get_forum_id()) {
                $forum_id = bbp_get_forum_id();
                // Use the current post id
            } elseif (!bbp_get_forum_id()) {
                $forum_id = get_the_ID();
            }
            // Is forum_id in the user's subscriptions
            if (!empty($forum_id)) {
                $retval = bbp_is_object_of_user($forum_id, $user_id, '_bbp_subscription');
            }
        }
    }
    return (bool) apply_filters('bbp_is_user_subscribed_to_forum', (bool) $retval, $user_id, $forum_id, $subscribed_ids);
}
Ejemplo n.º 3
0
/**
 * Remove a forum from user's subscriptions
 *
 * @since bbPress (r5156)
 *
 * @param int $user_id Optional. User id
 * @param int $forum_id Optional. forum id
 * @uses bbp_get_user_subscribed_forum_ids() To get the user's subscriptions
 * @uses update_user_option() To update the user's subscriptions
 * @uses delete_user_option() To delete the user's subscriptions meta
 * @uses do_action() Calls 'bbp_remove_user_subscription' with the user id and
 *                    forum id
 * @return bool True if the forum was removed from user's subscriptions,
 *               otherwise false
 */
function bbp_remove_user_forum_subscription($user_id, $forum_id)
{
    if (empty($user_id) || empty($forum_id)) {
        return false;
    }
    $subscriptions = (array) bbp_get_user_subscribed_forum_ids($user_id);
    if (empty($subscriptions)) {
        return false;
    }
    $pos = array_search($forum_id, $subscriptions);
    if (false === $pos) {
        return false;
    }
    array_splice($subscriptions, $pos, 1);
    $subscriptions = array_filter($subscriptions);
    if (!empty($subscriptions)) {
        $subscriptions = implode(',', wp_parse_id_list($subscriptions));
        update_user_option($user_id, '_bbp_forum_subscriptions', $subscriptions);
    } else {
        delete_user_option($user_id, '_bbp_forum_subscriptions');
    }
    wp_cache_delete('bbp_get_forum_subscribers_' . $forum_id, 'bbpress_users');
    do_action('bbp_remove_user_forum_subscription', $user_id, $forum_id);
    return true;
}
Ejemplo n.º 4
0
 /**
  * @covers ::bbp_get_user_subscribed_forum_ids
  */
 public function test_bbp_get_user_subscribed_forum_ids()
 {
     $u = $this->factory->user->create();
     $f = $this->factory->forum->create_many(3);
     // Add forum subscriptions.
     bbp_add_user_forum_subscription($u, $f[0]);
     bbp_add_user_forum_subscription($u, $f[1]);
     bbp_add_user_forum_subscription($u, $f[2]);
     $subscriptions = bbp_get_user_subscribed_forum_ids($u);
     $this->assertEquals(array($f[0], $f[1], $f[2]), $subscriptions);
     // Remove forum subscription.
     bbp_remove_user_forum_subscription($u, $f[1]);
     $subscriptions = bbp_get_user_subscribed_forum_ids($u);
     $this->assertEquals(array($f[0], $f[2]), $subscriptions);
 }