PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / fluent-boards / actions / get-crm-contact-for-task.php
suretriggers / src / Integrations / fluent-boards / actions Last commit date
add-user-to-board.php 11 months ago assign-task.php 1 year ago create-board.php 2 weeks ago create-label.php 8 months ago create-stage.php 8 months ago create-sub-task.php 11 months ago create-subtask-group.php 11 months ago create-task.php 2 weeks ago get-board-details.php 11 months ago get-crm-contact-for-task.php 2 weeks ago get-task-assignees.php 2 weeks ago get-task-details.php 11 months ago list-task-labels.php 11 months ago list-tasks.php 1 year ago remove-assignee-from-task.php 1 year ago
get-crm-contact-for-task.php
186 lines
1 <?php
2 /**
3 * GetCrmContactForTask.
4 * php version 5.6
5 *
6 * @category GetCrmContactForTask
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\FluentBoards\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Integrations\FluentBoards\FluentBoards;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * GetCrmContactForTask
22 *
23 * @category GetCrmContactForTask
24 * @package SureTriggers
25 * @author BSF <username@example.com>
26 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
27 * @link https://www.brainstormforce.com/
28 * @since 1.0.0
29 */
30 class GetCrmContactForTask extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'FluentBoards';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'fbs_get_crm_contact_for_task';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 * @return array
53 */
54 public function register( $actions ) {
55
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Get CRM Contact for Task', 'suretriggers' ),
58 'action' => $this->action,
59 'function' => [ $this, 'action_listener' ],
60 ];
61
62 return $actions;
63 }
64
65 /**
66 * Action listener.
67 *
68 * @param int $user_id user_id.
69 * @param int $automation_id automation_id.
70 * @param array $fields fields.
71 * @param array $selected_options selected_options.
72 *
73 * @return array
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 $task_id = $selected_options['task_id'] ? sanitize_text_field( $selected_options['task_id'] ) : '';
77 $board_id = $selected_options['board_id'] ? sanitize_text_field( $selected_options['board_id'] ) : '';
78
79 if ( empty( $task_id ) ) {
80 return [
81 'status' => 'error',
82 'message' => __( 'Task ID is required.', 'suretriggers' ),
83
84 ];
85 }
86
87 if ( ! function_exists( 'FluentBoardsApi' ) ) {
88 return [
89 'status' => 'error',
90 'message' => __( 'FluentBoards plugin is not active.', 'suretriggers' ),
91
92 ];
93 }
94
95 /**
96 * FluentBoards' Tasks API wrapper no longer proxies arbitrary Eloquent
97 * methods like find() — it now only exposes explicit, permission-gated
98 * methods such as getTask(), which checks board-read permission via
99 * PermissionManager::userHasBoardPermission(), falling back to
100 * get_current_user_id(). See FluentBoards::maybe_set_acting_user().
101 */
102 if ( class_exists( '\SureTriggers\Integrations\FluentBoards\FluentBoards' ) ) {
103 FluentBoards::maybe_set_acting_user( $user_id );
104 }
105
106 $task = FluentBoardsApi( 'tasks' )->getTask( $task_id );
107 if ( empty( $task ) ) {
108 return [
109 'status' => 'error',
110 'message' => __( 'Task not found.', 'suretriggers' ),
111
112 ];
113 }
114
115 if ( ! empty( $board_id ) && $task->board_id != $board_id ) {
116 return [
117 'status' => 'error',
118 'message' => __( 'Task does not belong to the specified board.', 'suretriggers' ),
119
120 ];
121 }
122
123 global $wpdb;
124 $task_data = $wpdb->get_row(
125 $wpdb->prepare(
126 "SELECT * FROM {$wpdb->prefix}fbs_tasks WHERE id = %d",
127 $task_id
128 )
129 );
130
131 $crm_contact_data = [];
132 $crm_contact_id = isset( $task_data->crm_contact_id ) ? $task_data->crm_contact_id : null;
133
134 if ( $crm_contact_id ) {
135 // Get CRM contact details using the contact ID from task.
136 if ( class_exists( 'FluentCrm\App\Models\Subscriber' ) ) {
137 $contact = \FluentCrm\App\Models\Subscriber::find( $crm_contact_id );
138 } elseif ( function_exists( 'FluentCrmApi' ) ) {
139 $contact_api = FluentCrmApi( 'contacts' );
140 $contact = $contact_api->getContact( $crm_contact_id );
141 } else {
142 $contact = $wpdb->get_row(
143 $wpdb->prepare(
144 "SELECT * FROM {$wpdb->prefix}fc_subscribers WHERE id = %d",
145 $crm_contact_id
146 )
147 );
148 }
149
150 if ( $contact ) {
151 $crm_contact_data = [
152 'contact_id' => $contact->id,
153 'email' => $contact->email,
154 'first_name' => isset( $contact->first_name ) ? $contact->first_name : '',
155 'last_name' => isset( $contact->last_name ) ? $contact->last_name : '',
156 'full_name' => isset( $contact->full_name ) ? $contact->full_name : '',
157 'status' => isset( $contact->status ) ? $contact->status : '',
158 'contact_type' => isset( $contact->contact_type ) ? $contact->contact_type : '',
159 'crm_found' => true,
160 ];
161 } else {
162 $crm_contact_data = [
163 'contact_id' => $crm_contact_id,
164 'crm_status' => 'Contact ID found but contact details not available',
165 ];
166 }
167 } else {
168 $crm_contact_data = [
169 'crm_status' => 'No CRM contact assigned to this task',
170 ];
171 }
172
173 return [
174 'status' => 'success',
175 'task_id' => $task->id,
176 'task_title' => $task->title,
177 'board_id' => $task->board_id,
178 'board_title' => $task->board ? $task->board->title : '',
179 'crm_contact' => $crm_contact_data,
180 'crm_contact_id' => $crm_contact_id,
181 ];
182 }
183 }
184
185 GetCrmContactForTask::get_instance();
186