File manager - Edit - /home/monara/public_html/intern_web/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php
Back
<?php /** * BuddyPress Settings Functions * * @package BuddyPress * @subpackage SettingsFunctions * @since 1.5.0 */ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; /** * Update email notification settings for a specific user. * * @since 2.3.5 * * @param int $user_id ID of the user whose settings are being updated. * @param array $settings Settings array. */ function bp_settings_update_notification_settings( $user_id, $settings ) { $user_id = (int) $user_id; $settings = bp_settings_sanitize_notification_settings( $settings ); foreach ( $settings as $setting_key => $setting_value ) { bp_update_user_meta( $user_id, $setting_key, $setting_value ); } } /** * Sanitize email notification settings as submitted by a user. * * @since 2.3.5 * * @param array $settings Array of settings. * @return array Sanitized settings. */ function bp_settings_sanitize_notification_settings( $settings = array() ) { $sanitized_settings = array(); if ( empty( $settings ) ) { return $sanitized_settings; } // Get registered notification keys. $registered_notification_settings = bp_settings_get_registered_notification_keys(); /* * We sanitize values for core notification keys. * * @todo use register_meta() */ $core_notification_settings = array( 'notification_messages_new_message', 'notification_activity_new_mention', 'notification_activity_new_reply', 'notification_groups_invite', 'notification_groups_group_updated', 'notification_groups_admin_promotion', 'notification_groups_membership_request', 'notification_membership_request_completed', 'notification_friends_friendship_request', 'notification_friends_friendship_accepted', ); foreach ( (array) $settings as $key => $value ) { // Skip if not a registered setting. if ( ! in_array( $key, $registered_notification_settings, true ) ) { continue; } // Force core keys to 'yes' or 'no' values. if ( in_array( $key, $core_notification_settings, true ) ) { $value = 'yes' === $value ? 'yes' : 'no'; } $sanitized_settings[ $key ] = $value; } return $sanitized_settings; } /** * Build a dynamic list of allowed notification keys, based on what's hooked to 'bp_notification_settings'. * * @since 2.3.5 * * @return array */ function bp_settings_get_registered_notification_keys() { ob_start(); /** * Fires at the start of the building of the notification keys allowed list. * * @since 1.0.0 */ do_action( 'bp_notification_settings' ); $screen = ob_get_clean(); $matched = preg_match_all( '/<input[^>]+name="notifications\[([^\]]+)\]/', $screen, $matches ); if ( $matched && isset( $matches[1] ) ) { $allowed_key_list = $matches[1]; } else { $allowed_key_list = array(); } return $allowed_key_list; } /** * Finds and exports personal data associated with an email address from the Settings component. * * @since 4.0.0 * * @param string $email_address The user's email address. * @param int $page Batch number. * @return array An array of personal data. */ function bp_settings_personal_data_exporter( $email_address, $page ) { $email_address = trim( $email_address ); $data_to_export = array(); $user = get_user_by( 'email', $email_address ); if ( ! $user ) { return array( 'data' => array(), 'done' => true, ); } $yes = __( 'Yes', 'buddypress' ); $no = __( 'No', 'buddypress' ); $user_settings = array(); // These settings all default to 'yes' when nothing is saved, so we have to do some pre-processing. $notification_settings = array(); if ( bp_is_active( 'activity' ) ) { $notification_settings[] = array( 'name' => __( 'Receive email when a member mentions you in an update?', 'buddypress' ), 'key' => 'notification_activity_new_mention', ); $notification_settings[] = array( 'name' => __( 'Receive email when a member replies to an update or comment you\'ve posted?', 'buddypress' ), 'key' => 'notification_activity_new_reply', ); } if ( bp_is_active( 'messages' ) ) { $notification_settings[] = array( 'name' => __( 'Receive email when a member sends you a new message?', 'buddypress' ), 'key' => 'notification_messages_new_message', ); } if ( bp_is_active( 'friends' ) ) { $notification_settings[] = array( 'name' => __( 'Receive email when a member invites you to join a group?', 'buddypress' ), 'key' => 'notification_groups_invite', ); } if ( bp_is_active( 'groups' ) ) { $notification_settings[] = array( 'name' => __( 'Receive email when group information is updated?', 'buddypress' ), 'key' => 'notification_groups_group_updated', ); $notification_settings[] = array( 'name' => __( 'Receive email when you are promoted to a group administrator or moderator?', 'buddypress' ), 'key' => 'notification_groups_admin_promoted', ); $notification_settings[] = array( 'name' => __( 'Receive email when a member requests to join a private group for which you are an admin?', 'buddypress' ), 'key' => 'notification_groups_membership_request', ); $notification_settings[] = array( 'name' => __( 'Receive email when your request to join a group has been approved or denied?', 'buddypress' ), 'key' => 'notification_membership_request_completed', ); } foreach ( $notification_settings as $notification_setting ) { $user_notification_setting = bp_get_user_meta( $user->ID, $notification_setting['key'], true ); if ( empty( $user_notification_setting ) ) { $user_notification_setting = 'yes'; } $user_settings[] = array( 'name' => $notification_setting['name'], 'value' => 'yes' === $user_notification_setting ? $yes : $no, ); } if ( function_exists( 'bp_nouveau_groups_get_group_invites_setting' ) ) { $user_settings[] = array( 'name' => __( 'Receive group invitations from my friends only?', 'buddypress' ), 'value' => bp_nouveau_groups_get_group_invites_setting() ? $yes : $no, ); } $data_to_export[] = array( 'group_id' => 'bp_settings', 'group_label' => __( 'Settings', 'buddypress' ), 'item_id' => "bp-settings-{$user->ID}", 'data' => $user_settings, ); return array( 'data' => $data_to_export, 'done' => true, ); } /** * Fetches a user's personal data request. * * @since 4.0.0 * * @param int $user_id WP user ID. * @return WP_User_Request|bool WP_User_Request object on success, bool false on failure. */ function bp_settings_get_personal_data_request( $user_id = 0 ) { if ( empty( $user_id ) ) { $user_id = bp_displayed_user_id(); } if ( empty( $user_id ) ) { return false; } $user = get_userdata( $user_id ); if ( empty( $user ) ) { return false; } $query = new WP_Query( array( 'author' => (int) $user_id, 'post_type' => 'user_request', 'post_status' => 'any', 'post_name__in' => array( 'export_personal_data', ), ) ); if ( ! empty( $query->post ) ) { return wp_get_user_request( $query->post->ID ); } else { return false; } } /** * Fetches the expiration date for when a user request expires. * * @since 4.0.0 * * @param WP_User_Request $request User request object. * @return string Formatted date. */ function bp_settings_get_personal_data_expiration_date( WP_User_Request $request ) { /** This filter is documented in wp-includes/functions.php */ $expiration = apply_filters( 'wp_privacy_export_expiration', 3 * DAY_IN_SECONDS ); return bp_format_time( $request->completed_timestamp + $expiration, true ); } /** * Fetches the confirmation date for a user request object. * * @since 4.0.0 * * @param WP_User_Request $request User request object. * @return string Formatted date for the confirmation date. */ function bp_settings_get_personal_data_confirmation_date( WP_User_Request $request ) { return bp_format_time( $request->confirmed_timestamp, true ); } /** * Fetches the URL for a personal data export file. * * @since 4.0.0 * * @param WP_User_Request $request User request object. * @return string Export file URL. */ function bp_settings_get_personal_data_export_url( WP_User_Request $request ) { if ( ! bp_settings_personal_data_export_exists( $request ) ) { return ''; } $file = get_post_meta( $request->ID, '_export_file_name', true ); return wp_privacy_exports_url() . $file; } /** * Check if the generated data export file still exists or not. * * @since 4.0.0 * * @param WP_User_Request $request User request object. * @return bool */ function bp_settings_personal_data_export_exists( WP_User_Request $request ) { $file = get_post_meta( $request->ID, '_export_file_name', true ); if ( empty( $file ) ) { return false; } return file_exists( wp_privacy_exports_dir() . $file ); } /** * Template tag to output a list of data exporter items. * * Piggybacks off of the 'wp_privacy_personal_data_exporters' filter and the * 'exporter_friendly_name' key, which is meant for the admin area. * * @since 4.0.0 * @since 5.0.0 Looks for a potential exporter's BP/custom friendly name. */ function bp_settings_data_exporter_items() { /** This filter is documented in /wp-admin/includes/ajax-actions.php */ $exporters = apply_filters( 'wp_privacy_personal_data_exporters', array() ); $custom_friendly_names = apply_filters( 'bp_settings_data_custom_friendly_names', array( 'wordpress-comments' => _x( 'Comments', 'WP Comments data exporter friendly name', 'buddypress' ), 'wordpress-media' => _x( 'Media', 'WP Media data exporter friendly name', 'buddypress' ), 'wordpress-user' => _x( 'Personal information', 'WP Media data exporter friendly name', 'buddypress' ), ) ); ?> <ul> <?php foreach ( $exporters as $exporter => $data ) : // Use the exporter friendly name by default. $friendly_name = $data['exporter_friendly_name']; /** * Use the exporter friendly name if directly available * into the exporters array. */ if ( isset( $data['exporter_bp_friendly_name'] ) ) { $friendly_name = $data['exporter_bp_friendly_name']; // Look for a potential match into the custom friendly names. } elseif ( isset( $custom_friendly_names[ $exporter ] ) ) { $friendly_name = $custom_friendly_names[ $exporter ]; } /** * Filters the data exporter friendly name for display on the "Settings > Data" page. * * @since 4.0.0 * @since 5.0.0 replaces the `$name` parameter with the `$friendly_name` one. * * @param string $friendly_name Data exporter friendly name. * @param string $exporter Internal exporter name. */ $item = apply_filters( 'bp_settings_data_exporter_name', $friendly_name, $exporter ); ?> <li><?php echo esc_html( $item ); ?></li> <?php endforeach; ?> </ul> <?php } /** * Whether a user can delete self account from front-end. * * @since 12.0.0 * * @return bool True if user can delete self account from front-end. False otherwise. */ function bp_settings_can_delete_self_account() { return ! user_can( bp_displayed_user_id(), 'delete_users' ); } /** * Whether to show the Delete account front-end nav. * * @since 12.0.0 * * @return bool True if user can be shown the Delete account nav. False otherwise. */ function bp_settings_show_delete_account_nav() { return ( ! bp_disable_account_deletion() && bp_is_my_profile() ) || bp_current_user_can( 'delete_users' ); } /** * Whether to show the Capability front-end nav. * * @since 12.0.0 * * @return bool True if user can be shown the Capability nav. False otherwise. */ function bp_settings_show_capability_nav() { return ! bp_is_my_profile(); }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings