HEX
Server: Apache
System: Linux host.fiblib.com 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: agritoday (1002)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: /home/agritoday/www/wp-content/plugins/td-cloud-library/shortcodes/common/tdb_form_submit.php
<?php

class tdb_form_submit extends td_block {

    public function get_custom_css() {

        // $unique_block_class
        $unique_block_class = $this->block_uid;

        $compiled_css = '';

        /** @noinspection CssInvalidAtRule */

        $raw_css =
            "<style>

                /* @style_general_tdb_form_submit */
                .tdb_form_submit {
                    transform: translateZ(0);
                    margin-bottom: 28px;
                    font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;
                    font-size: 14px;
                }
                .tdb_form_submit .tdb-block-inner {
                    display: flex;
                    flex-direction: column;
                }
                .tdb_form_submit .tdb-s-content {
                    min-height: auto;
                }
                .tdb_form_submit .tdb-s-form-footer {
                    margin-top: 0;
                }
                .tdb_form_submit .tdb-s-btn {
                    min-width: auto;
                }
                .tdb_form_submit .tdb-s-btn svg {
                    fill: #fff;
                }
                .tdb_form_submit .tdb-s-notif {
                    margin-bottom: 28px;
                }
                .tdb_form_submit .tds-pb-icon {
                    position: relative;
                }
                
                /* @style_general_tdb_form_submit_composer */
                .tdb_form_submit .tdb-block-inner {
                    pointer-events: none;
                }
                
                /* @all_border */
                body .$unique_block_class .tdb-s-btn {
                    border: @all_border @all_border_style @all_border_color;
                }
                /* @btn_radius */
                body .$unique_block_class .tdb-s-btn {
                    border-radius: @btn_radius;
                }
                 /* @border_color_h */
                body .$unique_block_class .tdb-s-btn:hover {
                    border-color: @border_color_h;
                }
                
                /* @padding */
                body .$unique_block_class .tdb-s-btn {
                    padding: @padding;
                }
                
                /* @min_width */
                body .$unique_block_class .tdb-s-btn {
                    min-width: @min_width;
                }
                
                /* @display_default */
                body .$unique_block_class {
                    display: block;
                }
                body .$unique_block_class .tdb-s-btn {
                    width: auto;
                }
                /* @display_inline */
                body .$unique_block_class {
                    display: inline-block;
                }
                /* @display_full */
                body .$unique_block_class {
                    display: block;
                }
                body .$unique_block_class .tdb-block-inner {
                    align-items: stretch;
                }
                body .$unique_block_class .tdb-s-btn {
                    width: 100%;
                }
                
                /* @horiz_align */
                body .$unique_block_class .tdb-s-form-footer,
                body .$unique_block_class .tdb-s-btn {
                    justify-content: @horiz_align;
                }
                
                
                /* @icon_size */
                body .$unique_block_class i {
                    font-size: @icon_size;
                }
                body .$unique_block_class svg {
                    width: @icon_size;
                }
                
                /* @icon_align */
                body .$unique_block_class .tds-pb-icon {
                    top: @icon_align;
                }
                
                /* @icon_space */
                body .$unique_block_class .tds-pb-icon {
                    margin: @icon_space;
                }
                
                /* @notif_radius */
                body .$unique_block_class .tdb-s-notif {
                    border-radius: @notif_radius;
                }
                
                /* @accent_color */
                body .$unique_block_class .tdb-s-btn {
                    background-color: @accent_color;
                }
                
                /* @btn_color */
                body .$unique_block_class .tdb-s-btn {
                    color: @btn_color;
                }
                body .$unique_block_class .tdb-s-btn svg {
                    fill: @btn_color;
                }
                /* @btn_color_h */
                body .$unique_block_class .tdb-s-btn:hover {
                    color: @btn_color_h;
                }
                body .$unique_block_class .tdb-s-btn:hover svg {
                    fill: @btn_color_h;
                }
                /* @btn_bg_h */
                body .$unique_block_class .tdb-s-btn:hover {
                    background-color: @btn_bg_h;
                }
                
                /* @notif_info_color */
                body .$unique_block_class .tdb-s-notif-info {
                    color: @notif_info_color;
                }
                /* @notif_info_bg */
                body .$unique_block_class .tdb-s-notif-info {
                    background-color: @notif_info_bg;
                }
                /* @notif_succ_color */
                body .$unique_block_class .tdb-s-notif-success {
                    color: @notif_succ_color;
                }
                /* @notif_succ_bg */
                body .$unique_block_class .tdb-s-notif-success {
                    background-color: @notif_succ_bg;
                }
                /* @notif_error_color */
                body .$unique_block_class .tdb-s-notif-error {
                    color: @notif_error_color;
                }
                /* @notif_error_bg */
                body .$unique_block_class .tdb-s-notif-error {
                    background-color: @notif_error_bg;
                }
                
                
                /* @f_text */
                body .$unique_block_class .tdb-s-btn {
                    @f_text
                }

            </style>";

        $td_css_res_compiler = new td_css_res_compiler( $raw_css );
        $td_css_res_compiler->load_settings( __CLASS__ . '::cssMedia', $this->get_all_atts() );

        $compiled_css .= $td_css_res_compiler->compile_css();

        return $compiled_css;

    }

