Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/myhome-idx-broker/MyHomeIDXBroker/Agents.php |
<?php
namespace MyHomeIDXBroker;
/**
* Class Agents
* @package MyHomeIDXBroker
*/
class Agents {
const FIELD_ID = 'idx_broker_user_id';
const FIELD_LISTING_ID = 'idx_broker_user_listing_id';
public function import() {
$api = new Api();
$agents = $api->get_agents();
if ( empty( $agents ) ) {
return;
}
foreach ( $agents as $agent ) {
if ( isset( $agent->agentEmail ) ) {
$email = $agent->agentEmail;
} else {
$email = '';
}
$user = $this->exists( $agent->agentID, $email );
if ( $user ) {
$idxAgent = new Idx_Broker_Agent( $user );
$idxAgent->set_idx_id( $agent->agentID );
update_user_meta( $idxAgent->get_ID(), 'idx_url', $agent->agentBioURL );
continue;
}
$this->create( $agent );
}
}
/**
* @param $agent_idx_id
* @param $email
*
* @return \WP_User|false
*/
public function exists( $agent_idx_id, $email ) {
$users = get_users(
array(
'meta_key' => Agents::FIELD_ID,
'meta_value' => $agent_idx_id
)
);
if ( count( $users ) > 0 ) {
return $users[0];
}
if ( empty( $email ) ) {
return false;
}
return get_user_by_email( $email );
}
/**
* @param $agent_data
*
* @return bool|int
*/
public function create( $agent_data ) {
if ( ! isset( $agent_data->agentDisplayName ) || empty( $agent_data->agentDisplayName ) ) {
return false;
}
$wp_user = get_user_by( 'email', $agent_data->agentEmail );
if ( $wp_user !== false ) {
if ( isset( $agent_data->userAgentID ) ) {
update_user_meta( $wp_user->ID, Agents::FIELD_ID, $agent_data->userAgentID );
} else {
update_user_meta( $wp_user->ID, Agents::FIELD_ID, $agent_data->agentID );
}
update_user_meta( $wp_user->ID, Agents::FIELD_LISTING_ID, $agent_data->listingAgentID );
return $wp_user->ID;
}
if ( isset( $agent_data->agentEmail ) && ! empty( $agent_data->agentEmail ) ) {
$user_id = wp_create_user(
$agent_data->agentEmail,
wp_generate_password( $length = 12, $include_standard_special_chars = false ),
$agent_data->agentEmail
);
} else {
$user_id = wp_insert_user( array(
'user_login' => $agent_data->agentDisplayName,
'user_pass' => wp_generate_password( $length = 12, $include_standard_special_chars = false )
) );
}
if ( is_wp_error( $user_id ) ) {
return false;
}
if ( isset( $agent_data->agentCellPhone ) ) {
update_user_meta( $user_id, 'agent_phone', $agent_data->agentCellPhone );
}
if ( isset( $agent_data->agentBioURL ) ) {
update_user_meta( $user_id, 'idx_url', $agent_data->agentBioURL );
}
if ( isset( $agent_data->agentPhotoURL ) ) {
$image = $agent_data->agentPhotoURL;
$get = wp_remote_get( $image, [ 'sslverify' => false ] );
$type = wp_remote_retrieve_header( $get, 'content-type' );
$name = basename( $image );
if ( $type == 'image/jpeg' && ( strpos( 'jpg', $image ) === false && strpos( 'jpeg', $image ) == false ) ) {
$name .= '.jpg';
}
$mirror = wp_upload_bits( $name, '', wp_remote_retrieve_body( $get ) );
$attachment = array(
'post_title' => basename( $image ),
'post_mime_type' => $type
);
$attachment_id = wp_insert_attachment( $attachment, $mirror['file'] );
if ( ! is_wp_error( $attachment_id ) ) {
update_user_meta( $user_id, 'agent_image', $attachment_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $mirror['file'] );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
}
}
if ( isset( $agent_data->bioDetails ) && ! empty( $agent_data->bioDetails ) ) {
wp_update_user( [
'ID' => $user_id,
'description' => $agent_data->bioDetails
] );
}
$user_data = array(
'ID' => $user_id,
'role' => 'agent'
);
if ( isset( $agent_data->agentFirstName ) && ! empty( $agent_data->agentFirstName ) ) {
$user_data['first_name'] = $agent_data->agentFirstName;
}
if ( isset( $agent_data->agentLastName ) && ! empty( $agent_data->agentLastName ) ) {
$user_data['last_name'] = $agent_data->agentLastName;
}
if ( isset( $agent_data->agentEmail ) && ! empty( $agent_data->agentEmail ) ) {
$user_data['user_email'] = $agent_data->agentEmail;
}
$user_data['display_name'] = $agent_data->agentDisplayName;
wp_update_user( $user_data );
update_user_meta( $user_id, Agents::FIELD_ID, $agent_data->agentID );
update_user_meta( $user_id, Agents::FIELD_LISTING_ID, $agent_data->listingAgentID );
if ( isset( $agent_data->agentCellPhone ) && ! empty( $agent_data->agentCellPhone ) ) {
update_user_meta( $user_id, 'agent_phone', $agent_data->agentCellPhone );
}
return $user_id;
}
/**
* @return Idx_Broker_Agent[]
*/
public static function get() {
$agents = array();
$users = get_users();
foreach ( $users as $user ) {
$agents[] = new Idx_Broker_Agent( $user );
}
return $agents;
}
}