first commit

This commit is contained in:
2023-09-12 21:41:04 +02:00
commit 3361a7f053
13284 changed files with 2116755 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
<?php
class WPML_Language_Records {
private $wpdb;
private $languages;
/** @var null|array $locale_lang_map */
private $locale_lang_map;
public function __construct( wpdb $wpdb ) {
$this->wpdb = $wpdb;
}
public function is_valid( $code ) {
if ( ! $this->languages ) {
$this->load();
}
return in_array( $code, $this->languages );
}
private function load() {
$this->languages = $this->wpdb->get_col( "SELECT code FROM {$this->get_table()}" );
}
/**
* @param string $lang_code
*
* @return string|null
*/
public function get_locale( $lang_code ) {
$this->init_locale_lang_map();
$locale = array_search( $lang_code, $this->locale_lang_map, true );
return $locale ? $locale : null;
}
/**
* @param string $locale
*
* @return string|null
*/
public function get_language_code( $locale ) {
$this->init_locale_lang_map();
return isset( $this->locale_lang_map[ $locale ] ) ? $this->locale_lang_map[ $locale ] : null;
}
private function init_locale_lang_map() {
if ( null === $this->locale_lang_map ) {
$this->locale_lang_map = array();
$sql = "SELECT default_locale, code FROM {$this->get_table()}";
$rowset = $this->wpdb->get_results( $sql );
foreach ( $rowset as $row ) {
$this->locale_lang_map[ $row->default_locale ?: $row->code ] = $row->code;
}
}
}
/**
* @return array
*/
public function get_locale_lang_map() {
$this->init_locale_lang_map();
return $this->locale_lang_map;
}
private function get_table() {
return $this->wpdb->prefix . 'icl_languages';
}
}