Exemplo n.º 1
0
 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);
 }
Exemplo n.º 3
0
 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']);
     }
 }
Exemplo n.º 5
0
 /**
  * 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));
 }
Exemplo n.º 6
0
 /**
  * @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;
}
Exemplo n.º 10
0
 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);
         }
     }
 }
Exemplo n.º 11
0
 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;
 }
Exemplo n.º 12
0
/**
 * 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);
}
Exemplo n.º 13
0
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);
}
Exemplo n.º 14
0
 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']);
         }
     }
 }
Exemplo n.º 15
0
 /**
  * @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'));
 }
Exemplo n.º 16
0
/**
 * 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);
}
Exemplo n.º 17
0
 /**
  * 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'));
                 }
             }
         }
     }
 }
Exemplo n.º 18
0
 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();
 }
Exemplo n.º 19
0
 /**
  * @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));
 }
Exemplo n.º 20
0
/**
 * 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));
    }
}
Exemplo n.º 22
0
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;
}
Exemplo n.º 23
0
 /**
  * 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;
 }
Exemplo n.º 25
0
 /**
  * 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));
 }
Exemplo n.º 26
0
 /**
  * @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']);
 }
Exemplo n.º 27
0
/**
 * 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));
 }
Exemplo n.º 30
0
 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;
 }