MP_Addon_Netsuite_Settings
Contents
Description Description
See also See also
Source Source
File: calculator-netsuite-add-on/inc/MP_Addon_Netsuite_Settings.php
class MP_Addon_Netsuite_Settings extends MP_Settings{
/**
* Netsuite export settings.
*
* @var array settings
*
* @since 1.0.0
* @access private
*/
private $export_settings;
/**
* Netsuite settings.
*
* @var array settings
*
* @since 1.0.0
* @access private
*/
private $settings;
/**
* Set Netsuite export settings.
* @access public
* @since 1.0.0
* @return array {
* Netsuite export settings.
*
* @type array 'allow_netsuite' Allow sending lead data to Netsuite CRM
* }
*/
public function set_export_fields() {
$this->export_settings = array(
array(
'id' => 'allow_netsuite',
'title' => __( 'Allow Netsuite', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'checkbox' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'export',
'label_for' => 'allow_netsuite',
'placeholder' => '',
'default' => '',
'description' => __( 'Allow Netsuite', 'CalculatorsNetsuiteAddon' ),
),
),
);
return $this->export_settings;
}
/**
* Set Netsuite settings.
* @access public
* @since 1.0.0
* @return array {
* Netsuite settings.
*
* @type array 'netsuite_account_id' Netsuite account id
* @type array 'netsuite_consumer_key' Netsuite consumer key
* @type array 'netsuite_consumer_secret' Netsuite consumer secret
* @type array 'netsuite_token_id' Netsuite token id
* @type array 'netsuite_token_secret' Netsuite token secret
* @type array 'netsuite_token' Netsuite token(Authentication/revoke)
* }
*/
public function set_fields() {
$this->settings = array(
array(
'id' => 'netsuite_account_id',
'title' => __( 'Account ID', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_account_id',
'placeholder' => '',
'default' => '',
'description' => __('Enter Account ID','CalculatorsNetsuiteAddon'),
),
),
array(
'id' => 'netsuite_consumer_key',
'title' => __( 'Consumer key', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_consumer_key',
'placeholder' => '',
'default' => '',
'description' => __('Enter Netsuite consumer key','CalculatorsNetsuiteAddon'),
),
),
array(
'id' => 'netsuite_consumer_secret',
'title' => __( 'Consumer secret', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_consumer_secret',
'placeholder' => '',
'default' => '',
'description' => __('Enter Netsuite consumer secret','CalculatorsNetsuiteAddon'),
),
),
array(
'id' => 'netsuite_token_id',
'title' => __( 'Token', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_token_id',
'placeholder' => '',
'default' => '',
'description' => __('Enter Netsuite token','CalculatorsNetsuiteAddon'),
),
),
array(
'id' => 'netsuite_token_secret',
'title' => __( 'Token secret', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_token_secret',
'placeholder' => '',
'default' => '',
'description' => __('Enter Netsuite token secret','CalculatorsNetsuiteAddon'),
),
),
/*array(
'id' => 'netsuite_redirect_uri',
'title' => __( 'Redirect URI', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'input' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_redirect_uri',
'placeholder' => str_replace('127.0.0.1','localhost',get_admin_url()) . 'admin.php?page=mortgage_platform&tab=netsuite',
'default' => '',
'description' => __('Enter Netsuite redirect uri','CalculatorsNetsuiteAddon'),
),
),*/
array(
'id' => 'netsuite_token',
'title' => __( 'Client token', 'CalculatorsNetsuiteAddon' ),
'callback' => array( $this, 'netsuite_access' ),
'args' => array(
'option_name' => MortgagePlatform::$prefix . 'netsuite',
'label_for' => 'netsuite_token',
'placeholder' => '',
'default' => __('Authentication Token','CalculatorsNetsuiteAddon'),
'description' => __('Click here to generate an Authentication Token','CalculatorsNetsuiteAddon'),
),
),
);
return $this->settings;
}
/**
* Netsuite 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 . 'netsuite' )['netsuite_redirect_uri'])) {
$settings = get_option( MortgagePlatform::$prefix . 'netsuite' );
$settings['netsuite_redirect_uri'] = str_replace('127.0.0.1','localhost',get_admin_url()) . 'admin.php?page=mortgage_platform&tab=netsuite';
update_option( MortgagePlatform::$prefix . 'netsuite', $settings );
}
}
/**
* Register Netsuite Spreadsheets Settings.
*
* @since 1.0.0
* @access public
*/
public function register() {
$fields = $this->set_fields();
$this->register_setting_fields(
$fields,
'netsuite',
__( 'Netsuite Settings', 'CalculatorsNetsuiteAddon' ),
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'] ) && 'netsuite' === $_GET['tab'] ) {
$list .= '<li class="active"><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '&tab=netsuite" >' . esc_html__( 'Netsuite Settings', 'CalculatorsNetsuiteAddon' ) . '</a></li>';
} else {
$list .= '<li ><a href="?page=' . esc_attr( MortgagePlatform::$domain ) . '&tab=netsuite" >' . esc_html__( 'Netsuite Settings', 'CalculatorsNetsuiteAddon' ) . '</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 ( 'netsuite' === $_GET['tab'] ) {
?>
<div class="mp-settings__content tab-pane netsuite">
<form action="options.php" method="POST">
<?php
settings_fields( MortgagePlatform::$prefix . 'settings_netsuite' );
do_settings_sections( MortgagePlatform::$prefix . 'netsuite' );
submit_button()
?>
</form>
</div>
<?php
}
}
}
}
/**
* Netsuite get access token callback function.
*
* @access public
* @since 1.0.0
*
* @param $args
*/
public function netsuite_access($args){
if ( !empty( get_option( MortgagePlatform::$prefix . 'netsuite' )['netsuite_account_id'] ) &&
!empty( get_option( MortgagePlatform::$prefix . 'netsuite' )['netsuite_consumer_key'] ) &&
!empty( get_option( MortgagePlatform::$prefix . 'netsuite' )['netsuite_consumer_secret'] ) &&
!empty( get_option( MortgagePlatform::$prefix . 'netsuite' )['netsuite_redirect_uri'] )
) {
echo $this->get_token_button($args);
} else {
echo '<p>' . __("Please enter account id, consumer key, consumer secret, redirect url.", "CalculatorsNetsuiteAddon") . '</p>';
}
}
/**
* Get Netsuite 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;
$netsuite = new MP_Addon_Netsuite_REST();
if( empty(get_option( MortgagePlatform::$prefix . 'netsuite_refresh_token' ))) {
$url = $netsuite->get_url();
echo '<a href="'.esc_url($url).'" class="button" target="_blank">'.esc_attr($value).'</a>';
echo '<p>' . esc_attr( $description ) . '</p>';
} else {
$netsuite->get_client();
echo '<div class="netsuite_token" style="float:left">';
echo '<span class="spinner"></span>';
echo '<button id="netsuite_token_revoke" class="button">' . esc_attr__( "Revoke Token", "CalculatorsNetsuiteAddon" ) . '</button>';
echo '</div>';
echo '<input id="netsuite_revoke_nonce" type="hidden" value="' . wp_create_nonce( "netsuite" ) . '">';
}
}
/**
* Add Netsuite metabox.
*
* @access public
* @since 1.0.0
*/
public function netsuite_metabox() {
add_meta_box(
'netsuite-metabox',
__( 'Netsuite', 'CalculatorsNetsuiteAddon' ),
array( $this, 'netsuite_meta_callback' ),
MortgagePlatform::$lead,
'side',
'core'
);
}
/**
* Callback for Netsuite.
*
* @access public
* @since 1.0.0
*
* @param object $post post data
* @param array $meta meta data
*/
public function netsuite_meta_callback( $post, $meta) {
wp_nonce_field( MortgagePlatform::$prefix . 'netsuite', MortgagePlatform::$prefix . 'netsuite' );
echo '<button id="' . esc_attr( $meta['id'] ) . '-send-button" class="button button-large">'.__('Send to Netsuite','CalculatorsNetsuiteAddon').'</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_netsuite($options) {
$options .= '<option disabled>'.__('Netsuite','CalculatorsNetsuiteAddon').'</option>';
$options .= '<option value="netsuite">'.__('Send to Netsuite','CalculatorsNetsuiteAddon').'</option>';
$options .= '<option value="netsuite_csv">'.__('Export CSV for Netsuite','CalculatorsNetsuiteAddon').'</option>';
return $options;
}
}
Methods Methods
- default_settings — Set default settings.
- export_to_netsuite — Add send options.
- filter_export_data_settings — Netsuite settings.
- filter_menu — Filter Settings Menu.
- filter_settings — Add Setting Fields.
- get_token_button — Get Netsuite token refresh callback.
- netsuite_access — Netsuite get access token callback function.
- netsuite_meta_callback — Callback for Netsuite.
- netsuite_metabox — Add Netsuite metabox.
- register — Register Netsuite Spreadsheets Settings.
- set_export_fields — Set Netsuite export settings.
- set_fields — Set Netsuite settings.
Changelog Changelog
| Version | Description |
|---|---|
| 1.0.0 | Introduced. |