File "class-user.php"

Full path: /home/dora/public_html/wp-content/plugins/wp-grid-builder/includes/settings/forms/class-user.php
File size: 1.74 KB
MIME-type: --
Charset: utf-8

<?php
/**
 * User
 *
 * @package   WP Grid Builder
 * @author    Loïc Blascos
 * @copyright 2019-2022 Loïc Blascos
 */

namespace WP_Grid_Builder\Includes\Settings\Forms;

use WP_Grid_Builder\Includes\Settings\Settings;

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Handle user fields
 *
 * @class WP_Grid_Builder\Includes\Settings\Forms\User
 * @since 1.0.0
 */
class User {

	/**
	 * Constructor
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function __construct() {

		// Render user fields on profile page.
		add_action( 'edit_user_profile', [ $this, 'add_meta_boxes' ] );
		// Save user fields from profile page.
		add_action( 'edit_user_profile_update', [ $this, 'save_user' ] );

	}

	/**
	 * Get settings for users
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array User settings
	 */
	public function get_user_settings() {

		return array_filter(
			Settings::get_instance()->get(),
			function( $setting ) {
				return ! empty( $setting['users'] );
			}
		);

	}

	/**
	 * Render meta box
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param object $user A WP_User object.
	 */
	public function add_meta_boxes( $user ) {

		$settings = $this->get_user_settings();

		foreach ( $settings as $setting ) {

			$values = get_user_meta( $user->ID, '_' . WPGB_SLUG, true );

			wp_nonce_field( 'wpgb_fields', 'wpgb_fields_nonce', false );
			Settings::get_instance()->render( $setting['id'], $values );

		}
	}

	/**
	 * Save user fields
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param int $user_id User ID.
	 */
	public function save_user( $user_id ) {

		// Check user capability.
		if ( ! current_user_can( 'edit_user', $user_id ) ) {
			return;
		}

		Settings::get_instance()->save( $user_id, 'user' );

	}
}