self::get_default_product_template(), 'order_template' => self::get_default_order_template(), 'quote_template' => self::get_default_quote_template(), 'status_templates' => self::get_default_status_templates(), ); add_option( 'ordercourier_templates', $default_templates, '', 'no' ); } self::schedule_events(); update_option( 'ordercourier_version', ORDERCOURIER_VERSION ); } } /** * Create database tables. */ public static function create_tables() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'oc_events'; // dbDelta() format: plain CREATE TABLE, one column per line, two spaces after PRIMARY KEY. $sql = "CREATE TABLE {$table_name} ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, created_gmt datetime NOT NULL, event varchar(32) NOT NULL, source varchar(16) NOT NULL, product_id bigint(20) unsigned DEFAULT NULL, order_id bigint(20) unsigned DEFAULT NULL, agent_id bigint(20) unsigned DEFAULT NULL, session_hash char(32) NOT NULL, PRIMARY KEY (id), KEY created_gmt (created_gmt), KEY event (event), KEY source (source), KEY session_hash (session_hash) ) {$charset_collate};"; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta( $sql ); } /** * Create default options. */ private static function create_options() { $default_settings = array( 'enabled' => 'yes', 'default_phone' => '', 'mode' => 'order_first', 'order_status' => 'pending', 'guest_allowed' => 'yes', 'countries' => array(), 'hide_checkout_button' => 'no', 'product_button_label' => __( 'Order via Chat', 'ordercourier' ), 'cart_button_label' => __( 'Send Order via Chat', 'ordercourier' ), 'checkout_button_label' => __( 'Confirm via Chat', 'ordercourier' ), 'button_color' => '#25D366', 'button_text_color' => '#ffffff', 'show_product_button' => 'yes', 'show_shop_button' => 'no', 'show_cart_button' => 'yes', 'show_minicart_button' => 'yes', 'widget_enabled' => 'no', 'widget_position' => 'bottom-right', 'widget_greeting' => __( 'Need help? Chat with us!', 'ordercourier' ), 'rate_limit' => 5, 'rate_limit_window' => 600, 'data_retention_days' => 90, 'uninstall_cleanup' => 'no', ); add_option( 'ordercourier_settings', $default_settings, '', 'yes' ); $default_templates = array( 'product_template' => self::get_default_product_template(), 'order_template' => self::get_default_order_template(), 'quote_template' => self::get_default_quote_template(), 'status_templates' => self::get_default_status_templates(), ); add_option( 'ordercourier_templates', $default_templates, '', 'no' ); add_option( 'ordercourier_version', ORDERCOURIER_VERSION, '', 'no' ); } /** * Get default product template. * * @return string */ private static function get_default_product_template() { return __( "Hi! I'd like to order:\n\n{items}\n\nFrom: {site_name}", 'ordercourier' ); } /** * Get default order template. * * @return string */ private static function get_default_order_template() { return "*New Order #{order_number}*\n\n" . "*Items:*\n{items}\n\n" . '{coupons}' . '{fees}' . "*Shipping:* {shipping_method} - {shipping_total}\n" . "*Tax:* {tax}\n" . "*Total:* {total}\n\n" . "*Customer:*\n{customer_name}\n{phone}\n{email}\n\n" . "*Shipping Address:*\n{shipping_address}\n\n" . "{note}\n\n" . 'View order: {order_link}'; } /** * Get default quote template. * * @return string */ private static function get_default_quote_template() { return "*Quote Request #{order_number}*\n\n" . "*Items:*\n{items}\n\n" . "*Customer:*\n{customer_name}\n{phone}\n{email}\n\n" . 'Please provide pricing for these items.'; } /** * Get default status templates. * * @return array */ private static function get_default_status_templates() { return array( 'processing' => __( 'Your order #{order_number} is being processed. We will update you soon!', 'ordercourier' ), 'completed' => __( 'Your order #{order_number} is complete. Thank you for your purchase!', 'ordercourier' ), 'shipped' => __( 'Your order #{order_number} has been shipped and is on its way to you!', 'ordercourier' ), ); } /** * Schedule recurring events. */ private static function schedule_events() { if ( ! wp_next_scheduled( 'ordercourier_cleanup_events' ) ) { wp_schedule_event( time(), 'daily', 'ordercourier_cleanup_events' ); } } }