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;
}