/**
  *
  * @param array $options_array {
  *	@type string $extra_meta_inputs should be EE_Form_Section_Validatable[] which
  *		will be _subsections and will be saved as extra meta on the payment method object;
  *	@type EE_PMT_Base $payment_method_type the payment method type this form is for
  *	@see EE_Model_Form_Section::__construct() for more
  * }
  */
 public function __construct($options_array = array())
 {
     $this->_model = EEM_Payment_Method::instance();
     $this->_options_array = $options_array;
     if (isset($options_array['payment_method_type'])) {
         $this->_payment_method_type = $options_array['payment_method_type'];
     }
     $options_array = $this->_options_array;
     if (isset($options_array['extra_meta_inputs'])) {
         $this->_extra_meta_inputs = array_merge($this->_extra_meta_inputs, $options_array['extra_meta_inputs']);
     }
     if ($this->_extra_meta_inputs) {
         $this->_subsections = array_merge($this->_subsections, $this->_extra_meta_inputs);
     }
     $this->_subsections['PMD_button_url'] = new EE_Admin_File_Uploader_Input(array('html_label_text' => __('Button URL', 'event_espresso')));
     $this->_subsections['PMD_scope'] = new EE_Checkbox_Multi_Input(EEM_Payment_Method::instance()->scopes(), array('html_label_text' => $this->_model->field_settings_for('PMD_scope')->get_nicename() . EEH_Template::get_help_tab_link('payment_methods_overview')));
     //setup the currency options
     $this->_subsections['Currency'] = new EE_Select_Multi_Model_Input(EEM_Currency::instance()->get_all_currencies_usable_by($this->_payment_method_type), array('html_label_text' => __('Currencies Supported', 'event_espresso'), 'required' => TRUE));
     $this->_subsections['PMD_order'] = new EE_Text_Input(array('html_help_text' => __('Lowest numbers will be shown first', 'event_espresso'), 'normalization_strategy' => new EE_Int_Normalization(), 'validation_strategies' => array(new EE_Int_Validation_Strategy()), 'default' => 0));
     $this->_layout_strategy = new EE_Admin_Two_Column_Layout();
     parent::__construct($options_array);
 }
 /**
  * Gets all the currencies which are an option for this payment method
  * (as defined by the gateway and the currently active currencies)
  *
  * @return EE_Currency[]
  * @throws \EE_Error
  */
 public function get_all_usable_currencies()
 {
     return EEM_Currency::instance()->get_all_currencies_usable_by($this->type_obj());
 }