Files
acrib.es/wp-content/plugins/polylang/src/Model/Languages_Proxies.php
Malin f3ff7b7186 feat: initial ACRIB WordPress deployment
- WordPress 6.9.4 (es_ES) with Kadence theme
- Homepage: Hero, La Asociación, Pilares, Beneficios, Eventos, Miembros, Hazte Miembro, Contacto
- Brand identity: #13294b navy, #a12932 burgundy, #c69c48 gold
- Fonts: Raleway (headings) + Source Sans 3 (body) + Lato (UI)
- Plugins: Kadence Blocks, Polylang, Contact Form 7
- Custom CSS with full brand styling and responsive layout
- HTTPS enforced via wp-config.php proxy detection
2026-05-19 19:25:59 +02:00

89 lines
1.9 KiB
PHP

<?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;
}
}