function toggle_save($group_id) { if (!empty($_POST['bpgr_toggle'])) { groups_update_groupmeta($group_id, 'bpgr_is_reviewable', 'yes'); } else { groups_update_groupmeta($group_id, 'bpgr_is_reviewable', 'no'); } }
function set($media_id = false) { if (false === $media_id) { return; } if (false === $this->group_id) { return; } groups_update_groupmeta($this->group_id, 'rtmedia_group_featured_media', $media_id); }
function create_object($args) { if (!isset($args['creator_id'])) { $args['creator_id'] = get_current_user_id(); } $group_id = groups_create_group($args); groups_update_groupmeta($group_id, 'total_member_count', 1); groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time()); return $this->get_object_by_id($group_id); }
function save_course_settings() { $group_id = $_POST['group-id']; if (isset($_POST['group_course']) && is_numeric($_POST['group_course'])) { $c = groups_update_groupmeta($group_id, 'course_id', $_POST['group_course']); } if (isset($_POST['start_date'])) { $c = groups_update_groupmeta($group_id, 'start_date', $_POST['start_date']); } }
/** * Integration test to make sure meta_query is getting passed through * * @group bp_has_groups */ public function test_bp_has_groups_with_meta_query() { $g1 = $this->factory->group->create(); $g2 = $this->factory->group->create(); groups_update_groupmeta($g1, 'foo', 'bar'); global $groups_template; bp_has_groups(array('meta_query' => array(array('key' => 'foo', 'value' => 'bar')))); $ids = wp_list_pluck($groups_template->groups, 'id'); $this->assertEquals($ids, array($g1)); }
/** * @group groups_update_groupmeta * @group groups_delete_group_cache_on_metadata_change */ public function test_bp_groups_delete_group_cache_on_metadata_change() { $g = $this->factory->group->create(); // Prime cache groups_update_groupmeta($g, 'foo', 'bar'); groups_get_group($g); $this->assertNotEmpty(wp_cache_get($g, 'bp_groups')); // Trigger flush groups_update_groupmeta($g, 'foo', 'baz'); $this->assertFalse(wp_cache_get($g, 'bp_groups')); }
function group_fields_save($group_id) { $plain_fields = array('completionpermonth'); foreach ($plain_fields as $field) { $key = $field; if (isset($_POST[$key])) { $value = $_POST[$key]; groups_update_groupmeta($group_id, $field, $value); } } }
function groups_update_last_activity($group_id = 0) { global $bp; if (empty($group_id)) { $group_id = $bp->groups->current_group->id; } if (empty($group_id)) { return false; } groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time()); }
function groups_left_group($group_id, $user_id = 0) { global $bp; if (empty($user_id)) { $user_id = bp_loggedin_user_id(); } // Record this in activity streams groups_record_activity(array('type' => 'left_group', 'item_id' => $group_id, 'user_id' => $user_id)); // Modify group meta groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time()); return true; }
function description_complete_enregistrement($id_projet) { global $bp, $wpdb; $tab_champs = array('description-complete'); // Plusieurs champs possibles foreach ($tab_champs as $champ) { $key = $champ; if (isset($_POST[$key])) { $valeur = $_POST[$key]; groups_update_groupmeta($id_projet, $champ, $valeur); } } }
public function setUp() { parent::setUp(); $bp = buddypress(); $this->current_group = $bp->groups->current_group; $this->current_component = $bp->current_component; $this->current_user = get_current_user_id(); $this->group_admin_id = $this->factory->user->create(); $this->set_current_user($this->group_admin_id); $this->group_id = $this->factory->group->create(array('creator_id' => $this->group_admin_id)); // Activate WP Idea Stream for the group groups_update_groupmeta($this->group_id, '_group_ideastream_activate', 1); // Set current component $bp->current_component = $bp->groups->id; }
/** * Creates a new forum inside a specific BuddyPress group. * * Uses the bundled version of bbPress packaged with BuddyPress. * * @since BuddyPress (1.0.0) * * @param int $group_id The group ID that the new forum should be attached to. * @param string $group_name The group name. * @param string $group_desc The group description. */ function groups_new_group_forum($group_id = 0, $group_name = '', $group_desc = '') { if (empty($group_id)) { $group_id = bp_get_current_group_id(); } if (empty($group_name)) { $group_name = bp_get_current_group_name(); } if (empty($group_desc)) { $group_desc = bp_get_current_group_description(); } $forum_id = bp_forums_new_forum(array('forum_name' => $group_name, 'forum_desc' => $group_desc)); groups_update_groupmeta($group_id, 'forum_id', $forum_id); do_action('groups_new_group_forum', $forum_id, $group_id); }
function groups_new_group_forum($group_id = 0, $group_name = '', $group_desc = '') { global $bp; if (empty($group_id)) { $group_id = $bp->groups->current_group->id; } if (empty($group_name)) { $group_name = $bp->groups->current_group->name; } if (empty($group_desc)) { $group_desc = $bp->groups->current_group->description; } $forum_id = bp_forums_new_forum(array('forum_name' => $group_name, 'forum_desc' => $group_desc)); groups_update_groupmeta($group_id, 'forum_id', $forum_id); do_action('groups_new_group_forum', $forum_id, $group_id); }
function upgrade_1_02() { global $bp, $wpdb; $sql = $wpdb->prepare("SELECT group_id, meta_value FROM {$bp->groups->table_name_groupmeta} WHERE meta_key = 'bpgr_rating'"); $old_ratings = $wpdb->get_results($sql); foreach ($old_ratings as $old_rating) { $group_id = $old_rating->group_id; $rating = maybe_unserialize($old_rating->meta_value); if (!empty($rating['avg_score'])) { groups_update_groupmeta($group_id, 'bpgr_rating', $rating['avg_score']); } if (!empty($rating['number'])) { groups_update_groupmeta($group_id, 'bpgr_how_many_ratings', $rating['number']); } } }
/** * @group groupblog */ public function test_follow_blog_and_groupblog() { if (!is_multisite()) { return; } // save the current user and override logged-in user $old_user = get_current_user_id(); $u = $this->factory->user->create(); $this->set_current_user($u); // create some blogs $b = $this->factory->blog->create(array('title' => 'Groupblog', 'user_id' => $u)); $b2 = $this->factory->blog->create(array('title' => 'Test blog 1', 'user_id' => $u)); $b3 = $this->factory->blog->create(array('title' => 'Test blog 2', 'user_id' => $u)); // create a group and connect a blog $g = $this->factory->group->create(array('creator_id' => $u)); groups_update_groupmeta($g, 'groupblog_blog_id', $b); // follow the groupblog $f = bp_follow_start_following(array('leader_id' => $b, 'follower_id' => $u, 'follow_type' => 'blogs')); // follow a regular blog $f2 = bp_follow_start_following(array('leader_id' => $b2, 'follower_id' => $u, 'follow_type' => 'blogs')); // add some activity items $a = $this->factory->activity->create(array('component' => buddypress()->groups->id, 'type' => 'new_groupblog_post', 'user_id' => $u, 'item_id' => $g, 'secondary_item_id' => 1)); $a2 = $this->factory->activity->create(array('component' => buddypress()->blogs->id, 'type' => 'new_blog_post', 'user_id' => $u, 'item_id' => $b3, 'secondary_item_id' => 1)); $a3 = $this->factory->activity->create(array('component' => buddypress()->blogs->id, 'type' => 'new_blog_post', 'user_id' => $u, 'item_id' => $b2, 'secondary_item_id' => 1)); // fake that we're on a user's "Activity > Followed Sites" page add_filter('bp_ajax_querystring', array($this, 'add_activity_scope_filter')); // fake that BP groupblog is installed so groupblog filter will kick in if (!function_exists('bp_groupblog_init')) { function bp_groupblog_init() { } } // run the activity loop global $activities_template; bp_has_activities(bp_ajax_querystring('activity')); // grab the activity IDs from the loop $ids = wp_list_pluck($activities_template->activities, 'id'); // assert! $this->assertEquals(array($a, $a3), $ids); // reset everything $activities_template = null; $this->set_current_user($old_user); remove_filter('bp_ajax_querystring', array($this, 'add_activity_scope_filter')); }
/** * Creates a new forum inside a specific BuddyPress group. * * Uses the bundled version of bbPress packaged with BuddyPress. * * @since BuddyPress (1.0.0) * * @param int $group_id The group ID that the new forum should be attached to. * @param string $group_name The group name. * @param string $group_desc The group description. */ function groups_new_group_forum($group_id = 0, $group_name = '', $group_desc = '') { if (empty($group_id)) { $group_id = bp_get_current_group_id(); } if (empty($group_name)) { $group_name = bp_get_current_group_name(); } if (empty($group_desc)) { $group_desc = bp_get_current_group_description(); } $forum_id = bp_forums_new_forum(array('forum_name' => $group_name, 'forum_desc' => $group_desc)); groups_update_groupmeta($group_id, 'forum_id', $forum_id); /** * Fires after the creation of a new forum inside a specific BuddyPress group. * * @since BuddyPress (1.0.0) * * @param int $forum_id ID of the newly created forum. * @param int $group_id ID of the associated group. */ do_action('groups_new_group_forum', $forum_id, $group_id); }
/** * Save or update a new event * @version 2.0 */ function save_event($post_id, $post = '') { // Don't do anything if it's not an event if ('event' != $post->post_type) { return; } // Verify the nonce before proceeding. if (!isset($_POST['event-details-box']) || !wp_verify_nonce($_POST['event-details-box'], basename(__FILE__))) { return $post_id; } /* ----------------------------------- SAVE EVENT TIME ------------------------------------*/ // Retrieve the event time $event_time = date('Y-m-d H:i:s', strtotime($_POST['event-time'])); $prior_time = $post->post_date; // Update the post object $post->post_date = $event_time; remove_action('save_post', array($this, 'save_event')); wp_update_post($post); add_action('save_post', array($this, 'save_event'), 10, 2); /* ----------------------------------- SAVE META INFORMATION ------------------------------------ */ // Define the meta to look for $meta = array('event_duration' => $_POST['event-duration'], 'event_capacity' => $_POST['event-capacity'], 'event_rsvp' => $_POST['event-rsvp'], 'event_role' => $_POST['event-role']); // Loop through each meta, saving it to the database foreach ($meta as $meta_key => $new_meta_value) { // Get the meta value of the custom field key. $meta_value = get_post_meta($post_id, $meta_key, true); // If there is no new meta value but an old value exists, delete it. if (current_user_can('delete_post_meta', $post_id, $meta_key) && '' == $new_meta_value && $meta_value) { delete_post_meta($post_id, $meta_key, $meta_value); } elseif (current_user_can('add_post_meta', $post_id, $meta_key) && $new_meta_value && '' == $meta_value) { add_post_meta($post_id, $meta_key, $new_meta_value, true); } elseif (current_user_can('edit_post_meta', $post_id, $meta_key) && $new_meta_value && $new_meta_value != $meta_value) { update_post_meta($post_id, $meta_key, $new_meta_value); } } // Delete the RSVP meta if the date has changed if ($event_time != $prior_time) { delete_post_meta($post_id, 'event_rsvps'); } /* ----------------------------------- BUDDYPRESS NOTIFICATION ------------------------------------ */ // Get event data global $bp, $wpdb; if (!$user_id) { $user_id = $post->post_author; } // Figure out which calendars this event belongs to $calendars = wp_get_post_terms($post_id, 'calendar'); $group_slugs = array(); // For each calendar, check if it's a group calendar foreach ($calendars as $calendar) { if (is_group_calendar($calendar->term_id)) { $groups[] = $calendar; } } // If this event does not belong to a group, we can stop here if (empty($groups)) { return $post_id; } // Only register notifications for future or published events if (!in_array($post->post_status, array('publish', 'future'))) { return $post_id; } // Loop through each group, adding an activity entry for each one foreach ($groups as $group) { // Get the group data $group_id = groups_get_id($group->slug); $group_name = $group->name; // Configure the activity entry $post_permalink = get_permalink($post_id); $activity_action = sprintf('%1$s added the event %2$s to the %3$s.', bp_core_get_userlink($post->post_author), '<a href="' . $post_permalink . '">' . $post->post_title . '</a>', $group_name . ' <a href="' . SITEURL . '/calendar/' . $group->slug . '">group calendar</a>'); $activity_content = $post->post_content; // Check for existing entry $activity_id = bp_activity_get_activity_id(array('user_id' => $user_id, 'component' => $bp->groups->id, 'type' => 'new_calendar_event', 'item_id' => $group_id, 'secondary_item_id' => $post_id)); // Record the entry groups_record_activity(array('id' => $activity_id, 'user_id' => $user_id, 'action' => $activity_action, 'content' => $activity_content, 'primary_link' => $post_permalink, 'type' => 'new_calendar_event', 'item_id' => $group_id, 'secondary_item_id' => $post_id)); // Update the group's last activity meta groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time()); // Maybe notify every group member if ($_POST['event-rsvp']) { if (bp_group_has_members($args = array('group_id' => $group_id, 'exclude_admins_mods' => false, 'per_page' => 99999))) { while (bp_members()) { bp_the_member(); // Remove any existing notifications ( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) bp_notifications_delete_notifications_by_item_id(bp_get_group_member_id(), $group_id, $bp->groups->id, 'new_calendar_event', $post_id); // Send a notification ( itemid , groupid , component, action , secondary ) bp_notifications_add_notification(array('user_id' => bp_get_group_member_id(), 'item_id' => $group_id, 'secondary_item_id' => $post_id, 'component_name' => $bp->groups->id, 'component_action' => 'new_calendar_event')); } } } } }
function unban() { if ($this->is_admin) { return false; } $this->is_banned = 0; groups_update_groupmeta($this->group_id, 'total_member_count', (int) groups_get_groupmeta($this->group_id, 'total_member_count') + 1); return $this->save(); }
/** * @group user_can_associate_doc_with_group * @expectedDeprecated user_can_associate_doc_with_group */ public function test_associate_with_group_admin() { $g = $this->factory->group->create(); $d = $this->factory->doc->create(array('group' => $g)); groups_update_groupmeta($g, 'bp-docs', array('can-create' => 'admin')); $u1 = $this->factory->user->create(); $this->add_user_to_group($u1, $g); $this->assertFalse(BP_Docs_Groups_Integration::user_can_associate_doc_with_group($u1, $g)); $u2 = $this->factory->user->create(); $this->add_user_to_group($u2, $g); $gm2 = new BP_Groups_Member($u2, $g); $gm2->promote('mod'); $this->assertFalse(BP_Docs_Groups_Integration::user_can_associate_doc_with_group($u2, $g)); $u3 = $this->factory->user->create(); $this->add_user_to_group($u3, $g); $gm3 = new BP_Groups_Member($u3, $g); $gm3->promote('admin'); $this->assertTrue(BP_Docs_Groups_Integration::user_can_associate_doc_with_group($u3, $g)); }
/** * Handle the display of a group's Members page. */ function groups_screen_group_members() { if (!bp_is_single_item()) { return false; } $bp = buddypress(); // Refresh the group member count meta. groups_update_groupmeta($bp->groups->current_group->id, 'total_member_count', groups_get_total_member_count($bp->groups->current_group->id)); /** * Fires before the loading of a group's Members page. * * @since 1.0.0 * * @param int $id ID of the group whose members are being displayed. */ do_action('groups_screen_group_members', $bp->groups->current_group->id); /** * Filters the template to load for a group's Members page. * * @since 1.0.0 * * @param string $value Path to a group's Members template. */ bp_core_load_template(apply_filters('groups_template_group_members', 'groups/single/home')); }
function gtags_save_cats($group) { if (isset($_POST['group-cat']) && ($group_cat = $_POST['group-cat'])) { $gtags = explode(',', gtags_get_group_tags($group)); array_walk($gtags, create_function('&$a', '$a = trim($a);')); // trim spaces $group_cat_prev = groups_get_groupmeta($group->id, 'gtags_group_cat'); if ($group_cat != $group_cat_prev) { // we have a new value this time groups_update_groupmeta($group->id, 'gtags_group_cat', $group_cat); //save the group category in group meta $gtags = array_diff($gtags, (array) $group_cat_prev); // remove the prev val with array_diff cause unset sucks } $gtags[] = $group_cat; // add it $gtags = array_unique($gtags); // remove duplications groups_update_groupmeta($group->id, 'gtags_group_tags', implode(', ', $gtags)); } }
function bp_cover_group_handle_upload($activity_id) { global $bp, $wpdb; $group_id = bp_get_current_group_id(); $activity_table = $wpdb->prefix . "bp_activity"; $activity_meta_table = $wpdb->prefix . "bp_activity_meta"; $sql = "SELECT COUNT(*) as photo_count FROM {$activity_table} a INNER JOIN {$activity_meta_table} am ON a.id = am.activity_id WHERE a.item_id = %d AND meta_key = 'all_bp_cover_group'"; $sql = $wpdb->prepare($sql, $group_id); $cnt = $wpdb->get_var($sql); $max_cnt = bp_cover_get_max_total(); if ($cnt < $max_cnt) { if ($_POST['encodedimg']) { $file = $_POST['imgsize']; $max_upload_size = bp_cover_get_max_media_size(); if ($max_upload_size > $file) { $group_id = $bp->groups->current_group->id; $imgresponse = array(); $uploaddir = wp_upload_dir(); /* let's decode the base64 encoded image sent */ $img = $_POST['encodedimg']; $img = str_replace('data:' . $_POST['imgtype'] . ';base64,', '', $img); $img = str_replace(' ', '+', $img); $data = base64_decode($img); $imgname = wp_unique_filename($uploaddir['path'], $_POST['imgname']); $filepath = $uploaddir['path'] . '/' . $imgname; $fileurl = $uploaddir['url'] . '/' . $imgname; /* now we write the image in dir */ $success = file_put_contents($filepath, $data); if ($success) { $imgresponse[0] = "1"; $imgresponse[1] = $fileurl; $size = @getimagesize($filepath); $attachment = array('post_mime_type' => $_POST['imgtype'], 'guid' => $fileurl, 'post_title' => $imgname); require_once ABSPATH . 'wp-admin/includes/image.php'; $attachment_id = wp_insert_attachment($attachment, $filepath); $attach_data = wp_generate_attachment_metadata($attachment_id, $filepath); wp_update_attachment_metadata($attachment_id, $attach_data); groups_update_groupmeta($group_id, 'bp_cover_group', $fileurl); groups_update_groupmeta($group_id, 'bp_cover_group_position', 0); $group = groups_get_group(array("group_id" => $group_id)); $activity_id = groups_record_activity(array('action' => sprintf(__('%s uploaded a new cover picture to the group %s', 'bp-cover'), bp_core_get_userlink($bp->loggedin_user->id), '<a href="' . bp_get_group_permalink($group) . '">' . esc_attr($group->name) . '</a>'), 'type' => 'cover_added', 'item_id' => $group_id, 'content' => bp_cover_group_get_image_scr(), 'item_id' => $group_id)); bp_activity_update_meta($activity_id, 'all_bp_cover_group', $attachment_id); update_post_meta($attachment_id, 'bp_cover_group_thumb', $imgresponse[2]); } else { $imgresponse[0] = "0"; $imgresponse[1] = __('Upload Failed! Unable to write the image on server', 'bp-cover'); } } else { $imgresponse[0] = "0"; $imgresponse[1] = sprintf(__('The file you uploaded is too big. Please upload a file under %s', 'bp-cover'), size_format($max_upload_size)); } } else { $imgresponse[0] = "0"; $imgresponse[1] = __('Upload Failed! No image sent', 'bp-cover'); } } else { $imgresponse[0] = "0"; $imgresponse[1] = sprintf(__('Max total images allowed %d in a cover gallery', 'bp-cover'), $max_cnt); } /* if everything is ok, we send back url to thumbnail and to full image */ echo json_encode($imgresponse); die; }
/** * Save the settings for the current the group * * @package Rendez Vous * @subpackage Groups * * @since Rendez Vous (1.1.0) * * @param int $group_id the group id we save settings for * @uses check_admin_referer() to check the request was made on the site * @uses bp_get_current_group_id() to get the group id * @uses wp_parse_args() to merge args with defaults * @uses groups_update_groupmeta() to set the extension option * @uses bp_is_group_admin_page() to check the group edit screen is displayed * @uses bp_core_add_message() to give a feedback to the user * @uses bp_core_redirect() to safely redirect the user * @uses bp_get_group_permalink() to build the group permalink */ public function edit_screen_save($group_id = null) { if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return false; } check_admin_referer('groups_settings_save_' . $this->slug, 'rendez_vous_group_admin'); if (empty($group_id)) { $group_id = bp_get_current_group_id(); } $settings = array('_rendez_vous_group_activate' => 0); if (!empty($_POST['_rendez_vous_group_activate'])) { $s = wp_parse_args($_POST, $settings); $settings = array_intersect_key(array_map('absint', $s), $settings); } // Save group settings foreach ($settings as $meta_key => $meta_value) { groups_update_groupmeta($group_id, $meta_key, $meta_value); } if (bp_is_group_admin_page() || is_admin()) { // Only redirect on Manage screen if (bp_is_group_admin_page()) { bp_core_add_message(__('Settings saved successfully', 'rendez-vous')); bp_core_redirect(bp_get_group_permalink(buddypress()->groups->current_group) . 'admin/' . $this->slug); } } }
/** * Saves group settings. Called from edit_screen_save() and create_screen_save() * * @since 1.0-beta */ function settings_save($group_id = false) { $success = false; if (!$group_id) { $group_id = $this->maybe_group_id; } $settings = !empty($_POST['bp-docs']) ? $_POST['bp-docs'] : array(); $old_settings = bp_docs_get_group_settings($group_id); // Validate settings to ensure that all values are provided // This is particularly meant for can-create, which is a // checkbox and thus may not show up in the POST array foreach ($old_settings as $k => $v) { if (!isset($settings[$k])) { $settings[$k] = 0; } } if ($old_settings == $settings) { // No need to resave settings if they're the same $success = true; } else { if (groups_update_groupmeta($group_id, 'bp-docs', $settings)) { $success = true; } } return $success; }
/** * Delete all group membership information for the specified user * * @global object $bp BuddyPress global settings * @global wpdb $wpdb WordPress database object * @param int $user_id * @since 1.0 * @uses BP_Groups_Member */ function delete_all_for_user($user_id) { global $bp, $wpdb; // Get all the group ids for the current user's groups and update counts $group_ids = BP_Groups_Member::get_group_ids($user_id); foreach ($group_ids['groups'] as $group_id) { groups_update_groupmeta($group_id, 'total_member_count', groups_get_total_member_count($group_id) - 1); // If current user is the creator of a group and is the sole admin, delete that group to avoid counts going out-of-sync if (groups_is_user_admin($user_id, $group_id) && count(groups_get_group_admins($group_id)) < 2 && groups_is_user_creator($user_id, $group_id)) { groups_delete_group($group_id); } } return $wpdb->query($wpdb->prepare("DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id)); }
/** * @group get * @group group_meta_query * @ticket BP5099 */ public function test_meta_query_and_total_groups() { $time = time(); $g1 = $this->factory->group->create(array('name' => 'A Group', 'date_created' => bp_core_current_time())); $g2 = $this->factory->group->create(array('name' => 'D Group', 'date_created' => gmdate('Y-m-d H:i:s', $time - 100))); $g3 = $this->factory->group->create(array('name' => 'B Group', 'date_created' => gmdate('Y-m-d H:i:s', $time - 100000))); $g4 = $this->factory->group->create(array('name' => 'C Group', 'date_created' => gmdate('Y-m-d H:i:s', $time - 1000))); // mark one group with the metakey 'supergroup' groups_update_groupmeta($g1, 'supergroup', 1); // fetch groups with our 'supergroup' metakey $groups = BP_Groups_Group::get(array('meta_query' => array(array('key' => 'supergroup', 'compare' => 'EXISTS')))); // group total should match 1 $this->assertEquals('1', $groups['total']); }
/** * Process the acceptance of a group invitation. * * Returns true if a user is already a member of the group. * * @param int $user_id ID of the user. * @param int $group_id ID of the group. * * @return bool True when the user is a member of the group, otherwise false. */ function groups_accept_invite($user_id, $group_id) { // If the user is already a member (because BP at one point allowed two invitations to // slip through), delete all existing invitations/requests and return true if (groups_is_user_member($user_id, $group_id)) { if (groups_check_user_has_invite($user_id, $group_id)) { groups_delete_invite($user_id, $group_id); } if (groups_check_for_membership_request($user_id, $group_id)) { groups_delete_membership_request(null, $user_id, $group_id); } return true; } $member = new BP_Groups_Member($user_id, $group_id); $member->accept_invite(); if (!$member->save()) { return false; } // Remove request to join if ($member->check_for_membership_request($user_id, $group_id)) { $member->delete_request($user_id, $group_id); } // Modify group meta groups_update_groupmeta($group_id, 'last_activity', bp_core_current_time()); /** * Fires after a user has accepted a group invite. * * @since 1.0.0 * * @param int $user_id ID of the user who accepted the group invite. * @param int $group_id ID of the group being accepted to. */ do_action('groups_accept_invite', $user_id, $group_id); return true; }
/** * Save method for our extension during edits. * * @param int $group_id The group ID. */ public function edit_screen_save($group_id = null) { if (!isset($_POST['save'])) { return false; } check_admin_referer('groups_edit_save_' . $this->slug); $existing_feeds = (array) groups_get_groupmeta(bp_get_current_group_id(), 'blogfeeds'); $unfiltered_feeds = explode(',', $_POST['blogfeeds']); $blog_feeds = array(); foreach ((array) $unfiltered_feeds as $blog_feed) { if (!empty($blog_feed)) { $blog_feeds[] = esc_url_raw(trim($blog_feed)); } } /* Loop and find any feeds that have been removed, so we can delete activity stream items */ if (!empty($existing_feeds)) { foreach ((array) $existing_feeds as $feed) { if (!in_array($feed, (array) $blog_feeds)) { $removed[] = $feed; } } } if ($removed) { foreach ((array) $removed as $feed) { $existing = bp_activity_get(array('user_id' => false, 'component' => 'groups', 'type' => 'exb', 'item_id' => bp_get_current_group_id(), 'update_meta_cache' => false, 'display_comments' => false, 'meta_query' => array(array('key' => 'exb_feedurl', 'value' => trim($feed))))); // only delete items matching the feed if (!empty($existing['activities'])) { $aids = wp_list_pluck($existing['activities'], 'id'); foreach ($aids as $aid) { bp_activity_delete(array('id' => $aid)); } // old way - delete all feed items matching the group } else { bp_activity_delete(array('item_id' => bp_get_current_group_id(), 'component' => 'groups', 'type' => 'exb')); } } } groups_update_groupmeta(bp_get_current_group_id(), 'fetchtime', $_POST['fetch-time']); groups_update_groupmeta(bp_get_current_group_id(), 'blogfeeds', $blog_feeds); groups_update_groupmeta(bp_get_current_group_id(), 'bp_groupblogs_lastupdate', gmdate("Y-m-d H:i:s")); /* Re-fetch */ bp_groupblogs_fetch_group_feeds(bp_get_current_group_id()); bp_core_add_message(__('External blog feeds updated successfully!', 'bp-groups-externalblogs')); bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . '/admin/' . $this->slug); }
/** * @see issue #492 */ public function test_bp_docs_is_docs_enabled_for_group_should_work_after_toggled_off() { $group = $this->factory->group->create(); $doc_id = $this->factory->doc->create(array('group' => $group)); $settings = array('group-enable' => 1, 'can-create' => 'member'); groups_update_groupmeta($group, 'bp-docs', $settings); $this->assertTrue(bp_docs_is_docs_enabled_for_group($group)); $settings = array('group-enable' => 0); groups_update_groupmeta($group, 'bp-docs', $settings); $this->assertFalse(bp_docs_is_docs_enabled_for_group($group)); }
function save_course_settings() { $user_id = get_current_user_id(); $course_id = $_POST['course_id']; $course_setting['vibe_course_auto_eval'] = $_POST['vibe_course_auto_eval']; $course_setting['vibe_duration'] = $_POST['vibe_duration']; $course_setting['vibe_pre_course'] = $_POST['vibe_pre_course']; $course_setting['vibe_course_drip'] = $_POST['vibe_course_drip']; $course_setting['vibe_course_drip_duration'] = $_POST['vibe_course_drip_duration']; $course_setting['vibe_course_certificate'] = $_POST['vibe_certificate']; $course_setting['vibe_course_passing_percentage'] = $_POST['vibe_course_passing_percentage']; $course_setting['vibe_certificate_template'] = $_POST['vibe_certificate_template']; $course_setting['vibe_badge'] = $_POST['vibe_badge']; $course_setting['vibe_course_badge_percentage'] = $_POST['vibe_course_badge_percentage']; $course_setting['vibe_course_badge_title'] = $_POST['vibe_course_badge_title']; $course_setting['vibe_course_badge'] = $_POST['vibe_course_badge']; $course_setting['vibe_max_students'] = $_POST['vibe_max_students']; $course_setting['vibe_start_date'] = $_POST['vibe_start_date']; $course_setting['vibe_course_retakes'] = $_POST['vibe_course_retakes']; $course_setting['vibe_group'] = $_POST['vibe_group']; $course_setting['vibe_forum'] = $_POST['vibe_forum']; $course_setting['vibe_course_instructions'] = $_POST['vibe_course_instructions']; $course_setting['vibe_course_message'] = $_POST['vibe_course_message']; $flag = 0; //Error Flag if (!isset($_POST['security']) || !wp_verify_nonce($_POST['security'], 'create_course' . $user_id) || !current_user_can('edit_posts')) { _e('Security check Failed. Contact Administrator.', 'wplms-front-end'); die; } if (!is_numeric($course_id) || get_post_type($course_id) != 'course') { _e('Invalid Course id, please edit a course', 'wplms-front-end'); die; } $the_post = get_post($course_id); if ($the_post->post_author != $user_id && !current_user_can('manage_options')) { _e('Invalid Course Instructor', 'wplms-front-end'); die; } if ($course_setting['vibe_badge'] == 'H') { $course_setting['vibe_course_badge'] = ''; } foreach ($course_setting as $key => $value) { $prev_val = get_post_meta($course_id, $key, true); if ($prev_val != $value) { update_post_meta($course_id, $key, $value); } } if ($course_setting['vibe_group'] == 'add_new' && !$flag) { $the_course = get_post($course_id); $t = wp_get_attachment_image_src(get_post_thumbnail_id($course_id, 'thumbnail')); $f = wp_get_attachment_image_src(get_post_thumbnail_id($course_id, 'full')); $group_slug = $the_course->post_name; //groups_check_slug( sanitize_title( esc_attr( $the_course->post_name ) ) ); $group_settings = array('creator_id' => $user_id, 'name' => $the_course->post_title, 'slug' => $group_slug, 'description' => $the_course->post_excerpt, 'status' => 'private', 'date_created' => current_time('mysql')); $group_settings = apply_filters('wplms_front_end_group_vars', $group_settings); if ($course_setting['vibe_forum'] == 'add_group_forum') { $group_settings['enable_forum'] = 1; } global $bp; $new_group_id = groups_create_group($group_settings); bp_core_avatar_handle_crop(array('object' => 'group', 'avatar_dir' => 'group-avatars', 'item_id' => $new_group_id, 'original_file' => $f[0], 'crop_x' => 0, 'crop_y' => 0, 'crop_w' => $f[1], 'crop_h' => $f[2])); groups_update_groupmeta($new_group_id, 'total_member_count', 1); groups_update_groupmeta($new_group_id, 'last_activity', gmdate("Y-m-d H:i:s")); update_post_meta($course_id, 'vibe_group', $new_group_id); if ($course_setting['vibe_forum'] == 'add_group_forum') { $forum_settings = array('post_title' => stripslashes($the_course->post_title), 'post_content' => stripslashes($the_course->post_excerpt), 'post_name' => $the_course->post_name, 'post_status' => 'private', 'post_type' => 'forum'); $forum_settings = apply_filters('wplms_front_end_forum_vars', $forum_settings); $new_forum_id = wp_insert_post($forum_settings); //Linkage $linkage = vibe_get_option('linkage'); if (isset($linkage) && $linkage) { $course_linkage = wp_get_post_terms($course_id, 'linkage', array("fields" => "names")); if (isset($course_linkage) && is_array($course_linkage)) { wp_set_post_terms($new_forum_id, $course_linkage, 'linkage'); } } groups_update_groupmeta($new_group_id, 'forum_id', array($new_forum_id)); update_post_meta($course_id, 'vibe_forum', $new_forum_id); } } if ($course_setting['vibe_forum'] == 'add_new' && !$flag) { $forum_settings = array('post_title' => stripslashes($the_post->post_title), 'post_content' => stripslashes($the_post->post_excerpt), 'post_name' => $the_post->post_name, 'post_status' => 'private', 'post_type' => 'forum'); $forum_settings = apply_filters('wplms_front_end_forum_vars', $forum_settings); $new_forum_id = wp_insert_post($forum_settings); update_post_meta($course_id, 'vibe_forum', $new_forum_id); } if (isset($_POST['level']) && $_POST['level']) { $level = $_POST['level']; if (is_numeric($level)) { wp_set_post_terms($course_id, $level, 'level'); } } if ($flag) { echo $message; } else { echo $course_id; do_action('wplms_course_settings_updated', $course_id); } die; }