GRAYBYTE WORDPRESS FILE MANAGER3197

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /home/giriqfky/trustyourlawyer.com/wp-content/plugins/ninja-forms/includes/Fields/
Upload Files :
Current_dir [ Writeable ] Document_root [ Writeable ]

Command :


Current File : /home/giriqfky/trustyourlawyer.com/wp-content/plugins/ninja-forms/includes/Fields//Product.php
<?php if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * Class NF_Fields_Product
 */
class NF_Fields_Product extends NF_Abstracts_Input
{
    protected $_name = 'product';

    protected $_section = '';

    protected $_icon = 'tag';

    protected $_aliases = array();

    protected $_type = 'product';

    protected $_templates = array( 'product', 'textbox', 'hidden', 'listselect' );

    protected $_test_value = '0';

    protected $processing_fields = array( 'quantity', 'modifier', 'shipping', 'tax', 'total' );

    protected $_settings = array( 'product_use_quantity', 'product_price', 'product_type', 'product_type' );

    protected $_settings_exclude = array( 'input_limit_set', 'disable_input', 'required' );

    public function __construct()
    {
        parent::__construct();

        $this->_nicename = esc_html__( 'Product', 'ninja-forms' );

        $this->_settings[ 'product_price' ][ 'width' ] = 'full';

        add_filter( 'ninja_forms_merge_tag_value_product', array( $this, 'merge_tag_value' ), 10, 2 );

        add_filter( 'ninja_forms_custom_columns', array( $this, 'custom_columns' ), 10, 3 );
        add_filter( 'ninja_forms_merge_tag_calc_value_product', array( $this, 'merge_tag_value' ), 10, 2 );

        add_filter( 'ninja_forms_localize_field_' . $this->_name, array( $this, 'filter_required_setting' ) );
        add_filter( 'ninja_forms_localize_field_' . $this->_name . '_preview', array( $this, 'filter_required_setting' ) );
    }

    public function process( $product, $data )
    {
        $related = array();

        foreach( $data[ 'fields' ] as $key => $field ){


            if( ! isset ( $field[ 'type' ] ) || ! in_array( $field[ 'type' ], $this->processing_fields ) ) continue;

            $type = $field[ 'type' ];

            if( ! isset( $field[ 'product_assignment' ] ) ) continue;

            if( $product[ 'id' ] != $field[ 'product_assignment' ] ) continue;

            $related[ $type ] = &$data[ 'fields' ][ $key ]; // Assign by reference
        }

        //TODO: Does not work in non-English locales
        $total = str_replace( array( ',', '$' ), '', $product[ 'product_price' ] );
        $total = floatval( $total );

        if( isset( $related[ 'quantity' ][ 'value' ] ) && $related[ 'quantity' ][ 'value' ] ){
            $total = $total * $related[ 'quantity' ][ 'value' ];
        } elseif( $product[ 'product_use_quantity'] && $product[ 'value' ] ){
            $total = $total * $product[ 'value' ];
        }

        if( isset( $related[ 'modifier' ] ) ){
            //TODO: Handle multiple modifiers.
        }

        $data[ 'product_totals' ][] = number_format( $total, 2 );
        $data[ 'extra' ][ 'product_fields' ][ $product[ 'id' ] ][ 'product_price' ] = $product[ 'settings' ][ 'product_price' ];

        return $data;
    }

    /**
     * Validate
     *
     * @param $field
     * @param $data
     * @return array $errors
     */
    public function validate( $field, $data )
    {
        $errors = array();

        if( isset( $field[ 'product_use_quantity' ] ) && 1 == $field[ 'product_use_quantity' ] ){

            // Required check.
            if( isset( $field['required'] ) && 1 == $field['required'] && ! trim( $field['value'] ) ){
                $errors[] = 'Field is required.';
            }
        }

        return $errors;
    }

    public function filter_required_setting( $field )
    {
        if( ! isset( $field[ 'settings' ][ 'product_use_quantity' ] ) || 1 != $field[ 'settings' ][ 'product_use_quantity' ] ) {
            $field[ 'settings' ][ 'required' ] = 0;
        }
        return $field;
    }

