Completed
Push — master ( 029b71...a74f25 )
by Dennis
01:20
created

HrefLang::get_hreflang()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace lloc\Msls\Map;
4
5
use lloc\Msls\MslsBlogCollection;
6
7
/**
8
 * Class HrefLang
9
 * @package lloc\Msls\Map
10
 */
11
class HrefLang {
12
13
	/**
14
	 * @var array
15
	 */
16
	protected $map = [];
17
18
	/**
19
	 * @param MslsBlogCollection $blogs
20
	 */
21
	public function __construct( MslsBlogCollection $blogs ) {
22
		$map = [];
23
		foreach ( $blogs->get_objects() as $blog ) {
24
			$map[ $blog->get_alpha2() ][] = $blog->get_language();
25
		}
26
27
		foreach ( $map as $alpha2 => $languages ) {
28
			if ( 1 == count( $languages ) ) {
29
				$this->map[ $languages[0] ] = $alpha2;
30
			} else {
31
				foreach ( $languages as $language ) {
32
					$this->map[ $language ] = $this->get_hreflang( $language );
33
				}
34
			}
35
		}
36
	}
37
38
	/**
39
	 * @param string $language
40
	 *
41
	 * @return string
42
	 */
43
	protected function get_hreflang( string $language ): string {
44
		$parts = explode( '_', $this->map[ $language ] ?? $language );
45
46
		return 1 == $parts ? $parts[0] : $parts[0] . '-' . $parts[1];
47
	}
48
49
	/**
50
	 * @param string $language
51
	 *
52
	 * @return string
53
	 */
54
	public function get( string $language ): string {
55
		if ( ! has_filter( 'msls_head_hreflang' ) ) {
56
			return $this->map[ $language ] ?? $language;
57
		}
58
59
		/**
60
		 * Overrides the hreflang value
61
		 *
62
		 * @param string $language
63
		 *
64
		 * @since 0.9.9
65
		 */
66
		return (string) apply_filters( 'msls_head_hreflang', $language );
67
	}
68
69
}