/** * rennder user package info * @param Integer $user_ID the user_ID want to render * * @package AE Package * @category payment * * @since 1.0 * @author Dakachi */ function ae_user_package_info($user_ID) { if (!$user_ID) { return; } global $ae_post_factory; $ae_pack = $ae_post_factory->get('pack'); $packs = $ae_pack->fetch(); $orders = AE_Payment::get_current_order($user_ID); $package_data = AE_Package::get_package_data($user_ID); foreach ($packs as $package) { $number_of_post = $package->et_number_posts; $sku = $package->sku; $text = ''; if (isset($package_data[$sku]) && $package_data[$sku]['qty'] > 0) { $order = get_post($orders[$sku]); if (!$order || is_wp_error($order) || !in_array($order->post_status, array('publish', 'pending'))) { continue; } /** * print text when company has job left in package */ ?> <p> <?php $number_of_post = $package_data[$sku]['qty']; if ($order->post_status == 'publish') { printf(__("You purchased package <strong>%s</strong> and have %d post/s left.", 'aecore-payments-backend'), $package->post_title, $number_of_post); } if ($order->post_status == 'pending') { printf(__("You purchased package <strong>%s</strong> and have %d post/s left. Your posted post is pending until payment.", 'aecore-payments-backend'), $package->post_title, $number_of_post); } ?> </p> <?php } } }
/** * update user package data after post an ad * @param string $pakage the package sku * @param int $user_id the user id * * @return null * @author Dakachi */ public static function update_package_data($package, $user_id = 0) { if (!$user_id) { global $user_ID; $user_id = $user_ID; } $used_package = self::get_package_data($user_id); if (!isset($used_package[$package])) { return; } $qty = (int) ($used_package[$package]['qty'] - 1); if ($qty == 0) { // remove user current order for the package $group = AE_Payment::get_current_order($user_id); unset($group[$package]); AE_Payment::set_current_order($user_id, $group); } $used_package[$package]['qty'] = $qty; self::set_package_data($user_id, $used_package); }
function do_checkout(ET_Order $order) { global $ae_post_factory, $user_ID; /** * check session */ $session = et_read_session(); $ad_id = isset($session['ad_id']) ? $session['ad_id'] : ''; if ($ad_id) { $post = get_post($ad_id); // ad id existed /** * get object by post type and convert */ $post_obj = $ae_post_factory->get($post->post_type); $ad = $post_obj->convert($post); if (!is_wp_error($ad)) { /** * check user is available to use selected package */ $available = AE_Package::check_use_package($ad->et_payment_package, $ad->post_author); if ($available) { // process order data $payment_return = array('ACK' => true, 'payment_type' => 'usePackage'); /** * get user current order for package */ $current_order = AE_Payment::get_current_order($ad->post_author, $ad->et_payment_package); $order = get_post($current_order); if (!$order || is_wp_error($order)) { return array('ACK' => false, 'payment_type' => 'usePackage', 'msg' => __("Invalid Order or Package", ET_DOMAIN)); } $ad_data = array(); $ad_data['ID'] = $ad->ID; /** * update ad order */ $ad_data['et_ad_order'] = $current_order; $ad_data['post_status'] = 'pending'; if ($order->post_status == 'publish') { $options = AE_Options::get_instance(); $ad_data['et_paid'] = 1; if (!$options->use_pending) { $ad_data['post_status'] = 'publish'; } } else { $ad_data['et_paid'] = 0; } $ad_data['change_status'] = 'change_status'; $ad_data['method'] = 'update'; /** * sync Ad data */ $return = wp_update_post($ad_data); // update post paid status update_post_meta($ad->ID, 'et_paid', $ad_data['et_paid']); // update post package order id update_post_meta($ad->ID, 'et_ad_order', $ad_data['et_ad_order']); /** * update seller package quantity */ AE_Package::update_package_data($ad->et_payment_package, $ad->post_author); return $payment_return; } } } return array('ACK' => false, 'payment_type' => 'usePackage', 'msg' => __("Invalid Ad ID", ET_DOMAIN)); }
<!-- Step 1 --> <?php global $user_ID, $ae_post_factory; $ae_pack = $ae_post_factory->get('pack'); $packs = $ae_pack->fetch('pack'); $package_data = AE_Package::get_package_data($user_ID); // echo '<pre>'; // var_dump($package_data); $orders = AE_Payment::get_current_order($user_ID); ?> <div class="step-wrapper step-plan" id="step-plan"> <a href="#" class="step-heading active"> <span class="number-step">1</span> <span class="text-heading-step"><?php _e('Select your pricing plan', ET_DOMAIN); ?> </span> <i class="fa fa-caret-down"></i> </a> <div class="step-content-wrapper content"> <ul class="list-price"> <?php foreach ($packs as $key => $package) { $number_of_post = $package->et_number_posts; $sku = $package->sku; $text = ''; $order = false; if ($number_of_post > 1) { // get package current order if (isset($orders[$sku])) {