Sindbad~EG File Manager
<?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