Packages.php
1.62 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
<?php
namespace WPML\TM\Jobs\Dispatch;
use WPML\Element\API\Languages;
use WPML\TM\API\Jobs;
class Packages extends Elements {
public static function dispatch(
callable $sendBatch,
Messages $messages,
callable $buildBatch,
$data,
$type = 'package'
) {
parent::dispatch( $sendBatch, $messages, $buildBatch, $data, $type );
}
protected static function filterElements( Messages $messages, $packagesData, $targetLanguages, $howToHandleExisting, $translateAutomatically ) {
$ignoredPackagesMessages = [];
$packagesToTranslation = [];
foreach ( $packagesData as $packageId => $packageData ) {
$packagesToTranslation[ $packageId ] = [
'type' => $packageData['type'],
'target_languages' => []
];
$package = apply_filters( 'wpml_get_translatable_item', null, $packageId, 'package' );
$packageLang = apply_filters( 'wpml_language_for_element', Languages::getDefaultCode(), $package );
foreach ( $targetLanguages as $language ) {
if ( $packageLang === $language ) {
$ignoredPackagesMessages [] = $messages->ignoreOriginalPackageMessage( $package, $language );
continue;
}
$job = Jobs::getElementJob(
(int) $package->ID,
(string) $package->get_element_type_prefix() . '_' . $package->kind_slug,
(string) $language
);
if ( $job && ( self::isProgressJob( $job ) || self::isCompletedJob( $job ) && $howToHandleExisting === \WPML_TM_Translation_Batch::HANDLE_EXISTING_LEAVE ) ) {
continue;
}
$packagesToTranslation[ $packageId ]['target_languages'] [] = $language;
}
}
return [ $packagesToTranslation, $ignoredPackagesMessages ];
}
}