enable_notification = WooNotify()->Options( 'enable_notif_360Messenger_main' ); if ( $this->enable_notification ) { add_action( 'woocommerce_product_thumbnails', [ $this, 'showInSingleProduct' ], 100 ); add_action( 'woocommerce_single_product_summary', [ $this, 'showInSingleProduct' ], 39 ); add_action( 'wp_ajax_wc_360Messenger_save_notification_data', [ $this, 'updateSubscription' ] ); add_action( 'wp_ajax_nopriv_wc_360Messenger_save_notification_data', [ $this, 'updateSubscription' ] ); } } /*widget*/ public function form( $instance ) { $title = isset( $instance['title'] ) ? sanitize_text_field($instance['title']) : esc_html('خبرنامه پیامکی'); ?>
enable_notification || ! is_product() ) { return; } $groups = $this->getGroups(); if ( empty( $groups ) ) { return; } //old code // $args['before_widget']; //new code wp_kses_post( $args['before_widget'] ); $title = apply_filters( 'widget_title', $instance['title'] ); if ( ! empty( $title ) ) { esc_html(sanitize_text_field($args['before_title'] . ( $title ) . $args['after_title'])); } WooNotify_Shortcode(); $args['after_widget']; } /*نمایش در صفحه محصول*/ private function getGroups( $product_id = '' ) { if ( empty( self::$groups ) ) { $product_id = WooNotify()->ProductId( $product_id ); self::$groups = WooNotify_360Messenger_Contacts::getGroups( $product_id, true, true ); } return self::$groups; } /*فرم ثبت شماره برای محصول*/ public function showInSingleProduct() { $product_id = get_the_ID(); $is_old_product = ! get_post_meta( $product_id, '_is_360Messenger_set', true ); if ( $is_old_product && ! WooNotify()->Options( 'notif_old_pr' ) ) { $this->enable_notification = false; return; } $show_form = WooNotify()->getValue( 'enable_notif_360Messenger', $product_id ); if ( ! WooNotify()->maybeBool( $show_form ) ) { //این شرط اگر ریترن کنه یعنی نمایش دستی انتخاب شده return; } if ( strval( $show_form ) == 'thumbnail' ) { $stop = current_action() != 'woocommerce_product_thumbnails'; } else { $stop = current_action() == 'woocommerce_product_thumbnails'; } if ( $stop ) { return; } $this->displayForm( $product_id ); } public function displayForm( $product = '' ) { if ( ! $this->enable_notification ) { return; } $product_id = WooNotify()->ProductId( $product ); if ( ! is_product() || empty( $product_id ) ) { return; } $product = wc_get_product( $product_id ); $groups = $this->getGroups( $product_id ); if ( empty( $groups ) ) { return; } do_action( 'WooNotify_before_product_newsletter_form', $product ); $id = ++ self::$form_id; $can_be_subscribe = ! WooNotify()->hasNotifCond( 'notif_only_loggedin', $product_id ) || is_user_logged_in(); $disabled = ''; if ( ! $can_be_subscribe ) { $disabled = 'disabled="disabled"'; } ?> " ); var 360Messenger_group = []; form.find(".360Messenger-notif-groups:checked").each(function(i){ 360Messenger_group[i] = $(this).val(); }); $.ajax({ url : "' . admin_url( "admin-ajax.php" ) . '", type : "post", data : { action : "wc_360Messenger_save_notification_data", security: "' . wp_create_nonce( "wc_360Messenger_save_notification_data" ) . '", 360Messenger_mobile : form.find(".360Messenger-notif-mobile").val(), 360Messenger_group : 360Messenger_group, product_id : "' . $product_id . '", }, success : function( response ) { result.html( response ); } }); return false; }); }); ' ); } } public function updateSubscription() { check_ajax_referer( 'wc_360Messenger_save_notification_data', 'security' ); $error_image = '
';
$product_id = isset( $_POST['product_id'] ) ? absint( sanitize_text_field($_POST['product_id']) ) : 0;
if ( empty( $product_id ) ) {
if (get_locale() == 'fa_IR')
die( esc_html(sanitize_text_field($error_image)) . esc_html('حطایی رخ داده است.') );
else
die( esc_html(sanitize_text_field($error_image)) . esc_html('An error occurred.') );
}
$can_be_subscribe = ! WooNotify()->hasNotifCond( 'notif_only_loggedin', $product_id ) || is_user_logged_in();
if ( ! $can_be_subscribe ) {
die( sanitize_text_field($error_image) . WooNotify()->getValue( 'notif_only_loggedin_text', $product_id ) );
}
$mobile = WooNotify()->modifyMobile(esc_attr( sanitize_text_field( $_POST['360Messenger_mobile'] ?? '' )) );
if ( empty( $mobile ) ) {
if (get_locale() == 'fa_IR')
die( esc_html($error_image . 'شماره واتساپ را وارد نمایید.' ));
else
die( esc_html($error_image . 'Enter the 360Messenger number.') );
}
if ( ! WooNotify()->validateMobile( $mobile ) ) {
if (get_locale() == 'fa_IR')
die( esc_html($error_image . 'شماره واتساپ معتبر نیست.' ));
else
die( esc_html($error_image . 'The 360Messenger number is not valid.') );
}
if ( empty( $_POST['360Messenger_group'] ) ) {
if (get_locale() == 'fa_IR')
die( esc_html($error_image . 'انتخاب یکی از گزینه ها الزامیست.') );
else
die(esc_html( $error_image . 'Choosing one of the options is required.') );
}
$groups = (new WooNotify_360Messenger_Settings() )->WooNotify_360Messenger_array_sanitize_text_field( (array) $_POST['360Messenger_group'] );
$success_image = '
';
$contact = (array) WooNotify_360Messenger_Contacts::getContactByMobile( $product_id, $mobile );
if ( ! empty( $contact['id'] ) ) {
$old_groups = ! empty( $contact['groups'] ) ? explode( ',', $contact['groups'] ) : [];
$new_groups = array_merge( $old_groups, $groups );
$update = WooNotify_360Messenger_Contacts::updateContact( [
'id' => $contact['id'],
'product_id' => $product_id,
'mobile' => $mobile,
'groups' => $new_groups,
] );
if ( $update !== false ) {
if (get_locale() == 'fa_IR')
die( esc_html(sanitize_text_field($success_image) . 'اطلاعات شما با موفقیت بروز شد.') );
else
die( esc_html(sanitize_text_field($success_image) . 'Your information has been successfully updated.' ));
}
} else {
$insert = WooNotify_360Messenger_Contacts::insertContact( [
'product_id' => $product_id,
'mobile' => $mobile,
'groups' => $groups,
] );
if ( $insert ) {
if (get_locale() == 'fa_IR')
die(esc_html( sanitize_text_field($success_image) . 'اطلاعات شما با موفقیت ثبت شد.' ));
else
die( esc_html(sanitize_text_field($success_image) . 'Your information has been successfully registered.') );
}
}
if (get_locale() == 'fa_IR')
die( esc_html(sanitize_text_field($error_image) . 'خطایی رخ داده است. مجددا تلاش کنید.') );
else
die( esc_html(sanitize_text_field($error_image) . 'An error occurred. Try again.') );
}
}
add_action( 'widgets_init', function () {
register_widget( 'WooNotify_360Messenger_Subscription' );
} );