| @@ -1,8 +1,8 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | /** |
| 4 | - * Some common code for PLL_Admin_Filters_Post and PLL_Admin_Filters_Media | |
| 4 | + * some common code for PLL_Admin_Filters_Post and PLL_Admin_Filters_Media | |
| 5 | 5 | * |
| 6 | 6 | * @since 1.5 |
| 7 | 7 | */ |
| 8 | 8 | abstract class PLL_Admin_Filters_Post_Base { |
| @@ -8,9 +8,9 @@ | ||
| 8 | 8 | abstract class PLL_Admin_Filters_Post_Base { |
| 9 | 9 | public $links, $model, $pref_lang; |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | - * Constructor: setups filters and actions | |
| 12 | + * constructor: setups filters and actions | |
| 13 | 13 | * |
| 14 | 14 | * @since 1.2 |
| 15 | 15 | * |
| 16 | 16 | * @param object $polylang |
| @@ -21,23 +21,45 @@ | ||
| 21 | 21 | $this->pref_lang = &$polylang->pref_lang; |
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | /** |
| 25 | - * Save translations from language metabox | |
| 25 | + * allows to set a language by default for posts if it has no language yet | |
| 26 | 26 | * |
| 27 | 27 | * @since 1.5 |
| 28 | 28 | * |
| 29 | - * @param int $post_id | |
| 29 | + * @param int $post_id | |
| 30 | + */ | |
| 31 | + public function set_default_language( $post_id ) { | |
| 32 | + if ( ! $this->model->post->get_language( $post_id ) ) { | |
| 33 | + if ( isset( $_GET['new_lang'] ) && $lang = $this->model->get_language( $_GET['new_lang'] ) ) { | |
| 34 | + $this->model->post->set_language( $post_id, $lang ); | |
| 35 | + } | |
| 36 | + | |
| 37 | + elseif ( ( $parent_id = wp_get_post_parent_id( $post_id ) ) && $parent_lang = $this->model->post->get_language( $parent_id ) ) { | |
| 38 | + $this->model->post->set_language( $post_id, $parent_lang ); | |
| 39 | + } | |
| 40 | + | |
| 41 | + else { | |
| 42 | + $this->model->post->set_language( $post_id, $this->pref_lang ); | |
| 43 | + } | |
| 44 | + } | |
| 45 | + } | |
| 46 | + | |
| 47 | + /** | |
| 48 | + * save translations from language metabox | |
| 49 | + * | |
| 50 | + * @since 1.5 | |
| 51 | + * | |
| 52 | + * @param int $post_id | |
| 30 | 53 | * @param array $arr |
| 31 | 54 | * @return array |
| 32 | 55 | */ |
| 33 | 56 | protected function save_translations( $post_id, $arr ) { |
| 34 | - // Security check as 'wp_insert_post' can be called from outside WP admin | |
| 57 | + // security check | |
| 58 | + // as 'wp_insert_post' can be called from outside WP admin | |
| 35 | 59 | check_admin_referer( 'pll_language', '_pll_nonce' ); |
| 36 | 60 | |
| 37 | - $translations = array(); | |
| 38 | - | |
| 39 | - // Save translations after checking the translated post is in the right language | |
| 61 | + // save translations after checking the translated post is in the right language | |
| 40 | 62 | foreach ( $arr as $lang => $tr_id ) { |
| 41 | 63 | $translations[ $lang ] = ( $tr_id && $this->model->post->get_language( (int) $tr_id )->slug == $lang ) ? (int) $tr_id : 0; |
| 42 | 64 | } |
| 43 | 65 | |