Sindbad~EG File Manager

Current Path : /home/xiedrke/entrepot/wp-content/plugins/realpress/app/Models/
Upload File :
Current File : /home/xiedrke/entrepot/wp-content/plugins/realpress/app/Models/UserModel.php

<?php

namespace RealPress\Models;

use RealPress\Helpers\Config;
use RealPress\Helpers\User;

/**
 * UserModel
 */
class UserModel {

	private static $user_data;

	/**
	 * @param $user_id
	 * @param string $size
	 *
	 * @return false|string
	 */
	public static function get_user_avatar_url( $user_id = null, string $size = 'thumbnail' ) {
		$user_id   = empty( $user_id ) ? get_current_user_id() : $user_id;
		$meta_data = self::get_user_meta_data( $user_id );
		$avatar_id = $meta_data['user_profile:fields:profile_picture'] ?? '';
		if ( empty( $avatar_id ) ) {
			$avatar_url = get_avatar_url( $user_id, array( 'size' => $size ) );
		} else {
			$avatar_url = wp_get_attachment_image_url( $avatar_id, $size );
		}

		return $avatar_url;
	}

	public static function get_user_meta_data( $user_id ) {
		$user_meta_data = array();

		if ( ! empty( $user_id ) ) {
			$user_meta_data = get_user_meta( $user_id, REALPRESS_USER_META_KEY, true );
		}
		if ( empty( $user_meta_data ) ) {
			$config         = Config::instance()->get( 'agent-profile' );
			$user_meta_data = Config::instance()->get_default_data( $config );
		}

		return $user_meta_data;
	}

	/**
	 * @param $user_id
	 * @param $field
	 *
	 * @return int|mixed|string
	 */
	public static function get_field( $user_id, $field ) {
		$user_data = self::get_user_data( $user_id );

		return $user_data->{$field} ?? '';
	}

	/**
	 * @param $user_id
	 *
	 * @return false|mixed|\WP_User
	 */
	public static function get_user_data( $user_id ) {
		if ( isset( self::$user_data[ $user_id ] ) ) {
			return self::$user_data[ $user_id ];
		}

		self::$user_data[ $user_id ] = get_userdata( $user_id );

		return self::$user_data[ $user_id ];
	}

	/**
	 * @return array|mixed
	 */
	public static function get_pending_requests() {
		global $wpdb;

		$query = $wpdb->prepare(
			"
				SELECT ID
				FROM {$wpdb->users} u
				INNER JOIN {$wpdb->usermeta} um ON um.user_id = u.ID AND um.meta_key = %s
				WHERE um.meta_value = %s
			",
			REALPRESS_PREFIX . '_become_an_agent_request',
			'yes'
		);

		return $wpdb->get_col( $query );
	}

