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 / pretty-links / actions / create-pretty-link.php
suretriggers / src / Integrations / pretty-links / actions Last commit date
create-pretty-link.php 8 months ago delete-pretty-link.php 8 months ago fetch-pretty-link.php 8 months ago list-pretty-links.php 8 months ago update-pretty-link.php 8 months ago
create-pretty-link.php
206 lines
1 <?php
2 /**
3 * CreatePrettyLink.
4 * php version 5.6
5 *
6 * @category CreatePrettyLink
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.1.9
12 */
13
14 namespace SureTriggers\Integrations\PrettyLinks\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * CreatePrettyLink
22 *
23 * @category CreatePrettyLink
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 CreatePrettyLink extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'PrettyLinks';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'prettylinks_create_pretty_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 Pretty 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 $name = isset( $selected_options['name'] ) ? sanitize_text_field( $selected_options['name'] ) : '';
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 $redirect_type = isset( $selected_options['redirect_type'] ) ? absint( $selected_options['redirect_type'] ) : 307;
81 $tracking = $selected_options['tracking'];
82 $nofollow = $selected_options['nofollow'];
83 $sponsored = $selected_options['sponsored'];
84 if ( empty( $name ) ) {
85 return [
86 'status' => 'error',
87 'message' => __( 'Name is required to create a pretty link.', 'suretriggers' ),
88 ];
89 }
90
91 if ( empty( $url ) ) {
92 return [
93 'status' => 'error',
94 'message' => __( 'Target URL is required to create a pretty link.', 'suretriggers' ),
95 ];
96 }
97
98 if ( ! defined( 'PRLI_VERSION' ) ) {
99 return [
100 'status' => 'error',
101 'message' => __( 'Pretty Links plugin is not active or not found.', 'suretriggers' ),
102 ];
103 }
104
105 // Generate slug if not provided.
106 if ( empty( $slug ) ) {
107 $slug = sanitize_title( $name );
108 // Ensure unique slug.
109 $original_slug = $slug;
110 $counter = 1;
111 while ( $this->slug_exists( $slug ) ) {
112 $slug = $original_slug . '-' . $counter;
113 $counter++;
114 }
115 } else {
116 // Check if provided slug already exists.
117 if ( $this->slug_exists( $slug ) ) {
118 return [
119 'status' => 'error',
120 'message' => __( 'The provided slug already exists. Please choose a different slug.', 'suretriggers' ),
121 ];
122 }
123 }
124
125 if ( ! class_exists( '\PrliLink' ) ) {
126 return [
127 'status' => 'error',
128 'message' => __( 'Pretty Links plugin not properly initialized.', 'suretriggers' ),
129 ];
130 }
131
132 $prli = new \PrliLink();
133 $link_data = [
134 'name' => $name,
135 'url' => $url,
136 'slug' => $slug,
137 'description' => $description,
138 'redirect_type' => (string) $redirect_type,
139 ];
140
141 if ( 'true' === $tracking || true === $tracking ) {
142 $link_data['track_me'] = 1;
143 }
144 if ( 'true' === $nofollow || true === $nofollow ) {
145 $link_data['nofollow'] = 1;
146 }
147 if ( 'true' === $sponsored || true === $sponsored ) {
148 $link_data['sponsored'] = 1;
149 }
150
151 $link_id = $prli->create( $link_data );
152 if ( false === $link_id || ! $link_id ) {
153 return [
154 'status' => 'error',
155 'message' => __( 'Failed to create Pretty Link.', 'suretriggers' ),
156 ];
157 }
158
159 // Get the created link data.
160 global $wpdb;
161 $created_link = $wpdb->get_row(
162 $wpdb->prepare(
163 "SELECT * FROM `{$wpdb->prefix}prli_links` WHERE id = %d",
164 $link_id
165 ),
166 ARRAY_A
167 );
168
169 if ( ! $created_link ) {
170 return [
171 'status' => 'error',
172 'message' => __( 'Failed to retrieve created Pretty Link.', 'suretriggers' ),
173 ];
174 }
175
176 // Add pretty URL.
177 $created_link['pretty_url'] = home_url( '/' . $slug );
178 return [
179 'status' => 'success',
180 'data' => $created_link,
181 ];
182 }
183
184 /**
185 * Check if slug exists
186 *
187 * @param string $slug The slug to check.
188 * @return bool
189 */
190 private function slug_exists( $slug ) {
191 global $wpdb;
192 $prli_link_table = $wpdb->prefix . 'prli_links';
193
194 $existing = $wpdb->get_var(
195 $wpdb->prepare(
196 "SELECT COUNT(*) FROM `{$wpdb->prefix}prli_links` WHERE slug = %s",
197 $slug
198 )
199 );
200
201 return $existing > 0;
202 }
203 }
204
205 CreatePrettyLink::get_instance();
206