本文整理汇总了PHP中BP_XProfile_ProfileData::save方法的典型用法代码示例。如果您正苦于以下问题:PHP BP_XProfile_ProfileData::save方法的具体用法?PHP BP_XProfile_ProfileData::save怎么用?PHP BP_XProfile_ProfileData::save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BP_XProfile_ProfileData
的用法示例。
在下文中一共展示了BP_XProfile_ProfileData::save方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_bp_has_profile_meta_cache_update_meta_cache_false
/**
* @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'));
}
示例2: xprofile_set_field_data
/**
* A simple function to set profile data for a specific field for a specific user.
*
* @package BuddyPress Core
* @param int|string $field The ID of the field, or the $name of the field.
* @param int|$user_id The ID of the user
* @param mixed $value The value for the field you want to set for the user.
* @param $is_required Whether or not the field is required
* @uses xprofile_get_field_id_from_name() Gets the ID for the field based on the name.
* @return bool True on success, false on failure.
*/
function xprofile_set_field_data($field, $user_id, $value, $is_required = false)
{
if (is_numeric($field)) {
$field_id = $field;
} else {
$field_id = xprofile_get_field_id_from_name($field);
}
if (empty($field_id)) {
return false;
}
$field = new BP_XProfile_Field($field_id);
$field_type = BP_XProfile_Field::get_type($field_id);
$field_type_obj = bp_xprofile_create_field_type($field_type);
/**
* Filter the raw submitted profile field value.
*
* Use this filter to modify the values submitted by users before
* doing field-type-specific validation.
*
* @since BuddyPress (2.1.0)
*
* @param mixed $value Value passed to xprofile_set_field_data()
* @param BP_XProfile_Field $field Field object.
* @param BP_XProfile_Field_Type $field_type_obj Field type object.
*/
$value = apply_filters('bp_xprofile_set_field_data_pre_validate', $value, $field, $field_type_obj);
// Special-case support for integer 0 for the number field type
if ($is_required && !is_integer($value) && $value !== '0' && (empty($value) || !is_array($value) && !strlen(trim($value)))) {
return false;
}
/**
* Certain types of fields (checkboxes, multiselects) may come through empty.
* Save as empty array so this isn't overwritten by the default on next edit.
*
* Special-case support for integer 0 for the number field type
*/
if (empty($value) && !is_integer($value) && $value !== '0' && $field_type_obj->accepts_null_value) {
$value = array();
}
// If the value is empty, then delete any field data that exists, unless the field is of a type where null values are semantically meaningful
if (empty($value) && !is_integer($value) && $value !== '0' && !$field_type_obj->accepts_null_value) {
xprofile_delete_field_data($field_id, $user_id);
return true;
}
// For certain fields, only certain parameters are acceptable, so add them to the whitelist.
if ($field_type_obj->supports_options) {
$field_type_obj->set_whitelist_values(wp_list_pluck($field->get_children(), 'name'));
}
// Check the value is in an accepted format for this form field.
if (!$field_type_obj->is_valid($value)) {
return false;
}
$field = new BP_XProfile_ProfileData();
$field->field_id = $field_id;
$field->user_id = $user_id;
$field->value = maybe_serialize($value);
return $field->save();
}
示例3: xprofile_set_field_data
/**
* A simple function to set profile data for a specific field for a specific user.
*
* @package BuddyPress Core
* @param $field The ID of the field, or the $name of the field.
* @param $user_id The ID of the user
* @param $value The value for the field you want to set for the user.
* @global object $bp Global BuddyPress settings object
* @uses xprofile_get_field_id_from_name() Gets the ID for the field based on the name.
* @return true on success, false on failure.
*/
function xprofile_set_field_data($field, $user_id, $value, $is_required = false)
{
if (is_numeric($field)) {
$field_id = $field;
} else {
$field_id = xprofile_get_field_id_from_name($field);
}
if (empty($field_id)) {
return false;
}
if ($is_required && (empty($value) || !is_array($value) && !strlen(trim($value)))) {
return false;
}
$field = new BP_XProfile_Field($field_id);
// If the value is empty, then delete any field data that exists, unless the field is of a
// type where null values are semantically meaningful
if (empty($value) && 'checkbox' != $field->type && 'multiselectbox' != $field->type) {
xprofile_delete_field_data($field_id, $user_id);
return true;
}
// Check the value is an acceptable value
if ('checkbox' == $field->type || 'radio' == $field->type || 'selectbox' == $field->type || 'multiselectbox' == $field->type) {
$options = $field->get_children();
foreach ($options as $option) {
$possible_values[] = $option->name;
}
if (is_array($value)) {
foreach ($value as $i => $single) {
if (!in_array($single, (array) $possible_values)) {
unset($value[$i]);
}
}
// Reset the keys by merging with an empty array
$value = array_merge(array(), $value);
} else {
if (!in_array($value, (array) $possible_values)) {
return false;
}
}
}
$field = new BP_XProfile_ProfileData();
$field->field_id = $field_id;
$field->user_id = $user_id;
$field->value = maybe_serialize($value);
return $field->save();
}
示例4: xprofile_extract_signup_meta
function xprofile_extract_signup_meta($user_id, $meta)
{
// Extract signup meta fields to fill out profile
$field_ids = $meta['xprofile_field_ids'];
$field_ids = explode(',', $field_ids);
// Loop through each bit of profile data and save it to profile.
for ($i = 0; $i < count($field_ids); $i++) {
if (empty($field_ids[$i])) {
continue;
}
$field_value = $meta["field_{$field_ids[$i]}"];
$field = new BP_XProfile_ProfileData();
$field->user_id = $user_id;
$field->value = $field_value;
$field->field_id = $field_ids[$i];
$field->last_updated = time();
$field->save();
}
update_usermeta($user_id, 'last_activity', time());
}
示例5: xprofile_set_field_data
/**
* xprofile_set_field_data()
*
* A simple function to set profile data for a specific field for a specific user.
*
* @package BuddyPress Core
* @param $field_name The name of the field to set data for.
* @param $user_id The ID of the user
* @param $value The value for the field you want to set for the user.
* @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
* @uses xprofile_get_field_id_from_name() Gets the ID for the field based on the name.
* @return true on success, false on failure.
*/
function xprofile_set_field_data($field_name, $user_id, $value)
{
global $bp;
if (!($field_id = xprofile_get_field_id_from_name($field_name))) {
return false;
}
$field = new BP_XProfile_ProfileData();
$field->field_id = $field_id;
$field->user_id = $user_id;
$field->value = $value;
return $field->save();
}
示例6: test_get_all_for_user_uncached
/**
* @group get_all_for_user
*/
public function test_get_all_for_user_uncached()
{
$u = $this->factory->user->create();
$g1 = $this->factory->xprofile_group->create();
$g2 = $this->factory->xprofile_group->create();
$f1 = $this->factory->xprofile_field->create(array('type' => 'textbox', 'field_group_id' => $g1));
$f2 = $this->factory->xprofile_field->create(array('type' => 'radio', 'field_group_id' => $g2));
$time = bp_core_current_time();
// Get the fullname field - hackish
$f0_id = xprofile_get_field_id_from_name(bp_xprofile_fullname_field_name());
$f0 = new BP_XProfile_Field($f0_id);
$g0 = new BP_XProfile_Group($f0->group_id);
$d0 = new BP_XProfile_ProfileData($f0->id, $u);
$d1 = new BP_XProfile_ProfileData();
$d1->user_id = $u;
$d1->field_id = $f1;
$d1->value = 'foo';
$d1->last_updated = $time;
$d1->save();
$d2 = new BP_XProfile_ProfileData();
$d2->user_id = $u;
$d2->field_id = $f2;
$d2->value = 'bar';
$d2->last_updated = $time;
$d2->save();
// Ensure it's deleted from cache
wp_cache_delete("{$u}:{$f1}", 'bp_xprofile_data');
wp_cache_delete("{$u}:{$f2}", 'bp_xprofile_data');
$u_obj = new WP_User($u);
$g1_obj = new BP_XProfile_Group($g1);
$g2_obj = new BP_XProfile_Group($g2);
$f1_obj = new BP_XProfile_Field($f1);
$f2_obj = new BP_XProfile_Field($f2);
$expected = array('user_login' => $u_obj->user_login, 'user_nicename' => $u_obj->user_nicename, 'user_email' => $u_obj->user_email, $f0->name => array('field_group_id' => $g0->id, 'field_group_name' => $g0->name, 'field_id' => $f0->id, 'field_type' => $f0->type, 'field_data' => $d0->value), $f1_obj->name => array('field_group_id' => $g1, 'field_group_name' => $g1_obj->name, 'field_id' => $f1, 'field_type' => $f1_obj->type, 'field_data' => $d1->value), $f2_obj->name => array('field_group_id' => $g2, 'field_group_name' => $g2_obj->name, 'field_id' => $f2, 'field_type' => $f2_obj->type, 'field_data' => $d2->value));
$this->assertEquals($expected, BP_XProfile_ProfileData::get_all_for_user($u));
}
示例7: xprofile_set_field_data
/**
* xprofile_set_field_data()
*
* A simple function to set profile data for a specific field for a specific user.
*
* @package BuddyPress Core
* @param $field The ID of the field, or the $name of the field.
* @param $user_id The ID of the user
* @param $value The value for the field you want to set for the user.
* @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
* @uses xprofile_get_field_id_from_name() Gets the ID for the field based on the name.
* @return true on success, false on failure.
*/
function xprofile_set_field_data( $field, $user_id, $value, $is_required = false ) {
if ( is_numeric( $field ) )
$field_id = $field;
else
$field_id = xprofile_get_field_id_from_name( $field );
if ( !$field_id )
return false;
if ( $is_required && ( empty( $value ) || !strlen( trim( $value ) ) ) )
return false;
/* If the value is empty, then delete any field data that exists */
if ( empty( $value ) ) {
xprofile_delete_field_data( $field_id, $user_id );
return true;
}
$field = new BP_XProfile_Field( $field_id );
/* Check the value is an acceptable value */
if ( 'checkbox' == $field->type || 'radio' == $field->type || 'selectbox' == $field->type || 'multiselectbox' == $field->type ) {
$options = $field->get_children();
foreach( $options as $option )
$possible_values[] = $option->name;
if ( is_array( $value ) ) {
foreach( $value as $i => $single ) {
if ( !in_array( $single, (array)$possible_values ) )
unset( $value[$i] );
}
if ( empty( $value ) )
return false;
/* Reset the keys by merging with an empty array */
$value = array_merge( array(), $value );
} else {
if ( !in_array( $value, (array)$possible_values ) )
return false;
}
}
$field = new BP_XProfile_ProfileData();
$field->field_id = $field_id;
$field->user_id = $user_id;
$field->value = maybe_serialize( $value );
return $field->save();
}