__('Support Tickets by Fluent Support', 'fluent-crm'), 'name' => __('Fluent Support', 'fluent-crm') ]; return $providers; } public function getSupportTickets($data, $subscriber) { $supportPerson = Customer::where('email', $subscriber->email)->first(); if (!$supportPerson) { return $data; } $tickets = Ticket::where('customer_id', $supportPerson->id)->paginate(); $formattedTickets = []; foreach ($tickets as $ticket) { $ticketUrl = Helper::getPortalAdminBaseUrl() . 'tickets/' . $ticket->id . '/view'; $actionHTML = '' . __('View Ticket', 'fluent-crm') . ''; $formattedTickets[] = [ 'id' => '#' . $ticket->id, 'title' => $ticket->title, 'status' => '' . __($ticket->status, 'fluent-crm') . '', 'Submitted at' => human_time_diff(strtotime($ticket->created_at), current_time('timestamp')) . __(' ago', 'fluent-crm'), 'action' => $actionHTML ]; } return [ 'total' => $tickets->total, 'data' => $formattedTickets ]; } public function maybeCreateContact($customer) { $syncSettings = $this->getSyncSettings(); if (!$syncSettings['enabled'] != 'yes') { return false; } $email = $customer->email; $subscriber = Subscriber::where('email', $email)->first(); $customerData = array_filter([ 'first_name' => $customer->first_name, 'last_name' => $customer->last_name, 'email' => $customer->email, 'address_line_1' => $customer->address_line_1, 'address_line_2' => $customer->address_line_2, 'postal_code' => $customer->zip, 'city' => $customer->city, 'state' => $customer->state, 'country' => $customer->country, ]); if ($subscriber) { unset($customerData['email']); $subscriber->fill($customerData); $subscriber->save(); } else { $customerData['status'] = $syncSettings['default_status']; $subscriber = FluentCrmApi('contacts')->createOrUpdate($customerData); if (!$subscriber) { return false; } if ($customerData['status'] == 'pending' && $subscriber->status == 'pending') { $subscriber->sendDoubleOptinEmail(); } } if ($syncSettings['assigned_list']) { $subscriber->attachLists([$syncSettings['assigned_list']]); } if ($syncSettings['assigned_tags']) { $subscriber->attachTags($syncSettings['assigned_tags']); } return true; } private function getSyncSettings() { $settings = Helper::getOption('_fluentcrm_intergration_settings'); $settingDefault = [ 'enabled' => 'no', 'default_status' => 'subscribed', 'assigned_list' => '', 'assigned_tags' => [] ]; if (!$settings) { return $settingDefault; } return wp_parse_args($settings, $settingDefault); } }