HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/insiders/wp-load/wp-content/plugins/internal-links/backend/user.php
<?php
namespace ILJ\Backend;

/**
 * User Environment
 *
 * Singleton, that has information about the current users (meta) data regarding the plugin
 *
 * @package ILJ\Backend
 * @since   1.1.2
 */
class User {

	const ILJ_META_USER = 'ilj_user';

	/**
	 * User instance
	 *
	 * @var   User
	 * @since 1.1.2
	 */
	private static $instance;

	/**
	 * User id
	 *
	 * @var   int
	 * @since 1.1.2
	 */
	private $user_id;

	/**
	 * User data
	 *
	 * @var   array
	 * @since 1.1.2
	 */
	private $user_data;

	protected function __construct() {
		$user_data_default = array(
			'hide_promo'   => false,
			'last_trigger' => null,
		);

		$user_id   = get_current_user_id();
		$user_data = get_user_meta($user_id, self::ILJ_META_USER, true);

		$this->user_id   = $user_id;
		$this->user_data = wp_parse_args($user_data, $user_data_default);
	}

	/**
	 * Get user data
	 *
	 * @since  1.1.2
	 * @param  string $key The key
	 * @return string|bool
	 */
	public static function get($key) {
		self::init();

		$user_data = self::$instance->user_data;
		if (array_key_exists($key, $user_data)) {
			return $user_data[$key];
		}
		return false;
	}

	/**
	 * Update user data
	 *
	 * @since  1.1.2
	 * @param  string $key   The key
	 * @param  mixed  $value The value
	 * @return void
	 */
	public static function update($key, $value) {
		 self::init();
		self::$instance->user_data[$key] = $value;
		update_user_meta(self::$instance->user_id, self::ILJ_META_USER, self::$instance->user_data);
	}

	/**
	 * Init User class
	 *
	 * @since  1.1.2
	 * @return void
	 */
	private static function init() {
		if (null === self::$instance) {
			self::$instance = new self();
		}
	}

	/**
	 * Retrieves the base date for the rating notification
	 *
	 * @since  1.2.0
	 * @return \DateTime
	 */
	public static function getRatingNotificationBaseDate() {
		$rating_notification = self::get('rating_notification');

		if (!$rating_notification) {
			$rating_notification = array();
		}

		if (!array_key_exists('base_date', $rating_notification)) {
			$base_date = new \DateTime('now');
			$base_date->modify('+14 day');
			$rating_notification['base_date'] = $base_date;

			self::update('rating_notification', $rating_notification);
		}

		return $rating_notification['base_date'];
	}

	/**
	 * Indicates if the rating notification can be shown
	 *
	 * @since  1.2.2
	 * @return bool
	 */
	public static function canShowRatingNotification() {
		$rating_notification = self::get('rating_notification');

		if (!$rating_notification) {
			$rating_notification = array();
		}

		if (!array_key_exists('show', $rating_notification)) {
			$rating_notification['show'] = true;
			self::update('rating_notification', $rating_notification);
		}

		return $rating_notification['show'];
	}

	/**
	 * Sets a new base date for rating notifier
	 *
	 * @since  1.2.0
	 * @param  \DateTime $date The new date
	 * @return void
	 */
	public static function setRatingNotificationBaseDate(\DateTime $date) {
		$rating_notification              = self::get('rating_notification');
		$rating_notification['base_date'] = $date;
		self::update('rating_notification', $rating_notification);
	}

	/**
	 * Unsets the rating notification
	 *
	 * @since  1.2.2
	 * @return void
	 */
	public static function unsetRatingNotification() {
		$rating_notification         = self::get('rating_notification');
		$rating_notification['show'] = false;
		self::update('rating_notification', $rating_notification);
	}

	/**
	 * Returns the name of the current user
	 *
	 * @since  1.2.0
	 * @return string
	 */
	public static function getName() {
		$user = wp_get_current_user();
		return $user->data->display_name;
	}
}