PluginProbe
Polylang / 2.2
Polylang v2.2
3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 3.8.3 2.7 2.7.0.1 2.7.1 2.7.2 2.7.3 2.7.4 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.9 2.9.1 2.9.2 3.0 3.0.1 3.0.2 3.0.3 All 233 releases
polylang / include / links.php

links.php in Polylang 2.2, at include/links.php

66 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Manages links related functions
5 *
6 * @since 1.2
7 */
8 class PLL_Links {
9 public $links_model, $model, $options;
10
11 /**
12 * Constructor
13 *
14 * @since 1.2
15 *
16 * @param object $polylang
17 */
18 public function __construct( &$polylang ) {
19 $this->links_model = &$polylang->links_model;
20 $this->model = &$polylang->model;
21 $this->options = &$polylang->options;
22 }
23
24 /**
25 * Returns the home url in the requested language
26 *
27 * @since 1.3
28 *
29 * @param object|string $language
30 * @param bool $is_search optional wether we need the home url for a search form, defaults to false
31 */
32 public function get_home_url( $language, $is_search = false ) {
33 $language = is_object( $language ) ? $language : $this->model->get_language( $language );
34 return $is_search ? $language->search_url : $language->home_url;
35 }
36
37 /**
38 * Checks if the current user can read the post
39 *
40 * @since 1.5
41 *
42 * @param int $post_id
43 * @return bool
44 */
45 public function current_user_can_read( $post_id ) {
46 $post = get_post( $post_id );
47
48 if ( 'inherit' === $post->post_status && $post->post_parent ) {
49 $post = get_post( $post->post_parent );
50 }
51
52 if ( 'inherit' === $post->post_status || in_array( $post->post_status, get_post_stati( array( 'public' => true ) ) ) ) {
53 return true;
54 }
55
56 // Follow WP practices, which shows links to private posts ( when readable ), but not for draft posts ( ex: get_adjacent_post_link() )
57 if ( in_array( $post->post_status, get_post_stati( array( 'private' => true ) ) ) ) {
58 $post_type_object = get_post_type_object( $post->post_type );
59 $user = wp_get_current_user();
60 return is_user_logged_in() && ( current_user_can( $post_type_object->cap->read_private_posts ) || $user->ID == $post->post_author ); // Comparison must not be strict!
61 }
62
63 return false;
64 }
65 }
66