__('Form Submissions (Fluent Forms)', 'fluent-crm'), 'name' => __('Fluent Forms', 'fluent-crm') ]; } return $providers; } public function getFluentFormSubmissions($data, $subscriber) { if (!defined('FLUENTFORM')) { return $data; } $app = fluentCrm(); $page = intval($app->request->get('page', 1)); $per_page = intval($app->request->get('per_page', 10)); $query = fluentCrmDb()->table('fluentform_submissions') ->select([ 'fluentform_submissions.id', 'fluentform_submissions.form_id', 'fluentform_forms.title', 'fluentform_submissions.status', 'fluentform_submissions.created_at' ]) ->join('fluentform_forms', 'fluentform_forms.id', '=', 'fluentform_submissions.form_id') ->where(function ($query) use ($subscriber) { $query->where('fluentform_submissions.response', 'LIKE', '%' . $subscriber->email . '%'); if ($subscriber->user_id) { $query->orWhere('fluentform_submissions.user_id', $subscriber->user_id); } }); $total = $query->count(); $submissions = $query ->limit($per_page) ->offset($per_page * ($page - 1)) ->orderBy('fluentform_submissions.id', 'desc') ->get(); $formattedSubmissions = []; foreach ($submissions as $submission) { $submissionUrl = admin_url('admin.php?page=fluent_forms&route=entries&form_id=' . $submission->form_id . '#/entries/' . $submission->id); $actionUrl = '#' . $submission->id . ''; $badgeClass = 'fcrm_badge'; if ($submission->status === 'read') { $badgeClass .= ' fcrm_badge_success'; } else if ($submission->status === 'unread') { $badgeClass .= ' fcrm_badge_warning'; } $formattedSubmissions[] = [ '__id' => $submission->id, 'id' => $actionUrl, 'title' => $submission->title, 'Status' => '' . $submission->status . '', 'Submitted At' => '' . $submission->created_at . '', 'action' => 'view' ]; } return [ 'total' => $total, 'data' => $formattedSubmissions, 'columns_config' => [ 'id' => [ 'label' => __('ID', 'fluent-crm'), 'width' => '100px' ], 'title' => [ 'label' => __('Form Title', 'fluent-crm') ], 'Status' => [ 'label' => __('Status', 'fluent-crm'), 'width' => '100px' ], 'Submitted At' => [ 'label' => __('Submitted At', 'fluent-crm'), 'width' => '180px' ], 'action' => [ 'quick_action' => true, 'label' => __('Action', 'fluent-crm'), 'width' => '100px' ] ] ]; } public function getFluentFormSubmissionDetails($dataView, $params) { $submissionId = (int)Arr::get($params, '__id'); if (!$submissionId) { $dataView['content_html'] = '

' . __('No submission found', 'fluent-crm') . '

'; return $dataView; } $submission = Submission::with(['form'])->find($submissionId); if (!$submission || !$submission->form) { $dataView['content_html'] = '

' . __('No submission found', 'fluent-crm') . '

'; return $dataView; } $form = $submission->form; if (!Acl::hasPermission('fluentform_entries_viewer', $form->id)) { $dataView['title'] = __('Permission Denied', 'fluent-crm'); $dataView['content_html'] = '

' . __('You do not have permission to view this submission.', 'fluent-crm') . '

'; return $dataView; } $submittedData = json_decode($submission->response, true); $html = 'Submission Details

{all_data}
'; if ($submission->payment_status) { $html .= '

Payment Details

'; $html .= '{payment.receipt}'; } $html .= '

Additional Details:

'; $html .= ''; $body = ShortCodeParser::parse( $html, $submission->id, $submittedData, $form, false, true ); $dataView['title'] = sprintf(__('Submission #%d - %s', 'fluent-crm'), $submission->id, $form->title); $dataView['content_html'] = '
' . $body . '
'; $dataView['footer_content'] = 'View in FluentForms'; return $dataView; } public function parseEditorCodes($code, $form, $keys) { $contact = FluentCrmApi('contacts')->getCurrentContact(true, true); $providedKey = $keys[0]; // maybe has fallback value $dynamicKey = explode('|', $providedKey); $fallBack = ''; if (count($dynamicKey) > 1) { $fallBack = $dynamicKey[1]; } $ref = $dynamicKey[0]; if (!$contact) { return $fallBack; } $validMainProps = (new Subscriber)->getFillable(); $validMainProps[] = 'id'; if (in_array($ref, $validMainProps)) { if ($contact->{$ref}) { return $contact->{$ref}; } return $fallBack; } // Maybe it's a custom field $customData = $contact->custom_fields(); if ($customData && !empty($customData[$ref])) { $value = $customData[$ref]; if (is_array($value)) { return implode(',', $value); } return $customData[$ref]; } $listMaps = [ 'list_ids' => 'id', 'list_titles' => 'title', 'list_slugs' => 'slug' ]; $tagMaps = [ 'tag_ids' => 'id', 'tag_titles' => 'title', 'tag_slugs' => 'slug' ]; if (isset($listMaps[$ref])) { $listProps = []; foreach ($contact->lists as $list) { $listProps[] = $list->{$listMaps[$ref]}; } if ($listProps) { return trim(implode(', ', $listProps)); } } else if (isset($tagMaps[$ref])) { $tagProps = []; foreach ($contact->tags as $tag) { $tagProps[] = $tag->{$tagMaps[$ref]}; } if ($tagProps) { return trim(implode(', ', $tagProps)); } } return $fallBack; } }