/**
 * Register member types.
 *
 * If the field type is set and has options. These options will dynamically build the member type
 * Use the name to set options into the xProfile Field Admin UI eg: Has CF
 *
 * @since 1.0.0
 */
function cfbgr_register_member_types()
{
    $saved_option = (int) bp_get_option('cfbgr_xfield_id', 0);
    if (empty($saved_option)) {
        return;
    }
    $field = xprofile_get_field($saved_option);
    // This case means the option was not deleted when it oughts to be
    if (empty($field->type_obj) || !is_a($field->type_obj, 'CF_BG_Member_Type_Field_Type')) {
        bp_delete_option('cfbgr_xfield_id');
        return;
    }
    // Object cache this field
    buddypress()->groups->restrictions->member_type_field = $field;
    $options = $field->get_children(true);
    if (!is_array($options)) {
        return;
    }
    foreach ($options as $member_type) {
        if (empty($member_type->name)) {
            continue;
        }
        bp_register_member_type(sanitize_key($member_type->name), array('labels' => array('name' => $member_type->name)));
    }
}
 /**
  * @ticket BP6996
  */
 public function test_should_contain_member_type_classes()
 {
     buddypress()->members->types = array();
     bp_register_member_type('foo');
     bp_register_member_type('bar');
     $u = $this->factory->user->create();
     bp_set_member_type($u, 'bar');
     if (bp_has_members(array('include' => array($u)))) {
         while (bp_members()) {
             bp_the_member();
             $found = bp_get_member_class();
         }
     }
     global $members_template;
     unset($members_template);
     buddypress()->members->types = array();
     $this->assertContains('member-type-bar', $found);
     $this->assertNotContains('member-type-foo', $found);
 }
Ejemplo n.º 3
0
 /**
  * Register all active member types
  * 
  */
 public function register_member_type()
 {
     //$this->register_post_type();
     $is_root_blog = bp_is_root_blog();
     //if we are not on the main bp site, switch to it before registering member type
     if (!$is_root_blog) {
         switch_to_blog(bp_get_root_blog_id());
     }
     //get all posts in memeber type post type
     $post_ids = $this->get_active_member_types();
     // get_posts( array( 'post_type'=> bp_member_type_generator()->get_post_type(), 'posts_per_page'=> -1, 'post_status'=> 'publish' ) );
     //update meta cache to avoid multiple db calls
     update_meta_cache('post', $post_ids);
     //build to register the memebr type
     $member_types = array();
     foreach ($post_ids as $post_id) {
         $is_active = get_post_meta($post_id, '_bp_member_type_is_active', true);
         $name = get_post_meta($post_id, '_bp_member_type_name', true);
         if (!$is_active || !$name) {
             continue;
             //if not active or no unique key, do not register
         }
         $enable_directory = get_post_meta($post_id, '_bp_member_type_enable_directory', true);
         $directory_slug = get_post_meta($post_id, '_bp_member_type_directory_slug', true);
         $has_dir = false;
         if ($enable_directory) {
             if ($directory_slug) {
                 $has_dir = $directory_slug;
             } else {
                 $has_dir = true;
             }
         }
         $member_types[$name] = array('labels' => array('name' => get_post_meta($post_id, '_bp_member_type_label_name', true), 'singular_name' => get_post_meta($post_id, '_bp_member_type_label_singular_name', true)), 'has_directory' => $has_dir);
     }
     foreach ($member_types as $member_type => $args) {
         bp_register_member_type($member_type, $args);
     }
     if (!$is_root_blog) {
         restore_current_blog();
     }
 }
 /**
  * @group member_types
  * @ticket BP5192
  */
 public function test_member_type_null_should_be_respected()
 {
     $g = $this->factory->xprofile_group->create();
     $f1 = $this->factory->xprofile_field->create(array('field_group_id' => $g));
     $f2 = $this->factory->xprofile_field->create(array('field_group_id' => $g));
     bp_register_member_type('foo');
     bp_register_member_type('bar');
     $field1 = new BP_XProfile_Field($f1);
     $field1->set_member_types(array('foo'));
     $found_groups = BP_XProfile_Group::get(array('member_type' => array('null'), 'fetch_fields' => true));
     // The groups aren't indexed, so we have to go looking for it.
     foreach ($found_groups as $fg) {
         if ($g == $fg->id) {
             $the_group = $fg;
         }
     }
     $this->assertNotContains($f1, wp_list_pluck($the_group->fields, 'id'));
     $this->assertContains($f2, wp_list_pluck($the_group->fields, 'id'));
 }
Ejemplo n.º 5
0
 public function test_get_member_type_label_order()
 {
     // Should be alphabetical, with the null option last.
     bp_register_member_type('aaa', array('labels' => array('name' => 'AAA')));
     bp_register_member_type('zzz', array('labels' => array('name' => 'ZZZ')));
     $this->field->set_member_types(array('aaa', 'zzz', 'null'));
     $expected = '(Member types: AAA, ZZZ, Users with no member type)';
     $this->assertSame($expected, $this->field->get_member_type_label());
 }
