Function Reference: geodir_save_listing_payment
Summary
Process the listing price package values after listing saved.
Global Values
- $gd_session
- (object) (required) GeoDirectory Session object.
- Default: None
Parameters
- $last_post_id
- (int) (required) The listing id.
- Default: None
- $request_info
- (array) (required) The listing request data.
- Default: None
Change Log
Since: 1.0.0
Actions
‘geodir_save_listing_payment’ [Line: 715]
Source Code
function geodir_save_listing_payment( $last_post_id, $request_info ) { global $gd_session; $payment_info = array(); $package_info = array(); if ( isset( $request_info['alive_days'] ) && isset( $request_info['expire_date'] ) ) { if( $request_info['alive_days'] > 0 ) { $old_alive_days = geodir_get_post_meta( $last_post_id, 'alive_days', true ); $old_expire_date = geodir_get_post_meta( $last_post_id, 'expire_date', true ); $old_expire_date = $request_info['expire_date']; $actual_date = date( 'Y-m-d' ); if( $old_alive_days > 0 && $old_expire_date != '' && $old_expire_date != '0000-00-00' && $old_expire_date != 'Never' ) { $actual_date = date( 'Y-m-d', strtotime( $old_expire_date . "-" . $old_alive_days . " days" ) ); } $payment_info['expire_date'] = date( 'Y-m-d', strtotime( $actual_date . "+" . $request_info['alive_days'] . " days" ) ); } else { $payment_info['expire_date'] = 'Never'; if ( $request_info['expire_date'] != '' && $request_info['expire_date'] != '0000-00-00' ) { $payment_info['expire_date'] = $request_info['expire_date']; } } $payment_info['alive_days'] = $request_info['alive_days']; $payment_info['package_id'] = $request_info['package_id']; $payment_info['is_featured'] = $request_info['is_featured']; } if (isset($request_info['package_id']) && $request_info['package_id'] != '' && empty($payment_info)) { $package_info = (array)geodir_get_package_info($request_info['package_id']); if (!empty($package_info)) { if (isset($package_info['sub_active']) && $package_info['sub_active']=='1' && isset($package_info['sub_units_num']) && $package_info['sub_units_num']>0) { if($package_info['sub_units']=='D'){$mult = 1;} if($package_info['sub_units']=='W'){$mult = 7;} if($package_info['sub_units']=='M'){$mult = 30;} if($package_info['sub_units']=='Y'){$mult = 365;} $pay_days = ($package_info['sub_units_num']*$mult); $payment_info['expire_date'] = date('Y-m-d', strtotime("+".$pay_days." days")); $payment_info['alive_days'] = $pay_days; } elseif (isset($package_info['days']) && $package_info['days'] != 0) { $old_alive_days = geodir_get_post_meta($last_post_id, 'alive_days', true); $old_expire_date = geodir_get_post_meta($last_post_id, 'expire_date', true); $old_package_id = geodir_get_post_meta($last_post_id, 'package_id', true); $current_date = date_i18n( 'Y-m-d', current_time( 'timestamp' ) ); if (!empty($old_package_id) && $old_alive_days > 0 && $old_package_id == $request_info['package_id'] && geodir_strtolower($old_expire_date) != 'never' && strtotime($old_expire_date) >= strtotime($current_date) && get_post_status($last_post_id) == 'publish') { $alive_days = (int)($old_alive_days + $package_info['days']); $expire_date = date_i18n( 'Y-m-d', strtotime($old_expire_date . ' + ' . $package_info['days'] . ' days')); if (!empty($_POST['gd_pay_type']) && $_POST['gd_pay_type'] == 'renew') { $alive_days = (int)$old_alive_days; $expire_date = $old_expire_date; }elseif(!empty($_POST['gd_pay_type']) && $_POST['gd_pay_type'] == 'new'){ $alive_days = $package_info['days']; $expire_date = date_i18n('Y-m-d', strtotime("+" . $alive_days . " days")); } } else { $alive_days = $package_info['days']; $expire_date = date_i18n('Y-m-d', strtotime("+" . $alive_days . " days")); } $payment_info['expire_date'] = $expire_date; $payment_info['alive_days'] = $alive_days; } else { $payment_info['expire_date'] = 'Never'; $payment_info['alive_days'] = $package_info['days']; } $payment_info['package_id'] = $package_info['pid']; $payment_info['is_featured'] = $package_info['is_featured']; } } $session_listing['geodir_prev_package_id'] = $gd_session->get('geodir_prev_package_id'); $session_listing['geodir_prev_expire_date'] = $gd_session->get('geodir_prev_expire_date'); $payment_info['expire_notification'] = 'false'; // if listing not expired and goes to upgrade listing with same package if (!empty($payment_info) && !empty($_REQUEST['price_select']) && !empty($_REQUEST['paymentmethod']) && !empty($_REQUEST['pid']) && $_REQUEST['ajax_action']=='paynow') { $session_listing = $gd_session->get('listing'); $prev_package_id = $gd_session->get('geodir_prev_package_id') ? $gd_session->get('geodir_prev_package_id') : geodir_get_post_meta($_REQUEST['pid'], 'package_id', true); $prev_expire_date = $gd_session->get('geodir_prev_expire_date') ? $gd_session->get('geodir_prev_expire_date') : geodir_get_post_meta($_REQUEST['pid'], 'expire_date', true); if ($prev_package_id==$_REQUEST['price_select'] && $prev_expire_date && strtotime($prev_expire_date) >= strtotime(date('Y-m-d'))) { $payment_info = array(); } } if (!empty($payment_info)) { $prev_package_id = (isset($prev_package_id)) ? $prev_package_id : geodir_get_post_meta($last_post_id, 'package_id', true); $package_id = (isset($payment_info['package_id'])) ? $payment_info['package_id'] : ''; geodir_save_post_info($last_post_id, $payment_info); /** * Fires when a post payment info is saved. * * The `$prev_package_id` may not be set all the time. * * @param int $last_post_id The post id that is being downgraded. * @param int|null $prev_package_id The price package the post was on. * @param int|null $package_id The price package the post is being downgraded to. * @param array $payment_info An array containing the payment info details. */ do_action('geodir_save_listing_payment',$last_post_id,$prev_package_id,$package_id,$payment_info); } }