Advertisement
Guest User

Untitled

a guest
Mar 15th, 2015
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.59 KB | None | 0 0
  1. <?php
  2.  
  3. class GFRandomFields {
  4.  
  5.     public static $all_random_field_ids;
  6.     public static $display_count;
  7.     public static $selected_field_ids = array();
  8.  
  9.     function __construct($form_id, $display_count = 5, $random_field_ids = false) {
  10.  
  11.         $this->all_random_field_ids = $random_field_ids;
  12.         $this->display_count = $display_count;
  13.  
  14.         add_filter("gform_pre_render_$form_id", array(&$this, 'pre_render'));
  15.         add_filter("gform_form_tag_$form_id", array(&$this, 'store_selected_field_ids'));
  16.         add_filter("gform_validation_$form_id", array(&$this, 'validate'));
  17.  
  18.     }
  19.  
  20.     function pre_render($form) {
  21.         return $this->filter_form_fields($form, $this->get_selected_field_ids());
  22.     }
  23.  
  24.     function store_selected_field_ids($form_tag) {
  25.         $value = implode(',', $this->get_selected_field_ids());
  26.         $input = sprintf( '<input type="hidden" value="%s" name="gfrf_field_ids">', $value );
  27.         return $form_tag . $input;
  28.     }
  29.  
  30.     function validate($validation_result) {
  31.  
  32.         $validation_result['form'] = $this->filter_form_fields($validation_result['form'], $this->get_selected_field_ids());
  33.         $validation_result['is_valid'] = true;
  34.  
  35.         foreach($validation_result['form']['fields'] as $field) {
  36.             if($field['failed_validation'])
  37.                 $validation_result['is_valid'] = false;
  38.         }
  39.  
  40.         return $validation_result;
  41.     }
  42.  
  43.     function filter_form_fields($form, $selected_fields) {
  44.  
  45.         $filtered_fields = array();
  46.  
  47.         foreach($form['fields'] as $field) {
  48.  
  49.             if(in_array($field['id'], $this->all_random_field_ids)) {
  50.                 if(in_array($field['id'], $selected_fields))
  51.                     $filtered_fields[] = $field;
  52.             } else {
  53.                 $filtered_fields[] = $field;
  54.             }
  55.  
  56.         }
  57.  
  58.         $form['fields'] = $filtered_fields;
  59.  
  60.         return $form;
  61.     }
  62.  
  63.     function get_selected_field_ids() {
  64.  
  65.         // check if class has already init fields
  66.         if(!empty($this->selected_field_ids))
  67.             return $this->selected_field_ids;
  68.  
  69.         // check if fields have been submitted
  70.         if(rgpost('gfrf_field_ids'))
  71.             return explode(',', rgpost('gfrf_field_ids'));
  72.  
  73.         $field_ids = array();
  74.         $keys = array_rand($this->all_random_field_ids, $this->display_count);
  75.  
  76.         foreach($keys as $key) {
  77.             $field_ids[] = $this->all_random_field_ids[$key];
  78.         }
  79.  
  80.         $this->selected_field_ids = $field_ids;
  81.  
  82.         return $field_ids;
  83.     }
  84.  
  85. }
  86.  
  87. new GFRandomFields(11, 200, array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement