Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- GFForms::include_feed_addon_framework();
- class GFM2PAddOn extends GFFeedAddOn {
- protected $_version = GF_M2P_ADDON_VERSION;
- protected $_min_gravityforms_version = '2.0';
- protected $_slug = 'm2paddon';
- protected $_path = 'gravityformsm2p/gfm2p.php';
- protected $_full_path = __FILE__;
- protected $_title = 'Gravity Forms Membership 2 Pro Add-On';
- protected $_short_title = 'Membership 2 Pro';
- private static $_instance = null;
- /**
- * Get an instance of this class.
- *
- * @return GFM2PAddOn
- */
- public static function get_instance() {
- if ( self::$_instance == null ) {
- self::$_instance = new GFM2PAddOn();
- }
- return self::$_instance;
- }
- /**
- * Plugin starting point. Handles hooks, loading of language files and PayPal
- * delayed payment support.
- */
- public function init($api) {
- parent::init();
- $this->add_delayed_payment_support(
- array(
- 'option_label' => esc_html__( 'Subscribe to Membership only when payment is received.', 'm2paddon' )
- )
- );
- }
- // # FEED PROCESSING ---------------------------------------------------------
- /**
- * Process the feed i.e. add user to membership based on level selected.
- *
- * @param array $feed The feed object to be processed.
- * @param array $entry The entry object currently being processed.
- * @param array $form The form object currently being processed.
- *
- * @return bool|void
- */
- public function process_feed( $feed, $entry, $form ) {
- $email = $this->get_field_value( $form, $entry, $feed['meta']['email'] );
- $membership_name = $this->get_field_value( $form, $entry, $feed['meta']['membership_name'] );
- $user = $this->get_field_value( $form, $entry, $feed['meta']['user'] );
- // Retrieve the name => value pairs for all fields mapped in the 'mappedFields' field map.
- $field_map = $this->get_field_map_fields( $feed, 'mappedFields' );
- // Loop through the fields from the field map setting building an array of values to be passed to the third-party service.
- $merge_vars = array();
- foreach ( $field_map as $name => $field_id ) {
- // Get the field value for the specified field id
- $merge_vars[ $name ] = $this->get_field_value( $form, $entry, $field_id );
- }
- // Send the values to the Membership 2 Pro API
- function m2paddon_add_subscription( ) {
- $api = ms_api();
- $user_id = get_userdatabylogin($user)->ID;
- $membership_id = $api->get_membership_id( $membership_name );
- // Add the subscription
- $api->add_subscription($user_id, $membership_id);
- }
- add_action( 'ms_init', 'm2paddon_add_subscription' );
- }
- // # SCRIPTS & STYLES --------------------------------------------------------
- /**
- * Return the scripts which should be enqueued.
- *
- * @return array
- */
- public function scripts() {
- $scripts = array(
- array(
- 'handle' => 'my_script_js',
- 'src' => $this->get_base_url() . '/js/my_script.js',
- 'version' => $this->_version,
- 'deps' => array( 'jquery' ),
- 'strings' => array(
- 'first' => esc_html__( 'First Choice', 'm2paddon' ),
- 'second' => esc_html__( 'Second Choice', 'm2paddon' ),
- 'third' => esc_html__( 'Third Choice', 'm2paddon' ),
- ),
- 'enqueue' => array(
- array(
- 'admin_page' => array( 'form_settings' ),
- 'tab' => 'm2paddon',
- ),
- ),
- ),
- );
- return array_merge( parent::scripts(), $scripts );
- }
- /**
- * Return the stylesheets which should be enqueued.
- *
- * @return array
- */
- public function styles() {
- $styles = array(
- array(
- 'handle' => 'my_styles_css',
- 'src' => $this->get_base_url() . '/css/my_styles.css',
- 'version' => $this->_version,
- 'enqueue' => array(
- array( 'field_types' => array( 'poll' ) ),
- ),
- ),
- );
- return array_merge( parent::styles(), $styles );
- }
- // # ADMIN FUNCTIONS --------------------------------------------------------
- /**
- * Configures the settings which should be rendered on the feed edit page in
- * the Form Settings > Membership 2 Pro Feed Add-On area.
- *
- * @return array
- */
- public function feed_settings_fields() {
- return array(
- array(
- 'title' => esc_html__( 'Membership 2 Pro Settings', 'm2paddon' ),
- 'fields' => array(
- array(
- 'label' => esc_html__( 'Membership Feed Name', 'm2paddon' ),
- 'type' => 'text',
- 'name' => 'feedName',
- 'class' => 'small',
- ),
- array(
- 'name' => 'mappedFields',
- 'label' => esc_html__( 'Map Fields', 'm2paddon' ),
- 'type' => 'field_map',
- 'field_map' => array(
- array(
- 'name' => 'membership_name',
- 'label' => esc_html__( 'Membership Name', 'm2paddon' ),
- 'required' => 1,
- 'field_type' => array( 'text', 'hidden' ),
- 'tooltip' => esc_html__( 'The Membership Name to Subscribe to', 'm2paddon' ),
- ),
- array(
- 'name' => 'email',
- 'label' => esc_html__( 'Email', 'm2paddon' ),
- 'required' => 1,
- 'field_type' => array( 'text', 'hidden' ),
- 'tooltip' => esc_html__( 'The Email Address of the new user', 'm2paddon' ),
- ),
- array(
- 'name' => 'user',
- 'label' => esc_html__( 'User Name', 'm2paddon' ),
- 'required' => 1,
- 'field_type' => array( 'text', 'hidden' ),
- 'tooltip' => esc_html__( 'The User Name', 'm2paddon' ),
- ),
- ),
- ),
- array(
- 'name' => 'condition',
- 'label' => esc_html__( 'Condition', 'm2paddon' ),
- 'type' => 'feed_condition',
- 'checkbox_label' => esc_html__( 'Enable Condition', 'm2paddon' ),
- 'instructions' => esc_html__( 'Process Membership if', 'm2paddon' ),
- ),
- ),
- ),
- );
- }
- /**
- * Configures which columns should be displayed on the feed list page.
- *
- * @return array
- */
- public function feed_list_columns() {
- return array(
- 'feedName' => esc_html__( 'Name', 'm2paddon' ),
- 'mytextbox' => esc_html__( 'My Textbox', 'm2paddon' ),
- );
- }
- /**
- * Format the value to be displayed in the mytextbox column.
- *
- * @param array $feed The feed being included in the feed list.
- *
- * @return string
- */
- public function get_column_value_mytextbox( $feed ) {
- return '<b>' . rgars( $feed, 'meta/mytextbox' ) . '</b>';
- }
- /**
- * Prevent feeds being listed or created if an api key isn't valid.
- *
- * @return bool
- */
- public function can_create_feed() {
- // Get the plugin settings.
- $settings = $this->get_plugin_settings();
- // Access a specific setting e.g. an api key
- $key = rgar( $settings, 'apiKey' );
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement