File manager - Edit - /home/palg2351/public_html/klanaobsesiindonesia.com/wp-includes/Text/Diff/Engine/notification.zip
Back
PK ���\/�� �A �A completed.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; class Completed extends Main { /** * Recipient data * @since 1.0.0 * @var array */ protected $recipients; /** * Attachment for file * @since 1.0.0 * @var bool|array */ public $attachments = false; /** * Construction */ public function __construct() { add_filter('sejoli/notification/fields', [$this, 'add_setting_fields'], 60); } /** * Add notification setting fields * Hooked via filter, sejoli/notification/fields priority 25 * @since 1.0.0 * @param array $fields All fields for notification setting form */ public function add_setting_fields(array $fields) { $fields['completed'] = [ 'title' => __('Order selesai', 'sejoli'), 'fields' => [ // Untuk buyer Field::make( 'html', 'sejoli_completed_shortcode_html', __( 'Shortcode' ) ) ->set_html( '<b>Shortcode</b>: <pre><i><code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama url halaman member area.', 'sejoli').'">{{memberurl}}</code> <code title="'.__('Shortcode untuk menampilkan informasi akses user.', 'sejoli').'">{{user-access}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nama user.', 'sejoli').'">{{user-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama website.', 'sejoli').'">{{sitename}}</code> <code title="'.__('Shortcode untuk menampilkan url website.', 'sejoli').'">{{siteurl}}</code> <code title="'.__('Shortcode untuk menampilkan ID order.', 'sejoli').'">{{order-id}}</code> <code title="'.__('Shortcode untuk menampilkan nomor invoice.', 'sejoli').'">{{invoice-id}}</code></br></br><code title="'.__('Shortcode untuk menampilkan total order.', 'sejoli').'">{{order-grand-total}}</code><code title="'.__('Shortcode untuk menampilkan nama pembeli.', 'sejoli').'">{{buyer-name}}</code> <code title="'.__('Shortcode untuk menampilkan email pembeli.', 'sejoli').'">{{buyer-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon pembeli.', 'sejoli').'">{{buyer-phone}}</code> <code title="'.__('Shortcode untuk menampilkan nama produk.', 'sejoli').'">{{product-name}}</code> <code title="'.__('Shortcode untuk menampilkan jumlah produk.', 'sejoli').'">{{quantity}}</code> <code title="'.__('Shortcode untuk menampilkan url halaman konfirmasi pembayaran.', 'sejoli').'">{{confirm-url}}</code></br></br><code title="'.__('Shortcode untuk menampilkan link dokumen attachment konfirmasi pembayaran.', 'sejoli').'">{{confirm-payment-file}}</code> <code title="'.__('Shortcode untuk menampilkan tanggal pembelian.', 'sejoli').'">{{order-day}}</code> <code title="'.__('Shortcode untuk menampilkan masa berakhir pembelian.', 'sejoli').'">{{close-time}}</code> <code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan email affiliasi.', 'sejoli').'">{{affiliate-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon affiliasi.', 'sejoli').'">{{affiliate-phone}}</code></br></br><code title="'.__('Shortcode untuk menampilkan tier affiliasi.', 'sejoli').'">{{affiliate-tier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi komisi.', 'sejoli').'">{{commission}}</code> <code title="'.__('Shortcode untuk menampilkan informasi detail order.', 'sejoli').'">{{order-detail}}</code> <code title="'.__('Shortcode untuk menampilkan informasi meta order.', 'sejoli').'">{{order-meta}}</code> <code title="'.__('Shortcode untuk menampilkan informasi metode pembayaran.', 'sejoli').'">{{payment-gateway}}</code> <code title="'.__('Shortcode untuk menampilkan informasi notifikasi per-produk.', 'sejoli').'">{{product-info}}</code></br></br><code title="'.__('Shortcode untuk menampilkan informasi kurir pengiriman.', 'sejoli').'">{{shipping-courier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nomor resi pengiriman.', 'sejoli').'">{{shipping-number}}</code></i></pre>' ), Field::make('separator' ,'sep_completed_email', __('Email' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media email', 'sejoli')), Field::make('text', 'completed_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('{{buyer-name}}, Order #{{invoice-id}} {{product-name}} Anda telah selesai', 'sejoli')), Field::make('rich_text', 'completed_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-completed-customer')), Field::make('separator' ,'sep_completed_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')), Field::make('textarea', 'completed_sms_content', __('Konten', 'sejoli')), Field::make('separator' ,'sep_completed_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')), Field::make('textarea', 'completed_whatsapp_content', __('Konten', 'sejoli')), // Untuk admin Field::make('separator', 'sep_completed_admin', __('Konten untuk admin dan lainnya','sejoli')) ->set_classes('main-title'), Field::make('checkbox', 'completed_admin_active', __('Aktifkan notifikasi untuk admin', 'sejoli')) ->set_default_value(true), Field::make('separator', 'sep_completed_admin_email', __('Email' ,'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('text', 'completed_admin_email_recipient', __('Alamat Email Penerima', 'sejoli')) ->set_default_value(get_option('admin_email')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('text', 'completed_admin_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('Order #{{invoice-id}} {{product-name}} dari {{buyer-name}} telah selesai', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('rich_text', 'completed_admin_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-completed-admin')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_completed_admin_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('text', 'completed_admin_sms_recipient', __('Nomor SMS Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('textarea', 'completed_admin_sms_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-completed-admin', 'sms')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_completed_admin_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('text', 'completed_admin_whatsapp_recipient', __('Nomor WhatsApp Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), Field::make('textarea', 'completed_admin_whatsapp_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-completed-admin', 'whatsapp')) ->set_conditional_logic([ [ 'field' => 'completed_admin_active', 'value' => true, ] ]), ] ]; return $fields; } /** * Prepare content for notification * @since 1.0.0 * @return void */ protected function set_content() { // *********************** // Setup content for buyer // *********************** $this->set_recipient_title ('buyer', 'email', sejolisa_carbon_get_theme_option('completed_email_title')); $this->set_recipient_content ('buyer', 'email', $this->set_notification_content( carbon_get_theme_option('completed_email_content'), 'email', 'buyer' )); if(!empty(sejolisa_carbon_get_theme_option('completed_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'buyer', true); $this->set_recipient_content ('buyer', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('completed_whatsapp_content'), 'whatsapp', 'buyer' )); endif; if(!empty(sejolisa_carbon_get_theme_option('completed_sms_content'))) : $this->set_enable_send('sms', 'buyer', true); $this->set_recipient_content ('buyer', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('completed_sms_content'), 'sms', 'buyer' )); endif; // *********************** // Setup content for buyer // *********************** if(false !== sejolisa_carbon_get_theme_option('completed_admin_active')) : $this->set_enable_send('email', 'admin', true); $this->set_recipient_title ('admin', 'email', sejolisa_carbon_get_theme_option('completed_admin_email_title')); $this->set_recipient_content ('admin', 'email', $this->set_notification_content( carbon_get_theme_option('completed_admin_email_content'), 'email', 'admin' )); if(!empty(sejolisa_carbon_get_theme_option('completed_admin_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'admin', true); $this->set_recipient_content('admin', 'whatsapp', $this->set_notification_content( carbon_get_theme_option('completed_admin_whatsapp_content'), 'whatsapp', 'admin' )); endif; if(!empty(sejolisa_carbon_get_theme_option('completed_admin_sms_content'))) : $this->set_enable_send('sms', 'admin', true); $this->set_recipient_content('admin', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('completed_admin_sms_content'), 'sms', 'admin' )); endif; endif; } /** * Check current media recipients, the data will be stored in $this->recipients * @since 1.0.0 * @param string $media * @param string $role * @return void */ protected function check_recipients($media = 'email', $role = 'admin') { $recipients = sejolisa_carbon_get_theme_option('completed_' . $role . '_' . $media . '_recipient'); $this->recipients = explode(',', $recipients); } /** * Trigger to send notification * @since 1.0.0 * @param array $order_data Order data * @return void */ public function trigger(array $order_data) { $media_libraries = $this->get_media_libraries(); $this->prepare($order_data); $this->set_content(); $this->trigger_email($media_libraries['email']); $this->trigger_whatsapp($media_libraries['whatsapp']); $this->trigger_sms($media_libraries['sms']); } /** * Trigger to send email * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_email($media) { // send email for buyer $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); $media->send( array($this->buyer_data->user_email), $this->render_shortcode($this->get_recipient_content('buyer', 'email')), $this->render_shortcode($this->get_recipient_title('buyer', 'email')) ); if(false !== $this->is_able_to_send('email', 'admin')) : $this->check_recipients('email', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'email')), $this->render_shortcode($this->get_recipient_title('admin', 'email')), 'admin' ); endif; } /** * Trigger to send whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_whatsapp($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); // send email for buyer if(false !== $this->is_able_to_send('whatsapp', 'buyer')) : $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'whatsapp')) ); endif; if(false !== $this->is_able_to_send('whatsapp', 'admin')) : $this->check_recipients('whatsapp', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'whatsapp')) ); endif; } /** * Trigger to SMS whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_sms($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); if(false !== $this->is_able_to_send('sms', 'buyer')) : // send email for buyer $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'sms')) ); endif; if(false !== $this->is_able_to_send('sms', 'admin')) : $this->check_recipients('sms', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'sms')) ); endif; } } PK ���\�Ũ�CM CM main.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon\Carbon; class Main { /** * Shortcode data * * @since 1.0.0 * @access protected * @var array */ protected $shortcode_data; /** * Order data * * @since 1.0.0 * @access protected * @var array */ protected $order_data; /** * Product data * * @since 1.0.0 * @access protected * @var array */ protected $product_data; /** * Buyer data * * @since 1.0.0 * @access protected * @var array */ protected $buyer_data; /** * Affiliate data * * @since 1.0.0 * @access protected * @var array */ protected $affiliate_data = false; /** * Coupon data * * @since 1.0.0 * @access protected * @var array */ protected $coupon_data = false; /** * Notification content * * @since 1.0.0 * @access protected * @var string */ protected $content = array( 'buyer' => array( 'active' => true, 'email' => array( 'active' => true, 'title' => '', 'content' => '' ), 'sms' => array( 'active' => false, 'content' => '' ), 'whatsapp' => array( 'active' => false, 'content' => '' ) ), 'admin' => array( 'active' => false, 'email' => array( 'active' => true, 'title' => '', 'content' => '' ), 'sms' => array( 'active' => false, 'content' => '' ), 'whatsapp' => array( 'active' => false, 'content' => '' ) ), 'affiliate' => array( 'active' => false, 'email' => array( 'active' => true, 'title' => '', 'content' => '' ), 'sms' => array( 'active' => false, 'content' => '' ), 'whatsapp' => array( 'active' => false, 'content' => '' ) ), ); /** * Store value if is able to send to specific role and specific media * @since 1.0.0 * @access protected * @var array */ protected $able_send = array( 'email' => [ 'buyer' => true, 'admin' => false, 'affiliate' => false, ], 'whatsapp' => [ 'buyer' => false, 'admin' => false, 'affiliate' => false, ], 'sms' => [ 'buyer' => false, 'admin' => false, 'affiliate' => false, ], ); /** * Construction */ public function __construct() { } /** * Set notification per product content * @since 1.0.0 * @return string */ public function set_notif_product_content() { $product_id = isset($this->product_data->ID) ? $this->product_data->ID : ''; $order_status = isset($this->order_data['status']) ? $this->order_data['status'] : ''; if(isset($this->product_data)) : $product_notification_on_hold = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_on_hold'); $product_notification_payment_confirm = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_payment_confirm'); $product_notification_in_progress = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_in_progress'); $product_notification_shipping = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_shipping'); $product_notification_completed = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_completed'); $product_notification_cancel = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_cancel'); $product_notification_refund = sejolisa_carbon_get_post_meta($this->product_data->ID, 'product_notification_refund'); $order_status = $this->order_data['status']; switch ($order_status) { case "on-hold": $content = $product_notification_on_hold; break; case "payment-confirm": $content = $product_notification_payment_confirm; break; case "in-progress": $content = $product_notification_in_progress; break; case "shipping": $content = $product_notification_shipping; break; case "completed": $content = $product_notification_completed; break; case "cancelled": $content = $product_notification_cancel; break; case "refunded": $content = $product_notification_refund; break; default: $content = ""; break; } return $content; endif; } /** * Set notification payment confirm content * @since 1.0.0 * @return string */ public function set_notif_confirm_payment_content() { global $wpdb; if( !empty($this->order_data) ): $order_id = $this->order_data['ID']; $get_data_payment_confirm = $wpdb->get_results( " SELECT * FROM {$wpdb->prefix}sejolisa_confirmations WHERE order_id = '".$order_id."' " ); $payment_detail = isset($get_data_payment_confirm[0]->detail) ? $get_data_payment_confirm[0]->detail : ''; $payment_confirm_data = unserialize($payment_detail); if( isset( $payment_confirm_data ) && is_array( $payment_confirm_data ) ) : $content = $payment_confirm_data['proof']; else: $content = ''; endif; return $content; endif; } /** * Prepare shortcode data * @since 1.0.0 * @return void */ protected function prepare_shortcode_data() { $timer = absint(sejolisa_carbon_get_theme_option('sejoli_countdown_timer')); $payment_gateway = isset($this->order_data['payment_gateway']) ? $this->order_data['payment_gateway'] : ''; $unique_code = 0; $total_wt_additionalfee = $this->order_data['grand_total']; if(isset($this->order_data['meta_data'][$payment_gateway]['unique_code'])): $total_wt_additionalfee = $this->order_data['grand_total'] - $this->order_data['meta_data'][$payment_gateway]['unique_code']; $unique_code = $this->order_data['meta_data'][$payment_gateway]['unique_code']; elseif(isset($this->order_data['meta_data']['shipping_data']['cost'])): $total_wt_additionalfee = $this->order_data['grand_total'] - $this->order_data['meta_data']['shipping_data']['cost']; elseif(isset($this->order_data['meta_data']['shipping_data']['cost']) && isset($this->order_data['meta_data'][$payment_gateway]['unique_code'])): $total_wt_additionalfee = $this->order_data['grand_total'] - $this->order_data['meta_data']['shipping_data']['cost'] - $this->order_data['meta_data'][$payment_gateway]['unique_code']; endif; $value_ppn = 0; $ppn = ''; $enable_ppn = boolval(sejolisa_carbon_get_post_meta( $this->order_data['product_id'], 'enable_ppn' )); if(true === $enable_ppn && isset($this->order_data['meta_data']['ppn'])) : $price_without_ppn = ($total_wt_additionalfee / (1 + $this->order_data['meta_data']['ppn'] / 100)); $value_ppn = $price_without_ppn * $this->order_data['meta_data']['ppn'] / 100; $ppn = $this->order_data['meta_data']['ppn']; $this->shortcode_data = [ '{{memberurl}}' => home_url('/member-area/'), '{{member-url}}' => home_url('/member-area/'), '{{sitename}}' => get_bloginfo('name'), '{{siteurl}}' => home_url('/'), '{{site-url}}' => home_url('/'), '{{order-id}}' => $this->order_data['ID'], '{{invoice-id}}' => $this->order_data['ID'], '{{order-grand-total}}' => trim(sejolisa_price_format($this->order_data['grand_total'])), '{{ppn}}' => number_format(floatval($ppn), 2, ',', ' '), '{{ppn_total}}' => sejolisa_price_format( $value_ppn ), '{{unique_code}}' => sejolisa_price_format($unique_code), '{{buyer-name}}' => $this->buyer_data->display_name, '{{buyer-email}}' => $this->buyer_data->user_email, '{{buyer-phone}}' => $this->buyer_data->meta->phone, '{{product-name}}' => $this->product_data->post_title, '{{quantity}}' => $this->order_data['quantity'], '{{shipping-courier}}' => isset($this->order_data['meta_data']['shipping_data']) ? $this->order_data['meta_data']['shipping_data']['courier'] .' - '. $this->order_data['meta_data']['shipping_data']['service'] : '', '{{shipping-number}}' => isset($this->order_data['meta_data']['shipping_data']['resi_number']) ? $this->order_data['meta_data']['shipping_data']['resi_number'] : '', '{{confim-url}}' => home_url('/confirm'), '{{confirm-url}}' => home_url('/confirm'), '{{order-day}}' => Carbon::createFromDate($this->order_data['created_at'])->diffInDays(Carbon::now()) + 1, '{{close-time}}' => __('pukul', 'sejoli') . ' ' . date('H:i, d F Y', (strtotime($this->order_data['created_at']) + ($timer * HOUR_IN_SECONDS)) ), '{{renew-url}}' => site_url('/checkout/renew/?order_id=' . $this->order_data['ID']), ]; else: $this->shortcode_data = [ '{{memberurl}}' => home_url('/member-area/'), '{{member-url}}' => home_url('/member-area/'), '{{sitename}}' => get_bloginfo('name'), '{{siteurl}}' => home_url('/'), '{{site-url}}' => home_url('/'), '{{order-id}}' => $this->order_data['ID'], '{{invoice-id}}' => $this->order_data['ID'], '{{order-grand-total}}' => trim(sejolisa_price_format($this->order_data['grand_total'])), '{{unique_code}}' => sejolisa_price_format($unique_code), '{{buyer-name}}' => $this->buyer_data->display_name, '{{buyer-email}}' => $this->buyer_data->user_email, '{{buyer-phone}}' => $this->buyer_data->meta->phone, '{{product-name}}' => $this->product_data->post_title, '{{quantity}}' => $this->order_data['quantity'], '{{shipping-courier}}' => isset($this->order_data['meta_data']['shipping_data']) ? $this->order_data['meta_data']['shipping_data']['courier'] .' - '. $this->order_data['meta_data']['shipping_data']['service'] : '', '{{shipping-number}}' => isset($this->order_data['meta_data']['shipping_data']['resi_number']) ? $this->order_data['meta_data']['shipping_data']['resi_number'] : '', '{{confim-url}}' => home_url('/confirm'), '{{confirm-url}}' => home_url('/confirm'), '{{order-day}}' => Carbon::createFromDate($this->order_data['created_at'])->diffInDays(Carbon::now()) + 1, '{{close-time}}' => __('pukul', 'sejoli') . ' ' . date('H:i, d F Y', (strtotime($this->order_data['created_at']) + ($timer * HOUR_IN_SECONDS)) ), '{{renew-url}}' => site_url('/checkout/renew/?order_id=' . $this->order_data['ID']), ]; endif; if(is_object($this->affiliate_data)) : $affiliate_phone = isset($this->affiliate_data->phone) ? $this->affiliate_data->phone : $this->affiliate_data->data->meta->phone; $this->shortcode_data['{{affiliate-name}}'] = $this->affiliate_data->display_name; $this->shortcode_data['{{affiliate-phone}}'] = $affiliate_phone; $this->shortcode_data['{{affiliate-email}}'] = $this->affiliate_data->user_email; $this->shortcode_data['{{affiliate-tier}}'] = $this->affiliate_data->tier; $this->shortcode_data['{{commission}}'] = $this->affiliate_data->commission; endif; $this->shortcode_data = apply_filters('sejoli/notification/shortcode', $this->shortcode_data, [ 'order_data' => $this->order_data, 'buyer_data' => $this->buyer_data, 'product_data' => $this->product_data, 'affiliate_data' => $this->affiliate_data ]); $this->shortcode_data['{{product-info}}'] = safe_str_replace( array_keys($this->shortcode_data), array_values($this->shortcode_data), $this->set_notif_product_content() ); $this->shortcode_data['{{confirm-payment-file}}'] = safe_str_replace( array_keys($this->shortcode_data), array_values($this->shortcode_data), $this->set_notif_confirm_payment_content() ); } /** * Set notification content * Hooked via filter sejoli/notification/content, priority 999 * @since 1.0.0 * @param string $content * @param array $details * @param string $media * @return string */ public function set_notification_content($content, $media = 'email', $recipient_type = 'buyer') { $user_access = $order_detail = $order_meta = ''; $directory = apply_filters( 'sejoli/'. $media .'/template-directory', SEJOLISA_DIR . 'template/' .$media. '/', $media, NULL, array() ); if (is_array($this->order_data) && isset($this->order_data['product_id'])) { $enable_ppn = boolval(sejolisa_carbon_get_post_meta($this->order_data['product_id'], 'enable_ppn')); } else { $enable_ppn = false; // Default value or other handling } if(true === $enable_ppn): $order_detail_file = $directory . 'order-detail-ppn.php'; else: $order_detail_file = $directory . 'order-detail.php'; endif; $order_meta_file = $directory . 'order-meta.php'; $user_access_file = $directory . 'user-access.php'; if(file_exists($order_detail_file)) : ob_start(); require $order_detail_file; $order_detail = ob_get_contents(); ob_end_clean(); endif; if(file_exists($order_meta_file)) : ob_start(); require $order_meta_file; $order_meta = ob_get_contents(); ob_end_clean(); endif; if(file_exists($user_access_file)) : ob_start(); require $user_access_file; $user_access = ob_get_contents(); ob_end_clean(); endif; $content = safe_str_replace('{{user-access}}', $user_access, $content); $order_detail = apply_filters( 'sejoli/notification/content/order-detail', $order_detail, $media, $recipient_type, [ 'order_data' => $this->order_data, 'buyer_data' => $this->buyer_data, 'product_data' => $this->product_data, 'affiliate_data' => $this->affiliate_data, ] ); $order_meta = apply_filters( 'sejoli/notification/content/order-meta', $order_meta, $media, $recipient_type, [ 'order_data' => $this->order_data, 'buyer_data' => $this->buyer_data, 'product_data' => $this->product_data, 'affiliate_data' => $this->affiliate_data, ] ); $payment_gateway = apply_filters( 'sejoli/notification/content/payment-gateway', '', $media, $recipient_type, [ 'order_data' => $this->order_data, ] ); $content = safe_str_replace('{{product-info}}', $this->set_notif_product_content(), $content); if( $media === 'email' ) : $content = safe_str_replace('{{confirm-payment-file}}', '', $content); else: $content = safe_str_replace('{{confirm-payment-file}}', $this->set_notif_confirm_payment_content(), $content); endif; if( $recipient_type === "buyer" && !empty($this->order_data) ): // Recalculate notif grand total based on payment $grand_total = apply_filters('sejoli/recalculate/notif-grand-total', $this->order_data['grand_total'], $this->order_data); $content = safe_str_replace('{{order-grand-total}}', trim(sejolisa_price_format($grand_total)), $content); $order_detail = safe_str_replace('{{order-grand-total}}', trim(sejolisa_price_format($grand_total)), $order_detail); endif; $content = safe_str_replace('{{order-detail}}', $order_detail, $content); $content = safe_str_replace('{{order-meta}}', $order_meta, $content); $content = safe_str_replace('{{payment-gateway}}', $payment_gateway, $content); return $content; } /** * Render shortcode data * @since 1.0.0 * @param string $content * @return string */ public function render_shortcode($content) { $content = safe_str_replace( array_keys($this->shortcode_data), array_values($this->shortcode_data), $content ); return $content; } /** * Setup all related data via order_data and prepare for shortcode_data * @since 1.0.0 * @return */ public function prepare(array $order_data) { $this->order_data = $order_data; $this->buyer_data = ( isset($order_data['user']) && is_a($order_data['user'], 'WP_User') ) ? $order_data['user'] : sejolisa_get_user(intval($order_data['user_id'])); $this->product_data = ( isset($order_data['product']) && is_a($order_data['product'], 'WP_Post') ) ? $order_data['product'] : sejolisa_get_product(intval($order_data['product_id'])); if(0 !== $order_data['affiliate_id'] && !isset($order_data['affiliate_data'])) : $this->affiliate_data = sejolisa_get_user(intval($order_data['affiliate_id'])); endif; if(isset($order_data['affiliate_data'])) : $this->affiliate_data = $order_data['affiliate_data']; elseif(isset($order_data['affiliate'])) : $this->affiliate_data = $order_data['affiliate']; endif; $this->prepare_shortcode_data(); } /** * Get all media libraries * @since 1.0.0 * @return array */ protected function get_media_libraries() { return (array) apply_filters('sejoli/notification/available-media-libraries', []); } /** * Set if current notification event is able to send to specific role and specific media * @since 1.0.0 * @param string $role The user role * @param string $media The notification media * @param boolean $enable Set if is enabled to send * @param boolean Enable value to send */ protected function set_enable_send($media, $role, $enable = false) { $this->able_send[$media][$role] = $enable; return $enable; } /** * Get able value if current notification event is able to send to admin * @since 1.0.0 * @param string $role The user role * @param string $media The notification media * @return boolean */ protected function is_able_to_send($media, $role) { return (boolean) isset($this->able_send[$media][$role]) ? $this->able_send[$media][$role] : false; } /** * Set recipient title * @since 1.0.0 * @param string $recipient * @param string $media * @param string $content */ protected function set_recipient_title($recipient, $media, $content) { $this->content[$recipient][$media]['title'] = $content; } /** * Set recipient content * @since 1.0.0 * @param string $recipient * @param string $media * @param string $content */ protected function set_recipient_content($recipient, $media, $content) { $this->content[$recipient][$media]['content'] = $content; } /** * Get recipient title * @since 1.0.0 * @param string $recipient * @param string $media * @return string */ protected function get_recipient_title($recipient, $media) { return $this->content[$recipient][$media]['title']; } /** * Get recipient content * @since 1.0.0 * @param string $recipient * @param string $media * @return string */ protected function get_recipient_content($recipient, $media) { return $this->content[$recipient][$media]['content']; } } PK ���\����5 5 reminder.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; class Reminder extends Main { /** * Affiliate data * @since 1.1.9 * @var array */ protected $affiliate; /** * Recipient data * @since 1.1.9 * @var array */ protected $recipients; /** * Commission data * @since 1.1.0 * @var array */ protected $commission_data = array(); /** * Attachment for file * @since 1.1.9 * @var bool|array */ public $attachments = false; public $setup_data = array(); /** * Construction */ public function __construct() { } /** * Prepare content * @since 1.1.9 * @param array $order_data * @param array $reminder_data * @return void */ public function setup_data(array $order_data, array $reminder_data) { $media_libraries = $this->get_media_libraries(); $this->prepare($order_data); $reminder_media = array(); $i = 0; foreach ( $reminder_data['media'] as $media ) : $reminder_media[] = $media; $this->set_recipient_title ('buyer', $reminder_media[$i], $reminder_data['title']); $this->set_recipient_content('buyer', $reminder_media[$i], $this->set_notification_content( $reminder_data['content'], $reminder_media[$i], 'buyer' )); $media_libraries[$reminder_media[$i]]->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); $this->setup_data = array( 'recipient' => ('email' === $reminder_media[$i] ) ? $this->buyer_data->user_email : $this->buyer_data->meta->phone, 'content' => $this->render_shortcode( $this->get_recipient_content('buyer', $reminder_media[$i]) ), 'title' => $this->render_shortcode( $this->get_recipient_title('buyer', $reminder_media[$i]) ), ); $i++; endforeach; } /** * Return reminder data that has been converted * @since 1.1.9 * @return array */ public function get_data() { return $this->setup_data; } /** * Trigger to send notification * @since 1.1.9 * @param array $reminder_data Reminder data * @return void */ public function trigger($reminder_data) { $media_libraries = $this->get_media_libraries(); $media_type = $reminder_data->media_type; $media_libraries[$media_type]->send( (array) $reminder_data->recipient, ("email" === $media_type) ? $reminder_data->content : strip_tags($reminder_data->content), $reminder_data->title ); } } PK ���\ index.phpnu �[��� PK ���\?��#DG DG registration.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; class Registration extends Main { /** * Recipient data * @since 1.0.0 * @var array */ protected $recipients; /** * Set user data * @var array */ protected $user_data; /** * Attachment for file * @since 1.0.0 * @var bool|array */ public $attachments = false; /** * Construction */ public function __construct() { add_filter('sejoli/notification/fields', [$this, 'add_setting_fields'], 20); // add_filter('sejoli/notification/content', [$this, 'set_user_detail_content'], 30, 3); } /** * Add notification setting fields * Hooked via filter, sejoli/notification/fields priority 25 * @since 1.0.0 * @param array $fields All fields for notification setting form */ public function add_setting_fields(array $fields) { $fields['registration'] = [ 'title' => __('Pendaftaran User Baru', 'sejoli'), 'fields' => [ // Untuk buyer Field::make( 'html', 'sejoli_registration_shortcode_html', __( 'Shortcode' ) ) ->set_html( '<b>Shortcode</b>: <pre><i><code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama url halaman member area.', 'sejoli').'">{{memberurl}}</code> <code title="'.__('Shortcode untuk menampilkan informasi akses user.', 'sejoli').'">{{user-access}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nama user.', 'sejoli').'">{{user-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama website.', 'sejoli').'">{{sitename}}</code> <code title="'.__('Shortcode untuk menampilkan url website.', 'sejoli').'">{{siteurl}}</code> <code title="'.__('Shortcode untuk menampilkan ID order.', 'sejoli').'">{{order-id}}</code> <code title="'.__('Shortcode untuk menampilkan nomor invoice.', 'sejoli').'">{{invoice-id}}</code></br></br><code title="'.__('Shortcode untuk menampilkan total order.', 'sejoli').'">{{order-grand-total}}</code><code title="'.__('Shortcode untuk menampilkan nama pembeli.', 'sejoli').'">{{buyer-name}}</code> <code title="'.__('Shortcode untuk menampilkan email pembeli.', 'sejoli').'">{{buyer-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon pembeli.', 'sejoli').'">{{buyer-phone}}</code> <code title="'.__('Shortcode untuk menampilkan nama produk.', 'sejoli').'">{{product-name}}</code> <code title="'.__('Shortcode untuk menampilkan jumlah produk.', 'sejoli').'">{{quantity}}</code> <code title="'.__('Shortcode untuk menampilkan url halaman konfirmasi pembayaran.', 'sejoli').'">{{confirm-url}}</code></br></br><code title="'.__('Shortcode untuk menampilkan link dokumen attachment konfirmasi pembayaran.', 'sejoli').'">{{confirm-payment-file}}</code> <code title="'.__('Shortcode untuk menampilkan tanggal pembelian.', 'sejoli').'">{{order-day}}</code> <code title="'.__('Shortcode untuk menampilkan masa berakhir pembelian.', 'sejoli').'">{{close-time}}</code> <code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan email affiliasi.', 'sejoli').'">{{affiliate-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon affiliasi.', 'sejoli').'">{{affiliate-phone}}</code></br></br><code title="'.__('Shortcode untuk menampilkan tier affiliasi.', 'sejoli').'">{{affiliate-tier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi komisi.', 'sejoli').'">{{commission}}</code> <code title="'.__('Shortcode untuk menampilkan informasi detail order.', 'sejoli').'">{{order-detail}}</code> <code title="'.__('Shortcode untuk menampilkan informasi meta order.', 'sejoli').'">{{order-meta}}</code> <code title="'.__('Shortcode untuk menampilkan informasi metode pembayaran.', 'sejoli').'">{{payment-gateway}}</code> <code title="'.__('Shortcode untuk menampilkan informasi notifikasi per-produk.', 'sejoli').'">{{product-info}}</code></br></br><code title="'.__('Shortcode untuk menampilkan informasi kurir pengiriman.', 'sejoli').'">{{shipping-courier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nomor resi pengiriman.', 'sejoli').'">{{shipping-number}}</code></i></pre>' ), Field::make('separator' ,'sep_registration_email', __('Email' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media email', 'sejoli')), Field::make('text', 'registration_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('{{user-name}}, berikut data anda di website {{sitename}}', 'sejoli')), Field::make('rich_text', 'registration_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('registration-user')), Field::make('separator' ,'sep_registration_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')), Field::make('textarea', 'registration_sms_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('registration-user', 'sms')), Field::make('separator' ,'sep_registration_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')), Field::make('textarea', 'registration_whatsapp_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('registration-user', 'whatsapp')), // Untuk admin Field::make('separator', 'sep_registration_admin', __('Konten untuk admin dan lainnya','sejoli')) ->set_classes('main-title'), Field::make('checkbox', 'registration_admin_active', __('Aktifkan notifikasi untuk admin', 'sejoli')) ->set_default_value(true), Field::make('separator', 'sep_registration_admin_email', __('Email' ,'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('text', 'registration_admin_email_recipient', __('Alamat Email Penerima', 'sejoli')) ->set_default_value(get_option('admin_email')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('text', 'registration_admin_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('User baru telah didaftarkan pada website {{sitename}}', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('rich_text', 'registration_admin_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('registration-admin')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_registration_admin_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('text', 'registration_admin_sms_recipient', __('Nomor SMS Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('textarea', 'registration_admin_sms_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')) ->set_default_value(sejoli_get_notification_content('registration-admin', 'sms')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_registration_admin_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('text', 'registration_admin_whatsapp_recipient', __('Nomor WhatsApp Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), Field::make('textarea', 'registration_admin_whatsapp_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ->set_default_value(sejoli_get_notification_content('registration-admin', 'whatsapp')) ->set_conditional_logic([ [ 'field' => 'registration_admin_active', 'value' => true, ] ]), ] ]; return $fields; } /** * Prepare content for notification * @since 1.0.0 * @return void */ protected function set_content() { // *********************** // Setup content for buyer // *********************** $this->set_recipient_title ('buyer', 'email', sejolisa_carbon_get_theme_option('registration_email_title')); $this->set_recipient_content('buyer', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('registration_email_content'), 'email', 'buyer' )); if(!empty(sejolisa_carbon_get_theme_option('registration_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'buyer', true); $this->set_recipient_content('buyer', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('registration_whatsapp_content'), 'whatsapp', 'buyer' )); endif; if(!empty(sejolisa_carbon_get_theme_option('registration_sms_content'))) : $this->set_enable_send('sms', 'buyer', true); $this->set_recipient_content('buyer', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('registration_sms_content'), 'sms', 'buyer' )); endif; // *********************** // Setup content for buyer // *********************** if(false !== sejolisa_carbon_get_theme_option('registration_admin_active')) : $this->set_enable_send('email', 'admin', true); $this->set_recipient_title('admin', 'email', sejolisa_carbon_get_theme_option('registration_admin_email_title')); $this->set_recipient_content('admin', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('registration_admin_email_content'), 'email', 'admin' )); if(!empty(sejolisa_carbon_get_theme_option('registration_admin_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'admin', true); $this->set_recipient_content('admin', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('registration_admin_whatsapp_content'), 'whatsapp', 'admin' )); endif; if(!empty(sejolisa_carbon_get_theme_option('registration_admin_sms_content'))) : $this->set_enable_send('sms', 'admin', true); $this->set_recipient_content('admin', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('registration_admin_sms_content'), 'sms', 'admin' )); endif; endif; } /** * Check current media recipients, the data will be stored in $this->recipients * @since 1.0.0 * @param string $media * @param string $role * @return void */ protected function check_recipients($media = 'email', $role = 'admin') { $recipients = sejolisa_carbon_get_theme_option('registration_' . $role . '_' . $media . '_recipient'); $this->recipients = explode(',', $recipients); } /** * Add user data to shortcodes * Hooked via filter sejoli/notification/shortcodes, priority 10 * @param array $shortcodes * @return array */ public function add_shortcode_detail(array $shortcodes) { $shortcodes['{{memberurl}}'] = home_url('/member-area/'); $shortcodes['{{sitename}}'] = get_bloginfo('name'); $shortcodes['{{siteurl}}'] = home_url('/'); $shortcodes['{{user-name}}'] = $this->user_data['user_name']; $shortcodes['{{user-email}}'] = $this->user_data['user_email']; $shortcodes['{{user-pass}}'] = $this->user_data['user_password']; $shortcodes['{{user-phone}}'] = $this->user_data['user_phone']; return $shortcodes; } /** * Trigger to send notification * @since 1.0.0 * @param array $order_data Order data * @return void */ public function trigger(array $user_data) { $this->user_data = $user_data; $media_libraries = $this->get_media_libraries(); $this->shortcode_data = $this->add_shortcode_detail([]); $this->set_content(); $this->trigger_email($user_data, $media_libraries); $this->trigger_whatsapp($user_data, $media_libraries); $this->trigger_sms($user_data, $media_libraries); } /** * Trigger to send email * @since 1.0.0 * @param array $user_data Array of recipient data * @param array $media_libraries Array of available media libraries * @return void */ protected function trigger_email($user_data, $media_libraries) { // send email for buyer $media_libraries['email']->set_data([ 'user_data' => $user_data, ]); $media_libraries['email']->send( array($user_data['user_email']), $this->render_shortcode($this->get_recipient_content('buyer', 'email')), $this->render_shortcode($this->get_recipient_title('buyer', 'email')) ); if(false !== $this->is_able_to_send('email', 'admin')) : $this->check_recipients('email', 'admin'); $media_libraries['email']->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'email')), $this->render_shortcode($this->get_recipient_title('admin', 'email')), 'admin' ); endif; } /** * Trigger to send whatsapp * @since 1.0.0 * @param array $user_data Array of recipient data * @param array $media_libraries Array of available media libraries * @return void */ protected function trigger_whatsapp($user_data, $media_libraries) { // send whatsapp for buyer if(false !== $this->is_able_to_send('whatsapp', 'buyer')) : $media_libraries['whatsapp']->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); $media_libraries['whatsapp']->send( array($user_data['user_phone']), $this->render_shortcode($this->get_recipient_content('buyer', 'whatsapp')) ); endif; if(false !== $this->is_able_to_send('whatsapp', 'admin')) : $this->check_recipients('whatsapp', 'admin'); $media_libraries['whatsapp']->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'whatsapp')) ); endif; } /** * Trigger to SMS whatsapp * @since 1.0.0 * @param array $user_data Array of recipient data * @param array $media_libraries Array of available media libraries * @return void */ protected function trigger_sms($user_data, $media_libraries) { // send sms for buyer if(false !== $this->is_able_to_send('sms', 'buyer')) : $media_libraries['sms']->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); $media_libraries['sms']->send( array($user_data['user_phone']), $this->render_shortcode($this->get_recipient_content('buyer', 'sms')) ); endif; if(false !== $this->is_able_to_send('sms', 'admin')) : $this->check_recipients('sms', 'admin'); $media_libraries['sms']->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'sms')) ); endif; } } PK ���\DD�d �d on-hold.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; /** * @since 1.0.0 * @since 1.4.1 Refactored notification setting fields and add notification to affiliate */ class OnHold extends Main { /** * Recipient data * @since 1.0.0 * @var array */ protected $recipients; /** * Attachment for file * @since 1.0.0 * @var bool|array */ public $attachments = false; /** * Construction */ public function __construct() { add_filter('sejoli/notification/fields', [$this, 'add_setting_fields'], 30); } /** * Set customer setting fields * @since 1.4.1 * @return array */ protected function set_customer_fields() { return array( // untuk customer Field::make( 'html', 'sejoli_hold_shortcode_html', __( 'Shortcode' ) ) ->set_html( '<b>Shortcode</b>: <pre><i><code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama url halaman member area.', 'sejoli').'">{{memberurl}}</code> <code title="'.__('Shortcode untuk menampilkan informasi akses user.', 'sejoli').'">{{user-access}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nama user.', 'sejoli').'">{{user-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama website.', 'sejoli').'">{{sitename}}</code> <code title="'.__('Shortcode untuk menampilkan url website.', 'sejoli').'">{{siteurl}}</code> <code title="'.__('Shortcode untuk menampilkan ID order.', 'sejoli').'">{{order-id}}</code> <code title="'.__('Shortcode untuk menampilkan nomor invoice.', 'sejoli').'">{{invoice-id}}</code></br></br><code title="'.__('Shortcode untuk menampilkan total order.', 'sejoli').'">{{order-grand-total}}</code><code title="'.__('Shortcode untuk menampilkan nama pembeli.', 'sejoli').'">{{buyer-name}}</code> <code title="'.__('Shortcode untuk menampilkan email pembeli.', 'sejoli').'">{{buyer-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon pembeli.', 'sejoli').'">{{buyer-phone}}</code> <code title="'.__('Shortcode untuk menampilkan nama produk.', 'sejoli').'">{{product-name}}</code> <code title="'.__('Shortcode untuk menampilkan jumlah produk.', 'sejoli').'">{{quantity}}</code> <code title="'.__('Shortcode untuk menampilkan url halaman konfirmasi pembayaran.', 'sejoli').'">{{confirm-url}}</code></br></br><code title="'.__('Shortcode untuk menampilkan link dokumen attachment konfirmasi pembayaran.', 'sejoli').'">{{confirm-payment-file}}</code> <code title="'.__('Shortcode untuk menampilkan tanggal pembelian.', 'sejoli').'">{{order-day}}</code> <code title="'.__('Shortcode untuk menampilkan masa berakhir pembelian.', 'sejoli').'">{{close-time}}</code> <code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan email affiliasi.', 'sejoli').'">{{affiliate-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon affiliasi.', 'sejoli').'">{{affiliate-phone}}</code></br></br><code title="'.__('Shortcode untuk menampilkan tier affiliasi.', 'sejoli').'">{{affiliate-tier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi komisi.', 'sejoli').'">{{commission}}</code> <code title="'.__('Shortcode untuk menampilkan informasi detail order.', 'sejoli').'">{{order-detail}}</code> <code title="'.__('Shortcode untuk menampilkan informasi meta order.', 'sejoli').'">{{order-meta}}</code> <code title="'.__('Shortcode untuk menampilkan informasi metode pembayaran.', 'sejoli').'">{{payment-gateway}}</code> <code title="'.__('Shortcode untuk menampilkan informasi notifikasi per-produk.', 'sejoli').'">{{product-info}}</code></br></br><code title="'.__('Shortcode untuk menampilkan informasi kurir pengiriman.', 'sejoli').'">{{shipping-courier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nomor resi pengiriman.', 'sejoli').'">{{shipping-number}}</code></i></pre>' ), Field::make('separator', 'sep_on_hold_buyer', __('Konten untuk pembeli','sejoli')) ->set_classes('main-title'), Field::make('separator', 'sep_on_hold_email', __('Email' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media email', 'sejoli')), Field::make('text', 'on_hold_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('{{buyer-name}}, Order #{{invoice-id}} {{product-name}} anda sudah kami terima, silahkan lanjutkan pembayarannya', 'sejoli')), Field::make('rich_text', 'on_hold_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-on-hold-customer')), Field::make('separator' ,'sep_on_hold_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')), Field::make('textarea', 'on_hold_sms_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-on-hold-customer', 'sms')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')), Field::make('separator' ,'sep_on_hold_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')), Field::make('textarea', 'on_hold_whatsapp_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-on-hold-customer', 'whatsapp')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ); } /** * Set affiliate setting fields * @since 1.4.1 * @return array */ protected function set_affiliate_fields() { return array( // Untuk affiliate Field::make('separator', 'sep_on_hold_affiliate', __('Konten untuk affiliasi','sejoli')) ->set_classes('main-title'), Field::make('checkbox', 'on_hold_affiliate_active', __('Aktifkan notifikasi untuk affiliasi', 'sejoli')), Field::make('separator', 'sep_on_hold_affiliate_email', __('Email' ,'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]), Field::make('text', 'on_hold_affiliate_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('Order #{{invoice-id}} {{product-name}} baru dari {{buyer-name}}', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]), Field::make('rich_text', 'on_hold_affiliate_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-new-affiliate')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]), Field::make('separator' ,'sep_on_hold_affiliate_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]), Field::make('textarea', 'on_hold_affiliate_sms_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]), Field::make('separator' ,'sep_on_hold_affiliate_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]), Field::make('textarea', 'on_hold_affiliate_whatsapp_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-affiliate', 'whatsapp')) ->set_conditional_logic([ [ 'field' => 'on_hold_affiliate_active', 'value' => true, ] ]) ); } /** * Set admin setting fields * @since 1.4.1 * @return array */ protected function set_admin_fields() { return array( // Untuk admin Field::make('separator', 'sep_on_hold_admin', __('Konten untuk admin dan lainnya','sejoli')) ->set_classes('main-title'), Field::make('checkbox', 'on_hold_admin_active', __('Aktifkan notifikasi untuk admin', 'sejoli')), Field::make('separator', 'sep_on_hold_admin_email', __('Email' ,'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('text', 'on_hold_admin_email_recipient', __('Alamat Email Penerima', 'sejoli')) ->set_default_value(get_option('admin_email')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('text', 'on_hold_admin_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('Order #{{invoice-id}} {{product-name}} baru dari {{buyer-name}}', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('rich_text', 'on_hold_admin_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-new-admin')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_on_hold_admin_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('text', 'on_hold_admin_sms_recipient', __('Nomor SMS Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('textarea', 'on_hold_admin_sms_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-admin', 'sms')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_on_hold_admin_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('text', 'on_hold_admin_whatsapp_recipient', __('Nomor WhatsApp Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]), Field::make('textarea', 'on_hold_admin_whatsapp_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-admin', 'whatsapp')) ->set_conditional_logic([ [ 'field' => 'on_hold_admin_active', 'value' => true, ] ]) ); } /** * Add notification setting fields * Hooked via filter, sejoli/notification/fields priority 25 * @since 1.0.0 * @since 1.4.1 Refactored array and add notification for affiliate * @param array $fields All fields for notification setting form */ public function add_setting_fields(array $fields) { $fields['on-hold'] = array( 'title' => __('Menunggu Pembayaran', 'sejoli'), 'fields' => array_merge( $this->set_customer_fields(), $this->set_affiliate_fields(), $this->set_admin_fields() ) ); return $fields; } /** * Prepare content for notification * @since 1.0.0 * @since 1.4.1 Add notification for affiliate * @return void */ protected function set_content() { // *********************** // Setup content for buyer // *********************** $this->set_recipient_title ('buyer', 'email', sejolisa_carbon_get_theme_option('on_hold_email_title')); $this->set_recipient_content('buyer', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_email_content'), 'email', 'buyer' )); if(!empty(sejolisa_carbon_get_theme_option('on_hold_whatsapp_content'))) : $this->set_enable_send ('whatsapp', 'buyer', true); $this->set_recipient_content('buyer', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_whatsapp_content'), 'whatsapp', 'buyer' )); endif; if(!empty(sejolisa_carbon_get_theme_option('on_hold_sms_content'))) : $this->set_enable_send ('sms', 'buyer', true); $this->set_recipient_content('buyer', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_sms_content'), 'sms', 'buyer' )); endif; // *********************** // Setup content for admin // *********************** if(false !== sejolisa_carbon_get_theme_option('on_hold_admin_active')) : $this->set_enable_send('email', 'admin', true); $this->set_recipient_title ('admin', 'email', sejolisa_carbon_get_theme_option('on_hold_admin_email_title')); $this->set_recipient_content('admin', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_admin_email_content'), 'email', 'admin' )); if(!empty(sejolisa_carbon_get_theme_option('on_hold_admin_whatsapp_content'))) : $this->set_enable_send ('whatsapp', 'admin', true); $this->set_recipient_content ('admin', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_admin_whatsapp_content'), 'whatsapp', 'admin' )); endif; if(!empty(sejolisa_carbon_get_theme_option('on_hold_admin_sms_content'))) : $this->set_enable_send ('sms', 'admin', true); $this->set_recipient_content('admin', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_admin_sms_content'), 'sms', 'admin' )); endif; endif; // *********************** // Setup content for affiliate // *********************** if(false !== sejolisa_carbon_get_theme_option('on_hold_affiliate_active')) : $this->set_enable_send('email', 'affiliate', true); $this->set_recipient_title ('affiliate', 'email', sejolisa_carbon_get_theme_option('on_hold_affiliate_email_title')); $this->set_recipient_content('affiliate', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_affiliate_email_content'), 'email', 'affiliate' )); if(!empty(sejolisa_carbon_get_theme_option('on_hold_affiliate_whatsapp_content'))) : $this->set_enable_send ('whatsapp', 'affiliate', true); $this->set_recipient_content ('affiliate', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_affiliate_whatsapp_content'), 'whatsapp', 'affiliate' )); endif; if(!empty(sejolisa_carbon_get_theme_option('on_hold_affiliate_sms_content'))) : $this->set_enable_send ('sms', 'affiliate', true); $this->set_recipient_content('affiliate', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('on_hold_affiliate_sms_content'), 'sms', 'affiliate' )); endif; endif; } /** * Check current media recipients, the data will be stored in $this->recipients * @since 1.0.0 * @param string $media * @param string $role * @return void */ protected function check_recipients($media = 'email', $role = 'admin') { $recipients = sejolisa_carbon_get_theme_option('on_hold_' . $role . '_' . $media . '_recipient'); $this->recipients = explode(',', $recipients); } /** * Trigger to send notification * @since 1.0.0 * @param array $order_data Order data * @return void */ public function trigger(array $order_data) { $media_libraries = $this->get_media_libraries(); $this->prepare($order_data); $this->set_content(); $this->trigger_email($media_libraries['email']); $this->trigger_whatsapp($media_libraries['whatsapp']); $this->trigger_sms($media_libraries['sms']); } /** * Trigger to send email * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_email($media) { // send email for buyer $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); $media->send( array($this->buyer_data->user_email), $this->render_shortcode($this->get_recipient_content('buyer', 'email')), $this->render_shortcode($this->get_recipient_title('buyer', 'email')) ); // Send to admin if(false !== $this->is_able_to_send('email', 'admin')) : $this->check_recipients('email', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'email')), $this->render_shortcode($this->get_recipient_title('admin', 'email')) ); endif; // Send to affiliate if( false !== $this->is_able_to_send('email', 'affiliate') && is_a($this->affiliate_data, 'WP_User') ) : $media->send( array($this->affiliate_data->user_email), $this->render_shortcode($this->get_recipient_content('affiliate', 'email')), $this->render_shortcode($this->get_recipient_title('affiliate', 'email')) ); endif; } /** * Trigger to send whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_whatsapp($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); // send email for buyer if(false !== $this->is_able_to_send('whatsapp', 'buyer')) : $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'whatsapp')) ); endif; if(false !== $this->is_able_to_send('whatsapp', 'admin')) : $this->check_recipients('whatsapp', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'whatsapp')) ); endif; // Send to affiliate if( false !== $this->is_able_to_send('whatsapp', 'affiliate') && is_a($this->affiliate_data, 'WP_User') ) : $media->send( array($this->affiliate_data->meta->phone), $this->render_shortcode($this->get_recipient_content('affiliate', 'whatsapp')) ); endif; } /** * Trigger to SMS whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_sms($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); if(false !== $this->is_able_to_send('sms', 'buyer')) : // send email for buyer $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'sms')) ); endif; if(false !== $this->is_able_to_send('sms', 'admin')) : $this->check_recipients('sms', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'sms')) ); endif; // Send to affiliate if( false !== $this->is_able_to_send('sms', 'affiliate') && is_a($this->affiliate_data, 'WP_User') ) : $media->send( array($this->affiliate_data->meta->phone), $this->render_shortcode($this->get_recipient_content('affiliate', 'sms')) ); endif; } } PK ���\��sB sB refund.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; class Refund extends Main { /** * Recipient data * @since 1.0.0 * @var array */ protected $recipients; /** * Attachment for file * @since 1.0.0 * @var bool|array */ public $attachments = false; /** * Construction */ public function __construct() { add_filter('sejoli/notification/fields', [$this, 'add_setting_fields'], 80); } /** * Add notification setting fields * Hooked via filter, sejoli/notification/fields priority 25 * @since 1.0.0 * @param array $fields All fields for notification setting form */ public function add_setting_fields(array $fields) { $fields['refund'] = [ 'title' => __('Refund', 'sejoli'), 'fields' => [ // untuk customer Field::make( 'html', 'sejoli_refund_shortcode_html', __( 'Shortcode' ) ) ->set_html( '<b>Shortcode</b>: <pre><i><code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama url halaman member area.', 'sejoli').'">{{memberurl}}</code> <code title="'.__('Shortcode untuk menampilkan informasi akses user.', 'sejoli').'">{{user-access}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nama user.', 'sejoli').'">{{user-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama website.', 'sejoli').'">{{sitename}}</code> <code title="'.__('Shortcode untuk menampilkan url website.', 'sejoli').'">{{siteurl}}</code> <code title="'.__('Shortcode untuk menampilkan ID order.', 'sejoli').'">{{order-id}}</code> <code title="'.__('Shortcode untuk menampilkan nomor invoice.', 'sejoli').'">{{invoice-id}}</code></br></br><code title="'.__('Shortcode untuk menampilkan total order.', 'sejoli').'">{{order-grand-total}}</code><code title="'.__('Shortcode untuk menampilkan nama pembeli.', 'sejoli').'">{{buyer-name}}</code> <code title="'.__('Shortcode untuk menampilkan email pembeli.', 'sejoli').'">{{buyer-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon pembeli.', 'sejoli').'">{{buyer-phone}}</code> <code title="'.__('Shortcode untuk menampilkan nama produk.', 'sejoli').'">{{product-name}}</code> <code title="'.__('Shortcode untuk menampilkan jumlah produk.', 'sejoli').'">{{quantity}}</code> <code title="'.__('Shortcode untuk menampilkan url halaman konfirmasi pembayaran.', 'sejoli').'">{{confirm-url}}</code></br></br><code title="'.__('Shortcode untuk menampilkan link dokumen attachment konfirmasi pembayaran.', 'sejoli').'">{{confirm-payment-file}}</code> <code title="'.__('Shortcode untuk menampilkan tanggal pembelian.', 'sejoli').'">{{order-day}}</code> <code title="'.__('Shortcode untuk menampilkan masa berakhir pembelian.', 'sejoli').'">{{close-time}}</code> <code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan email affiliasi.', 'sejoli').'">{{affiliate-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon affiliasi.', 'sejoli').'">{{affiliate-phone}}</code></br></br><code title="'.__('Shortcode untuk menampilkan tier affiliasi.', 'sejoli').'">{{affiliate-tier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi komisi.', 'sejoli').'">{{commission}}</code> <code title="'.__('Shortcode untuk menampilkan informasi detail order.', 'sejoli').'">{{order-detail}}</code> <code title="'.__('Shortcode untuk menampilkan informasi meta order.', 'sejoli').'">{{order-meta}}</code> <code title="'.__('Shortcode untuk menampilkan informasi metode pembayaran.', 'sejoli').'">{{payment-gateway}}</code> <code title="'.__('Shortcode untuk menampilkan informasi notifikasi per-produk.', 'sejoli').'">{{product-info}}</code></br></br><code title="'.__('Shortcode untuk menampilkan informasi kurir pengiriman.', 'sejoli').'">{{shipping-courier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nomor resi pengiriman.', 'sejoli').'">{{shipping-number}}</code></i></pre>' ), Field::make('separator', 'sep_refund_buyer', __('Konten untuk pembeli','sejoli')) ->set_classes('main-title'), Field::make('separator', 'sep_refund_email', __('Email' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media email', 'sejoli')), Field::make('text', 'refund_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('{{buyer-name}}, Order #{{invoice-id}} {{product-name}} anda telah kami lakukan refund', 'sejoli')), Field::make('rich_text', 'refund_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-refund-customer')), Field::make('separator' ,'sep_refund_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')), Field::make('textarea', 'refund_sms_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-refund-customer', 'sms')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')), Field::make('separator' ,'sep_refund_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')), Field::make('textarea', 'refund_whatsapp_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-refund-customer', 'whatsapp')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')), // Untuk admin Field::make('separator', 'sep_refund_admin', __('Konten untuk admin dan lainnya','sejoli')) ->set_classes('main-title'), Field::make('checkbox', 'refund_admin_active', __('Aktifkan notifikasi untuk admin', 'sejoli')), Field::make('separator', 'sep_refund_admin_email', __('Email' ,'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('text', 'refund_admin_email_recipient', __('Alamat Email Penerima', 'sejoli')) ->set_default_value(get_option('admin_email')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('text', 'refund_admin_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('Order #{{invoice-id}} {{product-name}} baru dari {{buyer-name}}', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('rich_text', 'refund_admin_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-new-admin')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_refund_admin_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('text', 'refund_admin_sms_recipient', __('Nomor SMS Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('textarea', 'refund_admin_sms_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-admin', 'sms')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_refund_admin_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('text', 'refund_admin_whatsapp_recipient', __('Nomor WhatsApp Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), Field::make('textarea', 'refund_admin_whatsapp_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-admin', 'whatsapp')) ->set_conditional_logic([ [ 'field' => 'refund_admin_active', 'value' => true, ] ]), ] ]; return $fields; } /** * Prepare content for notification * @since 1.0.0 * @return void */ protected function set_content() { // *********************** // Setup content for buyer // *********************** $this->set_recipient_title ('buyer', 'email', sejolisa_carbon_get_theme_option('refund_email_title')); $this->set_recipient_content('buyer', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('refund_email_content'), 'email', 'buyer' )); if(!empty(sejolisa_carbon_get_theme_option('refund_whatsapp_content'))) : $this->set_enable_send ('whatsapp', 'buyer', true); $this->set_recipient_content('buyer', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('refund_whatsapp_content'), 'whatsapp', 'buyer' )); endif; if(!empty(sejolisa_carbon_get_theme_option('refund_sms_content'))) : $this->set_enable_send ('sms', 'buyer', true); $this->set_recipient_content('buyer', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('refund_sms_content'), 'sms', 'buyer' )); endif; // *********************** // Setup content for buyer // *********************** if(false !== sejolisa_carbon_get_theme_option('refund_admin_active')) : $this->set_enable_send('email', 'admin', true); $this->set_recipient_title ('admin', 'email', sejolisa_carbon_get_theme_option('refund_admin_email_title')); $this->set_recipient_content('admin', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('refund_admin_email_content'), 'email', 'admin' )); if(!empty(sejolisa_carbon_get_theme_option('refund_admin_whatsapp_content'))) : $this->set_enable_send ('whatsapp', 'admin', true); $this->set_recipient_content ('admin', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('refund_admin_whatsapp_content'), 'whatsapp', 'admin' )); endif; if(!empty(sejolisa_carbon_get_theme_option('refund_admin_sms_content'))) : $this->set_enable_send ('sms', 'admin', true); $this->set_recipient_content('admin', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('refund_admin_sms_content'), 'sms', 'admin' )); endif; endif; } /** * Check current media recipients, the data will be stored in $this->recipients * @since 1.0.0 * @param string $media * @param string $role * @return void */ protected function check_recipients($media = 'email', $role = 'admin') { $recipients = sejolisa_carbon_get_theme_option('refund_' . $role . '_' . $media . '_recipient'); $this->recipients = explode(',', $recipients); } /** * Trigger to send notification * @since 1.0.0 * @param array $order_data Order data * @return void */ public function trigger(array $order_data) { $media_libraries = $this->get_media_libraries(); $this->prepare($order_data); $this->set_content(); $this->trigger_email($media_libraries['email']); $this->trigger_whatsapp($media_libraries['whatsapp']); $this->trigger_sms($media_libraries['sms']); } /** * Trigger to send email * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_email($media) { // send email for buyer $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); $media->send( array($this->buyer_data->user_email), $this->render_shortcode($this->get_recipient_content('buyer', 'email')), $this->render_shortcode($this->get_recipient_title('buyer', 'email')) ); if(false !== $this->is_able_to_send('email', 'admin')) : $this->check_recipients('email', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'email')), $this->render_shortcode($this->get_recipient_title('admin', 'email')) ); endif; } /** * Trigger to send whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_whatsapp($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); // send email for buyer if(false !== $this->is_able_to_send('whatsapp', 'buyer')) : $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'whatsapp')) ); endif; if(false !== $this->is_able_to_send('whatsapp', 'admin')) : $this->check_recipients('whatsapp', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'whatsapp')) ); endif; } /** * Trigger to SMS whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_sms($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); if(false !== $this->is_able_to_send('sms', 'buyer')) : // send email for buyer $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'sms')) ); endif; if(false !== $this->is_able_to_send('sms', 'admin')) : $this->check_recipients('sms', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'sms')) ); endif; } } PK ���\��ڛ<# <# pay-commission.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; class PayCommission extends Main { /** * Affiliate data * @since 1.0.0 * @var array */ protected $affiliate; /** * Recipient data * @since 1.0.0 * @var array */ protected $recipients; /** * Commission data * @since 1.1.0 * @var array */ protected $commission_data = array(); /** * Attachment for file * @since 1.0.0 * @var bool|array */ public $attachments = false; /** * Construction */ public function __construct() { add_filter('sejoli/notification/fields', [$this, 'add_setting_fields'], 100); } /** * Add notification setting fields * Hooked via filter, sejoli/notification/fields priority 25 * @since 1.0.0 * @param array $fields All fields for notification setting form */ public function add_setting_fields(array $fields) { $fields['pay-commission'] = [ 'title' => __('Pembayaran Komisi', 'sejoli'), 'fields' => [ // Untuk buyer Field::make( 'html', 'sejoli_pay_shortcode_html', __( 'Shortcode' ) ) ->set_html( '<b>Shortcode</b>: <pre><i><code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama url halaman member area.', 'sejoli').'">{{memberurl}}</code> <code title="'.__('Shortcode untuk menampilkan informasi akses user.', 'sejoli').'">{{user-access}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nama user.', 'sejoli').'">{{user-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama website.', 'sejoli').'">{{sitename}}</code> <code title="'.__('Shortcode untuk menampilkan url website.', 'sejoli').'">{{siteurl}}</code> <code title="'.__('Shortcode untuk menampilkan ID order.', 'sejoli').'">{{order-id}}</code> <code title="'.__('Shortcode untuk menampilkan nomor invoice.', 'sejoli').'">{{invoice-id}}</code></br></br><code title="'.__('Shortcode untuk menampilkan total order.', 'sejoli').'">{{order-grand-total}}</code><code title="'.__('Shortcode untuk menampilkan nama pembeli.', 'sejoli').'">{{buyer-name}}</code> <code title="'.__('Shortcode untuk menampilkan email pembeli.', 'sejoli').'">{{buyer-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon pembeli.', 'sejoli').'">{{buyer-phone}}</code> <code title="'.__('Shortcode untuk menampilkan nama produk.', 'sejoli').'">{{product-name}}</code> <code title="'.__('Shortcode untuk menampilkan jumlah produk.', 'sejoli').'">{{quantity}}</code> <code title="'.__('Shortcode untuk menampilkan url halaman konfirmasi pembayaran.', 'sejoli').'">{{confirm-url}}</code></br></br><code title="'.__('Shortcode untuk menampilkan link dokumen attachment konfirmasi pembayaran.', 'sejoli').'">{{confirm-payment-file}}</code> <code title="'.__('Shortcode untuk menampilkan tanggal pembelian.', 'sejoli').'">{{order-day}}</code> <code title="'.__('Shortcode untuk menampilkan masa berakhir pembelian.', 'sejoli').'">{{close-time}}</code> <code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan email affiliasi.', 'sejoli').'">{{affiliate-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon affiliasi.', 'sejoli').'">{{affiliate-phone}}</code></br></br><code title="'.__('Shortcode untuk menampilkan tier affiliasi.', 'sejoli').'">{{affiliate-tier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi komisi.', 'sejoli').'">{{commission}}</code> <code title="'.__('Shortcode untuk menampilkan informasi detail order.', 'sejoli').'">{{order-detail}}</code> <code title="'.__('Shortcode untuk menampilkan informasi meta order.', 'sejoli').'">{{order-meta}}</code> <code title="'.__('Shortcode untuk menampilkan informasi metode pembayaran.', 'sejoli').'">{{payment-gateway}}</code> <code title="'.__('Shortcode untuk menampilkan informasi notifikasi per-produk.', 'sejoli').'">{{product-info}}</code></br></br><code title="'.__('Shortcode untuk menampilkan informasi kurir pengiriman.', 'sejoli').'">{{shipping-courier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nomor resi pengiriman.', 'sejoli').'">{{shipping-number}}</code></i></pre>' ), Field::make('separator' ,'sep_pay_commission_email', __('Email' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media email', 'sejoli')), Field::make('text', 'pay_commission_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('{{affiliate-name}}, Komisi untuk anda sudah dibayarkan ', 'sejoli')), Field::make('rich_text', 'pay_commission_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('pay-affiliate-commission')), Field::make('separator' ,'sep_pay_commission_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')), Field::make('textarea', 'pay_commission_sms_content', __('Konten', 'sejoli')), Field::make('separator' ,'sep_pay_commission_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')), Field::make('textarea', 'pay_commission_whatsapp_content', __('Konten', 'sejoli')), ] ]; return $fields; } /** * Prepare content for notification * @since 1.0.0 * @return void */ protected function set_content() { // *********************** // Setup content for buyer // *********************** $this->content['affiliate']['email']['title'] = sejolisa_carbon_get_theme_option('pay_commission_email_title'); $this->content['affiliate']['email']['content'] = $this->set_notification_content( carbon_get_theme_option('pay_commission_email_content'), 'email', 'affiliate' ); if(!empty(sejolisa_carbon_get_theme_option('pay_commission_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'affiliate', true); $this->content['affiliate']['whatsapp']['content'] = $this->set_notification_content( sejolisa_carbon_get_theme_option('pay_commission_whatsapp_content'), 'whatsapp', 'affiliate' ); endif; if(!empty(sejolisa_carbon_get_theme_option('pay_commission_sms_content'))) : $this->set_enable_send('sms', 'affiliate', true); $this->content['affiliate']['sms']['content'] = $this->set_notification_content( carbon_get_theme_option('pay_commission_sms_content'), 'sms', 'affiliate' ); endif; } /** * Render shortcode, overwrite parent class * @since 1.1.0 * @param string $content * @return string */ public function render_shortcode($content) { foreach( $this->commission_data as $key => $value) : if('attachments' !== $key) : $content = safe_str_replace("{{".$key."}}", $value, $content); endif; endforeach; return $content; } /** * Trigger to send notification * @since 1.0.0 * @param array $commission * @return void */ public function trigger(array $commission) { $media_libraries = $this->get_media_libraries(); $this->commission_data = $commission; $this->set_content(); $media_libraries['email']->send( array($commission['affiliate-email']), $this->render_shortcode($this->content['affiliate']['email']['content']), $this->render_shortcode($this->content['affiliate']['email']['title']), 'affiliate', $commission['attachments'] ); if(!empty(sejolisa_carbon_get_theme_option('pay_commission_whatsapp_content'))) : $media_libraries['whatsapp']->send( array($commission['affiliate-phone']), $this->render_shortcode($this->content['affiliate']['whatsapp']['content']) ); endif; if(!empty(sejolisa_carbon_get_theme_option('pay_commission_sms_content'))) : $media_libraries['sms']->send( array($commission['affiliate-phone']), $this->render_shortcode($this->content['buyer']['sms']['content']) ); endif; } } PK ���\���C �C confirm-payment.phpnu �[��� <?php namespace SejoliSA\Notification; use Carbon_Fields\Container; use Carbon_Fields\Field; class ConfirmPayment extends Main { /** * Recipient data * @since 1.0.0 * @var array */ protected $recipients; /** * Attachment for file * @since 1.0.0 * @var bool|array */ public $attachments = false; /** * Construction */ public function __construct() { add_filter('sejoli/notification/fields', [$this, 'add_setting_fields'], 31); } /** * Add notification setting fields * Hooked via filter, sejoli/notification/fields priority 25 * @since 1.0.0 * @param array $fields All fields for notification setting form */ public function add_setting_fields(array $fields) { $fields['confirm-payment'] = [ 'title' => __('Konfirmasi Pembayaran', 'sejoli'), 'fields' => [ // untuk customer Field::make( 'html', 'sejoli_cp_shortcode_html', __( 'Shortcode' ) ) ->set_html( '<b>Shortcode</b>: <pre><i><code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama url halaman member area.', 'sejoli').'">{{memberurl}}</code> <code title="'.__('Shortcode untuk menampilkan informasi akses user.', 'sejoli').'">{{user-access}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nama user.', 'sejoli').'">{{user-name}}</code> <code title="'.__('Shortcode untuk menampilkan nama website.', 'sejoli').'">{{sitename}}</code> <code title="'.__('Shortcode untuk menampilkan url website.', 'sejoli').'">{{siteurl}}</code> <code title="'.__('Shortcode untuk menampilkan ID order.', 'sejoli').'">{{order-id}}</code> <code title="'.__('Shortcode untuk menampilkan nomor invoice.', 'sejoli').'">{{invoice-id}}</code></br></br><code title="'.__('Shortcode untuk menampilkan total order.', 'sejoli').'">{{order-grand-total}}</code><code title="'.__('Shortcode untuk menampilkan nama pembeli.', 'sejoli').'">{{buyer-name}}</code> <code title="'.__('Shortcode untuk menampilkan email pembeli.', 'sejoli').'">{{buyer-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon pembeli.', 'sejoli').'">{{buyer-phone}}</code> <code title="'.__('Shortcode untuk menampilkan nama produk.', 'sejoli').'">{{product-name}}</code> <code title="'.__('Shortcode untuk menampilkan jumlah produk.', 'sejoli').'">{{quantity}}</code> <code title="'.__('Shortcode untuk menampilkan url halaman konfirmasi pembayaran.', 'sejoli').'">{{confirm-url}}</code></br></br><code title="'.__('Shortcode untuk menampilkan link dokumen attachment konfirmasi pembayaran.', 'sejoli').'">{{confirm-payment-file}}</code> <code title="'.__('Shortcode untuk menampilkan tanggal pembelian.', 'sejoli').'">{{order-day}}</code> <code title="'.__('Shortcode untuk menampilkan masa berakhir pembelian.', 'sejoli').'">{{close-time}}</code> <code title="'.__('Shortcode untuk menampilkan nama affiliasi.', 'sejoli').'">{{affiliate-name}}</code> <code title="'.__('Shortcode untuk menampilkan email affiliasi.', 'sejoli').'">{{affiliate-email}}</code> <code title="'.__('Shortcode untuk menampilkan no. telepon affiliasi.', 'sejoli').'">{{affiliate-phone}}</code></br></br><code title="'.__('Shortcode untuk menampilkan tier affiliasi.', 'sejoli').'">{{affiliate-tier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi komisi.', 'sejoli').'">{{commission}}</code> <code title="'.__('Shortcode untuk menampilkan informasi detail order.', 'sejoli').'">{{order-detail}}</code> <code title="'.__('Shortcode untuk menampilkan informasi meta order.', 'sejoli').'">{{order-meta}}</code> <code title="'.__('Shortcode untuk menampilkan informasi metode pembayaran.', 'sejoli').'">{{payment-gateway}}</code> <code title="'.__('Shortcode untuk menampilkan informasi notifikasi per-produk.', 'sejoli').'">{{product-info}}</code></br></br><code title="'.__('Shortcode untuk menampilkan informasi kurir pengiriman.', 'sejoli').'">{{shipping-courier}}</code> <code title="'.__('Shortcode untuk menampilkan informasi nomor resi pengiriman.', 'sejoli').'">{{shipping-number}}</code></i></pre>' ), Field::make('separator', 'sep_confirm_payment_buyer', __('Konten untuk pembeli','sejoli')) ->set_classes('main-title'), Field::make('separator', 'sep_confirm_payment_email', __('Email' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media email', 'sejoli')), Field::make('text', 'confirm_payment_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('Halo {{buyer-name}}, Terima Kasih Atas Konfirmasi Pembayaran Anda', 'sejoli')), Field::make('rich_text', 'confirm_payment_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-confirm-payment-customer')), Field::make('separator' ,'sep_confirm_payment_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')), Field::make('textarea', 'confirm_payment_sms_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-confirm-payment-customer', 'sms')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')), Field::make('separator' ,'sep_confirm_payment_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')), Field::make('textarea', 'confirm_payment_whatsapp_content', __('Konten', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-confirm-payment-customer', 'whatsapp')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')), // Untuk admin Field::make('separator', 'sep_confirm_payment_admin', __('Konten untuk admin dan lainnya','sejoli')) ->set_classes('main-title'), Field::make('checkbox', 'confirm_payment_admin_active', __('Aktifkan notifikasi untuk admin', 'sejoli')), Field::make('separator', 'sep_confirm_payment_admin_email', __('Email' ,'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('text', 'confirm_payment_admin_email_recipient', __('Alamat Email Penerima', 'sejoli')) ->set_default_value(get_option('admin_email')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('text', 'confirm_payment_admin_email_title', __('Judul' ,'sejoli')) ->set_required(true) ->set_default_value(__('Order #{{invoice-id}} {{product-name}} dari {{buyer-name}} telah melakukan konfirmasi pembayaran. Proses segera', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('rich_text', 'confirm_payment_admin_email_content', __('Konten', 'sejoli')) ->set_required(true) ->set_default_value(sejoli_get_notification_content('order-in-progress-admin')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_confirm_payment_admin_sms', __('SMS' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media sms', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('text', 'confirm_payment_admin_sms_recipient', __('Nomor SMS Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('textarea', 'confirm_payment_admin_sms_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via sms', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-admin', 'sms')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('separator' ,'sep_confirm_payment_admin_whatsapp', __('WhatsApp' ,'sejoli')) ->set_help_text(__('Pengaturan konten untuk media whatsapp', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('text', 'confirm_payment_admin_whatsapp_recipient', __('Nomor WhatsApp Penerima', 'sejoli')) ->set_help_text(__('Gunakan tanda koma jika penerima ada lebih dari 1', 'sejoli')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), Field::make('textarea', 'confirm_payment_admin_whatsapp_content', __('Konten', 'sejoli')) ->set_help_text(__('Dengan mengosongkan isian ini, tidak akan ada notifikasi yang dikirimkan via whatsapp', 'sejoli')) ->set_default_value(sejoli_get_notification_content('order-new-admin', 'whatsapp')) ->set_conditional_logic([ [ 'field' => 'confirm_payment_admin_active', 'value' => true, ] ]), ] ]; return $fields; } /** * Prepare content for notification * @since 1.0.0 * @return void */ protected function set_content() { // *********************** // Setup content for buyer // *********************** $this->set_recipient_title ('buyer', 'email', sejolisa_carbon_get_theme_option('confirm_payment_email_title')); $this->set_recipient_content ('buyer', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('confirm_payment_email_content'), 'email', 'buyer' )); if(!empty(sejolisa_carbon_get_theme_option('confirm_payment_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'buyer', true); $this->set_recipient_content('buyer', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('confirm_payment_whatsapp_content'), 'whatsapp', 'buyer' )); endif; if(!empty(sejolisa_carbon_get_theme_option('confirm_payment_sms_content'))) : $this->set_enable_send('sms', 'buyer', true); $this->set_recipient_content('buyer', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('confirm_payment_sms_content'), 'sms', 'buyer' )); endif; // *********************** // Setup content for buyer // *********************** if(false !== sejolisa_carbon_get_theme_option('confirm_payment_admin_active')) : $this->set_enable_send('email', 'admin', true); $this->set_recipient_title ('admin', 'email', sejolisa_carbon_get_theme_option('confirm_payment_admin_email_title')); $this->set_recipient_content ('admin', 'email', $this->set_notification_content( sejolisa_carbon_get_theme_option('confirm_payment_admin_email_content'), 'email', 'admin' )); if(!empty(sejolisa_carbon_get_theme_option('confirm_payment_admin_whatsapp_content'))) : $this->set_enable_send('whatsapp', 'admin', true); $this->set_recipient_content('admin', 'whatsapp', $this->set_notification_content( sejolisa_carbon_get_theme_option('confirm_payment_admin_whatsapp_content'), 'whatsapp', 'admin' )); endif; if(!empty(sejolisa_carbon_get_theme_option('confirm_payment_admin_sms_content'))) : $this->set_enable_send('sms', 'admin', true); $this->set_recipient_content('buyer', 'sms', $this->set_notification_content( sejolisa_carbon_get_theme_option('confirm_payment_admin_sms_content'), 'sms', 'admin' )); endif; endif; } /** * Check current media recipients, the data will be stored in $this->recipients * @since 1.0.0 * @param string $media * @param string $role * @return void */ protected function check_recipients($media = 'email', $role = 'admin') { $recipients = sejolisa_carbon_get_theme_option('confirm_payment_' . $role . '_' . $media . '_recipient'); $this->recipients = explode(',', $recipients); } /** * Trigger to send notification * @since 1.0.0 * @param array $order_data Order data * @return void */ public function trigger(array $order_data, $attachments = array()) { $media_libraries = $this->get_media_libraries(); $this->prepare($order_data); $this->set_content(); $this->trigger_email($media_libraries['email'], $attachments); $this->trigger_whatsapp($media_libraries['whatsapp']); $this->trigger_sms($media_libraries['sms']); } /** * Trigger to send email * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_email($media, $attachments) { // send email for buyer $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, 'confirm_data' => "payment_confirm", ]); $media->send( array($this->buyer_data->user_email), $this->render_shortcode($this->get_recipient_content('buyer', 'email')), $this->render_shortcode($this->get_recipient_title('buyer', 'email')) ); if(false !== $this->is_able_to_send('email', 'admin')) : $this->check_recipients('email', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'email')), $this->render_shortcode($this->get_recipient_title('admin', 'email')), 'admin', $attachments ); endif; } /** * Trigger to send whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_whatsapp($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); // send email for buyer if(false !== $this->is_able_to_send('whatsapp', 'buyer')) : $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'whatsapp')) ); endif; if(false !== $this->is_able_to_send('whatsapp', 'admin')) : $this->check_recipients('whatsapp', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'whatsapp')) ); endif; } /** * Trigger to SMS whatsapp * @since 1.0.0 * @param object $media Selected media object * @return void */ protected function trigger_sms($media) { $media->set_data([ 'order_data' => $this->order_data, 'product_data' => $this->product_data, 'buyer_data' => $this->buyer_data, 'affiliate_data' => $this->affiliate_data, ]); if(false !== $this->is_able_to_send('sms', 'buyer')) : // send email for buyer $media->send( array($this->buyer_data->meta->phone), $this->render_shortcode($this->get_recipient_content('buyer', 'sms')) ); endif; if(false !== $this->is_able_to_send('sms', 'admin')) : $this->check_recipients('sms', 'admin'); $media->send( $this->recipients, $this->render_shortcode($this->get_recipient_content('admin', 'sms')) ); endif; } } PK ���\c9�<