PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / inc / template-classes / class-wcml-templates-factory.php
woocommerce-multilingual / inc / template-classes Last commit date
currency-switcher 1 month ago multi-currency 1 month ago setup 1 month ago status 1 month ago store-urls 1 month ago class-wcml-currencies-dropdown-ui.php 5 years ago class-wcml-custom-files-ui.php 1 month ago class-wcml-languages-upgrade-notice.php 4 years ago class-wcml-menus-wrap-base.php 1 month ago class-wcml-menus-wrap.php 1 month ago class-wcml-multilingual-ui.php 9 months ago class-wcml-not-translatable-attributes.php 1 month ago class-wcml-pointer-ui.php 1 year ago class-wcml-removed-cart-items-ui.php 1 month ago class-wcml-settings-ui.php 1 month ago class-wcml-st-taxonomy-ui.php 11 months ago class-wcml-sync-taxonomy.php 1 month ago class-wcml-templates-factory.php 1 month ago class-wcml-troubleshooting-ui.php 1 month ago
class-wcml-templates-factory.php
92 lines
1 <?php
2
3 use WPML\Core\Twig_Environment;
4 use WPML\Core\Twig_Error_Syntax;
5 use WPML\Core\Twig_Error_Runtime;
6 use WPML\Core\Twig_Error_Loader;
7 use WPML\Core\Twig_Loader_Filesystem;
8
9 abstract class WCML_Templates_Factory extends WPML_Templates_Factory {
10
11 public function get_view( $template = null, $model = null ) {
12 $output = '';
13 $this->maybe_init_twig();
14
15 if ( null === $model ) {
16 $model = $this->get_model();
17 }
18 if ( null === $template ) {
19 $template = $this->get_template();
20 }
21
22 $this->before_render();
23
24 try {
25 $output = $this->twig->render( $template, $model );
26 } catch ( RuntimeException $e ) {
27 if ( $this->is_caching_enabled() ) {
28 $this->disable_twig_cache();
29 unset( $this->twig );
30 $this->maybe_init_twig();
31 $output = $this->get_view( $template, $model );
32 } else {
33 $this->add_exception_notice( $e );
34 }
35 } catch ( \WPML\Core\Twig\Error\SyntaxError $e ) {
36 $message = 'Invalid Twig template string: ' . $e->getRawMessage() . "\n" . $template;
37 $this->get_wp_api()->error_log( $message );
38 }
39
40 return $output;
41 }
42
43 protected function before_render() {
44
45 }
46
47 protected function maybe_init_twig() {
48 if ( $this->twig instanceof Twig_Environment ) {
49 return;
50 }
51 $loader = $this->get_twig_loader();
52
53 $environment_args = [];
54
55 if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
56 $environment_args['debug'] = true;
57 }
58
59 if ( $this->is_caching_enabled() ) {
60 $wpml_cache_directory = new WPML_Cache_Directory( $this->get_wp_api() );
61 $this->cache_directory = $wpml_cache_directory->get( 'twig' );
62
63 if ( $this->cache_directory ) {
64 $environment_args['cache'] = $this->cache_directory;
65 $environment_args['auto_reload'] = true;
66 } else {
67 $this->disable_twig_cache();
68 }
69 }
70
71 $this->twig = $this->get_twig_environment( $loader, $environment_args );
72 if ( is_array( $this->custom_functions ) ) {
73 foreach ( $this->custom_functions as $custom_function ) {
74 $this->twig->addFunction( $custom_function );
75 }
76 }
77 if ( is_array( $this->custom_filters ) ) {
78 foreach ( $this->custom_filters as $custom_filter ) {
79 $this->twig->addFilter( $custom_filter );
80 }
81 }
82 }
83
84 protected function get_twig_loader() {
85 return new Twig_Loader_Filesystem( $this->template_paths );
86 }
87
88 private function get_twig_environment( $loader, $environment_args ): Twig_Environment {
89 return new Twig_Environment( $loader, $environment_args );
90 }
91 }
92