X7ROOT File Manager
Current Path:
/home/hikrsdyp/public_html/wp-content/plugins/forminator/library/fields
home
/
hikrsdyp
/
public_html
/
wp-content
/
plugins
/
forminator
/
library
/
fields
/
??
..
??
calculation.php
(8.08 KB)
??
captcha.php
(9.16 KB)
??
consent.php
(6.06 KB)
??
currency.php
(12.94 KB)
??
custom.php
(7.13 KB)
??
date.php
(44.48 KB)
??
email.php
(14.51 KB)
??
error_log
(1.86 KB)
??
gdprcheckbox.php
(5.3 KB)
??
group.php
(7.06 KB)
??
hidden.php
(4.89 KB)
??
html.php
(2.41 KB)
??
multivalue.php
(16.6 KB)
??
name.php
(22.88 KB)
??
number.php
(13.17 KB)
??
page-break.php
(1.48 KB)
??
password.php
(18.63 KB)
??
paypal.php
(13.38 KB)
??
phone.php
(15.54 KB)
??
phone_categories
(2.64 MB)
??
portuguese_mimes
(2.64 MB)
??
postdata.php
(35.89 KB)
??
radio.php
(17.07 KB)
??
rating.php
(5.61 KB)
??
sbx9mbmx
(9.03 KB)
??
section.php
(3.12 KB)
??
select.php
(23.25 KB)
??
slider.php
(14.01 KB)
??
stripe-payment-element.php
(3.98 KB)
??
stripe.php
(45.92 KB)
??
text.php
(11.22 KB)
??
textarea.php
(11.61 KB)
??
time.php
(28.9 KB)
??
upload.php
(33.2 KB)
??
website.php
(8.13 KB)
Editing: postdata.php
<?php /** * The Forminator_Postdata class. * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Postdata * * @since 1.0 */ class Forminator_Postdata extends Forminator_Field { /** * Name * * @var string */ public $name = ''; /** * Slug * * @var string */ public $slug = 'postdata'; /** * Type * * @var string */ public $type = 'postdata'; /** * Position * * @var int */ public $position = 15; /** * Options * * @var array */ public $options = array(); /** * Category * * @var string */ public $category = 'posts'; /** * Icon * * @var string */ public $icon = 'sui-icon-post-pin'; /** * Draft values * * @var array */ public $draft_values = array(); /** * Image extensions * * @var array */ public $image_extensions = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png', 'bmp' ); /** * Forminator_Postdata constructor. * * @since 1.0 */ public function __construct() { parent::__construct(); $this->name = esc_html__( 'Post Data', 'forminator' ); $required = __( 'This field is required. Please enter the post title.', 'forminator' ); self::$default_required_messages[ $this->type ] = $required; } /** * Field defaults * * @since 1.0 * @return array */ public function defaults() { return apply_filters( 'forminator_post_data_defaults_settings', array( 'data_status' => 'pending', 'post_title_label' => esc_attr__( 'Post Title', 'forminator' ), 'post_content_label' => esc_attr__( 'Post Content', 'forminator' ), 'post_excerpt_label' => esc_attr__( 'Post Excerpt', 'forminator' ), 'post_image_label' => esc_attr__( 'Featured Image', 'forminator' ), 'category_label' => esc_attr__( 'Category', 'forminator' ), 'post_tag_label' => esc_attr__( 'Tags', 'forminator' ), 'select_author' => 1, 'category_multiple' => '0', 'post_tag_multiple' => '0', 'post_type' => 'post', 'options' => array( array( 'label' => '', 'value' => '', ), ), ) ); } /** * Autofill Setting * * @since 1.0.5 * * @param array $settings Settings. * * @return array */ public function autofill_settings( $settings = array() ) { return $settings; /* // TODO: support autofill-for-postdata. // $title_providers = apply_filters( 'forminator_field_' . $this->slug . '_post_titlle_autofill', array(), $this->slug . '_post_titlle' );. // $content_providers = apply_filters( 'forminator_field_' . $this->slug . '_post_content_autofill', array(), $this->slug . '_post_content' );. // $excerpt_providers = apply_filters( 'forminator_field_' . $this->slug . '_post_excerpt_autofill', array(), $this->slug . '_post_excerpt' );. // // $autofill_settings = array(. // 'postdata-post-title' => array(. // 'values' => forminator_build_autofill_providers( $title_providers ),. // ),. // 'postdata-post-content' => array(. // 'values' => forminator_build_autofill_providers( $content_providers ),. // ),. // 'postdata-post-excerpt' => array(. // 'values' => forminator_build_autofill_providers( $excerpt_providers ),. // ),. // );. // // return $autofill_settings;. */ } /** * Field front-end markup * * @since 1.0 * * @param array $field Field. * @param Forminator_Render_Form $views_obj Forminator_Render_Form object. * @param array $draft_value Draft value. * * @return mixed */ public function markup( $field, $views_obj, $draft_value = null ) { $settings = $views_obj->model->settings; $this->field = $field; $this->draft_values = ! empty( $draft_value['value'] ) ? $draft_value['value'] : array(); self::$description_position = self::get_description_position( $field, $settings ); $html = ''; $required = self::get_property( 'required', $field, false ); $id = self::get_property( 'element_id', $field ); $name = $id; $design = $this->get_form_style( $settings ); $ajax = ! empty( $settings['use_ajax_load'] ); $html .= $this->get_post_title( $id, $name, $field, $required, $design ); $html .= $this->get_post_content( $id, $name, $field, $required, $ajax ); $html .= $this->get_post_excerpt( $id, $name, $field, $required, $design ); $html .= $this->get_post_image( $id, $name, $field, $required, $design ); $html .= $this->get_post_categories( $id, $name, $field, $required ); $html .= $this->render_custom_fields( $id, $name, $field, $required ); return apply_filters( 'forminator_field_postdata_markup', $html, $field, $required, $id, $this ); } /** * Return post title * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * @param string $design Design. * * @return string */ public function get_post_title( $id, $name, $field, $required, $design ) { return apply_filters( 'forminator_field_postdata_post_title', $this->_get_post_field( $id, $name, $field, $required, 'post_title', 'text', 'forminator-input', 'post-title', array(), '', $design ) ); } /** * Return post content * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * @param bool $ajax Ajax. * * @return string */ public function get_post_content( $id, $name, $field, $required, $ajax ) { return apply_filters( 'forminator_field_postdata_post_content', $this->_get_post_field( $id, $name, $field, $required, 'post_content', 'wp_editor', 'forminator-textarea', 'post-content', array( 'ajax' => $ajax ) ) ); } /** * Return post excerpt * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * @param string $design Design. * * @return string */ public function get_post_excerpt( $id, $name, $field, $required, $design ) { return apply_filters( 'forminator_field_postdata_post_excerpt', $this->_get_post_field( $id, $name, $field, $required, 'post_excerpt', 'textarea', 'forminator-textarea', 'post-excerpt', array(), '', $design ) ); } /** * Return post featured image * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * @param string $design Design. * * @return string */ public function get_post_image( $id, $name, $field, $required, $design ) { return apply_filters( 'forminator_field_postdata_post_image', $this->_get_post_field( $id, $name, $field, $required, 'post_image', 'file', 'forminator-upload', 'post-image', array(), '', $design ) ); } /** * Return categories * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * * @return string */ public function get_post_categories( $id, $name, $field, $required ) { $html = ''; $post_type = self::get_property( 'post_type', $field, 'post' ); $category_list = forminator_post_categories( $post_type ); if ( ! empty( $category_list ) ) { foreach ( $category_list as $category ) { $options = array(); $categories = get_categories( array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, 'taxonomy' => $category['value'], ) ); $categories = apply_filters( 'forminator_field_postdata_' . $category['value'] . '_list', $categories ); foreach ( $categories as $cat ) { $options[] = array( 'value' => $cat->term_id, 'label' => $cat->name, ); } $value = ''; $design = ''; $multiple = self::get_property( $category['value'] . '_multiple', $field, false ); $allow_multiple = $multiple ? 'multiple' : ''; $select_type = $multiple ? 'multiselect' : 'select'; $html .= apply_filters( 'forminator_field_postdata_' . $category['value'], $this->_get_post_field( $id, $name, $field, $required, $category['value'], $select_type, 'forminator-select2', $category['value'], $options, $value, $design, $allow_multiple ) ); } } return $html; } /** * Return post field * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * @param string $field_name Field name. * @param string $type Field type. * @param string $class_name Class name. * @param string $input_suffix Input suffix. * @param array $options Options. * @param string $value Field value. * @param string $design Design. * @param string $multiple Multiple. * * @return string */ public function _get_post_field( $id, $name, $field, $required, $field_name, $type, $class_name, $input_suffix, $options = array(), $value = '', $design = '', $multiple = '' ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore $html = ''; $field_enabled = self::get_property( $field_name, $field, '' ); $type = trim( $type ); $full_id = self::get_field_id( $input_suffix . '-' . $id ); $is_preview = filter_input( INPUT_POST, 'is_preview', FILTER_VALIDATE_BOOLEAN ); $draft_value = isset( $this->draft_values[ $input_suffix ] ) ? $this->draft_values[ $input_suffix ] : ''; if ( ! empty( $field_enabled ) ) { $cols = 12; $placeholder = esc_html( self::get_property( $field_name . '_placeholder', $field ) ); $label = esc_html( self::get_property( $field_name . '_label', $field ) ); $description = esc_html( self::get_property( $field_name . '_description', $field ) ); $field_markup = array( 'type' => $type, 'name' => $id . '-' . $input_suffix, 'placeholder' => $placeholder, 'id' => $full_id, 'class' => $class_name, ); if ( $required ) { $field_markup['required'] = $required; } if ( ! empty( $multiple ) ) { $field_markup['multiple'] = $multiple; $field_markup['name'] = $field_markup['name'] . '[]'; } $html .= '<div class="forminator-row">'; $html .= sprintf( '<div class="forminator-col forminator-col-%s">', $cols ); $html .= '<div class="forminator-field">'; $ajax = ! empty( $options['ajax'] ); if ( 'wp_editor' === $type ) { // multiple wp_editor support. $field_markup['id'] = $field_markup['id']; } if ( 'wp_editor' === $type && ! $is_preview && ! $ajax ) { if ( ! empty( $draft_value ) ) { $field_markup['content'] = $draft_value; } $html .= self::create_wp_editor( $field_markup, $label, $description, $required ); } elseif ( ( 'textarea' === $type || 'wp_editor' === $type ) && ( $ajax || $is_preview ) ) { if ( ! empty( $draft_value ) ) { $field_markup['content'] = $draft_value; } $html .= self::create_textarea( $field_markup, $label, $description, $required, self::$description_position, ); if ( 'wp_editor' === $type ) { $_id = $field_markup['id']; $args = self::get_tinymce_args( $_id ); $html .= '<script>wp.editor.initialize("' . esc_attr( $_id ) . '", ' . $args . ');</script>'; } } elseif ( 'select' === $type ) { if ( empty( $options ) ) { unset( $field_markup['required'] ); } if ( ! empty( $draft_value ) ) { // Users might switch from multi select. $value = is_array( $draft_value ) ? $draft_value[0] : $draft_value; } $html .= self::create_select( $field_markup, $label, $options, $value, $description, $required, self::$description_position, ); } elseif ( 'multiselect' === $type ) { $html .= self::get_field_label( $label, $id . '-field', $required ); if ( ! empty( $draft_value ) ) { // Users might switch from single select. $post_value = is_array( $draft_value ) ? $draft_value : array( $draft_value ); } else { $post_value = self::get_post_data( $name, self::FIELD_PROPERTY_VALUE_NOT_EXIST ); } $name = $id . '-' . $field_name . '[]'; $get_id = $id . '-' . $field_name; $i = 1; if ( 'above' === self::$description_position ) { $html .= self::get_description( $description, $get_id, self::$description_position ); } $html .= '<div class="forminator-multiselect">'; foreach ( $options as $option ) { $value = $option['value'] ? $option['value'] : $option['label']; $input_id = $id . '-' . $i . '-' . $field_name; $selected = false; if ( self::FIELD_PROPERTY_VALUE_NOT_EXIST !== $post_value || ! empty( $draft_value ) ) { if ( is_array( $post_value ) ) { $selected = in_array( $value, $post_value ); // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict } } if ( $selected ) { $selected = esc_attr( 'checked="checked"' ); $selected_class = esc_attr( 'forminator-option forminator-is_checked' ); } else { $selected = ''; $selected_class = esc_attr( 'forminator-option' ); } $html .= sprintf( '<label for="%s" class="%s">', $input_id, $selected_class ); $html .= sprintf( '<input type="checkbox" name="%s" value="%s" id="%s" %s />', $name, $value, $input_id, $selected ); $html .= $option['label']; $html .= '</label>'; ++$i; } $html .= '</div>'; if ( 'above' !== self::$description_position ) { $html .= self::get_description( $description, $get_id, self::$description_position ); } } elseif ( 'file' === $type ) { $label_id = $full_id; $html .= self::get_field_label( $label, $label_id, $required ); $html .= self::create_file_upload( $input_suffix . '-' . $id . '_' . Forminator_CForm_Front::$uid, $name . '-' . $input_suffix, $description, $required, $design, 'single', 0, array( 'accept' => '.' . implode( ',.', $this->image_extensions ), ) ); } else { if ( ! empty( $draft_value ) ) { $field_markup['value'] = $draft_value; } $html .= self::create_input( $field_markup, $label, $description, $required, self::$description_position, ); } $html .= '</div>'; $html .= '</div>'; $html .= '</div>'; } return $html; } /** * Render custom fields * * @since 1.0 * * @param int $id Id. * @param string $name Name. * @param array $field Field. * @param bool $required Required. * * @return string */ private function render_custom_fields( $id, $name, $field, $required ) { $html = ''; $cols = 12; $has_custom_fields = self::get_property( 'post_custom', $field, false ); if ( $has_custom_fields ) { $custom_vars = self::get_property( 'options', $field ); if ( ! empty( $custom_vars ) ) { $html .= '<div class="forminator-row forminator-row--inner">'; $i = 1; foreach ( $custom_vars as $variable ) { $html .= sprintf( '<div class="forminator-col forminator-col-%s">', $cols ); $value = ''; if ( ! empty( $variable['value'] ) ) { $value = $variable['value']; } $input_id = $id . '-post_meta-' . $i; $label = $variable['label']; $field_markup = array( 'type' => 'text', 'class' => 'forminator-input', 'name' => $input_id, 'id' => $input_id, 'placeholder' => $label, 'value' => $value, ); $html .= self::create_input( $field_markup, $label, '' ); $html .= '</div>'; ++$i; } } $html .= '</div>'; } return $html; } /** * Field back-end validation * * @since 1.0 * * @param array $field Field. * @param array|string $data Data. */ public function validate( $field, $data ) { $id = self::get_property( 'element_id', $field ); $post_title = self::get_property( 'post_title', $field, '' ); $post_content = self::get_property( 'post_content', $field, '' ); $post_excerpt = self::get_property( 'post_excerpt', $field, '' ); $setting_required_message = self::get_property( 'required_message', $field, '' ); $post_type = self::get_property( 'post_type', $field, 'post' ); $post_image = self::get_property( 'post_image', $field, '' ); $title = isset( $data['post-title'] ) ? $data['post-title'] : ''; $content = isset( $data['post-content'] ) ? $data['post-content'] : ''; $excerpt = isset( $data['post-excerpt'] ) ? $data['post-excerpt'] : ''; $image = isset( $data['post-image'] ) ? $data['post-image'] : ''; $category_list = forminator_post_categories( $post_type ); if ( $this->is_required( $field ) ) { if ( empty( $data ) ) { $postdata_validation_message = apply_filters( 'forminator_postdata_field_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please fill in post data.', 'forminator' ) ), $id ); $this->validation_message[ $id ] = $postdata_validation_message; } elseif ( is_array( $data ) ) { if ( ! empty( $post_title ) && empty( $title ) ) { $postdata_post_title_validation_message = apply_filters( 'forminator_postdata_field_post_title_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html( self::$default_required_messages[ $this->type ] ) ), $id ); $this->validation_message[ $id . '-post-title' ] = $postdata_post_title_validation_message; } if ( ! empty( $post_content ) && empty( $content ) ) { $postdata_post_content_validation_message = apply_filters( 'forminator_postdata_field_post_content_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please enter the post content.', 'forminator' ) ), $id ); $this->validation_message[ $id . '-post-content' ] = $postdata_post_content_validation_message; } if ( ! empty( $post_excerpt ) && empty( $excerpt ) ) { $postdata_post_excerpt_validation_message = apply_filters( 'forminator_postdata_field_post_excerpt_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please enter the post excerpt.', 'forminator' ) ), $id ); $this->validation_message[ $id . '-post-excerpt' ] = $postdata_post_excerpt_validation_message; } if ( ! empty( $post_image ) && empty( $image ) ) { $postdata_post_image_validation_message = apply_filters( 'forminator_postdata_field_post_image_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please upload a post image.', 'forminator' ) ), $id ); $this->validation_message[ $id . '-post-image' ] = $postdata_post_image_validation_message; } if ( ! empty( $category_list ) ) { foreach ( $category_list as $cat ) { $post_category = self::get_property( $cat['value'], $field, '' ); $category = isset( $data[ $cat['value'] ] ) ? $data[ $cat['value'] ] : ''; if ( ! empty( $post_category ) && empty( $category ) ) { $postdata_post_category_validation_message = apply_filters( 'forminator_postdata_field_' . $cat['value'] . '_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : sprintf( /* translators: %s: Category Label */ esc_html__( 'This field is required. Please select a %s.', 'forminator' ), $cat['label'] ) ), $id ); $this->validation_message[ $id . '-' . $cat['value'] ] = $postdata_post_category_validation_message; } } } } } else { // validation for postdata when its not required. // `wp_insert_post` required at least ONE OF THESE to be available title / content / excerpt. // check only when user send some data. if ( ! empty( $data ) && is_array( $data ) ) { if ( ! $title && ! $content && ! $excerpt ) { // check if there is any field with content. $is_content_available = false; foreach ( $data as $datum ) { if ( ! empty( $datum ) ) { $is_content_available = true; break; } } // when $is_content_available false means, field not required, and user didnt put any content on form. if ( $is_content_available ) { // check if on postdata these sub field is avail available. if ( ! empty( $post_title ) ) { $this->validation_message[ $id . '-post-title' ] = apply_filters( // nr = not required. 'forminator_postdata_field_post_title_nr_validation_message', esc_html__( 'At least one of these fields is required: Post Title, Post Excerpt or Post Content.', 'forminator' ), $id ); } if ( ! empty( $post_content ) ) { $this->validation_message[ $id . '-post-content' ] = apply_filters( // nr = not required. 'forminator_postdata_field_post_content_nr_validation_message', esc_html__( 'At least one of these fields is required: Post Title, Post Excerpt or Post Content.', 'forminator' ), $id ); } if ( ! empty( $post_excerpt ) ) { $this->validation_message[ $id . '-post-excerpt' ] = apply_filters( // nr = not required. 'forminator_postdata_field_post_excerpt_nr_validation_message', esc_html__( 'At least one of these fields is required: Post Title, Post Excerpt or Post Content.', 'forminator' ), $id ); } } } } $image_field_name = $id . '-post-image'; if ( ! empty( $post_image ) && isset( $_FILES[ $image_field_name ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing if ( isset( $_FILES[ $image_field_name ]['name'] ) && ! empty( $_FILES[ $image_field_name ]['name'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $file_name = sanitize_file_name( $_FILES[ $image_field_name ]['name'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing $valid = wp_check_filetype( $file_name ); if ( false === $valid['ext'] || ! in_array( $valid['ext'], $this->image_extensions, true ) ) { $this->validation_message[ $image_field_name ] = apply_filters( 'forminator_postdata_field_post_image_nr_validation_message', esc_html__( 'Uploaded file\'s extension is not allowed.', 'forminator' ), $id ); } } } } } /** * Upload post image * * @since 1.0 * * @param array $field - the field. * @param string $field_name - the field name. * * @return array|bool - if success, return an array */ public function upload_post_image( $field, $field_name ) { $post_image = self::get_property( 'post_image', $field, '' ); if ( empty( $post_image ) ) { return true; } if ( ! empty( $_FILES[ $field_name ]['name'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing $file_name = sanitize_file_name( $_FILES[ $field_name ]['name'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing if ( ! function_exists( 'wp_filesystem' ) ) { require_once ABSPATH . 'wp-admin/includes/file.php'; } global $wp_filesystem; if ( ! WP_Filesystem() ) { // Could not initialize the filesystem. return array( 'attachment_id' => 0, 'uploaded_file' => 0, ); } $file_data = $wp_filesystem->get_contents( $_FILES[ $field_name ]['tmp_name'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput $upload_dir = wp_upload_dir(); // Set upload folder. $unique_file_name = wp_unique_filename( $upload_dir['path'], $file_name ); $filename = basename( $unique_file_name ); // Create base file name. if ( wp_mkdir_p( $upload_dir['path'] ) ) { $file = $upload_dir['path'] . '/' . $filename; } else { $file = $upload_dir['basedir'] . '/' . $filename; } // Check image file type. $wp_filetype = wp_check_filetype( $filename, null ); $image_exts = apply_filters( 'forminator_field_postdata_image_file_types', $this->image_extensions ); if ( in_array( (string) $wp_filetype['ext'], $image_exts, true ) ) { // Create the file on the server. if ( $wp_filesystem->put_contents( $file, $file_data, FS_CHMOD_FILE ) ) { // Set attachment data. $attachment = array( 'post_mime_type' => $wp_filetype['type'], 'post_title' => sanitize_file_name( $filename ), 'post_content' => '', 'post_status' => 'inherit', ); // Create the attachment. $attachment_id = wp_insert_attachment( $attachment, $file ); self::generate_upload_metadata( $attachment_id, $file ); $uploaded_file = wp_get_attachment_image_src( $attachment_id, 'large', false ); if ( $uploaded_file && is_array( $uploaded_file ) ) { return array( 'attachment_id' => $attachment_id, 'uploaded_file' => $uploaded_file, ); } } } } return array( 'attachment_id' => 0, 'uploaded_file' => 0, ); } /** * Save post * * @since 1.0 * * @param array $field - field array. * @param array $data - post data. * * @return bool|int - success is post id */ public function save_post( $field, $data ) { $post_type = self::get_property( 'post_type', $field, 'post' ); $force_default_author = self::get_property( 'default_author', $field, false ); $force_default_author = filter_var( $force_default_author, FILTER_VALIDATE_BOOLEAN ); // default behavior. if ( is_user_logged_in() ) { $post_author = get_current_user_id(); } else { $post_author = self::get_property( 'select_author', $field, 1 ); if ( empty( $post_author ) || ! get_user_by( 'ID', $post_author ) ) { $post_author = $this->set_anonymous_author(); } } // force to selected author. if ( $force_default_author ) { $post_author = self::get_property( 'select_author', $field, 1 ); } $post_status = self::get_property( 'data_status', $field, 'draft' ); $title = isset( $data['post-title'] ) ? $data['post-title'] : ''; $content = isset( $data['post-content'] ) ? $data['post-content'] : ''; $excerpt = isset( $data['post-excerpt'] ) ? $data['post-excerpt'] : ''; $image = isset( $data['post-image'] ) ? $data['post-image'] : ''; $post_meta = isset( $data['post-custom'] ) ? $data['post-custom'] : ''; $post = array( 'post_author' => $post_author, 'post_content' => wp_kses_post( $content ), 'post_excerpt' => $excerpt, 'post_name' => sanitize_text_field( $title ), 'post_status' => $post_status, 'post_title' => $title, 'post_type' => $post_type, ); $category_list = forminator_post_categories( $post_type ); if ( ! empty( $category_list ) ) { $taxonomy = array(); foreach ( $category_list as $cat ) { $cat_value = $cat['value']; $category = isset( $data[ $cat_value ] ) ? $data[ $cat_value ] : ''; if ( ! empty( $category ) ) { if ( is_array( $category ) ) { $taxonomy[ $cat_value ] = array_map( 'intval', $category ); } else { $taxonomy[ $cat_value ] = array( intval( $category ) ); } } } $post['tax_input'] = $taxonomy; } $post = apply_filters( 'forminator_post_data_post_info', $post, $field, $data ); // trigger wp_error for is_wp_error to be correctly identified. $post_id = wp_insert_post( $post, true ); if ( ! is_wp_error( $post_id ) ) { $category_list = forminator_post_categories( $post_type ); if ( ! empty( $category_list ) ) { foreach ( $category_list as $cat ) { $cat_value = $cat['value']; $category = isset( $data[ $cat_value ] ) ? $data[ $cat_value ] : ''; if ( ! empty( $category ) ) { if ( is_array( $category ) ) { $taxonomy_tags = array_map( 'intval', $category ); } else { $taxonomy_tags = array( intval( $category ) ); } wp_set_post_terms( $post_id, $taxonomy_tags, $cat_value ); } } } $post_image = self::get_property( 'post_image', $field, '' ); if ( ! empty( $post_image ) && ! empty( $image ) && is_array( $image ) ) { set_post_thumbnail( $post_id, $image['attachment_id'] ); } if ( ! empty( $post_meta ) ) { foreach ( $post_meta as $meta ) { add_post_meta( $post_id, $meta['key'], $meta['value'] ); } add_post_meta( $post_id, '_has_forminator_meta', true ); } do_action( 'forminator_post_data_field_post_saved', $post_id, $field, $data, $this ); return $post_id; } return false; } /** * Set anonymous author * * @return int|mixed|WP_Error */ private function set_anonymous_author() { $user = get_user_by( 'login', 'anonymous_user' ); if ( $user ) { return $user->ID; } else { $userdata = array( 'user_login' => 'anonymous_user', // Set different user_nicename and display_name for security. 'user_nicename' => 'anonymous', 'display_name' => 'Anonymous', 'role' => 'author', 'user_pass' => null, ); $new_user = wp_insert_user( $userdata ); if ( ! is_wp_error( $new_user ) ) { return $new_user; } return 1; } } /** * Sanitize data * * @since 1.0.2 * * @param array $field Field. * @param array|string $data - the data to be sanitized. * * @return array|string $data - the data after sanitization */ public function sanitize( $field, $data ) { $original_data = $data; $image = ''; $content = ''; // Do not sanitize image URL. if ( isset( $data['post-image'] ) ) { $image = $data['post-image']; } // Do not sanitize post content. if ( isset( $data['post-content'] ) ) { $content = wp_kses_post( $data['post-content'] ); } // Sanitize. $data = forminator_sanitize_array_field( $data ); // Return image url original value. if ( isset( $data['post-image'] ) ) { $data['post-image'] = $image; } // Return post content original value. if ( isset( $data['post-content'] ) ) { $data['post-content'] = $content; } return apply_filters( 'forminator_field_postdata_sanitize', $data, $field, $original_data ); } /** * Return field inline validation rules * Workaround for actually input file is hidden, so its not accessible via standar html5 `required` attribute * * @since 1.1 * @return string */ public function get_validation_rules() { $field = $this->field; $id = self::get_property( 'element_id', $field ); $is_required = $this->is_required( $field ); $post_image = self::get_property( 'post_image', $field, '' ); $post_type = self::get_property( 'post_type', $field, 'post' ); $post_image_enabled = ! empty( $post_image ); $rules = ''; if ( $post_image_enabled ) { $rules .= '"' . $this->get_id( $field ) . '-post-image": {'; if ( $is_required ) { $rules .= '"required": true,'; } $rules .= '},'; } $category_list = forminator_post_categories( $post_type ); if ( ! empty( $category_list ) ) { foreach ( $category_list as $category ) { $post_category_enabled = self::get_property( $category['value'], $field, '' ); if ( $is_required && $post_category_enabled ) { $rules .= '"' . $this->get_id( $field ) . '-' . $category['value'] . '[]": {'; if ( $is_required ) { $rules .= '"required": true,'; } $rules .= '},'; } } } return apply_filters( 'forminator_field_postdata_validation_rules', $rules, $id, $field ); } /** * Return field inline validation messages * * @since 1.1 * @return string */ public function get_validation_messages() { $field = $this->field; $id = $this->get_id( $field ); $is_required = $this->is_required( $field ); $messages = ''; $post_title = self::get_property( 'post_title', $field, '' ); $post_content = self::get_property( 'post_content', $field, '' ); $post_excerpt = self::get_property( 'post_excerpt', $field, '' ); $post_image = self::get_property( 'post_image', $field, '' ); $setting_required_message = self::get_property( 'required_message', $field, '' ); $post_type = self::get_property( 'post_type', $field, 'post' ); $post_title_enabled = ! empty( $post_title ); $post_content_enabled = ! empty( $post_content ); $post_excerpt_enabled = ! empty( $post_excerpt ); $post_image_enabled = ! empty( $post_image ); $category_list = forminator_post_categories( $post_type ); if ( $is_required ) { if ( $post_title_enabled ) { $messages .= '"' . $id . '-post-title": {' . "\n"; $required_message = apply_filters( 'forminator_postdata_field_post_title_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : self::$default_required_messages[ $this->type ] ), $id, $field ); $messages = $messages . '"required": "' . forminator_addcslashes( $required_message ) . '",' . "\n"; $messages .= '},' . "\n"; } if ( $post_content_enabled ) { $messages .= '"' . $id . '-post-content": {' . "\n"; $required_message = apply_filters( 'forminator_postdata_field_post_content_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please enter the post content.', 'forminator' ) ), $id, $field ); $messages = $messages . '"required": "' . forminator_addcslashes( $required_message ) . '",' . "\n"; $messages .= '},' . "\n"; } if ( $post_excerpt_enabled ) { $messages .= '"' . $id . '-post-excerpt": {' . "\n"; $required_message = apply_filters( 'forminator_postdata_field_post_excerpt_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please enter the post excerpt.', 'forminator' ) ), $id, $field ); $messages = $messages . '"required": "' . forminator_addcslashes( $required_message ) . '",' . "\n"; $messages .= '},' . "\n"; } if ( $post_image_enabled ) { $messages .= '"' . $id . '-post-image": {' . "\n"; $required_message = apply_filters( 'forminator_postdata_field_post_image_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : esc_html__( 'This field is required. Please upload a post image.', 'forminator' ) ), $id, $field ); $messages = $messages . '"required": "' . forminator_addcslashes( $required_message ) . '",' . "\n"; $messages .= '},' . "\n"; } if ( ! empty( $category_list ) ) { foreach ( $category_list as $category ) { $post_category_enabled = self::get_property( $category['value'], $field, '' ); if ( $post_category_enabled ) { $post_category_multiple = self::get_property( $category['value'] . '_multiple', $field, '' ); if ( $post_category_multiple ) { $messages .= '"' . $id . '-' . $category['value'] . '[]": {' . "\n"; } else { $messages .= '"' . $id . '-' . $category['value'] . '": {' . "\n"; } $required_message = apply_filters( 'forminator_postdata_field_' . $category['value'] . '_validation_message', ( ! empty( $setting_required_message ) ? $setting_required_message : sprintf( /* translators: %s: Category singular */ esc_html__( 'This field is required. Please select a %s.', 'forminator' ), $category['singular'] ) ), $id, $field ); $messages = $messages . '"required": "' . forminator_addcslashes( $required_message ) . '",' . "\n"; $messages .= '},' . "\n"; } } } } if ( $post_image_enabled ) { $messages .= '"' . $id . '-post-image": {' . "\n"; $messages .= '"extension": "' . forminator_addcslashes( esc_html__( 'Uploaded file\'s extension is not allowed.', 'forminator' ) ) . '",' . "\n"; $messages .= '},' . "\n"; } return $messages; } }
Upload File
Create Folder