Utility.php
1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
namespace WPML\TM\Menu\TranslationBasket;
class Utility {
/** @var \SitePress */
private $sitepress;
/** @var \WPML_Translator_Records */
private $translatorRecords;
/**
* @param \SitePress $sitepress
* @param \WPML_Translator_Records $translatorRecords
*/
public function __construct( \SitePress $sitepress, \WPML_Translator_Records $translatorRecords ) {
$this->sitepress = $sitepress;
$this->translatorRecords = $translatorRecords;
}
/**
* @return array
*/
public function getTargetLanguages() {
$basketLanguages = \TranslationProxy_Basket::get_target_languages();
$targetLanguages = [];
if ( is_array( $basketLanguages ) ) {
$notBasketLanguage = function ( $lang ) use ( $basketLanguages ) {
return ! in_array( $lang['code'], $basketLanguages, true );
};
$isBasketSourceLanguage = function ( $lang ) {
return \TranslationProxy_Basket::get_source_language() === $lang['code'];
};
$addFlag = function ( $lang ) {
$lang['flag'] = $this->sitepress->get_flag_img( $lang['code'] );
return $lang;
};
$targetLanguages = wpml_collect( $this->sitepress->get_active_languages() )
->reject( $notBasketLanguage )
->reject( $isBasketSourceLanguage )
->map( $addFlag )
->toArray();
}
return $targetLanguages;
}
/**
* @param $targetLanguages
*
* @return bool
*/
public function isTheOnlyAvailableTranslatorForTargetLanguages( $targetLanguages ) {
if ( \TranslationProxy::is_current_service_active_and_authenticated() ) {
return false;
}
$translators = $this->translatorRecords->get_users_with_languages(
\TranslationProxy_Basket::get_source_language(),
array_keys( $targetLanguages ),
false
);
return count( $translators ) === 1 && $translators[0]->ID === get_current_user_id();
}
/**
* @return bool
*/
public function isTheOnlyAvailableTranslator() {
return $this->isTheOnlyAvailableTranslatorForTargetLanguages( $this->getTargetLanguages() );
}
}