Advertisement
bennyp

Untitled

Jun 28th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.68 KB | None | 0 0
  1. <?php
  2.  
  3. GFForms::include_feed_addon_framework();
  4.  
  5. class GFM2PAddOn extends GFFeedAddOn {
  6.  
  7.     protected $_version = GF_M2P_ADDON_VERSION;
  8.     protected $_min_gravityforms_version = '2.0';
  9.     protected $_slug = 'm2paddon';
  10.     protected $_path = 'gravityformsm2p/gfm2p.php';
  11.     protected $_full_path = __FILE__;
  12.     protected $_title = 'Gravity Forms Membership 2 Pro Add-On';
  13.     protected $_short_title = 'Membership 2 Pro';
  14.  
  15.     private static $_instance = null;
  16.  
  17.     /**
  18.      * Get an instance of this class.
  19.      *
  20.      * @return GFM2PAddOn
  21.      */
  22.     public static function get_instance() {
  23.         if ( self::$_instance == null ) {
  24.             self::$_instance = new GFM2PAddOn();
  25.         }
  26.  
  27.         return self::$_instance;
  28.     }
  29.  
  30.     /**
  31.      * Plugin starting point. Handles hooks, loading of language files and PayPal
  32.      * delayed payment support.
  33.      */
  34.     public function init($api) {
  35.  
  36.         parent::init();
  37.  
  38.         $this->add_delayed_payment_support(
  39.             array(
  40.                 'option_label' => esc_html__( 'Subscribe to Membership only when payment is received.', 'm2paddon' )
  41.             )
  42.         );
  43.  
  44.     }
  45.  
  46.  
  47.     // # FEED PROCESSING ---------------------------------------------------------
  48.  
  49.     /**
  50.      * Process the feed i.e. add user to membership based on level selected.
  51.      *
  52.      * @param array $feed The feed object to be processed.
  53.      * @param array $entry The entry object currently being processed.
  54.      * @param array $form The form object currently being processed.
  55.      *
  56.      * @return bool|void
  57.      */
  58.     public function process_feed( $feed, $entry, $form ) {
  59.         $email = $this->get_field_value( $form, $entry, $feed['meta']['email'] );
  60.         $membership_name = $this->get_field_value( $form, $entry, $feed['meta']['membership_name'] );
  61.         $user = $this->get_field_value( $form, $entry, $feed['meta']['user'] );
  62.  
  63.         // Retrieve the name => value pairs for all fields mapped in the 'mappedFields' field map.
  64.         $field_map = $this->get_field_map_fields( $feed, 'mappedFields' );
  65.         // Loop through the fields from the field map setting building an array of values to be passed to the third-party service.
  66.         $merge_vars = array();
  67.         foreach ( $field_map as $name => $field_id ) {
  68.             // Get the field value for the specified field id
  69.             $merge_vars[ $name ] = $this->get_field_value( $form, $entry, $field_id );
  70.         }
  71.         // Send the values to the Membership 2 Pro API
  72.         function m2paddon_add_subscription( ) {
  73.             $api = ms_api();
  74.             $user_id = get_userdatabylogin($user)->ID;
  75.             $membership_id = $api->get_membership_id( $membership_name );
  76.             // Add the subscription
  77.             $api->add_subscription($user_id, $membership_id);
  78.         }
  79.  
  80.         add_action( 'ms_init', 'm2paddon_add_subscription' );
  81.  
  82.     }
  83.  
  84.  
  85.     // # SCRIPTS & STYLES --------------------------------------------------------
  86.  
  87.     /**
  88.      * Return the scripts which should be enqueued.
  89.      *
  90.      * @return array
  91.      */
  92.     public function scripts() {
  93.         $scripts = array(
  94.             array(
  95.                 'handle'  => 'my_script_js',
  96.                 'src'     => $this->get_base_url() . '/js/my_script.js',
  97.                 'version' => $this->_version,
  98.                 'deps'    => array( 'jquery' ),
  99.                 'strings' => array(
  100.                     'first'  => esc_html__( 'First Choice', 'm2paddon' ),
  101.                     'second' => esc_html__( 'Second Choice', 'm2paddon' ),
  102.                     'third'  => esc_html__( 'Third Choice', 'm2paddon' ),
  103.                 ),
  104.                 'enqueue' => array(
  105.                     array(
  106.                         'admin_page' => array( 'form_settings' ),
  107.                         'tab'        => 'm2paddon',
  108.                     ),
  109.                 ),
  110.             ),
  111.         );
  112.  
  113.         return array_merge( parent::scripts(), $scripts );
  114.     }
  115.  
  116.     /**
  117.      * Return the stylesheets which should be enqueued.
  118.      *
  119.      * @return array
  120.      */
  121.     public function styles() {
  122.  
  123.         $styles = array(
  124.             array(
  125.                 'handle'  => 'my_styles_css',
  126.                 'src'     => $this->get_base_url() . '/css/my_styles.css',
  127.                 'version' => $this->_version,
  128.                 'enqueue' => array(
  129.                     array( 'field_types' => array( 'poll' ) ),
  130.                 ),
  131.             ),
  132.         );
  133.  
  134.         return array_merge( parent::styles(), $styles );
  135.     }
  136.  
  137.     // # ADMIN FUNCTIONS --------------------------------------------------------
  138.  
  139.     /**
  140.      * Configures the settings which should be rendered on the feed edit page in
  141.      * the Form Settings > Membership 2 Pro Feed Add-On area.
  142.      *
  143.      * @return array
  144.      */
  145.     public function feed_settings_fields() {
  146.         return array(
  147.             array(
  148.                 'title'  => esc_html__( 'Membership 2 Pro Settings', 'm2paddon' ),
  149.                 'fields' => array(
  150.                     array(
  151.                         'label'   => esc_html__( 'Membership Feed Name', 'm2paddon' ),
  152.                         'type'    => 'text',
  153.                         'name'    => 'feedName',
  154.                         'class'   => 'small',
  155.                     ),
  156.                     array(
  157.                         'name'      => 'mappedFields',
  158.                         'label'     => esc_html__( 'Map Fields', 'm2paddon' ),
  159.                         'type'      => 'field_map',
  160.                         'field_map' => array(
  161.                             array(
  162.                                 'name'       => 'membership_name',
  163.                                 'label'      => esc_html__( 'Membership Name', 'm2paddon' ),
  164.                                 'required'   => 1,
  165.                                 'field_type' => array( 'text', 'hidden' ),
  166.                                 'tooltip' => esc_html__( 'The Membership Name to Subscribe to', 'm2paddon' ),
  167.                             ),
  168.                             array(
  169.                                 'name'       => 'email',
  170.                                 'label'      => esc_html__( 'Email', 'm2paddon' ),
  171.                                 'required'   => 1,
  172.                                 'field_type' => array( 'text', 'hidden' ),
  173.                                 'tooltip' => esc_html__( 'The Email Address of the new user', 'm2paddon' ),
  174.                             ),
  175.                             array(
  176.                                 'name'       => 'user',
  177.                                 'label'      => esc_html__( 'User Name', 'm2paddon' ),
  178.                                 'required'   => 1,
  179.                                 'field_type' => array( 'text', 'hidden' ),
  180.                                 'tooltip' => esc_html__( 'The User Name', 'm2paddon' ),
  181.                             ),
  182.                         ),
  183.                     ),
  184.                     array(
  185.                         'name'           => 'condition',
  186.                         'label'          => esc_html__( 'Condition', 'm2paddon' ),
  187.                         'type'           => 'feed_condition',
  188.                         'checkbox_label' => esc_html__( 'Enable Condition', 'm2paddon' ),
  189.                         'instructions'   => esc_html__( 'Process Membership if', 'm2paddon' ),
  190.                     ),
  191.                 ),
  192.             ),
  193.         );
  194.     }
  195.  
  196.     /**
  197.      * Configures which columns should be displayed on the feed list page.
  198.      *
  199.      * @return array
  200.      */
  201.     public function feed_list_columns() {
  202.         return array(
  203.             'feedName'  => esc_html__( 'Name', 'm2paddon' ),
  204.             'mytextbox' => esc_html__( 'My Textbox', 'm2paddon' ),
  205.         );
  206.     }
  207.  
  208.     /**
  209.      * Format the value to be displayed in the mytextbox column.
  210.      *
  211.      * @param array $feed The feed being included in the feed list.
  212.      *
  213.      * @return string
  214.      */
  215.     public function get_column_value_mytextbox( $feed ) {
  216.         return '<b>' . rgars( $feed, 'meta/mytextbox' ) . '</b>';
  217.     }
  218.  
  219.     /**
  220.      * Prevent feeds being listed or created if an api key isn't valid.
  221.      *
  222.      * @return bool
  223.      */
  224.     public function can_create_feed() {
  225.  
  226.         // Get the plugin settings.
  227.         $settings = $this->get_plugin_settings();
  228.  
  229.         // Access a specific setting e.g. an api key
  230.         $key = rgar( $settings, 'apiKey' );
  231.  
  232.         return true;
  233.     }
  234.  
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement