create-or-fill-userisLH_Profile_Create_Or_Fill_User_Ability(includes/lh-profile-create-or-fill-user-ability-class.php). It replacedlh-buddypress-add-user/create-userand needs LH User Provisioning, which resolves existing users by email or registered alias (lh_user_provisioning_resolve_user()) and, from 1.3.3, seeds a new user’s BuddyPress last activity from their registration date without ever bumping an existing value. Its profile field schema comes fromLH_Profile_Fill_Fields.search-usersisLH_Profile_Search_Users_Ability(includes/lh-profile-search-users-ability-class.php). Since 3.8.0 it is the network’s only user-lookup ability. Other plugins extend it with thelh_profile_search_users_input_properties,_result_properties,_restrictionsand_resultsfilters: LH Membership adds membership status, and LH Contacts adds a signed short-livedvcard_url(LH Vcard did until LH Contacts replaced it).update-user-profile(3.15.0) isLH_Profile_Update_User_Profile_Ability(includes/lh-profile-update-user-profile-ability-class.php), the overwrite counterpart tocreate-or-fill-userfor corrections such as membership triage fixes. It validates withLH_Profile_Fill_Fields::validate_value()andLH_Profile_Known_As_Field::validate(), then writes throughLH_Profile_Field_Saverin overwrite mode withclear_empty. The confirm token is a site transient keyed by the token’s hash and bound to actor, user, site and the exact before/after values, asset-primary-sitedoes. Who may use it mirrorssync-display-nameand reuses itsreturn_claimed_roles(): profile fields are network-wide, sopromote_usersonly reaches users unclaimed on every site. Each apply recordsaccount.profile_updatedin LH Audit Trail (member-visible,retention_days0), with the lh-taskstask_idcaptured onwp_ability_normalize_inputat priority 5, before lh-tasks strips it. Capabilities are filterable withlh_profile_update_user_profile_return_capabilityand_return_unrestricted_capability. No member notification, by decision.- Since 3.16.0
update-user-profiletakesdisplay_name_from: the display name is built withLH_Profile_Sync_Display_Name_Ability::return_options()from the names as they will be after the change (overrides forfirst_name,last_nameandnickname), never free text, and goes into the same preview, token and audit entry. A display name that followed a changed Known as is recorded too.sync-display-namerecords its writes through the publicLH_Profile_Update_User_Profile_Ability::record_audit(), with the task fromtake_task_id(), so every display name change by ability is on the audit trail.
Ability implementation notes
If you like this plugin please consider making a donation to further development