	/**
	 * @param $agent_id
	 *
	 * @return float|int
	 */
	public static function get_property_total( $agent_id ) {
		global $wpdb;
		$post_tbl     = $wpdb->posts;
		$postmeta_tbl = $wpdb->postmeta;

		$total = $wpdb->get_var(
			$wpdb->prepare(
				"SELECT COUNT(DISTINCT $post_tbl.ID) FROM $post_tbl 
				INNER JOIN $postmeta_tbl ON $post_tbl.ID = $postmeta_tbl.post_id 
				INNER JOIN $postmeta_tbl AS pmt1 ON $post_tbl.ID = pmt1.post_id 
				INNER JOIN $postmeta_tbl AS pmt2 ON $post_tbl.ID = pmt2.post_id 
				WHERE $post_tbl.post_type = %s AND $post_tbl.post_status = 'publish'
				AND (
					(
					$postmeta_tbl.meta_key = 'realpress_group:agent:section:agent_information:fields:enable' AND $postmeta_tbl.meta_value = 'on'
					AND pmt1.meta_key = 'realpress_group:agent:section:agent_information:fields:information' AND pmt1.meta_value = 'agent'
					AND pmt2.meta_key = 'realpress_group:agent:section:agent_user:fields:agent_user' AND pmt2.meta_value = %d
				) 
				OR (
					$post_tbl.post_author = %d 
					AND (
							(
							$postmeta_tbl.meta_key = 'realpress_group:agent:section:agent_information:fields:enable' AND $postmeta_tbl.meta_value != 'on'
							)
							OR 
							(
							$postmeta_tbl.meta_key = 'realpress_group:agent:section:agent_information:fields:enable' AND $postmeta_tbl.meta_value = 'on'
							AND pmt1.meta_key = 'realpress_group:agent:section:agent_information:fields:information' AND pmt1.meta_value != 'agent'
							)
							OR 
							(
							$postmeta_tbl.meta_key = 'realpress_group:agent:section:agent_information:fields:enable' AND $postmeta_tbl.meta_value = 'on'
							AND pmt1.meta_key = 'realpress_group:agent:section:agent_information:fields:information' AND pmt1.meta_value = 'agent'
							AND pmt2.meta_key = 'realpress_group:agent:section:agent_user:fields:agent_user' AND (pmt2.meta_value = %d OR pmt2.meta_value ='')
							)
						)
				)
				)
				",
				REALPRESS_PROPERTY_CPT,
				$agent_id,
				$agent_id,
				$agent_id
			)
		);

		return empty( $total ) ? 0 : abs( $total );
	}

	/**
	 * @param $agent_id
	 *
	 * @return mixed|void
	 */
	public static function get_agent_data( $agent_id ) {
		$user_meta_data = self::get_user_meta_data( $agent_id );

		$data = array(
			'user_id'             => $agent_id,
			'first_name'          => self::get_field( $agent_id, 'first_name' ),
			'last_name'           => self::get_field( $agent_id, 'last_name' ),
			'display_name'        => self::get_field( $agent_id, 'display_name' ),
			'user_url'            => get_author_posts_url( $agent_id ),
			'avatar_url'          => self::get_user_avatar_url( $agent_id, 'full' ),
			'avatar_id'           => $user_meta_data['user_profile:fields:profile_picture'],
			'company_name'        => $user_meta_data['user_profile:fields:company_name'],
			'company_url'         => $user_meta_data['user_profile:fields:company_url'],
			'license'             => $user_meta_data['user_profile:fields:license'],
			'tax_number'          => $user_meta_data['user_profile:fields:tax_number'],
			'address'             => $user_meta_data['user_profile:fields:address'],
			'position'            => $user_meta_data['user_profile:fields:position'],
			'office_phone_number' => $user_meta_data['user_profile:fields:office_phone_number'],
			'email'               => UserModel::get_field( $agent_id, 'user_email' ),
			'mobile_number'       => $user_meta_data['user_profile:fields:mobile_number'],
			'social_networks'     => User::get_social_networks( $agent_id ),
			'description'         => self::get_field( $agent_id, 'description' ),
			'property_total'      => self::get_property_total( $agent_id ),
			'comment_total'       => CommentModel::get_comment_total( $agent_id, 'agent' ),
			'col'                 => 2,
		);

		return apply_filters( 'realpress/filter/model/user/agent-data', $data );
	}

	/**
	 * @param $user_id
	 *
	 * @return mixed|null
	 */
	public static function get_subscriber_data( $user_id ) {
		$data = array(
			'user_id'      => $user_id,
			'first_name'   => self::get_field( $user_id, 'first_name' ),
			'last_name'    => self::get_field( $user_id, 'last_name' ),
			'display_name' => self::get_field( $user_id, 'display_name' ),
			'user_url'     => get_author_posts_url( $user_id ),
			'avatar_url'   => self::get_user_avatar_url( $user_id, 'full' ),
			'email'        => UserModel::get_field( $user_id, 'user_email' ),
			'description'  => get_the_author_meta( 'description', $user_id ),
		);

		return apply_filters( 'realpress/filter/model/user/subscriber-data', $data );
	}
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists