コード例 #1
0
ファイル: group.php プロジェクト: rene-hermenau/ingot
 /**
  * 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;
 }