wpml-theme-string-scanner.class.php
1.61 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
<?php
class WPML_Theme_String_Scanner extends WPML_String_Scanner implements IWPML_ST_String_Scanner {
public function scan() {
$this->current_type = 'theme';
$this->scan_starting( $this->current_type );
/** @var WP_Theme $theme_info */
$theme_info = wp_get_theme();
$text_domain = $theme_info->get( 'TextDomain' );
$current_theme_name = array_key_exists( 'theme', $_POST ) ? $_POST['theme'] : '';
$this->current_path = $current_theme_name ? get_theme_root() . '/' . $current_theme_name : '';
$current_theme = wp_get_theme( $current_theme_name );
$this->text_domain = $current_theme->get( 'TextDomain' );
$this->init_text_domain( $text_domain );
$this->scan_theme_files();
$this->set_stats( 'theme_localization_domains', $current_theme_name );
//@todo test this properly
if ( $theme_info && $theme_info->exists() ) {
$this->remove_notice( $theme_info->get( 'Name' ) );
}
$this->scan_response();
}
private function scan_theme_files() {
require_once WPML_ST_PATH . '/inc/potx.php';
if ( array_key_exists( 'files', $_POST ) ) {
foreach ( $_POST['files'] as $file ) {
$file = (string) filter_var( $file, FILTER_SANITIZE_STRING );
if ( $this->file_hashing->hash_changed( $file ) ) {
$this->add_stat( sprintf( __( 'Scanning file: %s', 'wpml-string-translation' ), $file ) );
$this->add_scanned_file( $file );
_potx_process_file( $file, 0, array( $this, 'store_results' ), '_potx_save_version', $this->get_default_domain() );
} else {
$this->add_stat( sprintf( __( 'Skipping file: %s', 'wpml-string-translation' ), $file ) );
}
}
}
}
}