MP_Addon_Netsuite_Settings

Class MP_Addon_Netsuite_Settings


Description Description

See also See also


Top ↑

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;
	}


}

Top ↑

Methods Methods


Top ↑

Changelog Changelog

Changelog
Version Description
1.0.0 Introduced.