$a */ function bpml_test($a = '') { echo '
'; print_r($a); echo '
'; } /** * Before BP header hook. * * Activate site_url() filter. */ function bpml_bp_before_header_hook() { add_filter('site_url', 'bpml_site_url_filter', 0); } /** * After BP footer hook. * * Remove site_url() filter. */ function bpml_bp_after_footer_hook() { remove_filter('site_url', 'bpml_site_url_filter', 0); } /** * Filters site_url() calls. * * @global $sitepress * @param $url * @return */ function bpml_site_url_filter($url, $path = '') { global $sitepress; return rtrim($sitepress->convert_url($url), '/'); } /** * Removes site_url() filter when redirecting to random blog. */ function bpml_blogs_redirect_to_random_blog() { global $bp; if ($bp->current_component == $bp->blogs->slug && isset($_GET['random-blog'])) { remove_filter('site_url', 'bpml_site_url_filter', 0); } } /** * Filters BuddyPress root domain. * * @global $sitepress $sitepress * @param $url * @return */ function bpml_bp_core_get_root_domain_filter($url) { global $sitepress; return rtrim($sitepress->convert_url($url), '/'); } /** * Filters admin URL (removes language). * * @global $sitepress $sitepress * @param $url * @param $path * @param $blog_id * @return */ function bpml_admin_url_filter($url, $path, $blog_id) { $url = str_replace('/' . ICL_LANGUAGE_CODE . '/wp-admin', '/wp-admin/', $url); return $url; } /** * Translates all links in given string. * * @global $bpml_filter_hrefs_lang * @param $string * @param $lang * @param $limit * @return */ function bpml_filter_hrefs($string = '', $lang = '', $limit = -1, $position = NULL) { global $bpml_filter_hrefs_lang, $bpml_filter_hrefs_count; $bpml_filter_hrefs_count = 0; $bpml_filter_hrefs_lang = $lang; if (!is_null($position)) { global $bpml_filter_hrefs_position; $bpml_filter_hrefs_position = $position; } $return = preg_replace_callback('/href=["\'](.+?)["\']/', 'bpml_filter_href_matches', $string, $limit); $bpml_filter_hrefs_count = 0; return $return; } /** * Translates all links in given string from to. * * @global $bpml_filter_hrefs_lang * @param $string * @param $lang * @param $limit * @return */ function bpml_filter_hrefs_from_to($string = '', $lang_from = '', $lang_to = '', $limit = -1, $position = NULL) { global $bpml_filter_hrefs_lang, $bpml_filter_hrefs_lang_to, $bpml_filter_hrefs_count; $bpml_filter_hrefs_count = 0; $bpml_filter_hrefs_lang = $lang_from; $bpml_filter_hrefs_lang_to = $lang_to; if (!is_null($position)) { global $bpml_filter_hrefs_position; $bpml_filter_hrefs_position = $position; } $return = preg_replace_callback('/href=["\'](.+?)["\']/', 'bpml_filter_href_matches', $string, $limit); $bpml_filter_hrefs_count = 0; return $return; } /** * Translates links in matches provided from bpml_filter_hrefs(). * * @global $sitepress $sitepress * @global $bpml_filter_hrefs_lang * @param $match * @return */ function bpml_filter_href_matches($match = array()) { global $sitepress, $bpml_filter_hrefs_lang, $bpml_filter_hrefs_lang_to, $bpml_filter_hrefs_position, $bpml_filter_hrefs_count; if (!empty($bpml_filter_hrefs_position)) { if ($bpml_filter_hrefs_count != $bpml_filter_hrefs_position) { $bpml_filter_hrefs_count += 1; return $match[0]; } } if (!empty($bpml_filter_hrefs_lang_to)) { $lang_to = ($bpml_filter_hrefs_lang_to == $sitepress->get_default_language()) ? '' : $bpml_filter_hrefs_lang_to . '/'; $converted = preg_replace('/\/' . $bpml_filter_hrefs_lang . '\//', '/' . $lang_to, $match[1], 1); } else if ($sitepress->get_current_language() != $sitepress->get_default_language()) { if ($bpml_filter_hrefs_lang !== $sitepress->get_default_language()) { $converted = preg_replace('/\/' . $bpml_filter_hrefs_lang . '\//', '/' . $sitepress->get_current_language() . '/', $match[1], 1); } else { $converted = $sitepress->convert_url($match[1]); } // Check doubled $converted = preg_replace('/\/' . $sitepress->get_current_language() . '\/' . $sitepress->get_current_language() . '\//', '/' . $sitepress->get_current_language() . '/', $converted, 1); } else { $replace = !empty($bpml_filter_hrefs_lang) ? '/\/' . $bpml_filter_hrefs_lang . '\//' : '/\//'; $converted = preg_replace($replace, '/', $match[1], 1); } return str_replace($match[1], $converted, $match[0]); } /** * Filters bp_uri. * * This URI is important for BuddyPress. * By that it determines some components and actions. * We remove language component so BP can determine things right. * * @param $url * @return */ function bpml_bp_uri_filter($url) { global $sitepress; $default_language = $sitepress->get_default_language(); if ($default_language == ICL_LANGUAGE_CODE) { return $url; } return preg_replace('/\/' . ICL_LANGUAGE_CODE . '\//', '/', $url, 1); echo $default_language; } /** * Filters WPML languages switcher. * * This filtering is performed on BP pages * where WPML actually don't detect any post/page. * * @global $sitepress * @global $bp * @global $bp_unfiltered_uri * @global $post * @return */ function bpml_icl_ls_languages_filter($langs) { global $sitepress, $bp, $bp_unfiltered_uri, $post; $default_language = $sitepress->get_default_language(); foreach($bp->active_components as $key => $value){ $components[] = $key; } if(!isset($bp_unfiltered_uri[0])){ $bp_unfiltered_uri[0] = ''; } // Unset the languages for missing translations if(!in_array($bp_unfiltered_uri[0], $components)) { foreach ($langs as $key => $lang) { $url = ($default_language !== $key) ? $url = get_option('home') . "/$key/" : $url = get_option('home') . "/"; if($url == $langs[$key]['url']){ if(!is_home() && !is_front_page($post->ID)){ unset($langs[$key]); } } } return $langs; } // Recreates language selector - the all components should have all languages if(version_compare(BP_VERSION, '1.2.9') >= 0){ $langs = $sitepress->get_active_languages(); $url = ''; foreach($bp_unfiltered_uri as $key => $path){ $url .= '/' . $path; } $homepage = get_option('home'); $urlToFlags = ICL_PLUGIN_URL . '/res/flags/'; foreach ($langs as $key => $lang) { $langs[$key]['country_flag_url'] = $urlToFlags . "$key.png"; $langs[$key]['language_code'] = $key; $langs[$key]['translated_name'] = $lang['english_name']; if($default_language == $key){ $langs[$key]['url'] = $homepage . $url; } else { $langs[$key]['url'] = $homepage . '/' . $lang['code'] . $url; } } } else { if (!in_array($bp_unfiltered_uri[0], $bp->root_components)) { return $langs; } foreach ($langs as $key => $lang) { $langs[$key]['url'] = $sitepress->convert_url(get_option('home') . '/' . implode('/', $bp_unfiltered_uri), $lang['language_code']); } } return $langs; } /** * Stores/returns debug messages. * * @staticvar array $messages * @param $message * @param $class * @return array */ function bpml_debug($message, $class = 'bpml-debug-updated') { if (!current_user_can('administrator') || !defined('BPML_DEBUG') || !BPML_DEBUG) { return ''; } static $messages = array(); if ($message == 'get') { return $messages; } $messages[] = array('message' => $message, 'class' => 'updated bpml-debug ' . $class); } /** * Header hook. */ function bpml_wp_head_hook() { } /** * Renders debug info. * * @global $bp * @return */ function bpml_wp_footer() { if (!current_user_can('administrator') || !defined('BPML_DEBUG') || !BPML_DEBUG) { return ''; } echo '

BPML Debug

'; $messages = bpml_debug('get'); foreach ($messages as $message) { echo bpml_message($message['message'], $message['class']); } global $bp, $bpml; var_dump($bpml); echo '
';
    echo '
		BPML Settings
		';
    var_dump($bpml);
    echo '

		BuddyPress ';
    print_r($bp);
    echo '
'; }