log = new Moceansms_WooCoommerce_Logger(); $this->option_id = "moceansms_{$this::$plugin_identifier}"; $this->plugin_name = 'WP ERP'; $this->plugin_medium = 'wp_' . str_replace( ' ', '_', strtolower($this->plugin_name)); $this->hook_action = "moceansms_send_reminder_{$this::$plugin_identifier}"; } public static function plugin_activated() { $log = new Moceansms_WooCoommerce_Logger(); if( ! is_plugin_active(sprintf("%s/wp-erp.php", self::$plugin_identifier))) { return false; } return true; } public function register() { add_action( 'erp_create_new_people', array( $this, 'send_sms_on'), 10, 3); } public function get_option_id() { return $this->option_id; } public function get_setting_section_data() { return array( 'id' => $this->get_option_id(), 'title' => __( $this->plugin_name, MOCEANSMS_TEXT_DOMAIN ), ); } public function get_setting_field_data() { $setting_fields = array( $this->get_enable_notification_fields(), //$this->get_send_from_fields(), $this->get_send_on_fields(), ); foreach($this->get_sms_template_fields() as $sms_templates) { $setting_fields[] = $sms_templates; } return $setting_fields; } public function get_plugin_settings($with_identifier = false) { $settings = array( "moceansms_automation_enable_notification" => moceansms_get_options("moceansms_automation_enable_notification", $this->get_option_id()), "moceansms_send_from" => moceansms_get_options('moceansms_automation_send_from', $this->get_option_id()), "moceansms_automation_send_on" => moceansms_get_options("moceansms_automation_send_on", $this->get_option_id()), "moceansms_automation_sms_template_new_customer" => moceansms_get_options("moceansms_automation_sms_template_new_customer", $this->get_option_id()), "moceansms_automation_sms_template_new_lead" => moceansms_get_options("moceansms_automation_sms_template_new_lead", $this->get_option_id()), "moceansms_automation_sms_template_new_opportunity" => moceansms_get_options("moceansms_automation_sms_template_new_opportunity", $this->get_option_id()), "moceansms_automation_sms_template_new_subscriber" => moceansms_get_options("moceansms_automation_sms_template_new_subscriber", $this->get_option_id()), ); if ($with_identifier) { return array( self::$plugin_identifier => $settings, ); } return $settings; } private function get_enable_notification_fields() { return array( 'name' => 'moceansms_automation_enable_notification', 'label' => __( 'Enable WhatsApp notifications', MOCEANSMS_TEXT_DOMAIN ), 'desc' => ' ' . __( 'Enable', MOCEANSMS_TEXT_DOMAIN ), 'type' => 'checkbox', 'default' => 'off' ); } private function get_send_from_fields() { return array( 'name' => 'moceansms_automation_send_from', 'label' => __( 'Send from', MOCEANSMS_TEXT_DOMAIN ), 'desc' => __( 'Sender of the WhatsApp when a message is received at a mobile phone', MOCEANSMS_TEXT_DOMAIN ), 'type' => 'text', ); } private function get_send_on_fields() { return array( 'name' => 'moceansms_automation_send_on', 'label' => __( 'Send notification on', MOCEANSMS_TEXT_DOMAIN ), 'desc' => __( 'Choose when to send a WhatsApp notification message to your customer', MOCEANSMS_TEXT_DOMAIN ), 'type' => 'multicheck', 'options' => array( 'new_customer' => 'New customer', 'new_lead' => 'New lead', 'new_opportunity' => 'New opportunity', 'new_subscriber' => 'New subscriber', ) ); } private function get_sms_template_fields() { return array( array( 'name' => 'moceansms_automation_sms_template_new_customer', 'label' => __( 'New customer WhatsApp message', MOCEANSMS_TEXT_DOMAIN ), 'desc' => sprintf('Customize your WhatsApp with ', $this->get_option_id() ), 'type' => 'textarea', 'rows' => '8', 'cols' => '500', 'css' => 'min-width:350px;', 'default' => __( 'Hi [first_name], we would like to personally thank you for using our services.', MOCEANSMS_TEXT_DOMAIN ) ), array( 'name' => 'moceansms_automation_sms_template_new_lead', 'label' => __( 'New lead WhatsApp message', MOCEANSMS_TEXT_DOMAIN ), 'desc' => sprintf('Customize your WhatsApp with ', $this->get_option_id() ), 'type' => 'textarea', 'rows' => '8', 'cols' => '500', 'css' => 'min-width:350px;', 'default' => __( 'Hi [first_name], thank you for showing interest in our services. Our sales representative will contact you shortly.', MOCEANSMS_TEXT_DOMAIN ) ), array( 'name' => 'moceansms_automation_sms_template_new_opportunity', 'label' => __( 'New opportunity WhatsApp message', MOCEANSMS_TEXT_DOMAIN ), 'desc' => sprintf('Customize your WhatsApp with ', $this->get_option_id() ), 'type' => 'textarea', 'rows' => '8', 'cols' => '500', 'css' => 'min-width:350px;', 'default' => __( 'Hi [first_name], when would be a good time for our sales representative to schedule a call with you to discuss more on our service?', MOCEANSMS_TEXT_DOMAIN ) ), array( 'name' => 'moceansms_automation_sms_template_new_subscriber', 'label' => __( 'New subscriber WhatsApp message', MOCEANSMS_TEXT_DOMAIN ), 'desc' => sprintf('Customize your WhatsApp with ', $this->get_option_id() ), 'type' => 'textarea', 'rows' => '8', 'cols' => '500', 'css' => 'min-width:350px;', 'default' => __( 'Hi [first_name], thank you for subscribing to us. We will notify you of HOT contents', MOCEANSMS_TEXT_DOMAIN ) ), ); } public function get_keywords_field() { return array( 'customer' => array( 'first_name', 'last_name', 'email', 'phone', 'life_stage', 'date_of_birth', 'age', 'mobile', 'website', 'fax', 'address_1', 'address_2', 'city', 'country', 'state', 'postal_code', 'content_source', 'other', 'notes', 'facebook', 'twitter', 'googleplus', 'linkedin', ), 'contact_owner' => array( 'cowner_first_name', 'cowner_last_name', 'cowner_email', ), ); } public function send_sms_on($people_id, $args, $people_type) { $plugin_settings = $this->get_plugin_settings(); $enable_notifications = $plugin_settings['moceansms_automation_enable_notification']; $send_on = $plugin_settings['moceansms_automation_send_on']; $this->log->add("360MessengerWhatsApp", "people_id: {$people_id}"); $status = "new_{$args['life_stage']}"; if($enable_notifications === "on") { $this->log->add("360MessengerWhatsApp", "enable notifications: on"); if(!empty($send_on) && is_array($send_on)) { if(array_key_exists($status, $send_on)) { $this->log->add("360MessengerWhatsApp", "enable {$status} notifications: on"); $this->send_customer_notification($args, $status); } } } return false; } public function send_customer_notification($args, $status) { $this->log->add("360MessengerWhatsApp", "send_customer_notification status: {$status}"); $settings = $this->get_plugin_settings(); $sms_from = $settings['moceansms_automation_send_from']; // get number from args $phone_no = $args['phone']; if( !ctype_digit($phone_no) ) { $this->log->add("360MessengerWhatsApp", "phone_no is not a digit: {$phone_no}. Aborting..."); return; } if( $args['country'] != '-1' ) { $phone_no = MoceanSMS_SendSMS_Sms::get_formatted_number($args['phone'], $args['country']); } else { $phone_no = $args['phone']; } $this->log->add("360MessengerWhatsApp", "phone_no: {$phone_no}"); // get message template from status $msg_template = $settings["moceansms_automation_sms_template_{$status}"]; $message = $this->replace_keywords_with_value($args, $msg_template); MoceanSMS_SendSMS_Sms::send_sms($sms_from, $phone_no, $message, $this->plugin_medium); } /* returns the message with keywords replaced to original value it points to eg: [name] => 'customer name here' */ protected function replace_keywords_with_value($args, $message) { // use regex to match all [stuff_inside] // return the message // preg_match_all('/\[(.*?)\]/', $message, $keywords); $wp_user = new WP_User( intval($args['contact_owner']) ); $keywords = array( '[first_name]' => !empty($args['first_name']) ? $args['first_name'] : '', '[last_name]' => !empty($args['last_name']) ? $args['last_name'] : '', '[email]' => !empty($args['email']) ? $args['email'] : '', '[phone]' => !empty($args['phone']) ? $args['phone'] : '', '[life_stage]' => !empty($args['life_stage']) ? $args['life_stage'] : '', '[date_of_birth]' => !empty($args['date_of_birth']) ? $args['date_of_birth'] : '', '[age]' => !empty($args['contact_age']) ? $args['contact_age'] : '', '[mobile]' => !empty($args['mobile']) ? $args['mobile'] : '', '[website]' => !empty($args['website']) ? $args['website'] : '', '[fax]' => !empty($args['fax']) ? $args['fax'] : '', '[address_1]' => !empty($args['street_1']) ? $args['street_1'] : '', '[address_2]' => !empty($args['street_2']) ? $args['street_2'] : '', '[city]' => !empty($args['city']) ? $args['city'] : '', '[country]' => $args['country'] !== -1 ? $args['country'] : '', '[state]' => !empty($args['state']) ? $args['state'] : '', '[postal_code]' => !empty($args['postal_code']) ? $args['postal_code'] : '', '[content_source]' => !empty($args['content_source']) ? $args['content_source'] : '', '[other]' => !empty($args['other']) ? $args['other'] : '', '[notes]' => !empty($args['notes']) ? $args['notes'] : '', '[facebook]' => !empty($args['facebook']) ? $args['facebook'] : '', '[twitter]' => !empty($args['twitter']) ? $args['twitter'] : '', '[googleplus]' => !empty($args['googleplus']) ? $args['googleplus'] : '', '[linkedin]' => !empty($args['linkedin']) ? $args['linkedin'] : '', '[cowner_first_name]' => $wp_user->first_name, '[cowner_last_name]' => $wp_user->last_name, '[cowner_email]' => $wp_user->email, ); return str_replace(array_keys($keywords), array_values($keywords), $message); } }