Function Reference: geodir_claim_invoice_callback_claim_listing
Summary
This function has not been documented yet.
Actions
‘geodir_claim_request_status_change’ [Line: 1426]
Source Code
function geodir_claim_invoice_callback_claim_listing( $invoice_id, $new_status, $old_status = 'pending', $subscription = false ) {
global $wpdb;
$invoice_info = geodir_get_invoice( $invoice_id );
if ( !( !empty( $invoice_info ) && $new_status != $old_status ) ) {
return false;
}
$invoice_data = maybe_unserialize( $invoice_info->invoice_data );
if ( empty( $invoice_data ) ) {
return false;
}
$claim_id = isset( $invoice_data['claim_id'] ) ? $invoice_data['claim_id'] : NULL;
$package_id = isset( $invoice_data['package_id'] ) ? $invoice_data['package_id'] : $invoice_data->package_id;
$claim_info = geodir_claim_get_info( $claim_id );
if ( empty( $claim_info ) ) {
return false;
}
$post_id = (int)$claim_info->list_id;
$author_id = (int)$claim_info->user_id;
$gd_post_info = geodir_get_post_info( $post_id );
if ( empty( $gd_post_info ) ) {
return false;
}
if ( $new_status == 'confirmed' ) {
$sql = $wpdb->prepare( "UPDATE " . GEODIR_CLAIM_TABLE . " SET status='2' WHERE list_id=%s AND user_id!=%s AND status='1'", array( $post_id, $author_id ) );
$wpdb->query($sql);
geodir_save_post_meta( $post_id, 'claimed', '1' );
geodir_save_post_meta( $post_id, 'post_status', 'publish' );
$sql = $wpdb->prepare( "UPDATE $wpdb->posts SET post_author=%d WHERE ID=%d", array( (int)$author_id,(int)$post_id ) );
$wpdb->query( $sql );
$sql = $wpdb->prepare( "UPDATE " . GEODIR_CLAIM_TABLE . " SET status='1', `upgrade_pkg_id`='' WHERE pid=%d", array( $claim_id ) );
$wpdb->query( $sql );
$claim_post_info = array();
$claim_post_info['package_id'] = $package_id;
geodir_save_listing_payment( $post_id, $claim_post_info );
$post_status = get_post_status( $post_id );
if ( $post_status != 'publish' ) {
$post_update = array();
$post_update['ID'] = $post_id;
$post_update['post_status'] = 'publish';
wp_update_post( $post_update );
}
/** This action is documented in geodir_claim_functions.php */
do_action('geodir_claim_request_status_change', $claim_id, 1, $claim_info->status);
// Notify to client.
geodir_clientEmail( $post_id, $author_id, 'claim_approved' );
} else if ( $new_status == 'pending' ) {
} else if ( $new_status == 'canceled' ) {
} else if ( $new_status == 'failed' ) {
} else if ( $new_status == 'onhold' ) {
}
return true;
}