PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
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 / clickwhale / actions / update-link.php
suretriggers / src / Integrations / clickwhale / actions Last commit date
create-link.php 10 months ago delete-link.php 10 months ago get-link-details.php 10 months ago update-link.php 10 months ago
update-link.php
192 lines
1 <?php
2 /**
3 * UpdateLink.
4 * php version 5.6
5 *
6 * @category UpdateLink
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\ClickWhale\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * UpdateLink
22 *
23 * @category UpdateLink
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 UpdateLink extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'ClickWhale';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'cw_update_link';
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 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Update Link', 'suretriggers' ),
57 'action' => $this->action,
58 'function' => [ $this, 'action_listener' ],
59 ];
60 return $actions;
61 }
62
63 /**
64 * Action listener.
65 *
66 * @param int $user_id user_id.
67 * @param int $automation_id automation_id.
68 * @param array $fields fields.
69 * @param array $selected_options selected_options.
70 *
71 * @return array|void
72 *
73 * @throws Exception Exception.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 $link_id = isset( $selected_options['link_id'] ) ? absint( $selected_options['link_id'] ) : 0;
77 $title = isset( $selected_options['title'] ) ? sanitize_text_field( $selected_options['title'] ) : '';
78 $url = isset( $selected_options['url'] ) ? esc_url_raw( $selected_options['url'] ) : '';
79 $slug = isset( $selected_options['slug'] ) ? sanitize_text_field( $selected_options['slug'] ) : '';
80 $description = isset( $selected_options['description'] ) ? sanitize_textarea_field( $selected_options['description'] ) : '';
81 $redirection = isset( $selected_options['redirection'] ) ? absint( $selected_options['redirection'] ) : 0;
82 $link_target = isset( $selected_options['link_target'] ) ? sanitize_text_field( $selected_options['link_target'] ) : '';
83 $nofollow = isset( $selected_options['nofollow'] ) ? $selected_options['nofollow'] : 0;
84 $sponsored = isset( $selected_options['sponsored'] ) ? $selected_options['sponsored'] : 0;
85 $categories = [];
86
87 if ( isset( $selected_options['categories'] ) && is_array( $selected_options['categories'] ) ) {
88 foreach ( $selected_options['categories'] as $cat ) {
89 if ( isset( $cat['value'] ) ) {
90 $categories[] = absint( $cat['value'] );
91 }
92 }
93 }
94
95
96 if ( empty( $link_id ) ) {
97 return [
98 'status' => 'error',
99 'message' => __( 'Link ID is required to update a link.', 'suretriggers' ),
100
101 ];
102 }
103
104 $update_data = [];
105 if ( ! empty( $title ) ) {
106 $update_data['title'] = $title;
107 }
108 if ( ! empty( $url ) ) {
109 $update_data['url'] = $url;
110 }
111 if ( ! empty( $slug ) ) {
112 if ( class_exists( 'clickwhale\\includes\\helpers\\Links_Helper' ) ) {
113 // Check if method exists using is_callable.
114 if ( is_callable( [ '\\clickwhale\\includes\\helpers\\Links_Helper', 'sanitize_slug' ] ) ) {
115 $slug = \clickwhale\includes\helpers\Links_Helper::sanitize_slug( $slug );
116 }
117 }
118 $update_data['slug'] = $slug;
119 }
120 if ( ! empty( $description ) ) {
121 $update_data['description'] = $description;
122 }
123 if ( ! empty( $categories ) ) {
124 $update_data['categories'] = implode( ',', $categories );
125 }
126
127 if ( $redirection > 0 ) {
128 $update_data['redirection'] = $redirection;
129 }
130 if ( ! empty( $link_target ) ) {
131 $update_data['link_target'] = $link_target;
132 }
133 if ( isset( $selected_options['nofollow'] ) ) {
134 $update_data['nofollow'] = $nofollow;
135 }
136 if ( isset( $selected_options['sponsored'] ) ) {
137 $update_data['sponsored'] = $sponsored;
138 }
139
140 if ( empty( $update_data ) ) {
141 return [
142 'status' => 'error',
143 'message' => __( 'At least one field is required to update the link.', 'suretriggers' ),
144
145 ];
146 }
147
148 global $wpdb;
149 $table_name = $wpdb->prefix . 'clickwhale_links';
150 if ( class_exists( 'clickwhale\\includes\\helpers\\Helper' ) ) {
151 // Check if method exists using is_callable.
152 if ( is_callable( [ '\\clickwhale\\includes\\helpers\\Helper', 'get_db_table_name' ] ) ) {
153 $table_name = \clickwhale\includes\helpers\Helper::get_db_table_name( 'links' );
154 }
155 }
156
157 $update_data['updated_at'] = current_time( 'mysql' );
158
159 $result = $wpdb->update(
160 $table_name,
161 $update_data,
162 [ 'id' => $link_id ],
163 null,
164 [ '%d' ]
165 );
166
167 if ( false === $result ) {
168 return [
169 'status' => 'error',
170 'message' => __( 'Failed to update link in ClickWhale.', 'suretriggers' ),
171
172 ];
173 }
174
175 $link = $wpdb->get_row( $wpdb->prepare( 'SELECT * FROM `' . esc_sql( (string) $table_name ) . '` WHERE id = %d', $link_id ), ARRAY_A );
176
177 if ( ! $link ) {
178 return [
179 'status' => 'error',
180 'message' => __( 'Link not found after update.', 'suretriggers' ),
181
182 ];
183 }
184
185 $link['short_url'] = home_url( '/' . $link['slug'] );
186
187 return $link;
188 }
189 }
190
191 UpdateLink::get_instance();
192