PluginProbe
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts / 2.2.7
Woody Code Snippets – Insert PHP, CSS, JS, and Header/Footer Scripts v2.2.7
2.7.7 2.7.6 2.7.5 2.7.4 trunk 1.3 2.0.4 2.0.6 2.1.91 2.2.4 2.2.7 2.2.9 2.3.1 2.3.10 2.4.10 2.4.2 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.6.0 2.6.1 2.7.0 All 28 releases
← All changes | admin/includes/class.api.php +319 -322 2.4.52.2.7 View file →
@@ -1,322 +1,319 @@
1 -<?php
2 -
3 -/**
4 - * Woody API class
5 - *
6 - * @author Webcraftic <wordpress.webraftic@gmail.com>
7 - * @copyright (c) 11.12.2018, Webcraftic
8 - * @version 1.0
9 - */
10 -
11 -// Exit if accessed directly
12 -if ( ! defined( 'ABSPATH' ) ) {
13 - exit;
14 -}
15 -
16 -class WINP_Api extends WINP_Request {
17 -
18 - const WINP_API_SNIPPET = 'snippet';
19 - const WINP_API_TYPE = 'type';
20 -
21 - /**
22 - * WINP_Api constructor.
23 - */
24 - public function __construct() {
25 - parent::__construct();
26 -
27 - require_once WINP_PLUGIN_DIR . '/includes/jsonmapper/class/snippet.php';
28 - require_once WINP_PLUGIN_DIR . '/includes/jsonmapper/class/type.php';
29 - }
30 -
31 - /**
32 - * Set page parameters
33 - *
34 - * @param $json
35 - *
36 - * @return bool
37 - */
38 - private function set_page_params( $json ) {
39 - if ( ! $this->check_response( $json ) ) {
40 - return false;
41 - }
42 -
43 - if ( empty( $json['headers'] ) ) {
44 - return false;
45 - }
46 -
47 - global $winp_api_total_items;
48 -
49 - $winp_api_total_items = isset( $json['headers']['x-pagination-total-count'] ) ? $json['headers']['x-pagination-total-count'] : 0;
50 -
51 - return true;
52 - }
53 -
54 - /**
55 - * Get total items for last query
56 - *
57 - * @return int
58 - */
59 - public function get_total_items() {
60 - global $winp_api_total_items;
61 -
62 - return $winp_api_total_items;
63 - }
64 -
65 - /**
66 - * Get all snippets
67 - *
68 - * @param boolean $common - если true, то выводить общие сниппеты без привязки к пользователю
69 - * @param array $parameters
70 - *
71 - * @return bool|mixed
72 - */
73 - public function get_all_snippets( $common = false, $parameters = [] ) {
74 - $url = $common ? 'common' : self::WINP_API_SNIPPET;
75 - $args = $parameters ? '&' . implode( '&', $parameters ) : '';
76 - $json = $this->get( $url . '?expand=type' . $args );
77 -
78 - $this->set_page_params( $json );
79 -
80 - return $this->map_objects( $json, 'WINP\JsonMapper\Snippet' );
81 - }
82 -
83 - /**
84 - * Get snippet
85 - *
86 - * @param integer $id
87 - * @param boolean $common - если true, то запрос на общий сниппет
88 - *
89 - * @return bool|mixed
90 - */
91 - public function get_snippet( $id, $common = false ) {
92 - $url = $common ? 'common' : self::WINP_API_SNIPPET;
93 - $json = $this->get( $url . '/view?id=' . $id . '&expand=type' );
94 -
95 - $snippet = $this->map_object( $json, 'WINP\JsonMapper\Snippet' );
96 - $snippet->execute_everywhere = $snippet->execute_everywhere ? 'evrywhere' : 'shortcode';
97 - return $snippet;
98 - }
99 -
100 - /**
101 - * Create snippet
102 - *
103 - * @param string $title
104 - * @param string $content
105 - * @param string $description
106 - * @param integer $type_id
107 - *
108 - * @return bool|mixed
109 - */
110 - public function create_snippet( $title, $content, $description, $type_id ) {
111 - $args = [
112 - 'body' => [
113 - 'title' => $title,
114 - 'content' => $content,
115 - 'description' => $description,
116 - 'type_id' => $type_id, // Тип снипета
117 - ],
118 - ];
119 -
120 - $json = $this->post( self::WINP_API_SNIPPET . '/create', $args );
121 -
122 - return $this->map_object( $json, 'WINP\JsonMapper\Snippet' );
123 - }
124 -
125 - /**
126 - * Update snippet
127 - *
128 - * @param integer $id
129 - * @param string $title
130 - * @param string $content
131 - * @param string $description
132 - * @param integer $type_id
133 - *
134 - * @return bool|mixed
135 - */
136 - public function update_snippet( $id, $title, $content, $description, $type_id ) {
137 - $args = [
138 - 'body' => [
139 - 'title' => $title,
140 - 'content' => $content,
141 - 'description' => $description,
142 - 'type_id' => $type_id, // Тип снипета
143 - ],
144 - ];
145 -
146 - $json = $this->put( self::WINP_API_SNIPPET . '/update/?id=' . $id, $args );
147 -
148 - return $this->map_object( $json, 'WINP\JsonMapper\Snippet' );
149 - }
150 -
151 - /**
152 - * Delete snippet
153 - *
154 - * @param integer $id
155 - *
156 - * @return boolean
157 - */
158 - public function delete_snippet( $id ) {
159 - $json = $this->post( self::WINP_API_SNIPPET . '/delete/?id=' . $id );
160 -
161 - if ( 200 == $json['response']['code'] || 204 == $json['response']['code'] ) {
162 - return true;
163 - }
164 -
165 - return false;
166 - }
167 -
168 - /**
169 - * Get all types
170 - *
171 - * @return object|boolean
172 - */
173 - public function get_all_types() {
174 - $json = $this->get( self::WINP_API_TYPE );
175 -
176 - return $this->map_objects( $json, 'WINP\JsonMapper\Type' );
177 - }
178 -
179 - /**
180 - * Get type
181 - *
182 - * @param $id
183 - *
184 - * @return object|boolean
185 - */
186 - public function get_type( $id ) {
187 - $json = $this->get( self::WINP_API_TYPE . '/view/?id=' . $id );
188 -
189 - return $this->map_object( $json, 'WINP\JsonMapper\Type' );
190 - }
191 -
192 - /**
193 - * Check if snippet changed
194 - *
195 - * @param $post_id
196 - *
197 - * @return bool
198 - */
199 - public function is_changed( $post_id ) {
200 - $data = get_post_meta( $post_id, WINP_Plugin::app()->getPrefix() . 'snippet_check_data', true );
201 - if ( ! empty( $data ) && isset( $data['content'] ) ) {
202 - $post = get_post( $post_id );
203 -
204 - return $data['content'] != $post->post_content || WINP_Helper::getMetaOption( $post->ID, 'snippet_description' ) != $data['description'];
205 - } else {
206 - return true;
207 - }
208 - }
209 -
210 - /**
211 - * Get tipy id by type title
212 - *
213 - * @param $type_title
214 - *
215 - * @return int
216 - */
217 - private function get_type_id_by_type( $type_title ) {
218 - if ( $type_title ) {
219 - $types = $this->get_all_types();
220 - if ( ! empty( $types ) && is_array( $types ) ) {
221 - foreach ( $types as $type ) {
222 - if ( $type_title == $type->slug ) {
223 - return $type->id;
224 - }
225 - }
226 - }
227 - }
228 -
229 - return 0;
230 - }
231 -
232 - /**
233 - * Snippet synchronization
234 - *
235 - * @param $id
236 - * @param $name
237 - *
238 - * @return bool|string
239 - */
240 - public function synchronization( $id, $name ) {
241 - $post = get_post( $id );
242 -
243 - if ( $post ) {
244 - $type_id = WINP_Helper::getMetaOption( $post->ID, 'snippet_api_type', 0 );
245 -
246 - if ( ! $type_id ) {
247 - $type = WINP_Helper::get_snippet_type( $post->ID );
248 - $type_id = $this->get_type_id_by_type( $type );
249 - }
250 -
251 - if ( $type_id ) {
252 - $title = ! empty( $name ) ? $name : $post->post_title;
253 - $description = WINP_Helper::getMetaOption( $post->ID, 'snippet_description', '' );
254 - $snippet_code = WINP_Helper::get_snippet_code( $post );
255 - $snippet = $this->create_snippet( $title, $snippet_code, $description, $type_id );
256 -
257 - if ( $snippet ) {
258 - $data = [
259 - 'content' => $snippet_code,
260 - 'description' => $description,
261 - ];
262 - WINP_Helper::updateMetaOption( $post->ID, 'snippet_check_data', $data );
263 - WINP_Helper::updateMetaOption( $post->ID, 'snippet_api_snippet', $snippet->id );
264 - WINP_Helper::updateMetaOption( $post->ID, 'snippet_api_type', $type_id );
265 -
266 - return true;
267 - }
268 -
269 - return __( 'Synchronization snippet error', 'insert-php' );
270 - }
271 -
272 - return __( 'Unknown sippet type', 'insert-php' );
273 - }
274 -
275 - return false;
276 - }
277 -
278 - /**
279 - * Create snippet from library
280 - *
281 - * @param integer $snippet_id
282 - * @param integer $post_id
283 - * @param boolean $common
284 - *
285 - * @return bool|integer
286 - */
287 - public function create_from_library( $snippet_id, $post_id, $common ) {
288 - if ( $snippet_id ) {
289 - $snippet = $this->get_snippet( $snippet_id, $common );
290 - if ( $snippet ) {
291 - if ( ! $post_id ) {
292 - $post = [
293 - 'post_title' => $snippet->title,
294 - 'post_content' => $snippet->content,
295 - 'post_type' => WINP_SNIPPETS_POST_TYPE,
296 - 'post_status' => 'publish',
297 - ];
298 - $post_id = wp_insert_post( $post );
299 - WINP_Helper::updateMetaOption( $post_id, 'snippet_activate', 0 );
300 - } else {
301 - $post = [
302 - 'ID' => $post_id,
303 - 'post_title' => $snippet->title,
304 - 'post_content' => $snippet->content,
305 - ];
306 - wp_update_post( $post );
307 - }
308 -
309 - WINP_Helper::updateMetaOption( $post_id, 'snippet_api_snippet', $snippet_id );
310 - WINP_Helper::updateMetaOption( $post_id, 'snippet_type', $snippet->type->slug );
311 - WINP_Helper::updateMetaOption( $post_id, 'snippet_api_type', $snippet->type_id );
312 - WINP_Helper::updateMetaOption( $post_id, 'snippet_description', $snippet->description );
313 - WINP_Helper::updateMetaOption( $post_id, 'snippet_scope', $snippet->execute_everywhere );
314 -
315 - return $post_id;
316 - }
317 - }
318 -
319 - return false;
320 - }
321 -
322 -}
1 +<?php
2 +
3 +/**
4 + * Woody API class
5 + *
6 + * @author Webcraftic <wordpress.webraftic@gmail.com>
7 + * @copyright (c) 11.12.2018, Webcraftic
8 + * @version 1.0
9 + */
10 +
11 +// Exit if accessed directly
12 +if ( ! defined( 'ABSPATH' ) ) {
13 + exit;
14 +}
15 +
16 +class WINP_Api extends WINP_Request {
17 +
18 + const WINP_API_SNIPPET = 'snippet';
19 + const WINP_API_TYPE = 'type';
20 +
21 + /**
22 + * WINP_Api constructor.
23 + */
24 + public function __construct() {
25 + parent::__construct();
26 +
27 + require_once WINP_PLUGIN_DIR . '/includes/jsonmapper/class/snippet.php';
28 + require_once WINP_PLUGIN_DIR . '/includes/jsonmapper/class/type.php';
29 + }
30 +
31 + /**
32 + * Set page parameters
33 + *
34 + * @param $json
35 + *
36 + * @return bool
37 + */
38 + private function set_page_params( $json ) {
39 + if ( ! $this->check_response( $json ) ) {
40 + return false;
41 + }
42 +
43 + if ( empty( $json['headers'] ) ) {
44 + return false;
45 + }
46 +
47 + global $winp_api_total_items;
48 +
49 + $winp_api_total_items = isset( $json['headers']['x-pagination-total-count'] ) ? $json['headers']['x-pagination-total-count'] : 0;
50 +
51 + return true;
52 + }
53 +
54 + /**
55 + * Get total items for last query
56 + *
57 + * @return int
58 + */
59 + public function get_total_items() {
60 + global $winp_api_total_items;
61 +
62 + return $winp_api_total_items;
63 + }
64 +
65 + /**
66 + * Get all snippets
67 + *
68 + * @param boolean $common - если true, то выводить общие сниппеты без привязки к пользователю
69 + * @param array $parameters
70 + *
71 + * @return bool|mixed
72 + */
73 + public function get_all_snippets( $common = false, $parameters = [] ) {
74 + $url = $common ? 'common' : self::WINP_API_SNIPPET;
75 + $args = $parameters ? '&' . implode( '&', $parameters ) : '';
76 + $json = $this->get( $url . '?expand=type' . $args );
77 +
78 + $this->set_page_params( $json );
79 +
80 + return $this->map_objects( $json, 'WINP\JsonMapper\Snippet' );
81 + }
82 +
83 + /**
84 + * Get snippet
85 + *
86 + * @param integer $id
87 + * @param boolean $common - если true, то запрос на общий сниппет
88 + *
89 + * @return bool|mixed
90 + */
91 + public function get_snippet( $id, $common = false ) {
92 + $url = $common ? 'common' : self::WINP_API_SNIPPET;
93 + $json = $this->get( $url . '/view?id=' . $id . '&expand=type' );
94 +
95 + return $this->map_object( $json, 'WINP\JsonMapper\Snippet' );
96 + }
97 +
98 + /**
99 + * Create snippet
100 + *
101 + * @param string $title
102 + * @param string $content
103 + * @param string $description
104 + * @param integer $type_id
105 + *
106 + * @return bool|mixed
107 + */
108 + public function create_snippet( $title, $content, $description, $type_id ) {
109 + $args = [
110 + 'body' => [
111 + 'title' => $title,
112 + 'content' => $content,
113 + 'description' => $description,
114 + 'type_id' => $type_id, // Тип снипета
115 + ],
116 + ];
117 +
118 + $json = $this->post( self::WINP_API_SNIPPET . '/create', $args );
119 +
120 + return $this->map_object( $json, 'WINP\JsonMapper\Snippet' );
121 + }
122 +
123 + /**
124 + * Update snippet
125 + *
126 + * @param integer $id
127 + * @param string $title
128 + * @param string $content
129 + * @param string $description
130 + * @param integer $type_id
131 + *
132 + * @return bool|mixed
133 + */
134 + public function update_snippet( $id, $title, $content, $description, $type_id ) {
135 + $args = [
136 + 'body' => [
137 + 'title' => $title,
138 + 'content' => $content,
139 + 'description' => $description,
140 + 'type_id' => $type_id, // Тип снипета
141 + ],
142 + ];
143 +
144 + $json = $this->put( self::WINP_API_SNIPPET . '/update/?id=' . $id, $args );
145 +
146 + return $this->map_object( $json, 'WINP\JsonMapper\Snippet' );
147 + }
148 +
149 + /**
150 + * Delete snippet
151 + *
152 + * @param integer $id
153 + *
154 + * @return boolean
155 + */
156 + public function delete_snippet( $id ) {
157 + $json = $this->post( self::WINP_API_SNIPPET . '/delete/?id=' . $id );
158 +
159 + if ( 200 == $json['response']['code'] || 204 == $json['response']['code'] ) {
160 + return true;
161 + }
162 +
163 + return false;
164 + }
165 +
166 + /**
167 + * Get all types
168 + *
169 + * @return object|boolean
170 + */
171 + public function get_all_types() {
172 + $json = $this->get( self::WINP_API_TYPE );
173 +
174 + return $this->map_objects( $json, 'WINP\JsonMapper\Type' );
175 + }
176 +
177 + /**
178 + * Get type
179 + *
180 + * @param $id
181 + *
182 + * @return object|boolean
183 + */
184 + public function get_type( $id ) {
185 + $json = $this->get( self::WINP_API_TYPE . '/view/?id=' . $id );
186 +
187 + return $this->map_object( $json, 'WINP\JsonMapper\Type' );
188 + }
189 +
190 + /**
191 + * Check if snippet changed
192 + *
193 + * @param $post_id
194 + *
195 + * @return bool
196 + */
197 + public function is_changed( $post_id ) {
198 + $data = get_post_meta( $post_id, WINP_Plugin::app()->getPrefix() . 'snippet_check_data', true );
199 + if ( ! empty( $data ) && isset( $data['content'] ) ) {
200 + $post = get_post( $post_id );
201 +
202 + return $data['content'] != $post->post_content || WINP_Helper::getMetaOption( $post->ID, 'snippet_description' ) != $data['description'];
203 + } else {
204 + return true;
205 + }
206 + }
207 +
208 + /**
209 + * Get tipy id by type title
210 + *
211 + * @param $type_title
212 + *
213 + * @return int
214 + */
215 + private function get_type_id_by_type( $type_title ) {
216 + if ( $type_title ) {
217 + $types = $this->get_all_types();
218 + if ( ! empty( $types ) && is_array( $types ) ) {
219 + foreach ( $types as $type ) {
220 + if ( $type_title == $type->slug ) {
221 + return $type->id;
222 + }
223 + }
224 + }
225 + }
226 +
227 + return 0;
228 + }
229 +
230 + /**
231 + * Snippet synchronization
232 + *
233 + * @param $id
234 + * @param $name
235 + *
236 + * @return bool|string
237 + */
238 + public function synchronization( $id, $name ) {
239 + $post = get_post( $id );
240 +
241 + if ( $post ) {
242 + $type_id = WINP_Helper::getMetaOption( $post->ID, 'snippet_api_type', 0 );
243 +
244 + if ( ! $type_id ) {
245 + $type = WINP_Helper::get_snippet_type( $post->ID );
246 + $type_id = $this->get_type_id_by_type( $type );
247 + }
248 +
249 + if ( $type_id ) {
250 + $title = ! empty( $name ) ? $name : $post->post_title;
251 + $description = WINP_Helper::getMetaOption( $post->ID, 'snippet_description', '' );
252 + $snippet_code = WINP_Helper::get_snippet_code( $post );
253 + $snippet = $this->create_snippet( $title, $snippet_code, $description, $type_id );
254 +
255 + if ( $snippet ) {
256 + $data = [
257 + 'content' => $snippet_code,
258 + 'description' => $description,
259 + ];
260 + WINP_Helper::updateMetaOption( $post->ID, 'snippet_check_data', $data );
261 + WINP_Helper::updateMetaOption( $post->ID, 'snippet_api_snippet', $snippet->id );
262 + WINP_Helper::updateMetaOption( $post->ID, 'snippet_api_type', $type_id );
263 +
264 + return true;
265 + }
266 +
267 + return __( 'Synchronization snippet error', 'insert-php' );
268 + }
269 +
270 + return __( 'Unknown sippet type', 'insert-php' );
271 + }
272 +
273 + return false;
274 + }
275 +
276 + /**
277 + * Create snippet from library
278 + *
279 + * @param integer $snippet_id
280 + * @param integer $post_id
281 + * @param boolean $common
282 + *
283 + * @return bool|integer
284 + */
285 + public function create_from_library( $snippet_id, $post_id, $common ) {
286 + if ( $snippet_id ) {
287 + $snippet = $this->get_snippet( $snippet_id, $common );
288 + if ( $snippet ) {
289 + if ( ! $post_id ) {
290 + $post = [
291 + 'post_title' => $snippet->title,
292 + 'post_content' => $snippet->content,
293 + 'post_type' => WINP_SNIPPETS_POST_TYPE,
294 + 'post_status' => 'publish',
295 + ];
296 + $post_id = wp_insert_post( $post );
297 + WINP_Helper::updateMetaOption( $post_id, 'snippet_activate', 0 );
298 + } else {
299 + $post = [
300 + 'ID' => $post_id,
301 + 'post_title' => $snippet->title,
302 + 'post_content' => $snippet->content,
303 + ];
304 + wp_update_post( $post );
305 + }
306 +
307 + WINP_Helper::updateMetaOption( $post_id, 'snippet_api_snippet', $snippet_id );
308 + WINP_Helper::updateMetaOption( $post_id, 'snippet_type', $snippet->type->slug );
309 + WINP_Helper::updateMetaOption( $post_id, 'snippet_api_type', $snippet->type_id );
310 + WINP_Helper::updateMetaOption( $post_id, 'snippet_description', $snippet->description );
311 +
312 + return $post_id;
313 + }
314 + }
315 +
316 + return false;
317 + }
318 +
319 +}