    public function merge_tag_value( $value, $field )
    {
        // TODO: Replaced this to fix English locales.
        // Other locales are still broken and will need to be addressed in refactor.
//        $product_price = preg_replace ('/[^\d,\.]/', '', $field[ 'product_price' ] );
        $product_price = (float) str_replace( array( ',', $this->getCurrencySymbol() ), '', $field[ 'product_price' ] );

        $product_quantity = ( isset( $field[ 'product_use_quantity' ] ) && 1 == $field[ 'product_use_quantity' ] ) ?(float) $value : 1;

        return number_format( $product_price * $product_quantity, 2 );
    }

    public function custom_columns( $value, $field, $sub_id )
    {
        if ( ! $field->get_setting( 'product_use_quantity' ) ) return $value;
        if ( 0 == absint( $_REQUEST[ 'form_id' ] ) ) return $value;

        $form_id = absint( $_REQUEST[ 'form_id' ] );

        /*
         * Check to see if we have a stored "price" setting for this field.
         * This lets us track what the value was when the user submitted so that total isn't incorrect if the user changes the price after a submission.
         */
        $sub = Ninja_Forms()->form()->get_sub( $sub_id );
        $product_fields = $sub->get_extra_value( 'product_fields' );

        if( is_array( $product_fields ) && isset ( $product_fields[ $field->get_id() ] ) ) {
            $price = $product_fields[ $field->get_id() ][ 'product_price' ];
        } else {
            $price = $field->get_setting( 'product_price' ); 
        }

        /*
         * Get our currency marker setting. First, we check the form, then plugin settings.
         */
        $currency = Ninja_Forms()->form( $form_id )->get()->get_setting( 'currency' );
        
        if ( empty( $currency ) ) {
            /*
             * Check our plugin currency.
             */
            $currency = Ninja_Forms()->get_setting( 'currency' );
        }

        $currency_symbols = Ninja_Forms::config( 'CurrencySymbol' );
        $currency_symbol = html_entity_decode( $currency_symbols[ $currency ] );

        // @todo Update to use the locale of the form.
        global $wp_locale;
        $price = str_replace( array( $wp_locale->number_format[ 'thousands_sep' ], $currency_symbol ), '', $price );
        $price = floatval( $price );
        $value = intval( $value );

        $total = number_format_i18n( $price * $value, 2 );

        $output = $currency_symbol . $total . ' ( ' . $value . ' ) ';
        return $output;
    }

    public function admin_form_element( $id, $value )
    {
        $form_id = get_post_meta( absint( $_GET[ 'post' ] ), '_form_id', true );

        $field = Ninja_Forms()->form( $form_id )->get_field( $id );

        /*
         * Check to see if we have a stored "price" setting for this field.
         * This lets us track what the value was when the user submitted so that total isn't incorrect if the user changes the price after a submission.
         */
        $sub = Ninja_Forms()->form()->get_sub( absint( $_REQUEST[ 'post' ] ) );
        $product_fields = $sub->get_extra_value( 'product_fields' );

        if( is_array( $product_fields ) && isset ( $product_fields[ $id ] ) ) {
            $price = $product_fields[ $id ][ 'product_price' ];
        } else {
            $price = $field->get_setting( 'product_price' ); 
        }

        /*
         * Get our currency marker setting. First, we check the form, then plugin settings.
         */
        $currency = Ninja_Forms()->form( $form_id )->get()->get_setting( 'currency' );
        
        if ( empty( $currency ) ) {
            /*
             * Check our plugin currency.
             */
            $currency = Ninja_Forms()->get_setting( 'currency' );
        }

        $currency_symbols = Ninja_Forms::config( 'CurrencySymbol' );
        $currency_symbol = html_entity_decode( $currency_symbols[ $currency ] );

        // @todo Update to use the locale of the form.
        global $wp_locale;
        $price = str_replace( array( $wp_locale->number_format[ 'thousands_sep' ], $currency_symbol ), '', $price );
        $price = floatval( $price );
        $value = intval( $value );

        $total = number_format_i18n( $price * $value, 2 );
        $price = number_format_i18n( $price, 2 );

        return "Price: <strong>" . $currency_symbol . $price . "</strong> X Quantity: <input name='fields[$id]' type='number' value='" . $value . "'> = " . $currency_symbol . $total;
    }

