Guest User

Gravity Forms PayPal Add-On - User Update

a guest
Sep 22nd, 2011
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.25 KB | None | 0 0
  1. <?php
  2. /*
  3. Plugin Name: Gravity Forms PayPal Add-On - User Update
  4. Plugin URI: http://pronamic.eu/wp-plugins/gravityformspaypal-userupdate
  5. Description: Makes it easy to update an user role to an value from an Gravity Forms field.
  6. Version: 0.1
  7. Author: pronamic
  8. Author URI: http://pronamic.eu/
  9. */
  10.  
  11. class GFPayPalUserUpdate {
  12.     /**
  13.      * Text domain of this plugin
  14.      *
  15.      * @var string
  16.      */
  17.     const TEXT_DOMAIN = 'gravityformspaypal-userupdate';
  18.  
  19.     //////////////////////////////////////////////////
  20.  
  21.     /**
  22.      * Bootstrap
  23.      */
  24.     public static function bootstrap() {
  25.         add_action('init', array(__CLASS__, 'initialize'));
  26.         add_action('admin_init',  array(__CLASS__, 'adminInitialize'));
  27.     }
  28.  
  29.     //////////////////////////////////////////////////
  30.    
  31.     /**
  32.      * Initialize
  33.      */
  34.     public static function initialize() {
  35.         add_action('gform_paypal_fulfillment', array(__CLASS__, 'updateUserRole'), 10, 2);
  36.     }
  37.  
  38.     /**
  39.      * Admin initialize
  40.      */
  41.     public static function adminInitialize() {
  42.         add_action('gform_paypal_add_option_group', array(__CLASS__, 'addOptionGroup'), 10, 2);
  43.        
  44.         add_filter('gform_paypal_save_config', array(__CLASS__, 'saveConfig'));
  45.     }
  46.  
  47.     //////////////////////////////////////////////////
  48.  
  49.     /**
  50.      * Update user role
  51.      *
  52.      * @param array $entry
  53.      * @param array $config
  54.      */
  55.     public static function updateUserRole($entry, $config) {
  56.         // Gravity Forms User Registration Add-On
  57.         if(class_exists('GFUserData')) {
  58.             $user = GFUserData::get_user_by_entry_id($entry['id']);
  59.         }
  60.        
  61.         if($user == false) {
  62.             $user = new WP_User($entry['created_by']);
  63.         }
  64.  
  65.         $paypalConfig = GFPayPal::get_config($entry['form_id']);
  66.        
  67.         $userRoleFieldId = $paypalConfig['meta']['user_role_field_id'];
  68.  
  69.         if($user && !empty($userRoleFieldId) && isset($entry[$userRoleFieldId])) {
  70.             $value = $entry[$userRoleFieldId];
  71.             $value = GFCommon::get_selection_value($value);
  72.  
  73.             $user->set_role($value);
  74.         }
  75.     }
  76.  
  77.     /**
  78.      * Save config
  79.      *
  80.      * @param array $config
  81.      */
  82.     public static function saveConfig($config) {
  83.         $config['meta']['user_role_field_id'] = rgpost('gf_paypal_user_role_field_id');
  84.  
  85.         return $config;
  86.     }
  87.  
  88.     //////////////////////////////////////////////////
  89.  
  90.     /**
  91.      * Add option group
  92.      *
  93.      * @param array $config
  94.      * @param array $form
  95.      */
  96.     public static function addOptionGroup($config, $form) {
  97.         $userRoleFieldId = $config['meta']['user_role_field_id'];
  98.  
  99.         ?>
  100.         <div class="margin_vertical_10" style="<?php echo $display_registration_options; ?>">
  101.             <label for="gf_paypal_user_role_field_id" class="left_header"><?php _e('Update User Role', self::TEXT_DOMAIN); ?></label>
  102.  
  103.             <select id="gf_paypal_user_role_field_id" name="gf_paypal_user_role_field_id">
  104.            
  105.             </select>
  106.         </div>
  107.        
  108.         <script type="text/javascript">
  109.             jQuery(document).ready(function($) {
  110.                 function setPayPalUserUpdateField(selectedField) {
  111.                     var fields = "<option></option>" + GetSelectableFields(selectedField, 20);
  112.  
  113.                     $("#gf_paypal_user_role_field_id").html(fields);
  114.                 }
  115.  
  116.                 setPayPalUserUpdateField("<?php echo $userRoleFieldId; ?>");
  117.  
  118.                 $(document).bind("paypalFormSelected", function(form) {
  119.                     setPayPalUserUpdateField("");
  120.                 });
  121.             });
  122.         </script>
  123.         <?php
  124.     }
  125. }
  126.  
  127. GFPayPalUserUpdate::bootstrap();
Add Comment
Please, Sign In to add comment