226 lines
5.1 KiB
PHP
226 lines
5.1 KiB
PHP
<?php
|
|
/**
|
|
* @author ThemePunch <info@themepunch.com>
|
|
* @link http://www.themepunch.com/
|
|
* @copyright 2015 ThemePunch
|
|
*/
|
|
|
|
if( !defined( 'ABSPATH') ) exit();
|
|
|
|
class RevSliderWpml{
|
|
|
|
private static $sitepress;
|
|
|
|
/**
|
|
*
|
|
* true / false if the wpml plugin exists
|
|
*/
|
|
public static function isWpmlExists(){
|
|
return did_action( 'wpml_loaded' );
|
|
}
|
|
|
|
/**
|
|
*
|
|
* valdiate that wpml exists
|
|
*/
|
|
private static function validateWpmlExists(){
|
|
if(!self::isWpmlExists())
|
|
RevSliderFunctions::throwError("The wpml plugin is not activated");
|
|
}
|
|
|
|
/**
|
|
*
|
|
* get languages array
|
|
*/
|
|
public static function getArrLanguages($getAllCode = true){
|
|
|
|
self::validateWpmlExists();
|
|
|
|
$arrLangs = apply_filters( 'wpml_active_languages', array() );
|
|
|
|
$response = array();
|
|
|
|
if($getAllCode == true)
|
|
$response["all"] = __("All Languages",'revslider');
|
|
|
|
foreach($arrLangs as $code=>$arrLang){
|
|
$name = $arrLang["native_name"];
|
|
$response[$code] = $name;
|
|
}
|
|
|
|
return($response);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* get assoc array of lang codes
|
|
*/
|
|
public static function getArrLangCodes($getAllCode = true){
|
|
|
|
$arrCodes = array();
|
|
|
|
if($getAllCode == true)
|
|
$arrCodes["all"] = "all";
|
|
|
|
self::validateWpmlExists();
|
|
|
|
$arrLangs = apply_filters( 'wpml_active_languages', array() );
|
|
|
|
foreach($arrLangs as $code=>$arr){
|
|
$arrCodes[$code] = $code;
|
|
}
|
|
|
|
return($arrCodes);
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* check if all languages exists in the given langs array
|
|
*/
|
|
public static function isAllLangsInArray($arrCodes){
|
|
$arrAllCodes = self::getArrLangCodes();
|
|
$diff = array_diff($arrAllCodes, $arrCodes);
|
|
return(empty($diff));
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* get langs with flags menu list
|
|
* @param $props
|
|
*/
|
|
public static function getLangsWithFlagsHtmlList($props = "",$htmlBefore = ""){
|
|
|
|
$arrLangs = self::getArrLanguages();
|
|
|
|
if(!empty($props))
|
|
$props = " ".$props;
|
|
|
|
$html = "<ul".$props.">"."\n";
|
|
$html .= $htmlBefore;
|
|
|
|
foreach($arrLangs as $code=>$title){
|
|
$urlIcon = self::getFlagUrl($code);
|
|
|
|
/* NEW:
|
|
foreach($arrLangs as $lang){
|
|
$code = $lang['language_code'];
|
|
$title = $lang['native_name'];
|
|
$urlIcon = $lang['country_flag_url'];
|
|
|
|
*/
|
|
$html .= "<li data-lang='".$code."' class='item_lang'><a data-lang='".$code."' href='javascript:void(0)'>"."\n";
|
|
$html .= "<img src='".$urlIcon."'/> $title"."\n";
|
|
$html .= "</a></li>"."\n";
|
|
}
|
|
|
|
$html .= "</ul>";
|
|
|
|
|
|
return($html);
|
|
}
|
|
|
|
|
|
/**
|
|
* get flag url
|
|
*/
|
|
public static function getFlagUrl($code){
|
|
|
|
self::validateWpmlExists();
|
|
|
|
if ( empty( $code ) || $code == "all" ) {
|
|
$url = RS_PLUGIN_URL.'admin/assets/images/icon-all.png'; // NEW: ICL_PLUGIN_URL . '/res/img/icon16.png';
|
|
} else {
|
|
$active_languages = apply_filters( 'wpml_active_languages', array() );
|
|
$url = isset( $active_languages[$code]['country_flag_url'] ) ? $active_languages[$code]['country_flag_url'] : null;
|
|
}
|
|
|
|
//default: show all
|
|
if(empty($url)){
|
|
$url = RS_PLUGIN_URL.'admin/assets/images/icon-all.png';
|
|
// NEW: $url = ICL_PLUGIN_URL . '/res/img/icon16.png';
|
|
}
|
|
|
|
return($url);
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* get language title by code
|
|
*/
|
|
public static function getLangTitle($code){
|
|
|
|
if($code == "all")
|
|
return(__("All Languages", 'revslider'));
|
|
|
|
$default_language = apply_filters( 'wpml_default_language', null );
|
|
return apply_filters( 'wpml_translated_language_name', '', $code, $default_language );
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* get current language
|
|
*/
|
|
public static function getCurrentLang(){
|
|
self::validateWpmlExists();
|
|
|
|
if ( is_admin() ) {
|
|
return apply_filters( 'wpml_default_language', null );
|
|
}
|
|
return apply_filters( 'wpml_current_language', null );
|
|
|
|
return($lang);
|
|
}
|
|
|
|
|
|
public static function svg_val_filter( $svg_val ) {
|
|
|
|
$current_language = apply_filters( 'wpml_current_language', null );
|
|
|
|
if ( is_array( $svg_val ) && array_key_exists( 'src', $svg_val )
|
|
&& $current_language != apply_filters( 'wpml_default_language', null )
|
|
&& apply_filters( 'wpml_setting', null, 'language_negotiation_type' ) == 2
|
|
) {
|
|
|
|
$svg_val['src'] = self::convert_url( $svg_val['src'], $current_language );
|
|
|
|
}
|
|
|
|
return $svg_val;
|
|
}
|
|
|
|
public static function convert_url( $url, $language ){
|
|
|
|
if ( self::$sitepress instanceof SitePress ) {
|
|
$url = self::$sitepress->convert_url( $url, $language );
|
|
}
|
|
|
|
return $url;
|
|
}
|
|
|
|
private static function set_sitepress() {
|
|
|
|
if ( ! self::$sitepress instanceof SitePress ) {
|
|
global $sitepress;
|
|
self::$sitepress = $sitepress;
|
|
}
|
|
}
|
|
|
|
public static function add_hooks() {
|
|
|
|
if ( self::isWpmlExists() ) {
|
|
self::set_sitepress();
|
|
add_filter( 'revslider_svg_val', array( 'RevSliderWpml', 'svg_val_filter' ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* old classname extends new one (old classnames will be obsolete soon)
|
|
* @since: 5.0
|
|
**/
|
|
class UniteWpmlRev extends RevSliderWpml {}
|
|
?>
|