/** * Add points for purchase * * Handles to add points for purchases * * @package Easy Digital Downloads - Points and Rewards * @since 1.0.0 */ public function edd_points_add_point_for_complete_purchase($payment_id) { global $edd_options, $current_user; //get payment data $paymentdata = edd_get_payment_meta($payment_id); $userdata = edd_get_payment_meta_user_info($payment_id); $user_id = isset($userdata['id']) && !empty($userdata['id']) ? $userdata['id'] : 0; //get discount towards points $gotdiscount = $this->model->edd_points_get_payment_discount($payment_id); //check user has redeemed points or not & user_id should not empty if (isset($gotdiscount) && !empty($gotdiscount) && !empty($user_id)) { //get discounte price from points $discountedpoints = $this->model->edd_points_calculate_points($gotdiscount); //update user points edd_points_minus_points_from_user($discountedpoints, $user_id); //points label $pointslable = $this->model->edd_points_get_points_label($discountedpoints); //record data logs for redeem for purchase $post_data = array('post_title' => sprintf(__('Redeem %s for purchase', 'eddpoints'), $pointslable), 'post_content' => sprintf(__('%s redeemed for purchasing download by redeeming the points and get discounts.', 'eddpoints'), $pointslable), 'post_author' => $user_id); //log meta array $log_meta = array('userpoint' => $discountedpoints, 'events' => 'redeemed_purchase', 'operation' => 'minus'); //insert entry in log $this->logs->edd_points_insert_logs($post_data, $log_meta); // set order meta, regardless of whether any points were earned, just so we know the process took place update_post_meta($payment_id, '_edd_points_order_redeemed', $discountedpoints); } //end if to check points redeemed taken by buyer or not // get cartdata from older order $cartdata = edd_get_payment_meta_cart_details($payment_id); //get bought points for points downloads types $boughtpoints = $this->model->edd_points_get_bought_points($cartdata); //get cart points from cartdata and payment discount given to user $cartpoints = $this->model->edd_points_get_user_checkout_points($cartdata, $gotdiscount); //add bought points to cart points $cartpoints = !empty($boughtpoints) ? $cartpoints + $boughtpoints : $cartpoints; //check checkout points earned points or user id is not empty if (!empty($cartpoints) && !empty($user_id)) { //points label $pointslable = $this->model->edd_points_get_points_label($cartpoints); //get user points after subtracting the redemption points $userpoints = edd_points_get_user_points(); $post_data = array('post_title' => sprintf(__('%s earned for purchasing the downloads.', 'eddpoints'), $pointslable), 'post_content' => sprintf(__('Get %s for purchasing the downloads.', 'eddpoints'), $pointslable), 'post_author' => $user_id); $log_meta = array('userpoint' => $cartpoints, 'events' => 'earned_purchase', 'operation' => 'add'); //insert entry in log $this->logs->edd_points_insert_logs($post_data, $log_meta); //update user points edd_points_add_points_to_user($cartpoints, $user_id); // set order meta, regardless of whether any points were earned, just so we know the process took place update_post_meta($payment_id, '_edd_points_order_earned', $cartpoints); } //end if to check checkout points should not empty }
/** * AJAX Call for adjust user points * * Handles to adjust user points using ajax * * @package Easy Digital Downloads - Points and Rewards * @since 1.0.0 */ public function edd_points_adjust_user_points() { if (isset($_POST['userid']) && !empty($_POST['userid']) && isset($_POST['points']) && !empty($_POST['points'])) { // Check user id and points are not empty $user_id = $_POST['userid']; $current_points = $_POST['points']; //check number contains minus sign or not if (strpos($current_points, '-') !== false) { $operation = 'minus'; $current_points = str_replace('-', '', $current_points); // Update user points to user account edd_points_minus_points_from_user($current_points, $user_id); } else { $operation = 'add'; $current_points = str_replace('+', '', $current_points); // Update user points to user account edd_points_add_points_to_user($current_points, $user_id); } // Get user points from user meta $ubalance = edd_points_get_user_points($user_id); if (isset($_POST['log']) && !empty($_POST['log']) && trim($_POST['log'], ' ') != '') { // Check log is not empty $post_data = array('post_title' => $_POST['log'], 'post_content' => $_POST['log'], 'post_author' => $user_id); $log_meta = array('userpoint' => abs($current_points), 'events' => 'manual', 'operation' => $operation); $this->logs->edd_points_insert_logs($post_data, $log_meta); } echo $ubalance; } else { echo 'error'; } exit; }