ascvh@#%(^-^)V ?host,ip,port,protocol,title,domain,country,city,link,org ???à JFIF  x x ?? C         ?? C   ?à   " ??     ?? μ  } !1AQa "q2?‘?#B±áR?e$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??…???‰?’“”?–—???¢£¤¥|§¨?a23′μ?·?1o??????èéêòó???×?ùúáa?????èéê?òó???÷?ùú??     ?? μ   w !1AQ aq"2?B‘?±á #3Rebr?{ gilour
<?php defined( 'ABSPATH' ) || exit; /** * Is Elementor (free) plugin active or not? * * @since 1.0.0 * * @return bool TRUE if plugin is active, FALSE otherwise. */ function cpel_is_elementor_active() { return defined( 'ELEMENTOR_VERSION' ); } /** * Is Elementor Pro plugin active or not? * * @since 1.0.0 * * @return bool TRUE if plugin is active, FALSE otherwise. */ function cpel_is_elementor_pro_active() { return defined( 'ELEMENTOR_PRO_VERSION' ); } /** * Is Polylang (free) OR Polylang Pro (Premium) plugin active or not? * Note: This is for checking the base Polylang functionality which is * identical in free and Pro version. * * @since 1.0.0 * * @return bool TRUE if plugin is active, FALSE otherwise. */ function cpel_is_polylang_active() { return defined( 'POLYLANG_BASENAME' ); } /** * Is Polylang Pro (Premium) plugin active or not? * * @since 1.0.0 * * @return bool TRUE if plugin is active, FALSE otherwise. */ function cpel_is_polylang_pro_active() { return defined( 'POLYLANG_PRO' ); } /** * Is Polylang API active * * @since 2.0.8 * * @return bool TRUE if plugin is active, FALSE otherwise. */ function cpel_is_polylang_api_active() { return cpel_is_polylang_active() && function_exists( 'pll_get_post' ); } /** * Is Polylang Multidomain * * @since 2.1.1 * * @return bool TRUE if is polylang multi-domain configuration, FALSE otherwise. */ function cpel_is_polylang_multidomain() { return cpel_is_polylang_api_active() && 3 === PLL()->options['force_lang'] && ! empty( PLL()->options['domains'] ); } /** * Is Elementor Editor * * @since 2.3.0 * * @return bool TRUE if is Elementor Editor, FALSE otherwise. */ function cpel_is_elementor_editor() { return is_admin() && isset( $_GET['action'], $_GET['post'] ) && 'elementor' === $_GET['action']; } /** * Is post a translation in secondary language * * @since 2.0.0 * * @return bool TRUE if is a translation, FALSE otherwise. */ function cpel_is_translation( $post_id = null ) { $post_id = $post_id ? $post_id : get_the_ID(); $default = pll_default_language(); return pll_get_post_language( $post_id ) !== $default && pll_get_post( $post_id, $default ); } /** * Flag code * * @since 2.0.0 * @since 2.0.5 don't return code for custom flags * * @param string $flag_url full flag url. * @return string|bool flag code or false */ function cpel_flag_code( $flag_url ) { return preg_match( '/polylang\/flags\/(\w+).(?:jpg|png|svg)$/i', $flag_url, $matchs ) ? $matchs[1] : false; } /** * SVG flag info * * @since 2.0.0 * * @param string $flag_code flag two letters code. * @return array|bool SVG flag info or false */ function cpel_flag_svg( $flag_code ) { $flag_path = "/assets/flags/$flag_code.svg"; if ( file_exists( CPEL_DIR . $flag_path ) ) { return array( 'path' => $flag_path, 'url' => plugins_url( $flag_path, CPEL_FILE ), ); } return false; } /** * Flag emoji * * @since 2.4.0 * * @param string $flag_code flag code. * @return string|false flag emoji or false */ function cpel_flag_emoji( $flag_code ) { $emojis = include __DIR__ . '/util/emojis.php'; return apply_filters( 'cpel/filter/flag_emoji', isset( $emojis[ $flag_code ] ) ? $emojis[ $flag_code ] : false, $flag_code ); }