PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 1.8
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v1.8
2.3.2 2.3.1 2.3.0 2.2.8 2.2.7 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.11.0 1.11.1 1.11.2 1.6 1.7 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.10 1.9.11 All 60 releases
merchant / inc / modules / wait-list / class-wait-list.php

class-wait-list.php in Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant 1.8, at inc/modules/wait-list/class-wait-list.php

224 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Wait list
5 *
6 * @package Merchant
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit; // Exit if accessed directly
11 }
12
13 /**
14 * Wait list class.
15 *
16 */
17 class Merchant_Wait_List extends Merchant_Add_Module {
18
19 /**
20 * Module ID.
21 *
22 */
23 const MODULE_ID = 'wait-list';
24
25 /**
26 * Module path.
27 */
28 const MODULE_DIR = MERCHANT_DIR . 'inc/modules/' . self::MODULE_ID;
29
30 /**
31 * Is module preview.
32 *
33 */
34 public static $is_module_preview = false;
35
36 /**
37 * Constructor.
38 *
39 */
40 public function __construct() {
41 // Module id.
42 $this->module_id = self::MODULE_ID;
43
44 // WooCommerce only.
45 $this->wc_only = true;
46
47 // Parent construct.
48 parent::__construct();
49
50 // Module section.
51 $this->module_section = 'convert-more';
52
53 // Module default settings.
54 $this->module_default_settings = array(
55 'form_title' => __( 'New stock is coming! Email me when this item is back in stock', 'merchant' ),
56 'form_email_label' => __( 'Your Email Address', 'merchant' ),
57 'form_button_text' => __( 'Notify Me', 'merchant' ),
58 'form_success_message' => __( 'You have been successfully added to our stock waitlist. As soon as new stock becomes available, we will notify you via email.', 'merchant' ),
59 'email_new_subscriber' => __( 'Hello, thank you for subscribing to the stock waitlist for {product}. We will email you once the product back in stock.', 'merchant' ),
60 'email_update' => __( 'Hello, thanks for your patience and finally the wait is over! Your {product} is now back in stock! We only have a limited amount of stock, and this email is not a guarantee you’ll get one. Add this {product} directly to your cart.',
61 'merchant' ),
62 'form_nonce_field' => wp_nonce_field( 'merchant_wait_list_action', 'merchant_wait_list_action', true, false )
63 );
64
65 // Mount preview url.
66 $preview_url = site_url( '/' );
67
68 if ( function_exists( 'wc_get_products' ) ) {
69 $products = wc_get_products( array( 'limit' => 1 ) );
70
71 if ( ! empty( $products ) && ! empty( $products[0] ) ) {
72 $preview_url = get_permalink( $products[0]->get_id() );
73 }
74 }
75
76 // Module data.
77 $this->module_data = Merchant_Admin_Modules::$modules_data[ self::MODULE_ID ];
78 $this->module_data['preview_url'] = $preview_url;
79
80 // Module options path.
81 $this->module_options_path = self::MODULE_DIR . '/admin/options.php';
82
83 // Is module preview page.
84 if ( is_admin() && parent::is_module_settings_page() ) {
85 self::$is_module_preview = true;
86
87 // Enqueue admin styles.
88 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_css' ) );
89
90 // Admin preview box.
91 add_filter( 'merchant_module_preview', array( $this, 'render_admin_preview' ), 10, 2 );
92 }
93
94 if ( Merchant_Modules::is_module_active( self::MODULE_ID ) && is_admin() ) {
95 // Init translations.
96 $this->init_translations();
97 }
98 }
99
100 /**
101 * Init translations.
102 *
103 * @return void
104 */
105 public function init_translations() {
106 $settings = $this->get_module_settings();
107 if ( ! empty( $settings['form_title'] ) ) {
108 Merchant_Translator::register_string( $settings['form_title'], esc_html__( 'Wait list: Form title', 'merchant' ) );
109 }
110 if ( ! empty( $settings['form_email_label'] ) ) {
111 Merchant_Translator::register_string( $settings['form_email_label'], esc_html__( 'Wait list: Form email label', 'merchant' ) );
112 }
113 if ( ! empty( $settings['form_button_text'] ) ) {
114 Merchant_Translator::register_string( $settings['form_button_text'], esc_html__( 'Wait list: Form button text', 'merchant' ) );
115 }
116 if ( ! empty( $settings['form_success_message'] ) ) {
117 Merchant_Translator::register_string( $settings['form_success_message'], esc_html__( 'Wait list: Form success message', 'merchant' ) );
118 }
119 if ( ! empty( $settings['email_new_subscriber'] ) ) {
120 Merchant_Translator::register_string( $settings['email_new_subscriber'], esc_html__( 'Wait list: Email new subscriber', 'merchant' ) );
121 }
122 if ( ! empty( $settings['email_update'] ) ) {
123 Merchant_Translator::register_string( $settings['email_update'], esc_html__( 'Wait list: Email update', 'merchant' ) );
124 }
125 }
126
127 /**
128 * Admin enqueue CSS.
129 *
130 * @return void
131 */
132 public function admin_enqueue_css() {
133 if ( parent::is_module_settings_page() ) {
134 wp_enqueue_style( 'merchant-' . self::MODULE_ID, MERCHANT_URI . 'assets/css/modules/' . self::MODULE_ID . '/wait-list.min.css', [], MERCHANT_VERSION );
135 wp_enqueue_style( 'merchant-admin-' . self::MODULE_ID, MERCHANT_URI . 'assets/css/modules/' . self::MODULE_ID . '/admin/preview.min.css', array(), MERCHANT_VERSION );
136 }
137 }
138
139 /**
140 * Render admin preview
141 *
142 * @param Merchant_Admin_Preview $preview
143 * @param string $module
144 *
145 * @return Merchant_Admin_Preview
146 */
147 public function render_admin_preview( $preview, $module ) {
148 if ( self::MODULE_ID === $module ) {
149 ob_start();
150 self::admin_preview_content();
151 $content = ob_get_clean();
152
153 $preview->set_html( $content );
154
155 $preview->set_text( 'form_title', '.merchant-wait-list-title' );
156 $preview->set_text( 'form_button_text', '.merchant-wait-list-submit' );
157 $preview->set_attribute( 'form_email_label', '#merchant-wait-list-email', 'placeholder' );
158 }
159
160 return $preview;
161 }
162
163 /**
164 * Admin preview content.
165 *
166 * @return void
167 */
168 public function admin_preview_content() {
169 $settings = $this->get_module_settings();
170 ?>
171
172 <div class="mrc-preview-single-product-elements">
173 <div class="mrc-preview-left-column">
174 <div class="mrc-preview-product-image-wrapper">
175 <div class="mrc-preview-product-image"></div>
176 <div class="mrc-preview-product-image-thumbs">
177 <div class="mrc-preview-product-image-thumb"></div>
178 <div class="mrc-preview-product-image-thumb"></div>
179 <div class="mrc-preview-product-image-thumb"></div>
180 </div>
181 </div>
182 </div>
183 <div class="mrc-preview-right-column">
184 <div class="mrc-preview-text-placeholder"></div>
185 <div class="mrc-preview-text-placeholder mrc-mw-70"></div>
186 <div class="mrc-preview-text-placeholder mrc-mw-30"></div>
187 <div class="preview-merchant-wait-list">
188 <?php
189 $preview_html = str_replace( 'required', '', $this->get_html( $settings ) );
190 echo wp_kses( $preview_html, merchant_kses_allowed_tags( array( 'forms', 'nonce' ) ) ); ?>
191 </div>
192 </div>
193 </div>
194
195 <?php
196 }
197
198 /**
199 * Get the module HTML.
200 *
201 * @param array $settings
202 *
203 * @return string
204 */
205 public function get_html( $settings ) {
206 $html = '<form id="merchant-wait-list" class="merchant-wait-list" method="post">';
207 $html .= '<p class="merchant-wait-list-title">' . Merchant_Translator::translate( $settings['form_title'] ) . '</p>';
208 $html .= '<div class="merchant-wait-list-email">';
209 $html .= '<label for="merchant-wait-list-email">' . Merchant_Translator::translate( $settings['form_email_label'] ) . ' <abbr class="required" title="required">*</abbr></label>';
210 $html .= '<input type="email" name="merchant-wait-list-email" id="merchant-wait-list-email" value="" autocomplete="email" placeholder="' . Merchant_Translator::translate( $settings['form_email_label'] ) . '" required="">';
211 $html .= '</div>';
212 $html .= '<button class="merchant-wait-list-submit" type="submit" name="subscribe">' . Merchant_Translator::translate( $settings['form_button_text'] ) . '</button>';
213 $html .= $settings['form_nonce_field'];
214 $html .= '</form>';
215
216 return $html;
217 }
218 }
219
220 // Initialize the module.
221 add_action( 'init', function () {
222 Merchant_Modules::create_module( new Merchant_Wait_List() );
223 } );
224