2014-12-15 22:38:07 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
class UM_Logout {
|
|
|
|
|
|
|
|
|
|
function __construct() {
|
|
|
|
|
|
|
|
|
|
add_action('template_redirect', array(&$this, 'logout_page'), 10000 );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
*** @Logout via logout page
|
|
|
|
|
***/
|
|
|
|
|
function logout_page() {
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2017-01-06 22:17:22 +08:00
|
|
|
global $sitepress, $ultimatemember, $post;
|
2017-01-05 17:20:38 +08:00
|
|
|
|
|
|
|
|
$language_code = '';
|
2017-01-06 22:17:22 +08:00
|
|
|
$current_page_ID = get_the_ID();
|
|
|
|
|
$logout_page_id = $ultimatemember->permalinks->core['logout'];
|
|
|
|
|
$has_translation = false;
|
|
|
|
|
$trid = 0;
|
|
|
|
|
$not_default_lang = false;
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2017-01-06 22:17:22 +08:00
|
|
|
if( is_home() || is_front_page() ){
|
|
|
|
|
return;
|
|
|
|
|
}
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2017-01-06 22:17:22 +08:00
|
|
|
if ( function_exists('icl_object_id') || function_exists('icl_get_current_language') ) {
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2017-01-06 22:17:22 +08:00
|
|
|
if( function_exists('icl_get_current_language') ){
|
|
|
|
|
$language_code = icl_get_current_language();
|
2017-01-19 12:01:23 +08:00
|
|
|
}else if( function_exists('icl_object_id') && defined('ICL_LANGUAGE_CODE') ){ // checks if WPML exists
|
2017-01-06 22:17:22 +08:00
|
|
|
$language_code = ICL_LANGUAGE_CODE;
|
|
|
|
|
}
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2017-01-06 22:17:22 +08:00
|
|
|
$has_translation = true;
|
2017-01-18 21:16:26 +08:00
|
|
|
|
2017-01-23 21:21:13 +08:00
|
|
|
if( function_exists('icl_object_id') && defined('ICL_LANGUAGE_CODE') && isset( $sitepress ) ){ // checks if WPML exists
|
2017-01-18 21:16:26 +08:00
|
|
|
$trid = $sitepress->get_element_trid( $current_page_ID );
|
|
|
|
|
}
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2017-01-06 22:17:22 +08:00
|
|
|
if( icl_get_default_language() !== $language_code ){
|
|
|
|
|
$not_default_lang = true;
|
|
|
|
|
}else{
|
|
|
|
|
$language_code = '';
|
2017-01-05 17:20:38 +08:00
|
|
|
}
|
2017-01-06 22:17:22 +08:00
|
|
|
|
2017-01-05 17:20:38 +08:00
|
|
|
}
|
2017-01-06 22:17:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( um_is_core_page('logout') || ( $trid > 0 && $has_translation && $trid == $logout_page_id && $not_default_lang ) ) {
|
2014-12-15 22:38:07 +02:00
|
|
|
|
|
|
|
|
if ( is_user_logged_in() ) {
|
|
|
|
|
|
2017-01-05 17:20:38 +08:00
|
|
|
if ( isset( $_REQUEST['redirect_to'] ) && $_REQUEST['redirect_to'] !== '' ) {
|
2015-11-05 19:51:31 +08:00
|
|
|
wp_logout();
|
2016-02-25 20:54:04 +08:00
|
|
|
session_unset();
|
2015-11-05 19:51:31 +08:00
|
|
|
exit( wp_redirect( $_REQUEST['redirect_to'] ) );
|
2014-12-15 22:38:07 +02:00
|
|
|
} else if ( um_user('after_logout') == 'redirect_home' ) {
|
2015-11-05 19:51:31 +08:00
|
|
|
wp_logout();
|
2016-02-25 20:54:04 +08:00
|
|
|
session_unset();
|
2017-01-05 17:20:38 +08:00
|
|
|
exit( wp_redirect( home_url( $language_code ) ) );
|
2014-12-15 22:38:07 +02:00
|
|
|
} else {
|
2015-11-05 19:51:31 +08:00
|
|
|
wp_logout();
|
2016-02-25 20:54:04 +08:00
|
|
|
session_unset();
|
2015-11-05 19:51:31 +08:00
|
|
|
exit( wp_redirect( um_user('logout_redirect_url') ) );
|
2017-01-05 17:20:38 +08:00
|
|
|
|
2014-12-15 22:38:07 +02:00
|
|
|
}
|
2015-11-05 19:51:31 +08:00
|
|
|
|
2014-12-15 22:38:07 +02:00
|
|
|
} else {
|
2017-01-05 17:20:38 +08:00
|
|
|
exit( wp_redirect( home_url( $language_code ) ) );
|
2014-12-15 22:38:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2014-12-22 01:45:24 +02:00
|
|
|
|
2014-12-15 22:38:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|