PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.11.77
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.11.77
4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / widgets / dep / pa-pins-handler.php
premium-addons-for-elementor / widgets / dep Last commit date
form-presets 2 months ago pa-pins-handler.php 1 month ago pa-tiktok-handler.php 1 month ago pa-weather-handler.php 1 month ago urlopen.php 1 month ago
pa-pins-handler.php
238 lines
1 <?php
2 /**
3 * Premium Pinterest Feed Handler.
4 */
5
6 use PremiumAddons\Includes\Helper_Functions;
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit;
10 }
11
12 define( 'PINTEREST_API_URL', 'https://api.pinterest.com/v5/' );
13
14 function refresh_pinterest_token( $refresh_token ) {
15
16 $api_url = 'https://appfb.premiumaddons.com/wp-json/fbapp/v2/pinterest_refresh';
17
18 $response = wp_remote_post(
19 $api_url,
20 array(
21 'timeout' => 15,
22 'sslverify' => true,
23 'body' => array(
24 'refresh_token' => $refresh_token,
25 ),
26 )
27 );
28
29 if ( is_wp_error( $response ) ) {
30 return;
31 }
32
33 $body = wp_remote_retrieve_body( $response );
34 $body = json_decode( $body, true );
35
36 if ( empty( $body ) || ! is_array( $body ) ) {
37 return;
38 }
39
40 if ( ! empty( $body['access_token'] ) ) {
41 update_option( 'pinterest_token', $body['access_token'] );
42 }
43
44 if ( ! empty( $body['refresh_token'] ) ) {
45 update_option( 'pinterest_refresh_token', $body['refresh_token'] );
46 }
47
48 return $body;
49 }
50
51
52 /**
53 * Get Pinterset Data
54 *
55 * @param string $id widget id.
56 * @param array $settings widget settings.
57 */
58 function get_pinterest_data( $id, $settings, $endpoint ) {
59
60 $original_endpoint = $endpoint;
61
62 $filter_id = $settings['match_id'];
63
64 $token = get_option( 'pinterest_token', false );
65 $token = $token ?: $settings['access_token'];
66
67 $transient_name = sprintf( 'papro_pinterest_feed_%s_%s', $id, substr( $token, -8 ) );
68
69 $response = get_transient( $transient_name );
70
71 $is_edit_mode = \Elementor\Plugin::$instance->editor->is_edit_mode();
72
73 if ( $is_edit_mode || false === $response ) {
74
75 $limit = $settings['no_of_posts'];
76
77 if ( 'pins/' === $endpoint && empty( $filter_id ) && 1 === count( $settings['board_id'] ) ) {
78
79 $board_id = $settings['board_id'][0];
80 $endpoint = 'boards/' . $board_id . '/' . $endpoint;
81
82 }
83
84 if ( 'boards/' === $endpoint && 1 === count( $settings['board_id'] ) ) {
85 $endpoint .= $settings['board_id'][0];
86 }
87
88 $url = PINTEREST_API_URL . $endpoint . $filter_id;
89
90 if ( empty( $filter_id ) && ! empty( $limit ) ) {
91 $url .= '?page_size=' . $limit;
92 }
93
94 $response = wp_remote_get(
95 $url,
96 array(
97 'headers' => array(
98 'Authorization' => 'Bearer ' . $token,
99 ),
100 )
101 );
102
103 if ( is_wp_error( $response ) ) {
104 return;
105 }
106
107 $response = wp_remote_retrieve_body( $response );
108
109 $response = json_decode( $response, true );
110
111 if ( isset( $response['status'] ) && 'failure' === $response['status'] ) {
112 $refresh_token = get_option( 'pinterest_refresh_token', false );
113 $refresh_token = $refresh_token ?: $settings['refresh_access_token'];
114 refresh_pinterest_token( get_option( 'pinterest_refresh_token', $refresh_token ) );
115 return;
116 }
117
118 $transient = $settings['reload'];
119
120 $expire_time = Helper_Functions::transient_expire( $transient );
121
122 set_transient( $transient_name, $response, $expire_time );
123 }
124
125 if ( 'pins/' === $original_endpoint ) {
126 $items = ! empty( $filter_id ) ? array( $response ) : $response['items'];
127 } else {
128 $items = 1 === count( $settings['board_id'] ) ? array( $response ) : $response['items'];
129 }
130
131 if ( empty( $filter_id ) ) {
132
133 $device_type = Helper_Functions::get_device_type();
134
135 if ( 'tablet' === $device_type && ! empty( $settings['no_of_posts_tablet'] ) ) {
136 $items = array_slice( $items, 0, $settings['no_of_posts_tablet'] );
137 } elseif ( 'mobile' === $device_type && ! empty( $settings['no_of_posts_mobile'] ) ) {
138 $items = array_slice( $items, 0, $settings['no_of_posts_mobile'] );
139 }
140 }
141
142 return $items;
143 }
144
145 function get_profile_data( $id, $settings ) {
146
147 $token = $settings['access_token'];
148
149 $transient_name = sprintf( 'papro_pinterest_profile_%s_%s', $id, substr( $token, -8 ) );
150
151 $response = get_transient( $transient_name );
152
153 if ( false === $response ) {
154
155 $url = PINTEREST_API_URL . 'user_account';
156
157 $response = wp_remote_get(
158 $url,
159 array(
160 'headers' => array(
161 'Authorization' => 'Bearer ' . $token,
162 ),
163 )
164 );
165
166 if ( is_wp_error( $response ) ) {
167 return;
168 }
169
170 $response = wp_remote_retrieve_body( $response );
171
172 $response = json_decode( $response, true );
173
174 $transient = $settings['reload'];
175
176 $expire_time = Helper_Functions::transient_expire( $transient );
177
178 set_transient( $transient_name, $response, $expire_time );
179 }
180
181 return $response;
182 }
183
184 function get_board_pins( $widget_id, $settings, $board_id ) {
185
186 $token = $settings['access_token'];
187
188 $transient_name = sprintf( 'papro_pinterest_board_%s_%s', $board_id, substr( $token, -8 ) );
189
190 $response = get_transient( $transient_name );
191
192 $is_edit_mode = \Elementor\Plugin::$instance->editor->is_edit_mode();
193
194 if ( $is_edit_mode || false === $response ) {
195
196 $limit = $settings['pins_per_board'];
197
198 $url = PINTEREST_API_URL . 'boards/' . $board_id . '/pins';
199
200 if ( ! empty( $limit ) ) {
201 $url .= '?page_size=' . $limit;
202 }
203
204 $response = wp_remote_get(
205 $url,
206 array(
207 'headers' => array(
208 'Authorization' => 'Bearer ' . $token,
209 ),
210 )
211 );
212
213 if ( is_wp_error( $response ) ) {
214 return;
215 }
216
217 $response = wp_remote_retrieve_body( $response );
218
219 $response = json_decode( $response, true );
220
221 $transient = $settings['reload'];
222
223 $expire_time = Helper_Functions::transient_expire( $transient );
224
225 set_transient( $transient_name, $response, $expire_time );
226 }
227
228 $device_type = Helper_Functions::get_device_type();
229
230 if ( 'tablet' === $device_type && ! empty( $settings['pins_per_board_tablet'] ) ) {
231 $items = array_slice( $items, 0, $settings['pins_per_board_tablet'] );
232 } elseif ( 'mobile' === $device_type && ! empty( $settings['pins_per_board_mobile'] ) ) {
233 $items = array_slice( $items, 0, $settings['pins_per_board_mobile'] );
234 }
235
236 return $response['items'];
237 }
238