/** * Runs when an order is cancelled. * @since 1.2.0 * @access public * @param integer $order_id order ID * @return void */ public function sensei_woocommerce_cancel_order($order_id) { // Get order object $order = new WC_Order($order_id); // Run through each product ordered if (0 < sizeof($order->get_items())) { // Get order user $user_id = $order->__get('user_id'); foreach ($order->get_items() as $item) { $product_type = ''; if (isset($item['variation_id']) && 0 < $item['variation_id']) { $item_id = $item['variation_id']; $product_type = 'variation'; } else { $item_id = $item['product_id']; } // End If Statement $_product = $this->sensei_get_woocommerce_product_object($item_id, $product_type); // Get courses that use the WC product $courses = array(); $courses = $this->post_types->course->get_product_courses($item_id); // Loop and update those courses foreach ($courses as $course_item) { // Check and Remove course from courses user meta $dataset_changes = WooThemes_Sensei_Utils::sensei_remove_user_from_course($course_item->ID, $user_id); } // End For Loop } // End For Loop } // End If Statement }
/** * Remove active course when an order is refunded or cancelled * @param integer $order_id ID of order * @return void */ public function remove_active_course($order_id) { $order = new WC_Order($order_id); foreach ($order->get_items() as $item) { if ($item['product_id'] > 0) { $user_id = get_post_meta($order_id, '_customer_user', true); if ($user_id) { // Get all courses for product $args = array('posts_per_page' => -1, 'post_type' => 'course', 'meta_query' => array(array('key' => '_course_woocommerce_product', 'value' => $item['product_id'])), 'orderby' => 'menu_order date', 'order' => 'ASC', 'fields' => 'ids'); $course_ids = get_posts($args); if ($course_ids && count($course_ids) > 0) { foreach ($course_ids as $course_id) { // Remove all course user meta WooThemes_Sensei_Utils::sensei_remove_user_from_course($course_id, $user_id); } // End For Loop } // End If Statement } // End If Statement } // End If Statement } // End For Loop }
public function remove_user_from_post() { global $woothemes_sensei; $return = ''; // Security check $nonce = ''; if (isset($_POST['remove_user_from_post_nonce'])) { $nonce = esc_html($_POST['remove_user_from_post_nonce']); } if (!wp_verify_nonce($nonce, 'remove_user_from_post_nonce')) { die($return); } // Parse POST data $data = $_POST['data']; $action_data = array(); parse_str($data, $action_data); if ($action_data['user_id'] && $action_data['post_id'] && $action_data['post_type']) { $user_id = intval($action_data['user_id']); $post_id = intval($action_data['post_id']); $post_type = sanitize_text_field($action_data['post_type']); $order_id = sanitize_text_field($action_data['order_id']); $user = get_userdata($user_id); switch ($post_type) { case 'course': $removed = WooThemes_Sensei_Utils::sensei_remove_user_from_course($post_id, $user_id); if (!empty($order_id) && is_woocommerce_active()) { $order = new WC_Order($order_id); if (!empty($order)) { $order->update_status('cancelled'); } } break; case 'lesson': $removed = WooThemes_Sensei_Utils::sensei_remove_user_from_lesson($post_id, $user_id); break; } if ($removed) { $return = 'removed'; } } die($return); }
public function remove_user_from_post() { global $woothemes_sensei; $return = ''; // Security check $nonce = ''; if (isset($_POST['remove_user_from_post_nonce'])) { $nonce = esc_html($_POST['remove_user_from_post_nonce']); } if (!wp_verify_nonce($nonce, 'remove_user_from_post_nonce')) { die($return); } // Parse POST data $data = $_POST['data']; $action_data = array(); parse_str($data, $action_data); if ($action_data['user_id'] && $action_data['post_id'] && $action_data['post_type']) { $user_id = intval($action_data['user_id']); $post_id = intval($action_data['post_id']); $post_type = sanitize_text_field($action_data['post_type']); $user = get_userdata($user_id); switch ($post_type) { case 'course': $removed = WooThemes_Sensei_Utils::sensei_remove_user_from_course($post_id, $user_id); do_action('sensei_user_course_reset', $user_id, $post_id); break; case 'lesson': $removed = WooThemes_Sensei_Utils::sensei_remove_user_from_lesson($post_id, $user_id); do_action('sensei_user_lesson_reset', $user_id, $post_id); break; } if ($removed) { $return = 'removed'; } } die($return); }