Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  • Hook Reference
  • Docs Home

Packages

  • Abandoned-Cart-Pro-for-WooCommerce
    • Admin
      • Action
      • Activate-plugin
      • Component
      • I18N
      • Import-Pro
      • License
      • Menu
      • Notices
      • Popup-Modal
        • Cart-Detail
      • Recover
      • Report
      • Setting
      • Settings
      • SMS
      • Tab
      • Template
    • Ajax-Functions
    • Classes
    • Common-Functions
    • Database-Layer
    • Encrypt-Decrypt-Data
    • Frontend
      • Cart-Capture
      • Cart-Populate
      • Coupon
      • Place-Order
    • Setting
    • Update
  • None

Classes

  • EDD_AC_WOO_Plugin_Updater
  • Wcap_Abandoned_Cart_Details
  • Wcap_Abandoned_Cart_List
  • Wcap_Abandoned_Orders_Table
  • Wcap_Abandoned_Trash_Orders_Table
  • Wcap_Actions
  • Wcap_Actions_Handler
  • Wcap_Activate_Plugin
  • wcap_active_license_notice
  • Wcap_Add_Cart_Popup_Modal
  • Wcap_Add_Settings
  • Wcap_Admin_Recovery
  • Wcap_Adv_settings
  • Wcap_Aes
  • Wcap_Aes_Ctr
  • Wcap_Ajax
  • Wcap_All_Component
  • Wcap_Atc_Dashboard
  • Wcap_Cart_Updated
  • Wcap_Common
  • Wcap_Coupon
  • Wcap_Dashboard
  • Wcap_Dashboard_Report
  • Wcap_Dashboard_Report_Action
  • Wcap_Dashboard_Widget
  • WCAP_Dashboard_Widget_Heartbeat
  • Wcap_Dashboard_Widget_Report
  • WCAP_DB_Layer
  • Wcap_Default_Settings
  • Wcap_Display_Notices
  • Wcap_EDD
  • Wcap_Eent_Email_List
  • Wcap_Email_Settings
  • Wcap_Email_Template_Fields
  • Wcap_Email_Template_List
  • Wcap_Import_Lite_to_Pro
  • Wcap_Load_Hooks
  • Wcap_Load_Scripts
  • Wcap_Localization
  • WCAP_Manual_Email
  • Wcap_Menu
  • WCAP_On_Placed_Order
  • Wcap_Order_Received
  • Wcap_Personal_Data_Eraser
  • Wcap_Personal_Data_Export
  • Wcap_Populate_Cart_Of_User
  • Wcap_Print_And_CSV
  • Wcap_Product_Report_List
  • Wcap_Product_Report_Table
  • Wcap_Recover_Orders_Table
  • Wcap_Recover_Trash_Orders_Table
  • Wcap_Recovered_Order_List
  • Wcap_Send_Manual_Email
  • Wcap_Sent_Emails_Table
  • Wcap_SMS
  • Wcap_SMS_Templates
  • Wcap_Templates_Table
  • Wcap_Tiny_Mce
  • WCAP_Tiny_Url
  • Wcap_Tracking_msg
  • Wcap_TS_deactivate
  • Wcap_TS_Faq_Support
  • Wcap_TS_Tracker
  • Wcap_TS_tracking
  • Wcap_TS_Welcome
  • Wcap_TS_Woo_Active
  • Wcap_Update_Check
  • Woocommerce_Abandon_Cart

Functions

  • wcap_add_notification_meta
  • wcap_get_notification_meta
  • wcap_get_notification_meta_by_key
  • wcap_get_template_status
  • wcap_update_notification_meta
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 
<?php
/**
 * Send an email to the admin when the abandoned cart is recovered.
 * @author  Tyche Softwares
 * @package Abandoned-Cart-Pro-for-WooCommerce/Admin/Recover
 * @since 5.0
 */

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) exit;

if ( !class_exists('Wcap_Admin_Recovery' ) ) {
    /**
     * Send an email to the admin when the abandoned cart is recovered.
     */
    class Wcap_Admin_Recovery{

        /**
         * This function will send the email to the store admin when any abandoned cart email recovered.
         * @hook woocommerce_order_status_changed
         * @param int | string  $order_id Order id
         * @param string $wcap_old_status Old status of the order
         * @param string $wcap_new_status New status of the order    
         * @globals mixed $woocommerce
         * @since 1.0
         */
        public static function wcap_email_admin_recovery ( $order_id, $wcap_old_status, $wcap_new_status ) {
           global $woocommerce;

           if (    ( 'pending' == $wcap_old_status && 'processing' == $wcap_new_status )
                || ( 'pending' == $wcap_old_status && 'completed'  == $wcap_new_status )
                || ( 'pending' == $wcap_old_status && 'on-hold'    == $wcap_new_status )
                || ( 'failed'  == $wcap_old_status && 'completed'  == $wcap_new_status )
                || ( 'failed'  == $wcap_old_status && 'processing' == $wcap_new_status )
            ) {
               $user_id                 = get_current_user_id();
               $ac_email_admin_recovery = get_option( 'ac_email_admin_on_recovery' );
               $order                   = new WC_Order( $order_id );
               if( version_compare( $woocommerce->version, '3.0.0', ">=" ) ) {
                    $user_id              = $order->get_user_id();
                } else {
                    $user_id              = $order->user_id;
                }
                if( $ac_email_admin_recovery == 'on' ) {
                   $recovered_email_sent          = get_post_meta( $order_id, 'wcap_recovered_email_sent', true );
                   $wcap_check_order_is_recovered = Wcap_Admin_Recovery::wcap_check_order_is_recovered ( $order_id );

                   if ( 'yes' != $recovered_email_sent && true === $wcap_check_order_is_recovered ) { // indicates cart is abandoned
                       $order          = new WC_Order( $order_id );
                       $email_heading  = __( 'New Customer Order - Recovered', 'woocommerce' );
                       $blogname       = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
                       $email_subject  = __( 'New Customer Order - Recovered', 'woocommerce' );
                       $user_email     = get_option( 'admin_email' );
                       $headers[]      = "From: Admin <".$user_email.">";
                       $headers[]      = "Content-Type: text/html";
                       // Buffer
                       ob_start();
                       // Get mail template
                       wc_get_template( 'emails/admin-new-order.php', array(
                             'order'         => $order,
                             'email_heading' => $email_heading,
                             'sent_to_admin' => false,
                             'plain_text'    => false,
                             'email'         => true
                            )
                        );
                       // Get contents
                       $email_body = ob_get_clean();
                       wc_mail( $user_email, $email_subject, $email_body, $headers );

                       update_post_meta( $order_id, 'wcap_recovered_email_sent', 'yes' );
                   }
               }
           }
       }

       /**
        * This function will check if the order is recovered or not.
        * @param int | string $wcap_order_id Order Id
        * @globals mixed $wpdb
        * @return boolean true | false 
        * @since 5.0
        */
       public static function wcap_check_order_is_recovered ( $wcap_order_id ){
            global $wpdb;

            $wcap_recover_order_query        = "SELECT `recovered_cart` FROM `". WCAP_ABANDONED_CART_HISTORY_TABLE ."` WHERE `recovered_cart` = %d";
            $wcap_recover_order_query_result = $wpdb->get_results( $wpdb->prepare( $wcap_recover_order_query, $wcap_order_id ) );
            if ( count( $wcap_recover_order_query_result ) > 0 ){
                return true;
            }
            return false;
        }
    }
}
API documentation generated by ApiGen