PATH:
home
/
letacommog
/
camarsac
/
wp-content
/
plugins
/
jet-engine
/
includes
/
modules
/
forms
<?php /** * Captcha manager class */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } if ( ! class_exists( 'Jet_Engine_Booking_Forms_Preset' ) ) { /** * Define Jet_Engine_Booking_Forms_Preset class */ class Jet_Engine_Booking_Forms_Preset { private $meta_key = '_preset'; private $form_id = null; private $data = null; private $source = null; private $defaults = array( 'enabled' => false, 'from' => 'post', 'post_from' => 'current_post', 'user_from' => 'current_user', 'query_var' => '_post_id', 'fields_map' => array(), ); public function __construct( $form_id = null ) { $this->form_id = $form_id; } /** * Update captcha related meta with data from $_POST array * @return [type] [description] */ public function update_meta() { if ( ! $this->form_id ) { return; } $preset = isset( $_POST[ $this->meta_key ] ) ? $_POST[ $this->meta_key ] : $this->defaults; update_post_meta( $this->form_id, $this->meta_key, $preset ); } /** * Sanitize preset source * * @return [type] [description] */ public function sanitize_source() { $data = $this->get_data(); if ( empty( $data['enabled'] ) ) { return true; } $from = ! empty( $data['from'] ) ? $data['from'] : $this->defaults['from']; $source = $this->get_source( $data ); if ( ! $source ) { return true; } if ( 'post' === $from ) { if ( ! is_user_logged_in() ) { return false; } if ( absint( $source->post_author ) !== get_current_user_id() && ! current_user_can( 'edit_others_posts' ) ) { return false; } } elseif ( 'user' === $from ) { if ( ! is_user_logged_in() ) { return false; } if ( get_current_user_id() !== $source->ID && ! current_user_can( 'edit_users' ) ) { return false; } } return true; } public function is_repeater_val( $value ) { if ( is_array( $value ) && ! empty( $value ) ) { $value = array_values( $value ); return is_array( $value[0] ); } else { return false; } } public function get_key_from_map( $map, $repeater_key ) { foreach ( $map as $field => $data ) { $prop = ! empty( $data['prop'] ) ? $data['prop'] : 'post_title'; if ( 'post_meta' === $prop && ! empty( $data['key'] ) && $repeater_key == $data['key'] ) { return $field; } } return $repeater_key; } public function parse_dynamic_preset( $value ) { $dynamic_preset = json_decode( $value, true ); if ( empty( $dynamic_preset ) || empty( $dynamic_preset['jet_preset'] ) ) { return false; } else { return $dynamic_preset; } } public function field_dynamic_preset( $args ) { if ( empty( $args['default'] ) ) { return false; } return $this->parse_dynamic_preset( $args['default'] ); } /** * Returns preset value * * @param string $field * @param array $args * @param array $data * @param bool|array $dynamic_preset * * @return array */ public function get_preset_value( $field = null, $args = array(), $data = array(), $dynamic_preset = false ) { $result = array( 'rewrite' => false, 'value' => null, ); if ( ! $field ) { return $result; } if ( empty( $data['enabled'] ) && ! $dynamic_preset ) { return $result; } $source = $this->get_source( $data, $dynamic_preset ); if ( ! empty( $dynamic_preset ) ) { $data = $dynamic_preset; } $from = ! empty( $data['from'] ) ? $data['from'] : $this->defaults['from']; $map = ! empty( $data['fields_map'] ) ? $data['fields_map'] : $this->defaults['fields_map']; if ( ! empty( $dynamic_preset ) ) { $map = array( $field => array( 'prop' => ! empty( $data['current_field_prop'] ) ? $data['current_field_prop'] : '', 'key' => ! empty( $data['current_field_key'] ) ? $data['current_field_key'] : '', ), ); } if ( ! $source ) { if ( ! empty( $dynamic_preset ) ) { $result['rewrite'] = true; $result['value'] = ''; } return $result; } if ( empty( $map[ $field ] ) || ( empty( $map[ $field ]['prop'] ) && empty( $map[ $field ]['key'] ) ) ) { if ( ! empty( $dynamic_preset ) ) { $result['rewrite'] = true; $result['value'] = ''; } return $result; } $field_data = $map[ $field ]; $value = null; $array_allowed = in_array( $args['type'], array( 'checkboxes' ) ) || ! empty( $args['array_allowed'] ); if ( 'post' === $from ) { if ( empty( $dynamic_preset ) && absint( $source->post_author ) !== get_current_user_id() && ! current_user_can( 'edit_others_posts' ) ) { return $result; } $prop = ! empty( $field_data['prop'] ) ? $field_data['prop'] : 'post_title'; if ( 'post_meta' === $prop ) { if ( ! empty( $field_data['key'] ) ) { $value = get_post_meta( $source->ID, $field_data['key'], true ); if ( $this->is_repeater_val( $value ) ) { $prepared_value = array(); foreach ( $value as $index => $row ) { $prepared_row = array(); foreach ( $row as $item_key => $item_value ) { $item_key = $this->get_key_from_map( $map, $item_key ); $prepared_row[ $item_key ] = $item_value; } $prepared_value[] = $prepared_row; } $value = $prepared_value; } if ( jet_engine()->relations && jet_engine()->relations->is_relation_key( $field_data['key'] ) ) { $info = jet_engine()->relations->get_relation_info( $field_data['key'] ); if ( ! $info ) { return $result; } $args = array( 'post_id' => $source->ID, 'post_type_1' => $info['post_type_1'], 'post_type_2' => $info['post_type_2'], ); if ( $source->post_type === $info['post_type_1'] ) { $args['from'] = $info['post_type_2']; } else { $args['from'] = $info['post_type_1']; } $value = jet_engine()->relations->get_related_posts( $args ); } else { $value = get_post_meta( $source->ID, $field_data['key'], true ); } } else { return $result; } } elseif ( 'post_terms' === $prop ) { if ( ! empty( $field_data['key'] ) ) { $value = wp_get_post_terms( $source->ID, $field_data['key'] ); if ( empty( $value ) || is_wp_error( $value ) ) { return $result; } else { if ( $array_allowed ) { $value = array_map( function( $term ) { return strval( $term->term_id ); }, $value ); } else { $value = $value[0]; $value = $value->term_id; } } } else { return $result; } } elseif ( 'post_thumb' === $prop ) { $value = get_post_thumbnail_id( $source->ID ); } else { $value = isset( $source->$prop ) ? $source->$prop : null; } } elseif ( 'user' === $from ) { if ( ! $source || is_wp_error( $source ) ) { return $result; } if ( ! is_user_logged_in() ) { return $result; } if ( empty( $dynamic_preset ) && get_current_user_id() !== $source->ID && ! current_user_can( 'edit_users' ) ) { return $result; } $prop = ! empty( $field_data['prop'] ) ? $field_data['prop'] : 'post_title'; if ( 'user_meta' === $prop ) { if ( ! empty( $field_data['key'] ) ) { $value = get_user_meta( $source->ID, $field_data['key'], true ); } else { return $result; } } else { // adjust props switch ( $prop ) { case 'email': $prop = 'user_email'; break; case 'login': $prop = 'user_login'; break; } if ( isset( $source->data->$prop ) ) { $value = $source->data->$prop; } elseif ( isset( $source->$prop ) ) { $value = $source->$prop; } else { $value = null; } } } elseif ( 'option_page' === $from ) { $key = ! empty( $field_data['key'] ) ? $field_data['key'] : false; if ( $key ) { $value = jet_engine()->listings->data->get_option( $key ); } } else { $key = ! empty( $field_data['key'] ) ? $field_data['key'] : false; if ( $key && is_array( $source ) ) { $value = isset( $source[ $key ] ) ? $source[ $key ] : null; } $value = apply_filters( 'jet-engine/forms/preset-value/' . $from, $value, $field_data, $data ); } // Prepare value for date field if ( in_array( $args['type'], array( 'date', 'datetime-local' ) ) && ! Jet_Engine_Tools::is_valid_timestamp( $value ) ) { $value = strtotime( $value ); } if ( 'date' === $args['type'] ) { $value = date_i18n( 'Y-m-d', $value ); } if ( 'datetime-local' === $args['type'] ) { $value = date_i18n( 'Y-m-d\TH:i', $value ); } if ( null === $value && ! empty( $dynamic_preset ) ) { $value = ''; } if ( null !== $value ) { $result['rewrite'] = true; $result['value'] = $value; } return $result; } /** * Returns field value * * @return [type] [description] */ public function get_field_value( $field = null, $args = array() ) { $result = array( 'rewrite' => false, 'value' => null, ); if ( ! $field ) { return $result; } $data = $this->get_data(); $dynamic_preset = $this->field_dynamic_preset( $args ); return $this->get_preset_value( $field, $args, $data, $dynamic_preset ); } /** * Returns condition dynamic value. * * @param array $cond_args * @param array $field_args * * @return array */ public function get_condition_value( $cond_args = array(), $field_args = array() ) { $result = array( 'rewrite' => false, 'value' => null, ); if ( empty( $cond_args['value'] ) || empty( $cond_args['field'] ) ) { return $result; } $dynamic_preset = $this->parse_dynamic_preset( $cond_args['value'] ); if ( empty( $dynamic_preset ) ) { return $result; } return $this->get_preset_value( $cond_args['field'], $field_args, false, $dynamic_preset ); } /** * Returns field source * * @return [type] [description] */ public function get_source( $data = array(), $dynamic_preset = false ) { if ( null !== $this->source && ! $dynamic_preset ) { return $this->source; } if ( ! empty( $dynamic_preset ) ) { $data = $dynamic_preset; } $from = ! empty( $data['from'] ) ? $data['from'] : $this->defaults['from']; $source = $this->source; switch ( $from ) { case 'query_vars': $source = $_GET; break; case 'user': $user_from = ! empty( $data['user_from'] ) ? $data['user_from'] : $this->defaults['user_from']; if ( 'current_user' === $user_from ) { if ( is_user_logged_in() ) { $source = wp_get_current_user(); } } else { $var = ! empty( $data['query_var'] ) ? $data['query_var'] : $this->defaults['query_var']; $user_id = ( $var && isset( $_REQUEST[ $var ] ) ) ? $_REQUEST[ $var ] : false; $source = get_user_by( 'ID', $user_id ); } break; default: $post_from = ! empty( $data['post_from'] ) ? $data['post_from'] : $this->defaults['post_from']; if ( 'current_post' === $post_from ) { $post_id = get_the_ID(); } else { $var = ! empty( $data['query_var'] ) ? $data['query_var'] : $this->defaults['query_var']; $post_id = ( $var && isset( $_REQUEST[ $var ] ) ) ? $_REQUEST[ $var ] : false; } if ( $post_id ) { $source = get_post( $post_id ); } break; } if ( ! $dynamic_preset ) { $this->source = $source; return $this->source; } else { return $source; } } /** * Returns captcha settings for passed form ID * * @param [type] $post_id [description] * @return [type] [description] */ public function get_data() { if ( null !== $this->data ) { return $this->data; } if ( ! $this->form_id ) { $this->form_id = get_the_ID(); } $preset = get_post_meta( $this->form_id, $this->meta_key, true ); if ( ! $preset || ! is_array( $preset ) ) { $this->data = $this->defaults; } else { $this->data = wp_parse_args( $preset, $this->defaults ); } return $this->data; } } }
[+]
..
[+]
widgets
[-] editor.php
[edit]
[+]
generators
[-] export-import.php
[edit]
[+]
gateways
[-] handler.php
[edit]
[-] preset.php
[edit]
[-] manager.php
[edit]
[-] notifications.php
[edit]
[+]
handlers
[-] forms.php
[edit]
[-] captcha.php
[edit]
[-] file-upload.php
[edit]
[-] messages.php
[edit]
[-] builder.php
[edit]