PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.15.3
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.15.3
3.3.1 V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 All 138 releases
← All changes | includes/Core/Integration/Integrations.php +5 -124 3.3.12.15.3 View file →
@@ -9,10 +9,8 @@
9 9
10 10 use BitCode\BitForm\Core\Database\FormEntryModel;
11 11 use BitCode\BitForm\Core\Database\FormModel;
12 12 use BitCode\BitForm\Core\Util\ApiResponse;
13 -use BitCode\BitForm\Core\Util\IpTool;
14 -use BitCode\BitForm\Core\Util\Log;
15 13 use BitCode\BitForm\Core\Util\SmartTags;
16 14 use BitCode\BitForm\Core\Util\Utilities;
17 15 /**
18 16 * Provides details of available integration and helps to
@@ -23,23 +21,11 @@
23 21
24 22 final class Integrations
25 23 {
26 24 public $integrations = [];
27 - private static $_instance = null;
28 25
29 26 /**
30 27 * Undocumented function
31 - */
32 - public static function getInstance()
33 - {
34 - if (null === self::$_instance) {
35 - self::$_instance = new Integrations();
36 - }
37 - return self::$_instance;
38 - }
39 -
40 - /**
41 - * Undocumented function
42 28 *
43 29 * @return array
44 30 */
45 31 public function getAllIntegrations()
@@ -182,70 +168,37 @@
182 168 public static function executeIntegrations($integrations, $fieldValues, $formID, $logID = null, $entryID = 0)
183 169 {
184 170 $integrationHandler = new IntegrationHandler($formID);
185 171 $logResponse = new ApiResponse();
186 - $intThatNeedNoFileHandling = ['ACF', 'MetaBox', 'Pods']; //these takes raw file and upload it
187 - $baseFieldValues = $fieldValues;
188 - $entryDetails = [
189 - 'formId' => $formID,
190 - 'entryId' => $entryID,
191 - 'fieldValues' => $fieldValues
192 - ];
193 172 if (is_array($integrations)) {
194 173 foreach ($integrations as $integrationIDStr) {
195 174 if (!is_string($integrationIDStr)) {
196 175 return;
197 176 }
198 - $currentFieldValues = $baseFieldValues;
199 - $integrationID = intval(Utilities::jsonObj($integrationIDStr)->id ?? 0, 10);
177 + $integrationID = intval(json_decode($integrationIDStr)->id, 10);
200 178 if (!empty($integrationID) && is_int($integrationID)) {
201 179 $integrationResult
202 180 = $integrationHandler->getAIntegration($integrationID);
203 181 $integrationDetails = is_wp_error($integrationResult) ? null : $integrationResult[0];
204 - // Honor enable/disable: a disabled integration is never executed.
205 - if (!is_null($integrationDetails) && isset($integrationDetails->status) && empty($integrationDetails->status)) {
206 - continue;
207 - }
208 182 $integrationName = is_null($integrationDetails) ? null : ucfirst(str_replace(' ', '', $integrationDetails->integration_type));
209 183 if ('Brevo(SendinBlue)' === $integrationName) {
210 184 $integrationName = 'SendinBlue';
211 185 }
212 186 if (!is_null($integrationName) && static::isExists($integrationName)) {
213 - if (!in_array($integrationName, $intThatNeedNoFileHandling)) {
214 - $currentFieldValues = IntegrationHandler::handleFileUrl($currentFieldValues, $formID, $entryID);
215 - }
216 187 $integration = static::isExists($integrationName);
217 188 $handler = new $integration($integrationID, $formID);
218 189 $integDetails = is_string($integrationDetails->integration_details) ? json_decode($integrationDetails->integration_details) : $integrationDetails->integration_details;
219 190 if (isset($integDetails->field_map)) {
220 191 $sptagData = self::specialTagFields($integDetails->field_map);
221 - $currentFieldValues = $currentFieldValues + $sptagData;
192 + $fieldValues = $fieldValues + $sptagData;
222 193 }
223 - // fresh time budget per handler: a chain of slow integrations (30s HTTP
224 - // timeout each) must not be killed by max_execution_time mid-loop
225 - if (\function_exists('set_time_limit') && false === strpos((string) ini_get('disable_functions'), 'set_time_limit')) {
226 - set_time_limit(60);
227 - }
228 - try {
229 - $handler->execute($integrationHandler, $integrationDetails, $currentFieldValues, $entryID, $logID);
230 - } catch (\Throwable $executionError) {
231 - // one failing integration must not abort the remaining ones
232 - Log::debug_log('[+] Integration execution threw: ' . $executionError->getMessage());
233 - $logResponse->apiResponse(
234 - $logID,
235 - $integrationID,
236 - ['type' => 'record', 'type_name' => $integrationName ?: 'Integration'],
237 - 'errors',
238 - $executionError->getMessage(),
239 - $entryDetails
240 - );
241 - }
194 + $handler->execute($integrationHandler, $integrationDetails, $fieldValues, $entryID, $logID);
242 195 } else {
243 196 do_action('bitform_integration_run_failure', $integrationID, $formID);
244 197
245 198 $errorMsg = apply_filters('bitform_filter_integration_run_failure_message', __('Integration execution failed', 'bit-form'), $integrationID, $formID);
246 199
247 - Log::debug_log('[+] Integration execution failed: ' . $errorMsg);
200 + error_log('[+] Integration execution failed: ' . print_r($errorMsg, true));
248 201
249 202 $logResponse->apiResponse(
250 203 $logID,
251 204 $integrationID,
@@ -250,10 +203,9 @@
250 203 $logID,
251 204 $integrationID,
252 205 ['type' => 'record', 'type_name' => $integrationName || 'Integration'],
253 206 'errors',
254 - $errorMsg,
255 - $entryDetails
207 + $errorMsg
256 208 );
257 209 }
258 210 }
259 211 }
@@ -273,77 +225,6 @@
273 225 foreach ($integrations as $key => $value) {
274 226 self::executeIntegrations($value, $fieldValue, $formID, $logID, $entryID);
275 227 }
276 228 self::entryDeleted($formID, $entryID);
277 - }
278 -
279 - /**
280 - * This function helps to save connected integration app
281 - *
282 - * @return wp_error | mixed
283 - */
284 - public function saveConnectedIntegrationApp($appConfig)
285 - {
286 - // error_log('[+] saveConnectedIntegrationApp: ' . print_r($appConfig, true));
287 - $connectionName = $appConfig->name;
288 - $connectionType = $appConfig->type;
289 - // $connectionDetails = wp_json_encode($appConfig);
290 -
291 - if (empty($appConfig->details)) {
292 - unset($appConfig->name, $appConfig->id);
293 -
294 - $connectionDetails = !is_string($appConfig) ?
295 - wp_json_encode($appConfig) : $appConfig;
296 - } else {
297 - $connectionDetails = !is_string($appConfig->details) ?
298 - wp_json_encode($appConfig->details) : $appConfig->details;
299 - }
300 - $connectionCategory = 'connected_integration_apps';
301 -
302 - // saveIntegration reads user_details['id'|'ip'|'time']; without them the insert
303 - // raises null-offset warnings and stores null user_id/created_at
304 - $integrationHandler = new IntegrationHandler(0, IpTool::getUserDetail());
305 -
306 - return $integrationHandler->saveIntegration($connectionName, $connectionType, $connectionDetails, $connectionCategory);
307 - }
308 -
309 - // get connectd integration app
310 - public function getConnectedIntegrationApp($integration_type = null)
311 - {
312 - $connectionCategory = 'connected_integration_apps';
313 -
314 - $integrationHandler = new IntegrationHandler(0);
315 - $allConnectedIntegApps = $integrationHandler->getAllIntegration($connectionCategory, $integration_type);
316 -
317 - if (!is_wp_error($allConnectedIntegApps)) {
318 - foreach ($allConnectedIntegApps as $integrationkey => $integrationValue) {
319 - $integrationData = [
320 - 'id' => $integrationValue->id,
321 - 'name' => $integrationValue->integration_name,
322 - 'type' => $integrationValue->integration_type,
323 - ];
324 - $allConnectedIntegApps[$integrationkey]->integration_details = wp_json_encode(array_merge(
325 - $integrationData,
326 - is_string($integrationValue->integration_details) ?
327 - (array) json_decode($integrationValue->integration_details) :
328 - $integrationValue->integration_details
329 - ));
330 - }
331 - }
332 - return $allConnectedIntegApps;
333 - }
334 -
335 - public function deleteConnectedApp($appId)
336 - {
337 - $integrationHandler = new IntegrationHandler(0);
338 -
339 - return $integrationHandler->deleteIntegration($appId);
340 - }
341 -
342 - public function renameConnectedApp($appId, $name)
343 - {
344 - // User details carry the time renameConnectedApp() stamps into updated_at.
345 - $integrationHandler = new IntegrationHandler(0, IpTool::getUserDetail());
346 -
347 - return $integrationHandler->renameConnectedApp($appId, $name);
348 229 }
349 230 }