PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / create-task.php
suretriggers / src / Integrations / fluent-boards / actions Last commit date
add-user-to-board.php 10 months ago assign-task.php 1 year ago create-board.php 7 months ago create-label.php 7 months ago create-stage.php 7 months ago create-sub-task.php 10 months ago create-subtask-group.php 10 months ago create-task.php 7 months ago get-board-details.php 10 months ago get-crm-contact-for-task.php 10 months ago get-task-assignees.php 1 year ago get-task-details.php 10 months ago list-task-labels.php 10 months ago list-tasks.php 1 year ago remove-assignee-from-task.php 1 year ago
create-task.php
174 lines
1 <?php
2 /**
3 * CreateTask.
4 * php version 5.6
5 *
6 * @category CreateTask
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 Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19 use FluentBoardsPro\App\Services\AttachmentService;
20
21 /**
22 * CreateTask
23 *
24 * @category CreateTask
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class CreateTask extends AutomateAction {
32
33
34 /**
35 * Integration type.
36 *
37 * @var string
38 */
39 public $integration = 'FluentBoards';
40
41 /**
42 * Action name.
43 *
44 * @var string
45 */
46 public $action = 'fbs_create_task';
47
48 use SingletonLoader;
49
50
51 /**
52 * Register a action.
53 *
54 * @param array $actions actions.
55 * @return array
56 */
57 public function register( $actions ) {
58
59 $actions[ $this->integration ][ $this->action ] = [
60 'label' => __( 'Create Task', 'suretriggers' ),
61 'action' => $this->action,
62 'function' => [ $this, 'action_listener' ],
63 ];
64
65 return $actions;
66
67 }
68
69 /**
70 * Action listener.
71 *
72 * @param int $user_id user_id.
73 * @param int $automation_id automation_id.
74 * @param array $fields fields.
75 * @param array $selected_options selected_options.
76 *
77 * @return array|void
78 *
79 * @throws Exception Exception.
80 */
81 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
82 $title = $selected_options['title'] ? sanitize_text_field( $selected_options['title'] ) : '';
83 $description = $selected_options['description'] ? sanitize_text_field( $selected_options['description'] ) : '';
84 $board_id = $selected_options['board_id'] ? sanitize_text_field( $selected_options['board_id'] ) : '';
85 $stage_id = $selected_options['stage_id'] ? sanitize_text_field( $selected_options['stage_id'] ) : '';
86 $priority = $selected_options['priority'] ? sanitize_text_field( $selected_options['priority'] ) : '';
87 $status = $selected_options['status'] ? sanitize_text_field( $selected_options['status'] ) : '';
88 $due_at = $selected_options['due_date'] ? sanitize_text_field( $selected_options['due_date'] ) : '';
89 $labels = $selected_options['labels'] ? explode( ',', sanitize_text_field( $selected_options['labels'] ) ) : '';
90 $crm_contact_id = $selected_options['crm_contact_id'] ? sanitize_text_field( $selected_options['crm_contact_id'] ) : '';
91 $created_by = $selected_options['created_by'] ? sanitize_text_field( $selected_options['created_by'] ) : '';
92 $attachment_url = isset( $selected_options['attachment_url'] ) ? esc_url_raw( $selected_options['attachment_url'] ) : '';
93 $attachment_name = $selected_options['attachment_name'] ? sanitize_text_field( $selected_options['attachment_name'] ) : '';
94 $assignees = isset( $selected_options['assignees'] ) ? sanitize_text_field( $selected_options['assignees'] ) : '';
95
96 $task_data = array_filter(
97 [
98 'title' => $title,
99 'description' => $description,
100 'board_id' => $board_id,
101 'stage_id' => $stage_id,
102 'priority' => $priority,
103 'status' => $status,
104 'due_at' => $due_at,
105 'labels' => $labels,
106 'crm_contact_id' => $crm_contact_id,
107 'created_by' => $created_by,
108 ],
109 function( $value ) {
110 return '' !== $value; }
111 );
112 if ( ! function_exists( 'FluentBoardsApi' ) ) {
113 return [
114 'status' => 'error',
115 'message' => __( 'FluentBoardsApi function not found.', 'suretriggers' ),
116
117 ];
118 }
119
120 $task = FluentBoardsApi( 'tasks' )->create( $task_data );
121 if ( empty( $task ) ) {
122 return [
123 'status' => 'error',
124 'message' => 'There is error while creating a Task.',
125 ];
126 }
127
128 if ( ! empty( $assignees ) ) {
129 if ( ! class_exists( 'FluentBoards\\App\\Services\\TaskService' ) ) {
130 throw new Exception( __( 'FluentBoards TaskService not found.', 'suretriggers' ) );
131 }
132
133 $assignee_ids = array_map( 'intval', explode( ',', $assignees ) );
134 $task_service = new \FluentBoards\App\Services\TaskService();
135
136 foreach ( $assignee_ids as $assignee_id ) {
137 $task_service->updateAssignee( $assignee_id, $task );
138 }
139
140 $task->load( 'assignees' );
141 }
142
143 if ( ! empty( $attachment_url ) ) {
144 if ( ! class_exists( '\FluentBoardsPro\App\Services\AttachmentService' ) ) {
145 return [ 'error' => 'AttachmentService class is not available.' ];
146 }
147
148 $urls = array_map( 'trim', explode( ',', $attachment_url ) );
149 $names = array_map( 'trim', explode( ',', $attachment_name ) );
150
151 $attachment_service = new \FluentBoardsPro\App\Services\AttachmentService();
152
153 foreach ( $urls as $index => $url ) {
154 if ( filter_var( $url, FILTER_VALIDATE_URL ) ) {
155 $title = ! empty( $names[ $index ] ) ? $names[ $index ] : 'Attachment ' . ( $index + 1 );
156
157 $attachment_service->handleAttachment(
158 $task->id,
159 [
160 'type' => 'url',
161 'url' => $url,
162 'title' => $title,
163 ]
164 );
165 }
166 }
167 }
168
169 return $task;
170 }
171 }
172
173 CreateTask::get_instance();
174