    static function cssMedia( $res_ctx ) {

        /*-- GENERAL STYLES -- */
        $res_ctx->load_settings_raw( 'style_general_tdb_form_submit', 1 );
        if( td_util::tdc_is_live_editor_iframe() || td_util::tdc_is_live_editor_ajax() ) {
            $res_ctx->load_settings_raw( 'style_general_tdb_form_submit_composer', 1 );
        }



        /*-- LAYOUT -- */
        // border size
        $border_size = $res_ctx->get_shortcode_att('all_border');
        $res_ctx->load_settings_raw('all_border', $border_size);
        if( $border_size != '' && is_numeric( $border_size ) ) {
            $res_ctx->load_settings_raw('all_border', $border_size . 'px');
        }
        // border style
        $all_border_style = $res_ctx->get_shortcode_att('all_border_style');
        if( $all_border_style != '' ) {
            $res_ctx->load_settings_raw('all_border_style', $res_ctx->get_shortcode_att('all_border_style'));
        } else {
            $res_ctx->load_settings_raw('all_border_style', 'solid');
        }
        // buttons border radius
        $btn_radius = $res_ctx->get_shortcode_att('btn_radius');
        $res_ctx->load_settings_raw( 'btn_radius', $btn_radius );
        if( $btn_radius != '' && is_numeric( $btn_radius ) ) {
            $res_ctx->load_settings_raw( 'btn_radius', $btn_radius . 'px' );
        }

        $all_border_color = $res_ctx->get_shortcode_att('all_border_color');
        if( $all_border_color != '' ) {
            $res_ctx->load_settings_raw('all_border_color', $all_border_color);
        } else {
            $res_ctx->load_settings_raw('all_border_color', '#000');
        }
        $res_ctx->load_settings_raw('border_color_h', $res_ctx->get_shortcode_att('border_color_h'));

        // button padding
        $padding = $res_ctx->get_shortcode_att('padd');
        $res_ctx->load_settings_raw('padding', $padding);
        if( $padding != '' && is_numeric( $padding ) ) {
            $res_ctx->load_settings_raw('padding', $padding . 'px');
        }

        // button min width
        $min_width = $res_ctx->get_shortcode_att('min_width');
        $res_ctx->load_settings_raw('min_width', $min_width);
        if( $min_width != '' && is_numeric( $min_width ) ) {
            $res_ctx->load_settings_raw('min_width', $min_width . 'px');
        }

        // button display
        $display = $res_ctx->get_shortcode_att('display');
        if( $display == 'default' || $display == '' ) {
            $res_ctx->load_settings_raw('display_default', 1);
        } else if( $display == 'inline' ) {
            $res_ctx->load_settings_raw('display_inline', 1);
        } else if ( $display == 'full' ) {
            $res_ctx->load_settings_raw('display_full', 1);
        }

        // button horizontal align
        $horiz_align = $res_ctx->get_shortcode_att('horiz_align');
        if( $horiz_align == 'content-horiz-left' ) {
            $res_ctx->load_settings_raw('horiz_align', 'flex-start');
        } else if( $horiz_align == 'content-horiz-center' ) {
            $res_ctx->load_settings_raw('horiz_align', 'center');
        } else if( $horiz_align == 'content-horiz-right' ) {
            $res_ctx->load_settings_raw('horiz_align', 'flex-end');
        }


        // button icon size
        $icon_size = $res_ctx->get_shortcode_att('icon_size');
        $res_ctx->load_settings_raw('icon_size', $icon_size);
        if( $icon_size != '' && is_numeric( $icon_size ) ) {
            $res_ctx->load_settings_raw('icon_size', $icon_size . 'px');
        }

        // button icon space
        $icon_pos = $res_ctx->get_shortcode_att('icon_pos');
        $icon_space = $res_ctx->get_shortcode_att('icon_space');
        if( $icon_pos == 'before' ) {
            if( $icon_space != '' ){
                if( is_numeric( $icon_space ) ) {
                    $res_ctx->load_settings_raw('icon_space', '0 ' . $icon_space . 'px 0 0');
                } else {
                    $res_ctx->load_settings_raw('icon_space', '0 ' . $icon_space . '0 0');
                }
            } else {
                $res_ctx->load_settings_raw('icon_space', '0 10px 0 0');
            }
        } else {
            if( $icon_space != '' ){
                if( is_numeric( $icon_space ) ) {
                    $res_ctx->load_settings_raw('icon_space', '0 0 0 ' . $icon_space . 'px');
                } else {
                    $res_ctx->load_settings_raw('icon_space', '0 0 0 ' . $icon_space);
                }
            } else {
                $res_ctx->load_settings_raw('icon_space', '0 0 0 10px');
            }
        }

        // button icon vertical align
        $res_ctx->load_settings_raw('icon_align', $res_ctx->get_shortcode_att('icon_align') . 'px');




        // notifications border radius
        $notif_radius = $res_ctx->get_shortcode_att('notif_radius');
        $res_ctx->load_settings_raw( 'notif_radius', $notif_radius );
        if( $notif_radius != '' && is_numeric( $notif_radius ) ) {
            $res_ctx->load_settings_raw( 'notif_radius', $notif_radius . 'px' );
        }



        /*-- COLORS -- */
        $accent_color = $res_ctx->get_shortcode_att('accent_color');
        $res_ctx->load_settings_raw( 'accent_color', $accent_color );

        $res_ctx->load_settings_raw( 'btn_color', $res_ctx->get_shortcode_att('btn_color') );
        $res_ctx->load_settings_raw( 'btn_color_h', $res_ctx->get_shortcode_att('btn_color_h') );
        $res_ctx->load_settings_raw( 'btn_bg_h', $res_ctx->get_shortcode_att('btn_bg_h') );

        $notif_info_color = $res_ctx->get_shortcode_att('notif_info_color');
        $res_ctx->load_settings_raw( 'notif_info_color', $notif_info_color );
        if( !empty( $notif_info_color ) ) {
            $res_ctx->load_settings_raw('notif_info_bg', td_util::hex2rgba($notif_info_color, 0.08));
        }

        $notif_succ_color = $res_ctx->get_shortcode_att('notif_succ_color');
        $res_ctx->load_settings_raw( 'notif_succ_color', $notif_succ_color );
        if( !empty( $notif_succ_color ) ) {
            $res_ctx->load_settings_raw('notif_succ_bg', td_util::hex2rgba($notif_succ_color, 0.1));
        }

        $notif_error_color = $res_ctx->get_shortcode_att('notif_error_color');
        $res_ctx->load_settings_raw( 'notif_error_color', $notif_error_color );
        if( !empty( $notif_error_color ) ) {
            $res_ctx->load_settings_raw('notif_error_bg', td_util::hex2rgba($notif_error_color, 0.12));
        }



        /*-- FONTS -- */
        $res_ctx->load_font_settings( 'f_text' );

    }

