/**
  * Returns a list of all registered Add-Ons
  *
  * @since  1.0.0
  * @return array Add-on lisl
  */
 public static function get_addons()
 {
     static $Done = false;
     $res = null;
     if (!$Done || self::$_reload_files) {
         self::$_registered = array();
         $addons = array();
         $Done = true;
         self::load_core_addons();
         // Register core add-ons
         $addons = self::get_core_list();
         /**
          * Register new addons.
          *
          * @since  1.0.0
          */
         $addons = apply_filters('ms_model_addon_register', $addons);
         // Sanitation and populate default fields.
         foreach ($addons as $key => $data) {
             self::$_registered[$key] = $data->name;
             $addons[$key]->id = $key;
             $addons[$key]->active = self::is_enabled($key);
             $addons[$key]->title = $data->name;
             if (isset($addons[$key]->icon)) {
                 $addons[$key]->icon = '<i class="' . $addons[$key]->icon . '"></i>';
             } else {
                 $addons[$key]->icon = '<i class="wpmui-fa wpmui-fa-puzzle-piece"></i>';
             }
             if (empty($addons[$key]->action)) {
                 $addons[$key]->action = array();
                 $addons[$key]->action[] = array('id' => 'ms-toggle-' . $key, 'type' => MS_Helper_Html::INPUT_TYPE_RADIO_SLIDER, 'value' => self::is_enabled($key), 'class' => 'toggle-plugin', 'ajax_data' => array('action' => MS_Controller_Addon::AJAX_ACTION_TOGGLE_ADDON, 'field' => 'active', 'addon' => $key));
                 $addons[$key]->action[] = MS_Helper_Html::save_text(null, false, true);
             }
             /**
              * Add custom Actions or remove default actions
              *
              * @since  1.0.0
              */
             $addons[$key]->action = apply_filters('ms_model_addon_action-' . $key, $addons[$key]->action, $addons[$key]);
         }
         natcasesort(self::$_registered);
         foreach (self::$_registered as $key => $dummy) {
             self::$_registered[$key] = $addons[$key];
         }
         /**
          * The Add-on list is prepared. Initialize the addons now.
          *
          * @since  1.0.0
          */
         do_action('ms_model_addon_initialize');
     }
     return self::$_registered;
 }
    /**
     * Render the payment box for a single Membership subscription.
     *
     * @since  1.0.0
     */
    public function specific_payment_settings()
    {
        $membership = $this->data['membership'];
        $title = sprintf(__('Payment settings for %s', MS_TEXT_DOMAIN), $membership->get_name_tag());
        $type_class = $this->data['is_global_payments_set'] ? '' : 'ms-half right';
        ?>
		<div class="ms-specific-payment-wrapper <?php 
        echo esc_attr($type_class);
        ?>
">
			<div class="ms-header">
				<div class="ms-settings-tab-title">
					<h3><?php 
        echo $title;
        ?>
</h3>
				</div>
				<?php 
        MS_Helper_Html::html_separator();
        ?>
			</div>

			<div class="inside">
				<?php 
        $view = MS_Factory::create('MS_View_Membership_Tab_Payment');
        $view->data = $this->data;
        echo $view->to_html();
        ?>
			</div>
			<?php 
        MS_Helper_Html::save_text();
        ?>
		</div>
		<?php 
    }