Ejemplo n.º 6
0
 /**
  * @group cache
  * @group member_types
  */
 public function test_member_type_should_be_prefetched_into_cache_during_user_query()
 {
     bp_register_member_type('foo');
     bp_register_member_type('bar');
     $users = $this->factory->user->create_many(4);
     bp_set_member_type($users[0], 'foo');
     bp_set_member_type($users[1], 'bar');
     bp_set_member_type($users[2], 'foo');
     $q = new BP_User_Query(array('include' => $users));
     $this->assertSame(array('foo'), wp_cache_get($users[0], 'bp_member_member_type'));
     $this->assertSame(array('bar'), wp_cache_get($users[1], 'bp_member_member_type'));
     $this->assertSame(array('foo'), wp_cache_get($users[2], 'bp_member_member_type'));
     $this->assertSame('', wp_cache_get($users[3], 'bp_member_member_type'));
 }
Ejemplo n.º 7
0
 /**
  * @group BP6138
  */
 public function test_bp_has_member_type_should_return_true_on_success()
 {
     $u1 = $this->factory->user->create();
     bp_register_member_type('foo');
     bp_register_member_type('bar');
     bp_set_member_type($u1, 'foo');
     bp_set_member_type($u1, 'bar', true);
     $this->assertTrue(bp_has_member_type($u1, 'foo'));
     $types = bp_get_member_type($u1, false);
     $this->assertEqualSets(array('bar', 'foo'), $types);
 }
Ejemplo n.º 8
0
 /**
  * @group bp_has_members
  * @ticket BP6286
  */
 public function test_bp_has_members_should_infer_member_type_from_get_param_comma_sep()
 {
     bp_register_member_type('foo');
     bp_register_member_type('bar');
     bp_register_member_type('baz');
     $users = $this->factory->user->create_many(4);
     bp_set_member_type($users[0], 'foo');
     bp_set_member_type($users[1], 'bar');
     bp_set_member_type($users[2], 'baz');
     global $members_template;
     $old_members_template = $members_template;
     $old_get = $_GET;
     $_GET['member_type'] = 'foo,bar';
     bp_has_members();
     $members = is_array($members_template->members) ? array_values($members_template->members) : array();
     $member_ids = wp_list_pluck($members, 'ID');
     $this->assertEqualSets(array($users[0], $users[1]), $member_ids);
     $GLOBALS['members_template'] = $old_members_template;
 }
Ejemplo n.º 9
0
 public function test_bp_get_member_type_should_not_return_unregistered_types()
 {
     $u1 = $this->factory->user->create();
     bp_register_member_type('foo');
     bp_set_member_type($u1, 'foo');
     // Directly set a type that hasn't been registered.
     bp_set_object_terms($u1, 'ugh', bp_get_member_type_tax_name(), true);
     $type = bp_get_member_type($u1, false);
     $this->assertEquals(array('foo'), $type);
 }
Ejemplo n.º 10
0
 /**
  * @ticket BP6286
  * @group member_types
  */
 public function test_member_directory_should_404_for_member_types_that_have_no_directory()
 {
     bp_register_member_type('foo', array('has_directory' => false));
     $this->go_to(bp_get_members_directory_permalink() . 'type/foo/');
     $this->assertTrue(is_404());
 }
Ejemplo n.º 11
0
 /**
  * Register all active member types
  * 
  */
 public function register_member_type()
 {
     //$this->register_post_type();
     $is_root_blog = bp_is_root_blog();
     //if we are not on the main bp site, switch to it before registering member type
     if (!$is_root_blog) {
         switch_to_blog(bp_get_root_blog_id());
     }
     //get all posts in memeber type post type
     $post_ids = bmt_get_active_member_types();
     //update meta cache to avoid multiple db calls
     update_meta_cache('post', $post_ids);
     //build to register the memebr type
     $member_types = array();
     foreach ($post_ids as $post_id) {
         $name = strtolower(get_post_meta($post_id, '_bp_member_type_label_singular_name', true));
         $name = str_replace(array(' ', ','), array('-', '-'), $name);
         $enable_directory = get_post_meta($post_id, '_bp_member_type_enable_directory', true);
         $has_dir = false;
         if ($enable_directory) {
             $has_dir = true;
         }
         $member_types[$name] = array('labels' => array('name' => get_post_meta($post_id, '_bp_member_type_label_name', true), 'singular_name' => $name), 'has_directory' => $has_dir);
     }
     foreach ($member_types as $member_type => $args) {
         bp_register_member_type($member_type, $args);
     }
     if (!$is_root_blog) {
         restore_current_blog();
     }
 }
 /**
  * @ticket BP6840
  */
 public function test_successful_format()
 {
     bp_register_member_type('foo', array('has_directory' => true));
     $expected = bp_get_members_directory_permalink() . 'type/foo/';
     $this->assertSame($expected, bp_get_member_type_directory_permalink('foo'));
 }