%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/higroup/1618475457800/wp-content/plugins/metform/core/forms/
Upload File :
Create Path :
Current File : /var/www/html/higroup/1618475457800/wp-content/plugins/metform/core/forms/action.php

<?php
namespace MetForm\Core\Forms;
defined( 'ABSPATH' ) || exit;

Class Action{

    use \MetForm\Traits\Singleton;

    private $key_form_settings;
    private $key_option_settings;
    private $key_form_count_views;
    private $post_type;

    private $fields;
    private $form_id;
    private $form_setting;
    private $title;
    private $response = [];

    public function __construct(){
        
        $this->key_form_settings = Base::instance()->form->get_key_form_settings();
        $this->key_option_settings = 'metform_option__settings';
        $this->key_form_count_views = 'metform_form__count_views';
        $this->post_type = Base::instance()->form->get_name();

        $this->response = [
            'saved' => false,
            'status' => esc_html("Something went wrong.", 'metform'),
            'data' => [
                ]
            ];
    }

    public function store( $form_id, $form_setting ){
        if( !current_user_can( 'manage_options' ) ){
            return;
        }

        $this->fields = $this->get_fields();
        $this->sanitize( $form_setting );
        $this->form_id = $form_id;
        
        if(isset($form_setting['mf_zapier']) && isset($form_setting['mf_zapier_webhook']) && $form_setting['mf_zapier_webhook'] != ''){
            
            $map_data = \MetForm\Core\Entries\Action::instance()->get_fields($form_id);
            $email_name = \MetForm\Core\Entries\Action::instance()->get_input_name_by_widget_type('mf-email', $map_data);

            $existing_settings = \MetForm\Core\Forms\Action::instance()->get_all_data($this->form_id);
            $zapier = new \MetForm_Pro\Core\Integrations\Zapier();

            $url = $form_setting['mf_zapier_webhook'];

            if(!empty($existing_settings) && ($existing_settings['mf_zapier_webhook'] != $form_setting['mf_zapier_webhook'])){
                $this->response['data']['zapier'] = $zapier->call_webhook($form_data[] = null, ['url' => $url, 'email_name' => $email_name]);
            }elseif(empty($existing_settings)){
                $this->response['data']['zapier'] = $zapier->call_webhook($form_data[] = null, ['url' => $url, 'email_name' => $email_name]);
            }
            
        }

        if($this->form_id == -1 ){
            $this->update_option_settings();
        } else if($this->form_id == 0){
            $this->insert();
        } else{
            $this->update();
        }

        return $this->response;
        
    }

    public function update_option_settings(){
        $status = update_option( $this->key_option_settings, $this->form_setting );
        if($status){
            $this->response['saved'] = true;
            $this->response['status'] = esc_html__('Form settings inserted','metform');
            $this->response['key'] = $this->key_option_settings;
            $this->response['data'] = $this->form_setting;
        }
    }
                
    public function insert(){
        if( !current_user_can( 'manage_options' ) ){
            return;
        }

        $this->title = ($this->form_setting['form_title'] != '') ? $this->form_setting['form_title'] : 'New Form # '.time();

        $defaults = array(
            'post_title' => $this->title,
            'post_status' => 'publish',
            'post_type' => $this->post_type,
        );
        $this->form_id = wp_insert_post( $defaults );

        update_post_meta( $this->form_id, $this->key_form_settings, $this->form_setting );
        update_post_meta( $this->form_id, '_wp_page_template', 'elementor_canvas' );

        $this->response['saved'] = true;
        $this->response['status'] = esc_html__('Form settings inserted','metform');

        if((!array_key_exists('store_entries',$this->form_setting)) && (!array_key_exists('enable_user_notification',$this->form_setting)) && (!array_key_exists('enable_admin_notification',$this->form_setting)) && (!array_key_exists('mf_mail_chimp',$this->form_setting)) && (!array_key_exists('mf_zapier',$this->form_setting))){
            $this->response['saved'] = false;
            $this->response['status'] = esc_html__('You must active at least one field of these fields "store entry/ Confirmation/ Notification/ MailChimp/ Zapier". ','metform'); 
        }
        if( (array_key_exists('mf_paypal', $this->form_setting)) && (!array_key_exists('store_entries', $this->form_setting)) ){
            $this->response['saved'] = false;
            $this->response['status'] = esc_html__('You must enable "store entries" for integrating payment method.','metform');
        }
                
        $this->response['data']['id'] = $this->form_id;
        $this->response['data']['title'] = $this->title;
        $this->response['data']['type'] = $this->post_type;

    }

    public function update(){
        if( !current_user_can( 'manage_options' ) ){
            return;
        }

        $this->title = ($this->form_setting['form_title'] != '') ? $this->form_setting['form_title'] : 'Form # '.time();

        if( isset( $this->form_setting['form_title'] ) ){
            $update_post = array(
                'ID'           => $this->form_id,
                'post_title'   => $this->title,
            );
            wp_update_post( $update_post );
        }

        update_post_meta( $this->form_id, $this->key_form_settings, $this->form_setting );
        update_post_meta( $this->form_id, '_wp_page_template', 'elementor_canvas' );

        $this->response['saved'] = true;
        $this->response['status'] = esc_html('Form settings updated','metform');

        if((!array_key_exists('store_entries',$this->form_setting)) && (!array_key_exists('enable_user_notification',$this->form_setting)) && (!array_key_exists('enable_admin_notification',$this->form_setting)) && (!array_key_exists('mf_mail_chimp',$this->form_setting)) && (!array_key_exists('mf_zapier',$this->form_setting)) && (!array_key_exists('mf_rest_api', $this->form_setting)) && (!array_key_exists('mf_slack', $this->form_setting))){
            $this->response['saved'] = false;
            $this->response['status'] = esc_html('You must active at least one field of these fields "store entries/ Confirmation/ Notification/ REST API/ MailChimp/ Slack/ Zapier". ','metform'); 
        }
        if( (array_key_exists('mf_paypal', $this->form_setting)) && (!array_key_exists('store_entries', $this->form_setting)) ){
            $this->response['saved'] = false;
            $this->response['status'] = esc_html__('You must enable "store entries" for integrating payment method.','metform');
        }

        $this->response['data']['id'] = $this->form_id;
        $this->response['data']['title'] = $this->title;
        $this->response['data']['type'] = $this->post_type;
    
    }
            
    public function get_fields(){
        return Base::instance()->form->get_form_settings_fields();
    }

    public function sanitize( $form_setting, $fields = null ){
        if( $fields == null ){
            $fields = $this->fields;
        }
        foreach( $form_setting as $key => $value ){

            if( isset( $fields[$key] ) ){
                $this->form_setting[ $key ] = $value;
            }

        }
    }


	/**
	 *
	 * @param $post_id
	 *
	 * @return array|null
	 */
    public function get_all_data( $post_id ){

        $post = get_post( $post_id );

        if(!is_object($post)){
            return null;
        }

        if( ! property_exists($post, 'ID')){
            return null;
        }

        $settings = get_post_meta( $post->ID, $this->key_form_settings,  true );
        $settings = (is_array($settings) ? $settings : []);
        $settings['entry_title'] = (!isset($settings['entry_title']) ? 'Entry # [mf_id]' :$settings['entry_title']);

        $global_settings = \MetForm\Core\Admin\Base::instance()->get_settings_option();
        $global_settings = (is_array($global_settings) ? $global_settings : []);

        $cKitCache = [];
	    $awbCache = [];
	    $mpCache = [];

	    if(class_exists('\MetForm_Pro\Core\Integrations\Convert_Kit')) {

	    	$cKitCache = get_option(\MetForm_Pro\Core\Integrations\Convert_Kit::CKIT_FORMS_CACHE_KEY);
	    }

	    if(class_exists('\MetForm_Pro\Core\Integrations\Aweber')) {

		    $awbCache = get_option(\MetForm_Pro\Core\Integrations\Aweber::AWEBER_LISTS_CACHE_KEY);
	    }

	    if(class_exists('\MetForm_Pro\Core\Integrations\Mail_Poet')) {

		    $mpCache = get_option(\MetForm_Pro\Core\Integrations\Mail_Poet::MAIL_POET_LISTS_CACHE_KEY);
	    }


        if(empty($global_settings)) {
            $all_settings = $settings;
            $all_settings['mf_recaptcha_version'] = 'recaptcha-v2';
        } else {
            $all_settings = array_merge( $settings, $global_settings );
        }

        $all_settings['form_title'] = get_the_title($post_id);

        $map_data = \MetForm\Core\Entries\Action::instance()->get_fields($post_id);

        \MetForm\Core\Entries\Metform_Shortcode::instance()->set_all_keys($map_data);
        $formated_keys = \MetForm\Core\Entries\Metform_Shortcode::instance()->get_all_keys();

        $all_settings['input_names'] = (!empty($formated_keys) ? implode(' ', $formated_keys) : 'Example: [mf-inputname]');

        $all_settings['ckit_opt'] = $cKitCache;
        $all_settings['aweber_opt'] = $awbCache;
        $all_settings['mp_opt'] = $mpCache;

        return $all_settings;      

    }

    public function get_count_views( $form_id ){
        return get_post_meta( $form_id, $this->key_form_count_views, true );
    }

    public function count_views( $form_id ){

        if( current_user_can( 'manage_options' ) ){
            return;
        }

        $form_setting = $this->get_all_data( $form_id );
        //return $form_setting;

        if(isset($form_setting['count_views']) && $form_setting['count_views'] == '1'){
            $count = $this->get_count_views( $form_id );
            $count = (int)$count;
            $count++;
            update_post_meta( $form_id, $this->key_form_count_views, $count );
            return $count;
        }
    }
}

Zerion Mini Shell 1.0