Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/myhome-idx-broker/MyHomeIDXBroker/Fields.php |
<?php
namespace MyHomeIDXBroker;
use MyHomeCore\Attributes\Attribute_Factory;
use MyHomeCore\Attributes\Price_Attribute;
use MyHomeCore\Estates\Prices\Currencies;
/**
* Class Fields
* @package MyHomeIDXBroker
*/
class Fields {
const OPTION_KEY = 'myhome_idx_broker_fields';
public function import() {
$skip = array(
'cityID',
'coListingAgentID',
'countyID',
'farCityID',
'parentPtID',
'parentPtID',
'latitude',
'longitude',
'mlsPtID',
'listingOfficeID',
'coListingOfficeID',
'tertiaryListingAgentID',
'tertiaryListingOfficeID',
'customGeocode',
'listingAgentID',
'mlsPhotoCount',
'TLNFIRMID',
'TLNREALTORID'
);
$api = new Api();
$mls_imported_fields = array();
$fields = array();
$current_fields = array();
foreach ( MLS::get() as $mls_id ) {
$mls_imported_fields[] = $api->get_search_fields( $mls_id );
}
$keys = array();
foreach ( $mls_imported_fields as $imported_fields ) {
foreach ( $imported_fields as $field ) {
$keys[] = $field->name;
}
}
foreach ( $mls_imported_fields as $imported_fields ) {
foreach ( $imported_fields as $field ) {
if ( ! in_array( $field->name, array(
'address',
'streetName',
'streetNumber',
'streetDirection',
'unitNumber',
'postalcode',
'cityName',
'countyName',
'state',
'zipcode',
'price',
'remarksConcat',
'bedrooms',
'partialBaths',
'fullBaths',
'totalBaths',
'acres',
'sqFt',
'idxPropType',
'fullBaths',
'listingPrice',
'propType',
'listingID'
) ) ) {
continue;
}
if ( in_array( $field->name, $skip ) ) {
continue;
}
if ( isset( $current_fields[ $field->name ] ) ) {
$fields[ $field->name ] = array(
'name' => $current_fields[ $field->name ]->get_name(),
'display_name' => $current_fields[ $field->name ]->get_display_name(),
'value' => $current_fields[ $field->name ]->get_value()
);
continue;
}
$data = array(
'name' => $field->name,
'display_name' => $field->displayName
);
$name = $field->name;
if ( $name == 'price' ) {
$data['value'] = 'myhome_price';
} elseif ( $name == 'cityName' ) {
$data['value'] = 'myhome_attribute_10';
} elseif ( $name == 'bedrooms' ) {
$data['value'] = 'myhome_attribute_5';
} elseif ( $name == 'idxPropType' ) {
$data['value'] = 'myhome_attribute_1';
} elseif ( $name == 'propType' ) {
$data['value'] = 'myhome_attribute_1';
} elseif ( $name == 'propSubType' ) {
$data['value'] = 'myhome_attribute_1';
} elseif ( $name == 'fullBaths' ) {
if ( in_array( 'totalBaths', $keys ) ) {
$data['value'] = 'myhome_additional_features';
} else {
$data['value'] = 'myhome_attribute_7';
}
} elseif ( $name == 'partialBaths' ) {
if ( in_array( 'totalBaths', $keys ) || in_array( 'fullBaths', $keys ) ) {
$data['value'] = 'myhome_additional_features';
} else {
$data['value'] = 'myhome_attribute_7';
}
} elseif ( $name == 'sqFt' ) {
$data['value'] = 'myhome_attribute_8';
} elseif ( $name == 'acres' ) {
$data['value'] = 'myhome_additional_features';
} elseif ( $name == 'totalBaths' ) {
$data['value'] = 'myhome_attribute_7';
} elseif ( $name == 'address' ) {
$data['value'] = 'myhome_name';
} elseif ( $name == 'remarksConcat' ) {
$data['value'] = 'myhome_description';
} elseif ( $name == 'zipcode' ) {
$data['value'] = 'myhome_attribute_16';
} elseif ( $name == 'streetName' ) {
$data['value'] = 'myhome_attribute_15';
} elseif ( $name == 'countyName' ) {
$data['value'] = 'myhome_additional_features';
} elseif ( $name == 'state' ) {
$data['value'] = 'myhome_additional_features';
} elseif ( $name == 'listingPrice' ) {
if ( ! in_array( 'price', $keys ) ) {
$data['value'] = 'myhome_price';
}
}
$fields[ $field->name ] = $data;
}
}
update_option( Fields::OPTION_KEY, $fields );
}
public function save() {
if ( ! isset( $_POST['fields'] ) ) {
return;
}
$current_fields = Fields::get();
$saved_fields = $_POST['fields'];
$fields = array();
foreach ( $saved_fields as $field_key => $field_value ) {
$fields[] = array(
'name' => $field_key,
'display_name' => $current_fields[ $field_key ]->get_display_name(),
'value' => $field_value
);
}
update_option( Fields::OPTION_KEY, $fields );
}
/**
* @return Field[]
*/
public static function get() {
$fields = array();
$current_fields = get_option( Fields::OPTION_KEY, array() );
foreach ( $current_fields as $field_data ) {
$field = new Field( $field_data );
$fields[ $field->get_name() ] = $field;
}
return $fields;
}
/**
* @param string $key
*
* @return bool|Field
*/
public static function get_by_key( $key ) {
foreach ( Fields::get() as $field ) {
if ( $key == $field->get_name() ) {
return $field;
}
}
return false;
}
/**
* @return array
*/
public static function get_attributes() {
$attributes = array(
'myhome_name' => esc_html__( 'Property name', 'myhome-idx-broker' ),
'myhome_description' => esc_html__( 'Property description', 'myhome-idx-broker' ),
'myhome_additional_features' => esc_html__( 'Additional features', 'myhome-idx-broker' )
);
foreach ( Attribute_Factory::get_text() as $attribute ) {
$attributes[ 'myhome_attribute_' . $attribute->get_ID() ] = $attribute->get_name();
}
foreach ( Attribute_Factory::get_number() as $attribute ) {
if ( $attribute instanceof Price_Attribute ) {
continue;
}
$attributes[ 'myhome_attribute_' . $attribute->get_ID() ] = $attribute->get_name();
}
foreach ( Currencies::get_all() as $currency ) {
foreach ( $currency->get_price_keys_list() as $key => $label ) {
$attributes[ 'myhome_' . $key ] = $label;
}
}
asort( $attributes );
return $attributes;
}
}