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 / pretty-links / actions / list-pretty-links.php
suretriggers / src / Integrations / pretty-links / actions Last commit date
create-pretty-link.php 10 months ago delete-pretty-link.php 10 months ago fetch-pretty-link.php 10 months ago list-pretty-links.php 10 months ago update-pretty-link.php 10 months ago
list-pretty-links.php
157 lines
1 <?php
2 /**
3 * ListPrettyLinks.
4 * php version 5.6
5 *
6 * @category ListPrettyLinks
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 * ListPrettyLinks
22 *
23 * @category ListPrettyLinks
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 ListPrettyLinks 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_list_pretty_links';
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' => __( 'List Pretty Links', '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 $limit = isset( $selected_options['limit'] ) ? absint( $selected_options['limit'] ) : 10;
77
78 if ( ! defined( 'PRLI_VERSION' ) ) {
79 return [
80 'status' => 'error',
81 'message' => __( 'Pretty Links plugin is not active or not found.', 'suretriggers' ),
82 ];
83 }
84
85 // Validate limit.
86 if ( $limit > 100 ) {
87 $limit = 100; // Maximum 100 links per request.
88 }
89 if ( $limit <= 0 ) {
90 $limit = 10;
91 }
92
93 global $wpdb;
94 $prli_link_table = $wpdb->prefix . 'prli_links';
95
96 // Get total count first.
97 $total_count = $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->prefix}prli_links`" );
98
99 // Get the links.
100 $links = $wpdb->get_results(
101 $wpdb->prepare(
102 "SELECT * FROM `{$wpdb->prefix}prli_links` ORDER BY id DESC LIMIT %d",
103 $limit
104 ),
105 ARRAY_A
106 );
107
108 if ( ! $links ) {
109 $links = [];
110 }
111
112 // Enhance each link with additional data.
113 foreach ( $links as &$link ) {
114 $link['pretty_url'] = home_url( '/' . $link['slug'] );
115
116 // Get click statistics for each link.
117 $prli_clicks_table = $wpdb->prefix . 'prli_clicks';
118 $click_stats = $wpdb->get_row(
119 $wpdb->prepare(
120 "SELECT
121 COUNT(*) as total_clicks,
122 COUNT(DISTINCT ip) as unique_clicks,
123 MIN(created_at) as first_click,
124 MAX(created_at) as last_click
125 FROM `{$wpdb->prefix}prli_clicks`
126 WHERE link_id = %d",
127 $link['id']
128 ),
129 ARRAY_A
130 );
131
132 if ( $click_stats ) {
133 $link['click_stats'] = $click_stats;
134 } else {
135 $link['click_stats'] = [
136 'total_clicks' => 0,
137 'unique_clicks' => 0,
138 'first_click' => null,
139 'last_click' => null,
140 ];
141 }
142 }
143
144 return [
145 'status' => 'success',
146 'data' => [
147 'links' => $links,
148 'total_count' => $total_count,
149 'limit' => $limit,
150 'returned' => count( $links ),
151 ],
152 ];
153 }
154 }
155
156 ListPrettyLinks::get_instance();
157