示例#1
0
 /**
  * @group bp_xprofile_update_meta_cache
  * @group bp_has_profile
  */
 public function test_bp_has_profile_meta_cache_update_meta_cache_false()
 {
     $u = $this->factory->user->create();
     $g = $this->factory->xprofile_group->create();
     $f = $this->factory->xprofile_field->create(array('field_group_id' => $g));
     $d = new BP_XProfile_ProfileData($f, $u);
     $d->user_id = $u;
     $d->field_id = $f;
     $d->value = 'foo';
     $d->last_updated = bp_core_current_time();
     $d->save();
     bp_xprofile_add_meta($g, 'group', 'group_foo', 'group_bar');
     bp_xprofile_add_meta($f, 'field', 'field_foo', 'field_bar');
     bp_xprofile_add_meta($d->id, 'data', 'data_foo', 'data_bar');
     // prime cache
     bp_has_profile(array('user_id' => $u, 'profile_group_id' => $g, 'update_meta_cache' => false));
     $this->assertFalse(wp_cache_get($g, 'xprofile_group_meta'));
     $this->assertFalse(wp_cache_get($f, 'xprofile_field_meta'));
     $this->assertFalse(wp_cache_get($d->id, 'xprofile_data_meta'));
 }
 /**
  * Helper function for handling xProfile Meta
  *
  * @since  1.0
  *
  * @param int 		$object_id
  * @param string   	$object_type
  * @param string   	$meta_key
  * @param string   	$meta_value
  *
  */
 private function __update_xprofile_meta($object_id, $object_type, $meta_key, $meta_value = '')
 {
     if (empty($meta_value) || !$meta_value) {
         bp_xprofile_delete_meta($object_id, $object_type, $meta_key);
     } elseif (!bp_xprofile_get_meta($object_id, $object_type, $meta_key)) {
         bp_xprofile_add_meta($object_id, $object_type, $meta_key, $meta_value);
     } else {
         bp_xprofile_update_meta($object_id, $object_type, $meta_key, $meta_value);
     }
 }
示例#3
0
 /**
  * @group xprofilemeta
  * @group bp_xprofile_add_meta
  */
 public function test_bp_xprofile_add_meta_existing_not_unique()
 {
     $g = $this->factory->xprofile_group->create();
     bp_xprofile_add_meta($g, 'group', 'foo', 'bar');
     $this->assertNotEmpty(bp_xprofile_add_meta($g, 'group', 'foo', 'baz'));
 }
示例#4
0
 public function test_get_fields_for_member_type_should_accept_an_array_of_member_types()
 {
     $f2 = $this->factory->xprofile_field->create(array('field_group_id' => $this->field_group_id));
     bp_xprofile_add_meta($this->field_id, 'field', 'member_type', 'foo');
     bp_xprofile_add_meta($f2, 'field', 'member_type', 'bar');
     $found = BP_XProfile_Field::get_fields_for_member_type(array('foo', 'bar'));
     $this->assertEqualSets(array(1, $this->field_id, $f2), array_keys($found));
 }
 /**
  * Sets the member types for this field.
  *
  * @since 2.4.0
  *
  * @param array $member_types Array of member types. Can include 'null' (users with no type) in addition to any
  *                            registered types.
  * @param bool  $append       Whether to append to existing member types. If false, all existing member type
  *                            associations will be deleted before adding your `$member_types`. Default false.
  *
  * @return array Member types for the current field, after being saved.
  */
 public function set_member_types($member_types, $append = false)
 {
     // Unset invalid member types.
     $types = array();
     foreach ($member_types as $member_type) {
         // 'null' is a special case - it represents users without a type.
         if ('null' === $member_type || bp_get_member_type_object($member_type)) {
             $types[] = $member_type;
         }
     }
     // When `$append` is false, delete all existing types before adding new ones.
     if (!$append) {
         bp_xprofile_delete_meta($this->id, 'field', 'member_type');
         /*
          * We interpret an empty array as disassociating the field from all types. This is
          * represented internally with the '_none' flag.
          */
         if (empty($types)) {
             bp_xprofile_add_meta($this->id, 'field', 'member_type', '_none');
         }
     }
     /*
      * Unrestricted fields are represented in the database as having no 'member_type'.
      * We detect whether a field is being set to unrestricted by checking whether the
      * list of types passed to the method is the same as the list of registered types,
      * plus the 'null' pseudo-type.
      */
     $_rtypes = bp_get_member_types();
     $rtypes = array_values($_rtypes);
     $rtypes[] = 'null';
     sort($types);
     sort($rtypes);
     // Only save if this is a restricted field.
     if ($types !== $rtypes) {
         // Save new types.
         foreach ($types as $type) {
             bp_xprofile_add_meta($this->id, 'field', 'member_type', $type);
         }
     }
     // Reset internal cache of member types.
     $this->member_types = null;
     /**
      * Fires after a field's member types have been updated.
      *
      * @since 2.4.0
      *
      * @param BP_XProfile_Field $this Field object.
      */
     do_action('bp_xprofile_field_set_member_type', $this);
     // Refetch fresh items from the database.
     return $this->get_member_types();
 }
示例#6
0
function _likebtn_save_bp_member_votes($entity_id, $likes, $dislikes, $likes_minus_dislikes)
{
    global $wpdb;
    if (!_likebtn_is_bp_active()) {
        return false;
    }
    $bp_xprofile = $wpdb->get_row("\n        SELECT id\n        FROM " . $wpdb->prefix . "bp_xprofile_data\n        WHERE user_id = {$entity_id}\n    ");
    if (!empty($bp_xprofile)) {
        if ($likes !== null) {
            if (count(bp_xprofile_get_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES)) > 1) {
                bp_xprofile_delete_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES);
                bp_xprofile_add_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES, $likes, true);
            } else {
                bp_xprofile_update_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES, $likes);
            }
        }
        if ($dislikes !== null) {
            if (count(bp_xprofile_get_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_DISLIKES)) > 1) {
                bp_xprofile_delete_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_DISLIKES);
                bp_xprofile_add_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_DISLIKES, $dislikes, true);
            } else {
                bp_xprofile_update_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_DISLIKES, $dislikes);
            }
        }
        if ($likes_minus_dislikes !== null) {
            if (count(bp_xprofile_get_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES)) > 1) {
                bp_xprofile_delete_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES);
                bp_xprofile_add_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes, true);
            } else {
                bp_xprofile_update_meta($entity_id, LIKEBTN_BP_XPROFILE_OBJECT_TYPE, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes);
            }
        }
        return true;
    }
    return false;
}
 /**
  * Update a field's or group's member types meta value
  *
  * @since 1.0.0
  *
  * @uses BP_XProfile_Field_For_Member_Types::get_xprofile_member_types()
  * @uses bp_xprofile_delete_meta()
  * @uses bp_xprofile_add_meta()
  * 
  * @param int $object_id Field or group ID
  * @param string $meta_type Type of meta, either 'field' or 'group'
  * @param array $selected_types Selected member type names
  * @return bool Update success or failure
  */
 public function update_xprofile_member_types($object_id, $meta_type, $selected_types)
 {
     $current_types = $this->get_xprofile_member_types($object_id, $meta_type);
     // Delete unselected types
     foreach ($current_types as $type) {
         if (!in_array($type, $selected_types)) {
             bp_xprofile_delete_meta($object_id, $meta_type, 'member-type', $type, false);
         }
     }
     // Add new selected types
     foreach ($selected_types as $type) {
         if (!in_array($type, $current_types)) {
             bp_xprofile_add_meta($object_id, $meta_type, 'member-type', $type, false);
         }
     }
     return true;
 }