本文整理汇总了PHP中BP_XProfile_Field::get_type方法的典型用法代码示例。如果您正苦于以下问题:PHP BP_XProfile_Field::get_type方法的具体用法?PHP BP_XProfile_Field::get_type怎么用?PHP BP_XProfile_Field::get_type使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BP_XProfile_Field
的用法示例。
在下文中一共展示了BP_XProfile_Field::get_type方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: 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();
}