MP_Addon_Dynamics_Settings
Class MP_Addon_Dynamics_Settings.
Contents
Description Description
See also See also
Source Source
File: calculator-dynamics-add-on/inc/MP_Addon_Dynamics_Settings.php
class MP_Addon_Dynamics_Settings extends MP_Settings {
/**
* Dynamics export settings.
* @var array settings
* @since 1.0.0
* @access private
*/
private $export_settings;
/**
* Dynamics settings.
* @var array settings
* @since 1.0.0
* @access private
*/
private $settings;
/**
* Set Dynamics export settings.
* @access public
* @since 1.0.0
* @return array {
* Dynamics export settings.
* @type array 'allow_dynamics' Allow sending lead data to Dynamics 365
* }
*/
public function set_export_fields() {
$this->export_settings = array(
array(
'id' => 'allow_dynamics',
'title' => __( 'Allow Dynamics', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'checkbox' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'export',
'label_for' => 'allow_dynamics',
'placeholder' => '',
'default' => '',
'description' => __( 'Allow Dynamics', 'CalculatorsDynamicsAddon' ),
),
),
);
return $this->export_settings;
}
/**
* Set Dynamics settings.
* @access public
* @since 1.0.0
* @return array {
* Dynamics settings.
* @type array 'dynamics_url' Dynamics url
* @type array 'dynamics_client_id' Dynamics client key
* @type array 'dynamics_client_secret' Dynamics client secret
* @type array 'dynamics_redirect_uri' Redirect URL
* @type array 'dynamics_token' Dynamics token(Authentication/revoke)
* @type array 'dynamics_object' Dynamics entry. Leads or contacts
* @type array 'dynamics_primary_key' Primary key. Email or Full name
* }
*/
public function set_fields() {
$this->settings = array(
array(
'id' => 'dynamics_url',
'title' => __( 'Dynamics URL', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_url',
'placeholder' => 'https://xxxxxxxx.cms.dynamics.com',
'default' => '',
'description' => __( 'Enter Dynamics URL', 'CalculatorsDynamicsAddon' ),
),
),
array(
'id' => 'dynamics_client_id',
'title' => __( 'Client ID', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_client_id',
'placeholder' => '',
'default' => '',
'description' => __( 'Enter Azure client ID. https://docs.microsoft.com/en-us/powerapps/developer/data-platform/walkthrough-register-app-azure-active-directory', 'CalculatorsDynamicsAddon' ),
),
),
array(
'id' => 'dynamics_client_secret',
'title' => __( 'Client secret', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_client_secret',
'placeholder' => '',
'default' => '',
'description' => __( 'Enter Azure client secret', 'CalculatorsDynamicsAddon' ),
),
),
array(
'id' => 'dynamics_redirect_uri',
'title' => __( 'Redirect URI', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_redirect_uri',
'placeholder' => str_replace( '127.0.0.1', 'localhost', get_admin_url() ) . 'admin.php?page=mortgage_platform&tab=dynamics',
'default' => '',
'description' => __( 'Enter Dynamics redirect uri', 'CalculatorsDynamicsAddon' ),
),
),
array(
'id' => 'dynamics_token',
'title' => __( 'Client token', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'dynamics_access' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_token',
'placeholder' => '',
'default' => __( 'Authentication Token', 'CalculatorsDynamicsAddon' ),
'description' => __( 'Click here to generate an Authentication Token', 'CalculatorsDynamicsAddon' ),
),
),
array(
'id' => 'dynamics_object',
'title' => __( 'Dynamics entry', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'select' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_object',
'placeholder' => '',
'default' => 'default',
'description' => __( 'Select the entry where to export the lead data. Leads or Contacts', 'CalculatorsDynamicsAddon' ),
'options' => array(
'leads' => 'Leads',
'contacts' => 'Contacts',
)
),
),
array(
'id' => 'dynamics_primary_key',
'title' => __( 'Primary key', 'CalculatorsDynamicsAddon' ),
'callback' => array( $this, 'select' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'dynamics',
'label_for' => 'dynamics_primary_key',
'placeholder' => '',
'default' => 'default',
'description' => __( 'Choose field should be used to update existing objects', 'CalculatorsDynamicsAddon' ),
'options' => array(
'emailaddress1' => 'Email',
'fullname' => 'Full name',
)
),
),
);
return $this->settings;
}
/**
* Dynamics settings.
* @since 1.0.0
* @access public
*
* @param array $array export settings
*
* @return mixed export data settings
*/
public function filter_export_data_settings( $array ) {
$settings = $this->set_export_fields();
$array = is_array($array) ? $array : array();
return array_merge( $array, $settings );
}
/**
* Set default settings.
* @access public
* @static
* @since 1.0.0
*/
public static function default_settings() {
if ( isset(get_option( MortgagePlatform::$prefix . 'dynamics' )['dynamics_redirect_uri']) ) {
$settings = get_option( MortgagePlatform::$prefix . 'dynamics' );
$settings['dynamics_redirect_uri'] = str_replace( '127.0.0.1', 'localhost', get_admin_url() ) . 'admin.php?page=mortgage_platform&tab=dynamics';
update_option( MortgagePlatform::$prefix . 'dynamics', $settings );
}
}
/**
* Register Dynamics Spreadsheets Settings.
* @since 1.0.0
* @access public
*/
public function register() {
$fields = $this->set_fields();
$this->register_setting_fields(
$fields,
'dynamics',
__( 'Dynamics Settings', 'CalculatorsDynamicsAddon' ),
array( $this, 'page_title' )
);
add_filter( MortgagePlatform::$prefix . 'menu', array( $this, 'filter_menu' ), 50 );
add_action( MortgagePlatform::$prefix . 'menu_settings', array( $this, 'filter_settings' ) );
}
/**
* Filter Settings Menu.
* @since 1.0.0
* @access public
*
* @param string $list menu list
*
* @return string
*/
public function filter_menu( $list ) {
if ( isset( $_GET['tab'] ) && 'dynamics' === $_GET['tab'] ) {
$list .= '<li class="active"><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '&tab=dynamics" >' . esc_html__( 'Dynamics Settings', 'CalculatorsDynamicsAddon' ) . '</a></li>';
} else {
$list .= '<li ><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '&tab=dynamics" >' . esc_html__( 'Dynamics Settings', 'CalculatorsDynamicsAddon' ) . '</a></li>';
}
return $list;
}
/**
* Add Setting Fields.
* @since 1.0.0
* @access public
* @global $pagenow
*/
public function filter_settings() {
global $pagenow;
if ( isset( $_GET['tab'] ) ) {
if ( 'admin.php' === $pagenow && MortgagePlatform::$domain === $_GET['page'] ) {
if ( 'dynamics' === $_GET['tab'] ) {
?>
<div class="mp-settings__content tab-pane dynamics">
<form action="options.php" method="POST">
<?php
settings_fields( MortgagePlatform::$prefix . 'settings_dynamics' );
do_settings_sections( MortgagePlatform::$prefix . 'dynamics' );
submit_button()
?>
</form>
</div>
<?php
}
}
}
}
/**
* Dynamics get access token callback function.
* @access public
* @since 1.0.0
*
* @param $args
*/
public function dynamics_access( $args ) {
if ( ! empty( get_option( MortgagePlatform::$prefix . 'dynamics' )['dynamics_client_id'] ) &&
! empty( get_option( MortgagePlatform::$prefix . 'dynamics' )['dynamics_client_secret'] ) &&
! empty( get_option( MortgagePlatform::$prefix . 'dynamics' )['dynamics_redirect_uri'] )
) {
echo $this->get_token_button( $args );
} else {
echo '<p>' . __( "Please enter client id, client secret, redirect url.", "CalculatorsDynamicsAddon" ) . '</p>';
}
}
/**
* Get Dynamics token refresh callback.
* @access public
* @since 1.0.0
*
* @param array $args arguments of setting
*/
private function get_token_button( $args ) {
$name = $args['label_for'];
$option_name = $args['option_name'];
$input = get_option( $option_name );
$description = $args['description'];
$default = $args['default'];
$value = isset( $input[ $name ] ) ? $input[ $name ] : $default;
$dynamics = new MP_Addon_Dynamics();
if ( empty( get_option( MortgagePlatform::$prefix . 'dynamics_refresh_token' ) ) ) {
$url = $dynamics->get_url();
echo '<a href="' . esc_url( $url ) . '" class="button" target="_blank">' . esc_attr( $value ) . '</a>';
echo '<p>' . esc_attr( $description ) . '</p>';
} else {
$dynamics->get_client();
echo '<div class="dynamics_token" style="float:left">';
echo '<span class="spinner"></span>';
echo '<button id="dynamics_token_revoke" class="button">' . esc_attr__( "Revoke Token", "CalculatorsDynamicsAddon" ) . '</button>';
echo '</div>';
echo '<input id="dynamics_revoke_nonce" type="hidden" value="' . wp_create_nonce( "dynamics" ) . '">';
}
}
/**
* Add Dynamics metabox.
* @access public
* @since 1.0.0
*/
public function dynamics_metabox() {
add_meta_box(
'dynamics-metabox',
__( 'Dynamics', 'CalculatorsDynamicsAddon' ),
array( $this, 'dynamics_meta_callback' ),
MortgagePlatform::$lead,
'side',
'core'
);
}
/**
* Callback for Dynamics.
* @access public
* @since 1.0.0
*
* @param object $post post data
* @param array $meta meta data
*/
public function dynamics_meta_callback( $post, $meta ) {
wp_nonce_field( MortgagePlatform::$prefix . 'dynamics', MortgagePlatform::$prefix . 'dynamics' );
echo '<button id="' . esc_attr( $meta['id'] ) . '-send-button" class="button button-large">' . __( 'Send to Dynamics', 'CalculatorsDynamicsAddon' ) . '</button>';
echo '<span class="spinner"></span>';
}
/**
* Add send options.
* @access public
* @since 1.0.0
*
* @param string $options send options
*
* @return string
*/
public function export_to_dynamics( $options ) {
$options .= '<option disabled>' . __( 'Dynamics', 'CalculatorsDynamicsAddon' ) . '</option>';
$options .= '<option value="dynamics">' . __( 'Send to Dynamics', 'CalculatorsDynamicsAddon' ) . '</option>';
$options .= '<option value="dynamics_csv">' . __( 'Export CSV for Dynamics', 'CalculatorsDynamicsAddon' ) . '</option>';
return $options;
}
}
Methods Methods
- default_settings — Set default settings.
- dynamics_access — Dynamics get access token callback function.
- dynamics_meta_callback — Callback for Dynamics.
- dynamics_metabox — Add Dynamics metabox.
- export_to_dynamics — Add send options.
- filter_export_data_settings — Dynamics settings.
- filter_menu — Filter Settings Menu.
- filter_settings — Add Setting Fields.
- get_token_button — Get Dynamics token refresh callback.
- register — Register Dynamics Spreadsheets Settings.
- set_export_fields — Set Dynamics export settings.
- set_fields — Set Dynamics settings.
Changelog Changelog
| Version | Description |
|---|---|
| 1.0.0 | Introduced. |