    /**
     * Determine currency symbol
     *
     * @return string
     */
    protected function getCurrencySymbol(): string
    {
        $currencySymbolLookup = Ninja_Forms::config('CurrencySymbol');
        $currency = Ninja_Forms()->get_setting('currency');

        if (!is_string($currency)) {
            return '';
        }

        $return = isset($currencySymbolLookup[$currency]) ? $currencySymbolLookup[$currency] : '';

        return $return;
    }
}

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
July 10 2025 04:32:23
giriqfky / giriqfky
0755
.htaccess
0.41 KB
July 10 2025 04:32:23
giriqfky / giriqfky
0644
Address.php
0.678 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Address2.php
0.649 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Button.php
0.546 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Checkbox.php
6.439 KB
July 07 2025 22:00:20
giriqfky / giriqfky
0644
City.php
0.581 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Color.php
0.608 KB
March 15 2016 02:24:24
giriqfky / giriqfky
0644
Confirm.php
1.012 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
CreditCard.php
0.572 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
CreditCardCVC.php
0.803 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
CreditCardExpiration.php
0.975 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
CreditCardFullName.php
0.842 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
CreditCardNumber.php
0.844 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
CreditCardZip.php
0.776 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Date.php
9.434 KB
July 07 2025 22:00:20
giriqfky / giriqfky
0644
Email.php
1.603 KB
September 30 2024 22:20:16
giriqfky / giriqfky
0644
FirstName.php
1.134 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
HTML.php
2.262 KB
July 29 2024 13:30:44
giriqfky / giriqfky
0644
Hidden.php
0.954 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
LastName.php
1.126 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
ListCheckbox.php
2.09 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
ListCountry.php
4.855 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
ListImage.php
5.282 KB
October 24 2024 00:36:22
giriqfky / giriqfky
0644
ListModifier.php
0.468 KB
March 15 2016 02:24:24
giriqfky / giriqfky
0644
ListMultiSelect.php
2.031 KB
August 17 2021 13:06:24
giriqfky / giriqfky
0644
ListRadio.php
0.999 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
ListSelect.php
1.035 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
ListState.php
1.375 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Note.php
1.498 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Number.php
0.683 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Password.php
0.779 KB
February 08 2021 23:03:26
giriqfky / giriqfky
0644
PasswordConfirm.php
2.454 KB
March 12 2025 21:40:36
giriqfky / giriqfky
0644
Phone.php
0.61 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Product.php
8.379 KB
February 22 2023 23:20:58
giriqfky / giriqfky
0644
Quantity.php
0.673 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Recaptcha.php
3.26 KB
October 04 2023 20:07:10
giriqfky / giriqfky
0644
RecaptchaV3.php
0.422 KB
June 07 2021 21:40:12
giriqfky / giriqfky
0644
Repeater.php
8.702 KB
April 30 2024 21:16:06
giriqfky / giriqfky
0644
Shipping.php
2.505 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Spam.php
1.817 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
StarRating.php
0.771 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Submit.php
0.867 KB
July 29 2024 13:30:44
giriqfky / giriqfky
0644
Terms.php
6.291 KB
November 18 2024 20:55:28
giriqfky / giriqfky
0644
Textarea.php
1.597 KB
February 09 2023 21:52:18
giriqfky / giriqfky
0644
Textbox.php
1.011 KB
February 09 2023 21:52:18
giriqfky / giriqfky
0644
TimedSubmit.php
0.537 KB
March 15 2016 02:24:24
giriqfky / giriqfky
0644
Total.php
1.192 KB
February 22 2023 23:20:58
giriqfky / giriqfky
0644
Unknown.php
2.835 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
Zip.php
0.596 KB
February 04 2020 21:17:42
giriqfky / giriqfky
0644
hr.php
0.88 KB
July 29 2024 13:30:44
giriqfky / giriqfky
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF