%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/eirtvhdf/makkitrust.org/wp-content/plugins/wp-gdpr-compliance/Objects/Data/
Upload File :
Create Path :
Current File : /home/eirtvhdf/makkitrust.org/wp-content/plugins/wp-gdpr-compliance/Objects/Data/User.php

<?php

namespace WPGDPRC\Objects\Data;

use WPGDPRC\Integrations\WPRegistration;
use WPGDPRC\Utils\Anonymous;
use WPGDPRC\WordPress\Plugin;

/**
 * Class User
 * @package WPGDPRC\Objects\Data
 */
class User {

	/** @var int */
	protected $id = 0;
	/** @var string */
	protected $username = '';
	/** @var string */
	protected $displayName = '';
	/** @var string */
	protected $emailAddress = '';
	/** @var string */
	protected $website = '';
	/** @var array */
	protected $metaData = [];
	/** @var string */
	protected $registeredDate = '';

	/**
	 * User constructor
	 *
	 * @param int $id
	 */
	public function __construct( int $id = 0 ) {
		if ( empty( $id ) ) {
			return;
		}

		$this->setId( (int) $id );
		$this->load();
		$this->loadMetaData();
	}

	/**
	 * @return string
	 */
	public static function getDataSlug(): string {
		return WPRegistration::getInstance()->getID();
	}

	/**
	 * @return string
	 */
	public static function getDataName(): string {
		return __( 'Registration', 'wp-gdpr-compliance' );
	}

	/**
	 * Loads User attributes
	 */
	public function load() {
		global $wpdb;
		$query = 'SELECT * FROM `' . $wpdb->users . '` WHERE `ID` = %d';
		$row   = $wpdb->get_row( $wpdb->prepare( $query, $this->getId() ) );
		if ( empty( $row ) ) {
			return;
		}

		$this->loadByRow( $row );
	}

	/**
	 * Loads User meta data attribute
	 */
	public function loadMetaData() {
		$this->setMetaData( $this->getMetaDataByUserId( $this->getId() ) );
	}

	/**
	 * Sets User attributes based on DB row
	 *
	 * @param \stdClass $row
	 */
	public function loadByRow( \stdClass $row ) {
		$this->setId( $row->ID );
		$this->setUsername( $row->user_login );
		$this->setDisplayName( $row->display_name );
		$this->setEmailAddress( $row->user_email );
		$this->setWebsite( $row->user_url );
		$this->setRegisteredDate( $row->user_registered );
	}

	/**
	 * Gets meta data by User ID
	 *
	 * @param int $user_id
	 *
	 * @return array
	 */
	public function getMetaDataByUserId( int $user_id = 0 ): array {
		$output = [];
		if ( empty( $user_id ) ) {
			return $output;
		}

		global $wpdb;
		$output  = [];
		$query   = 'SELECT * FROM `' . $wpdb->usermeta . '` WHERE `user_id` = %d';
		$results = $wpdb->get_results( $wpdb->prepare( $query, $user_id ) );
		if ( empty( $results ) ) {
			return $output;
		}

		foreach ( $results as $row ) {
			$output[] = $row;
		}

		return $output;
	}

	/**
	 * Lists Users with specific email address
	 *
	 * @param string $email
	 *
	 * @return array
	 */
	public static function getByEmail( string $email = '' ): array {
		$output = [];
		if ( empty( $email ) ) {
			return $output;
		}

		global $wpdb;
		$query   = 'SELECT * FROM `' . $wpdb->users . '` WHERE `user_email` = %s';
		$results = $wpdb->get_results( $wpdb->prepare( $query, $email ) );
		if ( empty( $results ) ) {
			return $output;
		}

		foreach ( $results as $row ) {
			$object = new self();
			$object->loadByRow( $row );
			$output[] = $object;
		}

		return $output;
	}

	/**
	 * @param int $user_id
	 *
	 * @return int|\WP_Error
	 */
	public static function anonymize( int $user_id = 0 ) {
		$data = [
			'ID'            => (int) $user_id,
			'user_pass'     => wp_generate_password( 30 ),
			'display_name'  => 'DISPLAY_NAME',
			'user_nicename' => 'NICE_NAME' . $user_id,
			'first_name'    => 'FIRST_NAME',
			'last_name'     => 'LAST_NAME',
			'user_email'    => Anonymous::getEmailAddress( $user_id ),
			'nickname'      => 'NICK_NAME' . $user_id,
		];

		$meta = [
			'billing_first_name',
			'billing_last_name',
			'billing_company',
			'billing_address_1',
			'billing_address_2',
			'billing_city',
			'billing_postcode',
			'billing_state',
			'billing_country',
			'billing_email',
			'billing_phone',
			'shipping_first_name',
			'shipping_last_name',
			'shipping_company',
			'shipping_address_1',
			'shipping_address_2',
			'shipping_city',
			'shipping_postcode',
			'shipping_state',
			'shipping_country',
			'shipping_phone',
		];

		static::process_meta( $user_id, $meta );

		return wp_update_user( $data );
	}

	/**
	 * Anonymize usermeta
	 *
	 * @param int $user_id
	 * @param array $meta
	 */
	protected static function process_meta( int $user_id, array $meta ) {
		foreach ( $meta as $key ) {
			$value = strtoupper( $key ) . '_' . $user_id;
			update_user_meta( $user_id, $key, $value );
		}
	}

	/**
	 * @return int
	 */
	public function getId(): int {
		return (int) $this->id;
	}

	/**
	 * @param int $id
	 */
	public function setId( int $id = 0 ) {
		$this->id = $id;
	}

	/**
	 * @return string
	 */
	public function getUsername(): string {
		return $this->username;
	}

	/**
	 * @param string $username
	 */
	public function setUsername( string $username = '' ) {
		$this->username = $username;
	}

	/**
	 * @return string
	 */
	public function getDisplayName(): string {
		return $this->displayName;
	}

	/**
	 * @param string $display_name
	 */
	public function setDisplayName( string $display_name = '' ) {
		$this->displayName = $display_name;
	}

	/**
	 * @return string
	 */
	public function getEmailAddress(): string {
		return $this->emailAddress;
	}

	/**
	 * @param string $email_address
	 */
	public function setEmailAddress( string $email_address = '' ) {
		$this->emailAddress = $email_address;
	}

	/**
	 * @return string
	 */
	public function getWebsite(): string {
		return $this->website;
	}

	/**
	 * @param string $website
	 */
	public function setWebsite( string $website = '' ) {
		$this->website = $website;
	}

	/**
	 * @return array
	 */
	public function getMetaData(): array {
		return $this->metaData;
	}

	/**
	 * @param array $meta_data
	 */
	public function setMetaData( array $meta_data = [] ) {
		$this->metaData = $meta_data;
	}

	/**
	 * @return string
	 */
	public function getRegisteredDate(): string {
		return $this->registeredDate;
	}

	/**
	 * @param string $registered_date
	 */
	public function setRegisteredDate( string $registered_date = '' ) {
		$this->registeredDate = $registered_date;
	}
}

Zerion Mini Shell 1.0