StringsLanguageChanged.php
1.38 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
<?php
namespace WPML\ST\MO\Hooks;
use WPML\FP\Fns;
use WPML\FP\Lst;
use WPML\FP\Obj;
use WPML\ST\MO\File\Manager;
use WPML\ST\MO\Generate\DomainsAndLanguagesRepository;
use function WPML\FP\pipe;
class StringsLanguageChanged implements \IWPML_Action {
private $domainsAndLanguageRepository;
private $manager;
private $getDomainsByStringIds;
/**
* @param DomainsAndLanguagesRepository $domainsAndLanguageRepository
* @param Manager $manager
* @param callable $getDomainsByStringIds
*/
public function __construct(
DomainsAndLanguagesRepository $domainsAndLanguageRepository,
Manager $manager,
callable $getDomainsByStringIds
) {
$this->domainsAndLanguageRepository = $domainsAndLanguageRepository;
$this->manager = $manager;
$this->getDomainsByStringIds = $getDomainsByStringIds;
}
public function add_hooks() {
add_action( 'wpml_st_language_of_strings_changed', [ $this, 'regenerateMOFiles' ] );
}
public function regenerateMOFiles( array $strings ) {
$stringDomains = call_user_func( $this->getDomainsByStringIds, $strings );
$this->domainsAndLanguageRepository
->get()
->filter( pipe( Obj::prop( 'domain' ), Lst::includes( Fns::__, $stringDomains ) ) )
->each( function ( $domainLangPair ) {
$this->manager->add( $domainLangPair->domain, $domainLangPair->locale );
} );
}
}