/** * Activate single course if already purchases * @return void */ public function activate_purchased_single_course() { global $post, $current_user; if (WooThemes_Sensei_Utils::sensei_is_woocommerce_activated()) { if (!is_user_logged_in()) { return; } if (!isset($post->ID)) { return; } $user_id = $current_user->ID; $course_id = $post->ID; $course_product_id = (int) get_post_meta($course_id, '_course_woocommerce_product', true); if (!$course_product_id) { return; } $user_course_status = WooThemes_Sensei_Utils::user_course_status(intval($course_id), $user_id); // Ignore course if already completed if (WooThemes_Sensei_Utils::user_completed_course($user_course_status)) { return; } // Ignore course if already started if ($user_course_status) { return; } // Get all user's orders $order_args = array('post_type' => 'shop_order', 'posts_per_page' => -1, 'post_status' => array('wc-processing', 'wc-completed'), 'meta_query' => array(array('key' => '_customer_user', 'value' => $user_id)), 'fields' => 'ids'); $orders = get_posts($order_args); foreach ($orders as $order_post_id) { // Get course product IDs from order $order = new WC_Order($order_post_id); $items = $order->get_items(); foreach ($items as $item) { $product = wc_get_product($item['product_id']); // handle product bundles if ($product->is_type('bundle')) { $bundled_product = new WC_Product_Bundle($product->id); $bundled_items = $bundled_product->get_bundled_items(); foreach ($bundled_items as $item) { if ($item->product_id == $course_product_id) { WooThemes_Sensei_Utils::user_start_course($user_id, $course_id); return; } } } else { // handle regular products if ($item['product_id'] == $course_product_id) { WooThemes_Sensei_Utils::user_start_course($user_id, $course_id); return; } } } } } }