Example #1
0
 protected function create_experiment()
 {
     $group = group::read($this->ID);
     if (!empty($group['variants'])) {
         $variants = helpers::make_array_values_numeric($group['variants'], true);
         $creator = new CreateExperiment($variants, $this->ID, $this->bandit);
         $this->experiment = $creator->get_experiment();
     }
 }
Example #2
0
 /**
  * Validate item config
  *
  * @since 0.4.0
  *
  * @access protected
  *
  * @param array $data Item config
  *
  * @return array|\WP_Error Item config array if valid, WP_Error if not
  */
 protected static function validate_config($data)
 {
     foreach (self::required() as $key) {
         if (!isset($data[$key])) {
             return new \WP_Error('ingot-invalid-config', __(sprintf('Groups require the field: %s', $key), 'ingot'), $data);
         }
     }
     if (false == self::validate_type($data)) {
         return new \WP_Error('ingot-invalid-group-type', __('Invalid group type', 'ingot'), $data);
     }
     if ('click' == $data['type'] && false == self::validate_click_type($data)) {
         return new \WP_Error('ingot-invalid-click-group-type', __('Invalid click group type', 'ingot'), $data);
     }
     //@todo this validation for price group subtypes
     if ('price' == $data['type'] && 1 == 3) {
         return new \WP_Error('ingot-invalid-click-group-type', __('Invalid price group type', 'ingot'), $data);
     }
     foreach (self::get_all_fields() as $field) {
         if (!in_array($field, array('variants', 'meta', 'levers'))) {
             $data[$field] = (string) $data[$field];
         } else {
             if (!is_array($data[$field])) {
                 $data[$field] = array();
             }
         }
     }
     $data = self::prepare_meta($data);
     if (is_wp_error($data)) {
         return $data;
     }
     $data['variants'] == helpers::make_array_values_numeric($data['variants'], true);
     return $data;
 }
Example #3
0
 /**
  * Validate and sanitize meta array
  *
  * @since 0.4.0
  *
  * @param array $data
  *
  * @return array|\WP_Error Prepared array or WP_Error if invalid
  */
 protected static function prepare_meta($data)
 {
     if (!isset($data['meta']) || empty($data['meta'] || !is_array($data['meta']))) {
         $data['meta'] = [];
         return $data;
     }
     if ('click' == $data['type']) {
         if ('destination' == $data['sub_type']) {
             return destination::prepare_meta($data);
         }
         foreach (['color', 'background_color', 'color_test_text', 'link'] as $field) {
             if (isset($data['meta'][$field]) && !empty($data['meta'][$field]) && is_string($data['meta'][$field])) {
                 if ('link' == $field) {
                     if (filter_var($data['meta'][$field], FILTER_VALIDATE_URL)) {
                         $data['meta'][$field] = esc_url_raw($data['meta'][$field]);
                     } else {
                         return new \WP_Error('ingot-invalid-config-click-link', __('Click groups must have a valid link.', 'ingot'));
                     }
                 } else {
                     $data['meta'][$field] = strip_tags($data['meta'][$field]);
                 }
             } else {
                 $data['meta'][$field] = '';
             }
         }
     }
     if ('price' == $data['type']) {
         if (!isset($data['meta']['product_ID'])) {
             return new \WP_Error('ingot-invalid-config-no-product-id', __('Ingot price tests must set product ID in meta.product_ID', 'ingot'));
         }
         if (isset($data['meta']['variable_prices']) && is_array($data['meta']['variable_prices'])) {
             $data['meta']['variable_prices'] = helpers::make_array_values_numeric($data['meta']['variable_prices']);
         } else {
             $data['meta']['variable_prices'] = [];
         }
     }
     return $data;
 }
Example #4
0
 /**
  * Utility function to make all keys of an array integers (recursively)
  *
  * @since 0.0.6
  *
  * @param $array
  *
  * @return array
  */
 public function make_array_values_numeric($array)
 {
     return \ingot\testing\utility\helpers::make_array_values_numeric($array);
 }
Example #5
0
 /**
  * @return array
  */
 private function current_meta()
 {
     return helpers::make_array_values_numeric(get_post_meta($this->post->ID, $this->meta_key, false));
 }