PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / trunk
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping vtrunk
6.12.1 6.12.0 6.11.0 6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / src / WPDesk / FS / TableRate / ShippingMethod / MethodLogoSettingsField.php
flexible-shipping / src / WPDesk / FS / TableRate / ShippingMethod Last commit date
BlockEditing 2 weeks ago Convert 2 weeks ago Duplicate 2 weeks ago Management 2 weeks ago Timestamps 2 weeks ago Tracker 2 weeks ago views 2 weeks ago CommonMethodSettings.php 2 weeks ago FreeShippingCalculator.php 2 weeks ago FreeShippingThresholdRuleValidator.php 2 weeks ago MethodDescription.php 2 weeks ago MethodLogo.php 2 weeks ago MethodLogoCheckoutBlocksAssets.php 2 weeks ago MethodLogoSettingsField.php 2 weeks ago MethodSettings.php 2 weeks ago MethodTitle.php 2 weeks ago RateCalculator.php 2 weeks ago RateCalculatorFactory.php 2 weeks ago SettingsDisplayPreparer.php 2 weeks ago SettingsProcessor.php 2 weeks ago SingleMethodSettings.php 2 weeks ago
MethodLogoSettingsField.php
114 lines
1 <?php
2 /**
3 * Class MethodLogoSettingsField
4 *
5 * @package WPDesk\FS\TableRate\ShippingMethod
6 */
7
8 namespace WPDesk\FS\TableRate\ShippingMethod;
9
10 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
11
12 /**
13 * Renders the shipping method logo picker field.
14 */
15 class MethodLogoSettingsField implements Hookable {
16
17 const FIELD_TYPE = 'method_logo';
18
19 /**
20 * @var bool
21 */
22 private static $script_rendered = false;
23
24 /**
25 * Hooks.
26 */
27 public function hooks() {
28 add_filter( 'woocommerce_generate_' . self::FIELD_TYPE . '_html', [ $this, 'generate_field_html' ], 10, 4 );
29 add_action( 'flexible_shipping_method_script', [ $this, 'print_media_script' ], 10, 2 );
30 }
31
32 /**
33 * @param string $field_html .
34 * @param string $key .
35 * @param array $data .
36 * @param \WC_Shipping_Method $shipping_method .
37 *
38 * @return string
39 */
40 public function generate_field_html( $field_html, $key, $data, $shipping_method ) {
41 $field_key = $shipping_method->get_field_key( $key );
42 $attachment_id = absint( $data['default'] ?? 0 );
43 $image_url = '';
44 $image_alt = '';
45
46 if ( 0 !== $attachment_id ) {
47 $image_data = MethodLogo::get_logo_data(
48 [
49 CommonMethodSettings::METHOD_LOGO_ID => $attachment_id,
50 CommonMethodSettings::METHOD_TITLE => $data[ CommonMethodSettings::METHOD_TITLE ] ?? '',
51 ]
52 );
53 $image_url = $image_data['url'];
54 $image_alt = $image_data['alt'];
55 }
56
57 return $this->render_view(
58 'method-logo-settings-field.php',
59 [
60 'field_key' => $field_key,
61 'attachment_id' => $attachment_id,
62 'image_url' => $image_url,
63 'image_alt' => $image_alt,
64 'field_title' => $data['title'] ?? '',
65 'description' => $data['description'] ?? '',
66 'select_label' => 0 === $attachment_id ? __( 'Choose logo', 'flexible-shipping' ) : __( 'Change logo', 'flexible-shipping' ),
67 'remove_label' => __( 'Remove logo', 'flexible-shipping' ),
68 'is_logo_selected' => 0 !== $attachment_id,
69 ]
70 );
71 }
72
73 /**
74 * @param string $method_id .
75 * @param int $instance_id .
76 */
77 public function print_media_script( $method_id, $instance_id ) {
78 if ( self::$script_rendered ) {
79 return;
80 }
81
82 wp_enqueue_media();
83 self::$script_rendered = true;
84 $choose_label = __( 'Choose logo', 'flexible-shipping' );
85 $change_label = __( 'Change logo', 'flexible-shipping' );
86 $script_html = $this->render_view(
87 'method-logo-settings-field-script.php',
88 [
89 'choose_label' => $choose_label,
90 'change_label' => $change_label,
91 ]
92 );
93
94 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
95 echo $script_html;
96 }
97
98 /**
99 * @param string $view_file .
100 * @param array $data .
101 *
102 * @return string
103 */
104 private function render_view( $view_file, array $data = [] ) {
105 $view_path = __DIR__ . '/views/' . $view_file;
106 $view_data = $data;
107
108 ob_start();
109 include $view_path;
110
111 return (string) ob_get_clean();
112 }
113 }
114