Current File : /home/inteuuod/public_html/wp-content/plugins/userswp/includes//class-pages.php
<?php
/**
* UsersWP Page related functions
*
* All UsersWP page related functions can be found here.
*
* @since 1.0.0
* @author GeoDirectory Team <info@wpgeodirectory.com>
*/
class UsersWP_Pages {
/**
* Checks whether the current page is of given page type or not.
*
* @since 1.0.0
* @package userswp
* @param string|bool $type Page type.
* @return bool
*/
public function is_page($type = false) {
if (is_page()) {
global $post;
$current_page_id = isset($post->ID) ? absint($post->ID) : '';
if($current_page_id){
if ($type) {
$uwp_page = uwp_get_page_id($type, false);
if ( $uwp_page && ((int) $uwp_page == $current_page_id ) ) {
return true;
} else {
return false;
}
} else {
if ($this->is_register_page() ||
$this->is_login_page() ||
$this->is_forgot_page() ||
$this->is_change_page() ||
$this->is_reset_page() ||
$this->is_account_page() ||
$this->is_profile_page() ||
$this->is_users_page() ||
$this->is_user_item_page()) {
return true;
} else {
return false;
}
}
}
} else {
return false;
}
return false;
}
/**
* Checks whether the current page is register page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_register_page() {
return $this->is_page('register_page');
}
/**
* Checks whether the current page is login page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_login_page() {
return $this->is_page('login_page');
}
/**
* Checks whether the current page is forgot password page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_forgot_page() {
return $this->is_page('forgot_page');
}
/**
* Checks whether the current page is change password page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_change_page() {
return $this->is_page('change_page');
}
/**
* Checks whether the current page is reset password page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_reset_page() {
return $this->is_page('reset_page');
}
/**
* Checks whether the current page is account page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_account_page() {
return $this->is_page('account_page');
}
/**
* Checks whether the current page is profile page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_profile_page() {
return $this->is_page('profile_page');
}
/**
* Checks whether the current page is users page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_users_page() {
return $this->is_page('users_page');
}
/**
* Checks whether the current page is users page or not.
*
* @since 1.1.2
* @package userswp
* @return bool
*/
public function is_user_item_page() {
return $this->is_page('user_list_item_page');
}
/**
* Checks whether the current page is logged in user profile page or not.
*
* @since 1.0.0
* @package userswp
* @return bool
*/
public function is_current_user_profile_page() {
if (is_user_logged_in() &&
$this->is_profile_page()
) {
$author_slug = get_query_var('uwp_profile');
if ($author_slug) {
$url_type = apply_filters('uwp_profile_url_type', 'slug');
if ($url_type == 'id') {
$user = get_user_by('id', $author_slug);
} else {
$user = get_user_by('slug', $author_slug);
}
if ($user && $user->ID == get_current_user_id()) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
/**
* Returns all available pages as array to use in select dropdown.
*
* @since 1.0.0
* @package userswp
* @return array Page array.
*/
public function get_pages() {
$pages_options = array( '' => __( 'Select a Page', 'userswp' ) ); // Blank option
$pages = get_pages();
if ( $pages ) {
foreach ( $pages as $page ) {
$pages_options[ $page->ID ] = $page->post_title;
}
}
return $pages_options;
}
/**
* Gets the page slug using the given page type.
*
* @since 1.0.0
* @package userswp
* @param string $page_type Page type.
* @return string Page slug.
*/
public function get_page_slug($page_type = 'register_page') {
$page_id = uwp_get_page_id($page_type, 0);
if ($page_id) {
$slug = get_post_field( 'post_name', get_post($page_id) );
} else {
$slug = false;
}
return $slug;
}
/**
* Creates UsersWP page if not exists.
*
* @since 1.0.0
* @package userswp
* @param string $slug Page slug.
* @param string $option Page setting key.
* @param string $page_title The post title. Default empty.
* @param mixed $page_content The post content. Default empty.
* @param int $post_parent Set this for the post it belongs to, if any. Default 0.
* @param string $status The post status. Default 'draft'.
*
* @return int Page ID
*/
public function create_page($slug, $option, $page_title = '', $page_content = '', $post_parent = 0, $status = 'publish') {
global $wpdb, $current_user;
$settings = get_option( 'uwp_settings', array());
if (isset($settings[$option])) {
$option_value = $settings[$option];
} else {
$option_value = false;
}
if ($option_value > 0 && ( $page_object = get_post( $option_value ) )) {
if ('page' === $page_object->post_type && !in_array($page_object->post_status, array('pending', 'trash', 'future', 'auto-draft'))) {
// Valid page is already in place
return $page_object->ID;
}
}
if(!empty($post_parent)){
$page = get_page_by_path($post_parent);
if ($page) {
$post_parent = $page->ID;
} else {
$post_parent = '';
}
}
if ( strlen( $page_content ) > 0 ) {
// Search for an existing page with the specified page content (typically a shortcode)
$valid_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status NOT IN ( 'pending', 'trash', 'future', 'auto-draft' ) AND post_content LIKE %s LIMIT 1;", "%{$page_content}%" ) );
$trashed_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status = 'trash' AND post_content LIKE %s LIMIT 1;", "%{$page_content}%" ) );
} else {
// Search for an existing page with the specified page slug
$valid_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status NOT IN ( 'pending', 'trash', 'future', 'auto-draft' ) AND post_name = %s LIMIT 1;", $slug ) );
$trashed_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status = 'trash' AND post_name = %s LIMIT 1;", $slug ) );
}
$valid_page_found = apply_filters( 'uwp_create_page_id', $valid_page_found, $slug, $page_content );
if ( $valid_page_found ) {
if ( $option ) {
$settings[$option] = $valid_page_found;
update_option( 'uwp_settings', $settings );
}
return $valid_page_found;
}
if ( $trashed_page_found ) {
$page_id = $trashed_page_found;
$page_data = array(
'ID' => $page_id,
'post_status' => 'publish',
'post_parent' => $post_parent,
);
wp_update_post( $page_data );
} else {
$page_data = array(
'post_status' => 'publish',
'post_type' => 'page',
'post_author' => $current_user->ID,
'post_name' => $slug,
'post_title' => $page_title,
'post_content' => $page_content,
'post_parent' => $post_parent,
'comment_status' => 'closed',
);
$page_id = wp_insert_post( $page_data );
}
if ( $option ) {
$settings[$option] = $page_id;
update_option('uwp_settings', $settings);
}
return $page_id;
}
/**
* Generates default UsersWP pages. Usually called during plugin activation.
*
* @since 1.0.0
* @package userswp
* @return void
*/
public function generate_default_pages() {
$this->create_page(esc_sql(_x('register', 'page_slug', 'userswp')), 'register_page', __('Register', 'userswp'), '[uwp_register]');
$this->create_page(esc_sql(_x('login', 'page_slug', 'userswp')), 'login_page', __('Login', 'userswp'), '[uwp_login]');
$this->create_page(esc_sql(_x('account', 'page_slug', 'userswp')), 'account_page', __('Account', 'userswp'), '[uwp_account]');
$this->create_page(esc_sql(_x('forgot', 'page_slug', 'userswp')), 'forgot_page', __('Forgot Password?', 'userswp'), '[uwp_forgot]');
$this->create_page(esc_sql(_x('reset', 'page_slug', 'userswp')), 'reset_page', __('Reset Password', 'userswp'), '[uwp_reset]');
$this->create_page(esc_sql(_x('change', 'page_slug', 'userswp')), 'change_page', __('Change Password', 'userswp'), '[uwp_change]');
$this->create_page(esc_sql(_x('profile', 'page_slug', 'userswp')), 'profile_page', __('Profile', 'userswp'), '[uwp_profile]');
$this->create_page(esc_sql(_x('users', 'page_slug', 'userswp')), 'users_page', __('Users', 'userswp'), '[uwp_users]');
$this->create_page(esc_sql(_x('user-list-item', 'page_slug', 'userswp')), 'user_list_item_page', __('Users List Item', 'userswp'), '[uwp_users_item]');
}
/**
* Generates default UsersWP pages on new wpmu blog creation.
*
* @since 1.0.0
* @package userswp
*
* @param int $blog_id Blog ID.
*/
public function wpmu_generate_default_pages_on_new_site( $blog_id ) {
if (uwp_get_installation_type() != 'multi_na_all') {
return;
}
if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
}
// Bail if plugin is not network activated.
if ( ! is_plugin_active_for_network( 'userswp/userswp.php' ) ) {
return;
}
// Switch to the new blog.
switch_to_blog( $blog_id );
$this->generate_default_pages();
// Restore original blog.
restore_current_blog();
}
/**
* Gets the UsersWP page permalink based on page type.
*
* @since 1.0.0
* @package userswp
* @param string $page Page type.
* @return string Page permalink.
*/
public function get_page_link($page) {
$link = "";
switch ($page) {
case 'register':
$page_id = uwp_get_page_id('register_page', false);
break;
case 'login':
$page_id = uwp_get_page_id('login_page', false);
break;
case 'forgot':
$page_id = uwp_get_page_id('forgot_page', false);
break;
case 'account':
$page_id = uwp_get_page_id('account_page', false);
break;
case 'profile':
$page_id = uwp_get_page_id('profile_page', false);
break;
case 'users':
$page_id = uwp_get_page_id('users_page', false);
break;
default:
$page_id = uwp_get_page_id($page, false);
break;
}
if ($page_id) {
$link = get_permalink($page_id);
}
if ( ! empty( $link ) && function_exists( 'PLL' ) ) {
$link = PLL()->links_model->add_language_to_link( $link, PLL()->curlang );
}
return $link;
}
/**
* Builds the profile page url based on the tab and sub tab given
* yoursite.com/profile/username
* yoursite.com/profile/username/tab
* yoursite.com/profile/username/tab/subtab
*
* @since 1.0.0
* @package userswp
* @param int $user_id User ID.
* @param string|bool $tab Optional. Main tab
* @param string|bool $subtab Optional. Sub tab.
* @return string Built profile page link.
*/
public function build_profile_tab_url($user_id, $tab = false, $subtab = false) {
$link = apply_filters('uwp_profile_link', get_author_posts_url($user_id), $user_id);
if ($link != '') {
if (isset($_REQUEST['page_id'])) {
$permalink_structure = 'DEFAULT';
} else {
$permalink_structure = 'CUSTOM';
$link = rtrim($link, '/') . '/';
}
if ('DEFAULT' == $permalink_structure) {
$link = add_query_arg(
array(
'uwp_tab' => $tab,
'uwp_subtab' => $subtab
),
$link
);
} else {
if ($tab) {
$link = $link . $tab;
}
if ($subtab) {
$link = $link .'/'.$subtab;
}
}
}
return trailingslashit( $link );
}
/**
* To get the page ID
*
* @param $type
* @param bool $get_link
*
* @return bool|false|int|NULL|string
*/
public function get_page_id($type, $get_link = false) {
$link = false;
$page_id = uwp_get_option($type, false, false);
if ($page_id && $page_id > 0) {
if (uwp_is_wpml()) {
$wpml_page_id = uwp_wpml_object_id($page_id, 'page', true);
if (!empty($wpml_page_id)) {
$page_id = $wpml_page_id;
}
}
$link = $page_id;
if($get_link){
$link = get_permalink($page_id);
}
}
return $link;
}
/**
* Add a post display state for special UWP pages in the page list table.
*
* @param array $post_states An array of post display states.
* @param WP_Post $post The current post object.
*
* @return mixed
*/
public function add_display_post_states( $post_states, $post ) {
if ( uwp_get_page_id( 'register_page' ) == $post->ID ) {
$post_states['uwp_register_page'] = __( 'UWP Register Page', 'userswp' );
}
if ( uwp_get_page_id( 'login_page' ) == $post->ID ) {
$post_states['uwp_login_page'] = __( 'UWP Login Page', 'userswp' );
}
if ( uwp_get_page_id( 'forgot_page' ) == $post->ID ) {
$post_states['uwp_forgot_page'] = __( 'UWP Forgot Password Page', 'userswp' );
}
if ( uwp_get_page_id( 'reset_page' ) == $post->ID ) {
$post_states['uwp_reset_page'] = __( 'UWP Reset Password Page', 'userswp' );
}
if ( uwp_get_page_id( 'account_page' ) == $post->ID ) {
$post_states['uwp_account_page'] = __( 'UWP Account Page', 'userswp' );
}
if ( uwp_get_page_id( 'profile_page' ) == $post->ID ) {
$post_states['uwp_profile_page'] = __( 'UWP Profile Page', 'userswp' );
}
if ( uwp_get_page_id( 'users_page' ) == $post->ID ) {
$post_states['uwp_users_page'] = __( 'UWP Users Page', 'userswp' );
}
if ( uwp_get_page_id( 'user_list_item_page' ) == $post->ID ) {
$post_states['uwp_user_list_item_page'] = __( 'UWP User Item Page', 'userswp' );
}
if ( uwp_get_page_id( 'change_page' ) == $post->ID ) {
$post_states['uwp_change_page'] = __( 'UWP Change Password Page', 'userswp' );
}
return $post_states;
}
}