| Server IP : 85.112.90.236 / Your IP : 192.168.1.26 Web Server : Apache System : Linux 85-112-90-236.cprapid.com 6.12.0-211.7.3.el10_2.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 12:46:58 EDT 2026 x86_64 User : ftechme ( 1002) PHP Version : 8.2.32 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/ftechme/public_html/wp-content/plugins/polylang/src/Model/ |
Upload File : |
<?php
/**
* @package Polylang
*/
namespace WP_Syntex\Polylang\Model;
use PLL_Language;
defined( 'ABSPATH' ) || exit;
/**
* Class allowing to chain language proxies.
*
* @since 3.8
*/
class Languages_Proxies {
/**
* @var Languages
*/
protected $languages;
/**
* @var Languages_Proxy_Interface[]
*
* @phpstan-var array<non-falsy-string, Languages_Proxy_Interface>
*/
private $proxies = array();
/**
* @var string[]
*/
protected $stack = array();
/**
* Constructor.
*
* @since 3.8
*
* @param Languages $languages Languages' model.
* @param array $proxies List of registered proxies.
* @param string $parent Key of the first item of the proxies stack to traverse.
*/
public function __construct( Languages $languages, array $proxies, string $parent ) {
$this->languages = $languages;
$this->proxies = $proxies;
$this->stack[] = $parent;
}
/**
* Returns the list of available languages after passing it through proxies.
*
* @since 3.8
*
* @param array $args Optional arguments to pass to `Languages::get_list()`.
* @return array List of `PLL_Language` objects or `PLL_Language` object properties.
*/
public function get_list( array $args = array() ): array {
$all_args = $args;
unset( $args['fields'] );
$languages = $this->languages->get_list( $args );
foreach ( $this->stack as $key ) {
if ( ! isset( $this->proxies[ $key ] ) ) {
continue;
}
$languages = $this->proxies[ $key ]->filter( $languages );
}
$languages = array_values( $languages ); // Re-index.
return $this->languages->maybe_convert_list( $languages, $all_args );
}
/**
* Stacks a proxy that will filter the list of languages.
*
* @since 3.8
*
* @param string $key Proxy's key.
* @return Languages_Proxies
*/
public function filter( string $key ): Languages_Proxies {
$this->stack[] = $key;
return $this;
}
}