# bit-form/1.2/includes/Core/Integration/IntegrationHandler.php

Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator &amp; Custom Form Builder, version 1.2. 190 lines.

- Page: https://pluginprobe.com/plugins/bit-form/1.2/code/includes/Core/Integration/IntegrationHandler.php
- Raw: https://pluginprobe.com/plugins/bit-form/1.2/raw/includes/Core/Integration/IntegrationHandler.php
- Modified: 2021-01-05T07:47:44+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/bit-form/1.2/code/includes/Core/Integration/IntegrationHandler.php#L10-L20`.

```php
<?php

namespace BitCode\BitForm\Core\Integration;

use BitCode\BitForm\Core\Database\IntegrationModel;

final class IntegrationHandler
{
    private static $_formID;
    private static $_integrationModel;
    private $_user_details;

    /**
     * Constructor of Integration Handler
     * 
     * @param  Integer $formID       If Integration is accessible globally then
     *                               $formID will be 0 and category app
     * @param  Array   $user_details Details of user accessing data
     * @return void 
     */
    public function __construct($formID, $user_details = null)
    {
        static::$_formID = $formID;
        static::$_integrationModel = new IntegrationModel();
        $this->_user_details = $user_details;
    }


    public function getAIntegration($integrationID, $integrationCategory = null, $integrationType = null)
    {
        $conditions = array(
            'form_id' => static::$_formID,
            'id' => $integrationID,
        );
        if (!is_null($integrationType)) {
            $conditions = array_merge($conditions, ['integration_type' => $integrationType]);
        }
        if (!is_null($integrationCategory)) {
            $conditions = array_merge($conditions, ['category' => $integrationCategory]);
        }
        return static::$_integrationModel->get(
            array(
                'id',
                'integration_name',
                'integration_type',
                'integration_details'
            ),
            $conditions
        );
    }

    public function getAllIntegration($integrationCategory = null, $integrationType = null ,$status = null)
    {
        $conditions = array(
            'form_id' => static::$_formID
        );
        if (!is_null($integrationType)) {
            $conditions = array_merge($conditions, ['integration_type' => $integrationType]);
        }
        
        if (!is_null($integrationCategory)) {
            $conditions = array_merge($conditions, ['category' => $integrationCategory]);
        }
        if (!is_null($status)) {
            $conditions = array_merge($conditions, ['status' => 1]);
        }
        return static::$_integrationModel->get(
            array(
                'id',
                'integration_name',
                'integration_type',
                'integration_details',
                'status'
            ),
            $conditions
        );
    }

    public function saveIntegration($integrationName, $integrationType, $integrationDetails, $integrationCategory,$status = null)
    {
        if($status == null ){
            $status = 1;
        }
        return static::$_integrationModel->insert(
            array(
            "integration_name"=> $integrationName,
            "integration_type"=> $integrationType,
            "integration_details"=> $integrationDetails,
            'category' => $integrationCategory,
            'form_id' => static::$_formID,
            "user_id"=> $this->_user_details['id'],
            "user_ip"=> $this->_user_details['ip'],
            "status"=> $status,
            "created_at"=> $this->_user_details['time'],
            "updated_at"=> $this->_user_details['time']
            )
        );
    }

    public function updateIntegration($integrationID, $integrationName, $integrationType, $integrationDetails, $integrationCategory,$status=null)
    {
        if($status == null ){
            $status = 1;
        }
        return static::$_integrationModel->update(
            array(
            "integration_name"=> $integrationName,
            "integration_type"=> $integrationType,
            "integration_details"=> $integrationDetails,
            'category' => $integrationCategory,
            'form_id' => static::$_formID,
            "user_id"=> $this->_user_details['id'],
            "user_ip"=> $this->_user_details['ip'],
            "status"=> $status,
            "updated_at"=> $this->_user_details['time']
            ),
            array(
            "id" => $integrationID
            )
        );
    }

    public function duplicateAllInAForm($oldFormId)
    {
        $integCols = ["integration_name","integration_type","integration_details",'category' ,'form_id' ,"user_id","user_ip","status","created_at","updated_at"];
        $integDupData = array(
            "integration_name",
            "integration_type",
            "integration_details",
            'category',
            static::$_formID,
            $this->_user_details['id'],
            $this->_user_details['ip'],
            "status",
            $this->_user_details['time'],
            $this->_user_details['time']
        );
        return static::$_integrationModel->duplicate($integCols, $integDupData, ['form_id' => $oldFormId]);
    }

    public function deleteIntegration($integrationID)
    {
        return static::$_integrationModel->delete(
            array(
                'id' => $integrationID,
                'form_id' => static::$_formID,
                )
        );
    }

    public static function replaceFieldWithValue($dataToReplaceField, $fieldValues)
    {
        if (empty($dataToReplaceField)) {
            return false;
        }
        if (is_string($dataToReplaceField)) {
            $dataToReplaceField = static::replaceFieldWithValueHelper($dataToReplaceField, $fieldValues);
        } else if (is_array($dataToReplaceField)) {
            foreach ($dataToReplaceField as $field => $value) {
                if (is_array($value) && count($value) === 1 ) {
                    $dataToReplaceField[$field] = static::replaceFieldWithValueHelper($value[0], $fieldValues);
                } else if(is_array($value)){
                    $dataToReplaceField[$field] = static::replaceFieldWithValue($value, $fieldValues);
                } else {
                    $dataToReplaceField[$field] = static::replaceFieldWithValueHelper($value, $fieldValues);
                }
            }
        }
        return $dataToReplaceField;
    }

    private static function replaceFieldWithValueHelper($stringToReplaceField, $fieldValues)
    {
        if (empty($stringToReplaceField)) {
            return $stringToReplaceField;
        }
        $fieldPattern = '/\${\w[^ ${}]*}/';
        preg_match_all($fieldPattern, $stringToReplaceField, $matchedField);
        $uniqueFieldsInStr = array_unique($matchedField[0]);
        foreach ($uniqueFieldsInStr as $key => $value) {
            $fieldName = substr($value, 2, strlen($value)-3);
            if (!empty($fieldValues[$fieldName])) {
                $stringToReplaceField = is_string($fieldValues[$fieldName])? str_replace($value, $fieldValues[$fieldName], $stringToReplaceField) :
                wp_json_encode($fieldValues[$fieldName]);
            }
        }
        return $stringToReplaceField;
    }
}

```
