PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / create-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
create-link.php
193 lines
1 <?php
2 /**
3 * CreateLink.
4 * php version 5.6
5 *
6 * @category CreateLink
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 * CreateLink
22 *
23 * @category CreateLink
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 CreateLink 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_create_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' => __( 'Create 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 $title = isset( $selected_options['title'] ) ? sanitize_text_field( $selected_options['title'] ) : '';
77 $url = isset( $selected_options['url'] ) ? esc_url_raw( $selected_options['url'] ) : '';
78 $slug = isset( $selected_options['slug'] ) ? sanitize_text_field( $selected_options['slug'] ) : '';
79 $description = isset( $selected_options['description'] ) ? sanitize_textarea_field( $selected_options['description'] ) : '';
80 $redirection = isset( $selected_options['redirection'] ) ? absint( $selected_options['redirection'] ) : 301;
81 $link_target = isset( $selected_options['link_target'] ) ? sanitize_text_field( $selected_options['link_target'] ) : '';
82 $nofollow = isset( $selected_options['nofollow'] ) ? $selected_options['nofollow'] : 0;
83 $sponsored = isset( $selected_options['sponsored'] ) ? $selected_options['sponsored'] : 0;
84
85 if ( empty( $title ) ) {
86 return [
87 'status' => 'error',
88 'message' => __( 'Title is required to create a link.', 'suretriggers' ),
89
90 ];
91 }
92
93 if ( empty( $url ) ) {
94 return [
95 'status' => 'error',
96 'message' => __( 'URL is required to create a link.', 'suretriggers' ),
97
98 ];
99 }
100
101 if ( empty( $slug ) ) {
102 $slug = sanitize_title( $title );
103 if ( class_exists( 'clickwhale\\includes\\helpers\\Links_Helper' ) ) {
104 // Check if method exists using reflection.
105 if ( is_callable( [ '\\clickwhale\\includes\\helpers\\Links_Helper', 'generate_random_slug' ] ) ) {
106 $slug = \clickwhale\includes\helpers\Links_Helper::generate_random_slug();
107 }
108 }
109 }
110
111 $categories = [];
112
113 if ( isset( $selected_options['categories'] ) && is_array( $selected_options['categories'] ) ) {
114 foreach ( $selected_options['categories'] as $cat ) {
115 if ( isset( $cat['value'] ) ) {
116 $categories[] = absint( $cat['value'] );
117 }
118 }
119 }
120
121 if ( class_exists( 'clickwhale\\includes\\helpers\\Links_Helper' ) ) {
122 // Check if method exists using is_callable.
123 if ( is_callable( [ '\\clickwhale\\includes\\helpers\\Links_Helper', 'sanitize_slug' ] ) ) {
124 $slug = \clickwhale\includes\helpers\Links_Helper::sanitize_slug( $slug );
125 }
126 }
127
128 $link_data = [
129 'title' => $title,
130 'url' => $url,
131 'slug' => $slug,
132 'description' => $description,
133 'categories' => implode( ',', $categories ),
134 'redirection' => $redirection,
135 'link_target' => $link_target,
136 'nofollow' => $nofollow,
137 'sponsored' => $sponsored,
138 'author' => get_current_user_id(),
139 'created_at' => current_time( 'mysql' ),
140 'updated_at' => current_time( 'mysql' ),
141 ];
142
143 global $wpdb;
144 $table_name = $wpdb->prefix . 'clickwhale_links';
145 if ( class_exists( 'clickwhale\\includes\\helpers\\Helper' ) ) {
146 // Check if method exists using is_callable.
147 if ( is_callable( [ '\\clickwhale\\includes\\helpers\\Helper', 'get_db_table_name' ] ) ) {
148 $table_name = \clickwhale\includes\helpers\Helper::get_db_table_name( 'links' );
149 }
150 }
151 $result = $wpdb->insert(
152 $table_name,
153 $link_data,
154 [
155 '%s', // title.
156 '%s', // url.
157 '%s', // slug.
158 '%s', // description.
159 '%s', // categories.
160 '%d', // redirection.
161 '%s', // link_target.
162 '%d', // nofollow.
163 '%d', // sponsored.
164 '%d', // author.
165 '%s', // created_at.
166 '%s', // updated_at.
167 ]
168 );
169
170 if ( false === $result ) {
171 return [
172 'status' => 'error',
173 'message' => __( 'Failed to create link in ClickWhale.', 'suretriggers' ),
174
175 ];
176 }
177
178 $link_id = $wpdb->insert_id;
179
180 $link = array_merge(
181 $link_data,
182 [
183 'id' => $link_id,
184 'short_url' => home_url( '/' . $slug ),
185 ]
186 );
187
188 return $link;
189 }
190 }
191
192 CreateLink::get_instance();
193