    function __construct() {
        parent::disable_loop_block_features();
    }

    function render( $atts, $content = null ) {

        parent::render( $atts );

        $in_composer = td_util::tdc_is_live_editor_iframe() || td_util::tdc_is_live_editor_ajax();


        // Form group class
        $form_group_class = $this->get_att('group_class');
        if( $form_group_class != '' ) {
            $form_group_class = '.' . $form_group_class . ' ';
        }

        // Current user
        $current_user = wp_get_current_user();
        $current_user_id = $current_user->ID;
        $is_current_user_admin = in_array('administrator', $current_user->roles);


        /*-- CREATE POST FROM FORM SETTINGS -- */
        // The ID of the post we are currently on
        $curr_post_id = '';
        if( $this->get_att('link_to_curr_post') != '' ) {
            $curr_template_type = tdb_state_template::get_template_type();

            if( $curr_template_type == 'single' || $curr_template_type == 'cpt' ) {
                global $tdb_state_single;
                if ( !empty($tdb_state_single->get_wp_query()) ){
                    $curr_post_id = $tdb_state_single->get_wp_query()->post->ID;
                }
            }
        }

        // The post ID from the url
        $save_into_post_id = '';
        if (isset($_GET['post_id']) && !$in_composer ) {
            $post = get_post($_GET['post_id']);

            if( $post && ( $post->post_author == $current_user_id || $is_current_user_admin ) ) {
                $save_into_post_id = $_GET['post_id'];
            }
        }

        // Post type
        $post_type = $this->get_att( 'post_type' );
        if ( $post_type == '' ) {
            $post_type = 'post';
        }

        // Post format
        $post_format = $this->get_att( 'post_format' );
        if ( $post_format == '' ) {
            $post_format = 'standard';
        }

        // Post status
        $post_status = $this->get_att( 'post_status' );
        if ( $post_status == '' ) {
            $post_status = 'draft';
        }

        // Custom title field
        $custom_title_field = $this->get_att( 'custom_title_field' );

        // Success URL
        $success_url = $this->get_att( 'success_url' );


        /*-- CURRENT USER INFO -- */
        // Current user plan limits
        $limit_from = $this->get_att('limit_from') != '' ? $this->get_att('limit_from') : 'shortcode';
        $add_new_posts_limit = -1;
        $limit_reached = false;

        if( is_user_logged_in() ) {

            if( $limit_from == 'shortcode' || !defined( 'TD_SUBSCRIPTION' ) ) {

                $add_new_posts_limit = $this->get_att('limit_def') != '' ? $this->get_att('limit_def') : -1;

                $current_user_posts = get_posts(array(
                    'post_type' => $post_type,
                    'post_status' => array('publish', 'draft', 'private'),
                    'numberposts' => -1,
                    'author' => $current_user_id,
                ));

                if( $add_new_posts_limit > -1 && ( count( $current_user_posts ) >= $add_new_posts_limit ) ) {
                    $limit_reached = true;
                }

            } else {

                $add_new_posts_limit = 0;

                if( defined( 'TD_SUBSCRIPTION' ) && method_exists( 'tds_util', 'get_user_subscriptions' ) ) {
                    $user_subscriptions = tds_util::get_user_subscriptions($current_user_id, null, array('active', 'free'));
                    if( $user_subscriptions ) {
                        foreach( $user_subscriptions as $user_subscription ) {
                            if( isset( $user_subscription['plan_posts_remaining'] ) ) {
                                $plan_posts_remaining = unserialize($user_subscription['plan_posts_remaining']);
            
                                if( !empty( $plan_posts_remaining ) ) {
                                    foreach( $plan_posts_remaining as $remaining_post_type => $remaining_posts ) {
                                        if( $remaining_post_type != $post_type ) {
                                            continue;
                                        }
            
                                        if( $remaining_posts == '' ) {
                                            continue;
                                        }
            
                                        $add_new_posts_limit += $remaining_posts;
                                    }
                                }
                            }
                        }
                    }

                    if( $add_new_posts_limit == 0 ) {
                        $limit_reached = true;
                    }

                }

            }

        }


        // Limit notification message
        $limit_notif = rawurldecode( base64_decode( strip_tags( $this->get_att('limit_notif') ) ) );
        if( $limit_notif == '' ) {
            $limit_notif = __td( 'You have reached your limit of posting new articles.', TD_THEME_NAME );
        }


        /*-- ENABLE POST CREATE -- */
        $authenticated_users = $this->get_att('authenticated_users');
        $enable_post_create_att = $this->get_att('enable_post_create');
        $enable_post_create_for_guests = !( $authenticated_users != '' && !is_user_logged_in() );

        $enable_post_create = false;
        if( $save_into_post_id != '' ||
            (
                $enable_post_create_att != '' &&
                $enable_post_create_for_guests &&
                ( $is_current_user_admin || !$limit_reached )
            )
        ) {
            $enable_post_create = true;
        }

        $cf_input_email_list = $this->get_att('cf_input_email_list') !== '' ? $this->get_att('cf_input_email_list') : '' ;
        $email_list = $this->get_att('list') !== '' ? $this->get_att('list') : '';


        /*-- SEND EMAIL FROM FORM SETTINGS -- */
        $enable_form_emailing = $this->get_att( 'enable_form_emailing' ) != '';
        $send_to_admin = $this->get_att( 'send_to_admin' ) != '';
        $send_to_author = $this->get_att( 'send_to_author' ) != '';
        $send_to_custom_email = $this->get_att( 'send_to_custom_email' );
        $email_subject = $this->get_att( 'email_subject' );

        $send_to_email_field = $this->get_att( 'send_to_email_field' );
        $email_field_value = td_util::get_custom_field_value_from_string('{cf_' . $send_to_email_field . '}');


        /*-- SUBMIT BUTTON -- */
        // text
        $submit_btn_txt = $this->get_att('submit_txt');
        if( $submit_btn_txt == '' ) {
            $submit_btn_txt = __td( 'Submit', TD_THEME_NAME );
        }
        if( $save_into_post_id != '' ) {
            $submit_btn_txt = $this->get_att('update_txt');
            if( $submit_btn_txt == '' ) {
                $submit_btn_txt = __td( 'Update', TD_THEME_NAME );
            }
        }
        // icon
        $icon = $this->get_icon_att( 'tdicon' );
        $tdicon_data = '';
        if( td_util::tdc_is_live_editor_iframe() || td_util::tdc_is_live_editor_ajax() ) {
            $tdicon_data = 'data-td-svg-icon="' . $this->get_att('tdicon') . '"';
        }
        $buffy_icon = '';
        if ( !empty( $icon ) ) {
            if( base64_encode( base64_decode( $icon ) ) == $icon ) {
                $buffy_icon .= '<span class="tds-pb-icon tds-pb-icon-svg" ' . $tdicon_data . '>' . base64_decode( $icon ) . '</span>';
            } else {
                $buffy_icon .= '<i class="tds-pb-icon ' . $icon . '"></i>';
            }
        }
        // icon position
        $icon_pos = $this->get_att('icon_pos' );

        $required_field_error = __td( 'This field is required!', TD_THEME_NAME );
        $blank_fields_msg = __td( 'Some required fields have been left blank.', TD_THEME_NAME );
        $valid_email_msg = __td( 'Please enter a valid email address.', TD_THEME_NAME );
        $lower_msg = __td( 'The number cannot be lower than', TD_THEME_NAME );
        $higher_msg = __td( 'The number cannot be higher than', TD_THEME_NAME );


        $buffy = '';

        if( (
                ( !$enable_post_create_att && !$enable_form_emailing ) ||
                ( !$enable_form_emailing && $enable_post_create_att != '' && !$enable_post_create_for_guests )
            ) &&
            !( td_util::tdc_is_live_editor_iframe() || td_util::tdc_is_live_editor_ajax() ) ) {
            return $buffy;
        }

        $buffy .= '<div class="' . $this->get_block_classes() . '" ' . $this->get_block_html_atts() . '>';

            $buffy .= $this->get_block_css(); // get block css

            $buffy .= $this->get_block_js(); // get block js


            $buffy .= '<div class="tdb-block-inner td-fix-index tdb-s-form tdb-s-content">';
                if( !$enable_post_create && !$enable_form_emailing ) {
                    $buffy .= '<div class="tdb-s-notif tdb-s-notif-info"><div class="tdb-s-notif-descr">' . $limit_notif . '</div></div>';
                } else {
                    $buffy .= '<div class="tdb-s-form-footer">';
                        $buffy .= '<button class="tdb-s-btn">';
                            if ( $icon_pos == 'before' ) {
                                $buffy .= $buffy_icon;
                            }
                                $buffy .= $submit_btn_txt;
                            if ( $icon_pos == '' ) {
                                $buffy .= $buffy_icon;
                            }
                        $buffy .= '</button>';
                    $buffy .= '</div>';
                }
            $buffy .= '</div>';


            if( !( tdc_state::is_live_editor_iframe() || tdc_state::is_live_editor_ajax() ) ) {
                ob_start();
                ?>
                <script>
                    /* global jQuery:{} */
                    jQuery(document).ready( function($) {

                        let uid = '<?php echo $this->block_uid ?>',
                            $blockObj = jQuery('.<?php echo $this->block_uid ?>'),
                            $submitBtn = $blockObj.find('.tdb-s-btn');


                        let tdbCustomFormItem = new tdbCustomForms.item();
                        // block uid
                        tdbCustomFormItem.uid = uid;
                        // block object
                        tdbCustomFormItem.blockObj = $blockObj;
                        // form type
                        tdbCustomFormItem.formType = 'post';
                        // form group class
                        tdbCustomFormItem.formGroupClass = '<?php echo $form_group_class ?>';
                        // current user ID
                        tdbCustomFormItem.currentUserID = '<?php echo $current_user_id ?>';
                        // post form specific variables
                        tdbCustomFormItem.successURL = '<?php echo $success_url ?>';
                        tdbCustomFormItem.customPostTitleField = '<?php echo $custom_title_field ?>';
                        tdbCustomFormItem.cfInputEmailList = '<?php echo $cf_input_email_list ?>';
                        tdbCustomFormItem.emailList = '<?php echo $email_list ?>';
                        tdbCustomFormItem.enablePostCreate = '<?php echo $enable_post_create ?>';
                        tdbCustomFormItem.postID = '<?php echo $save_into_post_id ?>';
                        tdbCustomFormItem.postType = '<?php echo $post_type ?>';
                        tdbCustomFormItem.postFormat = '<?php echo $post_format ?>';
                        tdbCustomFormItem.postStatus = '<?php echo $post_status ?>';
                        tdbCustomFormItem.linkToPostID = '<?php echo $curr_post_id ?>';
                        tdbCustomFormItem.enableEmailSubmit = '<?php echo $enable_form_emailing ?>';
                        tdbCustomFormItem.sendEmailToAdmin = '<?php echo $send_to_admin ?>';
                        tdbCustomFormItem.sendEmailToAuthor = '<?php echo $send_to_author ?>';
                        tdbCustomFormItem.sendEmailToCustomAddr = '<?php echo $send_to_custom_email ?>';
                        tdbCustomFormItem.sendEmailToEmailFromField = '<?php echo ( filter_var($email_field_value, FILTER_VALIDATE_EMAIL) ? $email_field_value : '' ) ?>';
                        tdbCustomFormItem.emailSubject = '<?php echo $email_subject ?>';
                        tdbCustomFormItem.required_field_error = '<?php echo $required_field_error ?>';
                        tdbCustomFormItem.blank_fields_msg = '<?php echo $blank_fields_msg ?>';
                        tdbCustomFormItem.valid_email_msg = '<?php echo $valid_email_msg ?>';
                        tdbCustomFormItem.lower_msg = '<?php echo $lower_msg ?>';
                        tdbCustomFormItem.higher_msg = '<?php echo $higher_msg ?>';

                        tdbCustomFormItem._nonce = '<?php echo wp_create_nonce(__CLASS__); ?>';

                        tdbCustomForms.addItem(tdbCustomFormItem);

                    });

                </script>
                <?php
                td_js_buffer::add_to_footer( "\n" . td_util::remove_script_tag( ob_get_clean() ) );
            }

        $buffy .= '</div>';

        return $buffy;
    }


}