class-wpml-page-builders-update-media.php
1.56 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
<?php
class WPML_Page_Builders_Update_Media implements IWPML_PB_Media_Update {
/** @var WPML_Page_Builders_Update $pb_update */
private $pb_update;
/** @var WPML_Translation_Element_Factory $element_factory */
private $element_factory;
/** @var IWPML_PB_Media_Nodes_Iterator $node_iterator */
protected $node_iterator;
/** @var WPML_Page_Builders_Media_Usage|null $media_usage */
protected $media_usage;
public function __construct(
WPML_Page_Builders_Update $pb_update,
WPML_Translation_Element_Factory $element_factory,
IWPML_PB_Media_Nodes_Iterator $node_iterator,
WPML_Page_Builders_Media_Usage $media_usage = null
) {
$this->pb_update = $pb_update;
$this->element_factory = $element_factory;
$this->node_iterator = $node_iterator;
$this->media_usage = $media_usage;
}
/**
* @param WP_Post $post
*/
public function translate( $post ) {
$element = $this->element_factory->create_post( $post->ID );
$source_element = $element->get_source_element();
if ( ! $source_element ) {
return;
}
$lang = $element->get_language_code();
$source_lang = $source_element->get_language_code();
$original_post_id = $source_element->get_id();
$converted_data = $this->pb_update->get_converted_data( $post->ID );
if ( ! $converted_data ) {
return;
}
$converted_data = $this->node_iterator->translate( $converted_data, $lang, $source_lang );
$this->pb_update->save( $post->ID, $original_post_id, $converted_data );
if ( $this->media_usage ) {
$this->media_usage->update( $original_post_id );
}
}
}