PluginProbe
Bogo / 2.4
Bogo v2.4
3.9.3 trunk 1.0 1.1 2.0 2.0.1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.6 2.6.1 2.7 2.8 2.8.1 2.9 3.0 3.0.1 All 52 releases
← All changes | includes/post.php +12 -162 2.82.4 View file →
@@ -29,11 +29,10 @@
29 29
30 30 function bogo_get_post_locale( $post_id ) {
31 31 $locale = get_post_meta( $post_id, '_locale', true );
32 32
33 - if ( empty( $locale ) ) {
33 + if ( empty( $locale ) )
34 34 $locale = bogo_get_default_locale();
35 - }
36 35
37 36 return $locale;
38 37 }
39 38
@@ -49,19 +48,17 @@
49 48
50 49 function bogo_get_post_translations( $post_id = 0 ) {
51 50 $post = get_post( $post_id );
52 51
53 - if ( ! $post ) {
52 + if ( ! $post )
54 53 return false;
55 - }
56 54
57 55 if ( 'auto-draft' == $post->post_status ) {
58 56 if ( ! empty( $_REQUEST['original_post'] ) ) {
59 57 $original = get_post_meta( $_REQUEST['original_post'], '_original_post', true );
60 58
61 - if ( empty( $original ) ) {
59 + if ( empty( $original ) )
62 60 $original = (int) $_REQUEST['original_post'];
63 - }
64 61 } else {
65 62 return false;
66 63 }
67 64 } else {
@@ -67,11 +64,10 @@
67 64 } else {
68 65 $original = get_post_meta( $post->ID, '_original_post', true );
69 66 }
70 67
71 - if ( empty( $original ) ) {
68 + if ( empty( $original ) )
72 69 $original = $post->ID;
73 - }
74 70
75 71 $args = array(
76 72 'bogo_suppress_locale_query' => true,
77 73 'posts_per_page' => -1,
@@ -92,42 +88,28 @@
92 88 $translations[$locale] = get_post( $original );
93 89 }
94 90
95 91 foreach ( $posts as $p ) {
96 - if ( $p->ID == $post->ID ) {
92 + if ( $p->ID == $post->ID )
97 93 continue;
98 - }
99 94
100 95 $locale = bogo_get_post_locale( $p->ID );
101 96
102 - if ( ! bogo_is_available_locale( $locale ) ) {
97 + if ( ! bogo_is_available_locale( $locale ) )
103 98 continue;
104 - }
105 99
106 - if ( ! isset( $translations[$locale] ) ) {
100 + if ( ! isset( $translations[$locale] ) )
107 101 $translations[$locale] = $p;
108 - }
109 102 }
110 103
111 104 return array_filter( $translations );
112 105 }
113 106
114 -function bogo_get_post_translation( $post_id, $locale ) {
115 - $translations = bogo_get_post_translations( $post_id );
116 -
117 - if ( isset( $translations[$locale] ) ) {
118 - return $translations[$locale];
119 - }
120 -
121 - return false;
122 -}
123 -
124 107 function bogo_get_page_by_path( $page_path, $locale = null, $post_type = 'page' ) {
125 108 global $wpdb;
126 109
127 - if ( ! bogo_is_available_locale( $locale ) ) {
110 + if ( ! bogo_is_available_locale( $locale ) )
128 111 $locale = bogo_get_default_locale();
129 - }
130 112
131 113 $page_path = rawurlencode( urldecode( $page_path ) );
132 114 $page_path = str_replace( '%2F', '/', $page_path );
133 115 $page_path = str_replace( '%20', ' ', $page_path );
@@ -156,11 +138,10 @@
156 138
157 139 $foundid = 0;
158 140
159 141 foreach ( (array) $pages as $page ) {
160 - if ( $page->post_name != $revparts[0] ) {
142 + if ( $page->post_name != $revparts[0] )
161 143 continue;
162 - }
163 144
164 145 $count = 0;
165 146 $p = $page;
166 147
@@ -167,12 +148,10 @@
167 148 while ( $p->post_parent != 0 && isset( $pages[$p->post_parent] ) ) {
168 149 $count++;
169 150 $parent = $pages[$p->post_parent];
170 151
171 - if ( ! isset( $revparts[$count] )
172 - || $parent->post_name != $revparts[$count] ) {
152 + if ( ! isset( $revparts[$count] ) || $parent->post_name != $revparts[$count] )
173 153 break;
174 - }
175 154
176 155 $p = $parent;
177 156 }
178 157
@@ -183,140 +162,11 @@
183 162 break;
184 163 }
185 164 }
186 165
187 - if ( $foundid ) {
166 + if ( $foundid )
188 167 return get_page( $foundid );
189 - }
190 168
191 169 return null;
192 170 }
193 171
194 -function bogo_duplicate_post( $original_post, $locale ) {
195 - $original_post = get_post( $original_post );
196 -
197 - if ( ! $original_post
198 - || ! bogo_is_localizable_post_type( get_post_type( $original_post ) )
199 - || 'auto-draft' == get_post_status( $original_post ) ) {
200 - return false;
201 - }
202 -
203 - if ( ! bogo_is_available_locale( $locale )
204 - || bogo_get_post_locale( $original_post->ID ) == $locale ) {
205 - return false;
206 - }
207 -
208 - if ( bogo_get_post_translation( $original_post->ID, $locale ) ) {
209 - return false;
210 - }
211 -
212 - $postarr = array(
213 - 'post_content' => $original_post->post_content,
214 - 'post_title' => $original_post->post_title,
215 - 'post_name' => $original_post->post_name,
216 - 'post_excerpt' => $original_post->post_excerpt,
217 - 'post_status' => 'draft',
218 - 'post_type' => $original_post->post_type,
219 - 'comment_status' => $original_post->comment_status,
220 - 'ping_status' => $original_post->ping_status,
221 - 'post_password' => $original_post->post_password,
222 - 'post_content_filtered' => $original_post->post_content_filtered,
223 - 'post_parent' => $original_post->post_parent,
224 - 'menu_order' => $original_post->menu_order,
225 - 'post_mime_type' => $original_post->post_mime_type,
226 - 'tax_input' => array(),
227 - 'meta_input' => array() );
228 -
229 - if ( ! empty( $original_post->post_parent ) ) {
230 - $parent_translation = bogo_get_post_translation(
231 - $original_post->post_parent, $locale );
232 -
233 - if ( $parent_translation ) {
234 - $postarr['post_parent'] = $parent_translation->ID;
235 - }
236 - }
237 -
238 - if ( $taxonomies = get_object_taxonomies( $original_post ) ) {
239 - foreach ( $taxonomies as $taxonomy ) {
240 - $terms = wp_get_post_terms( $original_post->ID,
241 - $taxonomy, array( 'fields' => 'ids' ) );
242 -
243 - if ( $terms && ! is_wp_error( $terms ) ) {
244 - $postarr['tax_input'][$taxonomy] = $terms;
245 - }
246 - }
247 - }
248 -
249 - if ( $post_metas = get_post_meta( $original_post->ID ) ) {
250 - $postarr['meta_input'] = $post_metas;
251 - }
252 -
253 - $postarr = apply_filters( 'bogo_duplicate_post',
254 - $postarr, $original_post, $locale );
255 -
256 - if ( $taxonomies = $postarr['tax_input'] ) {
257 - $postarr['tax_input'] = array();
258 - }
259 -
260 - if ( $post_metas = $postarr['meta_input'] ) {
261 - $postarr['meta_input'] = array();
262 - }
263 -
264 - $new_post_id = wp_insert_post( $postarr );
265 -
266 - if ( $new_post_id ) {
267 - if ( $taxonomies ) {
268 - foreach ( $taxonomies as $taxonomy => $terms ) {
269 - wp_set_post_terms( $new_post_id, $terms, $taxonomy );
270 - }
271 - }
272 -
273 - if ( $post_metas ) {
274 - foreach ( $post_metas as $meta_key => $meta_values ) {
275 - foreach ( (array) $meta_values as $meta_value ) {
276 - add_post_meta( $new_post_id, $meta_key, $meta_value );
277 - }
278 - }
279 - }
280 -
281 - update_post_meta( $new_post_id, '_locale', $locale );
282 -
283 - $meta_original_post = get_post_meta( $original_post->ID,
284 - '_original_post', true );
285 -
286 - if ( $meta_original_post ) {
287 - update_post_meta( $new_post_id, '_original_post', $meta_original_post );
288 - } else {
289 - update_post_meta( $new_post_id, '_original_post', $original_post->ID );
290 - }
291 - }
292 -
293 - return $new_post_id;
294 -}
295 -
296 -add_filter( 'get_pages', 'bogo_get_pages', 10, 2 );
297 -
298 -function bogo_get_pages( $pages, $args ) {
299 - if ( is_admin()
300 - || ! bogo_is_localizable_post_type( $args['post_type'] )
301 - || ! empty( $args['bogo_suppress_locale_query'] ) ) {
302 - return $pages;
303 - }
304 -
305 - $locale = isset( $args['lang'] ) ? $args['lang'] : get_locale();
306 -
307 - if ( ! bogo_is_available_locale( $locale ) ) {
308 - return $pages;
309 - }
310 -
311 - $new_pages = array();
312 -
313 - foreach ( (array) $pages as $page ) {
314 - $post_locale = bogo_get_post_locale( $page->ID );
315 -
316 - if ( $post_locale == $locale ) {
317 - $new_pages[] = $page;
318 - }
319 - }
320 -
321 - return $new_pages;
322 -}
172 +?>