Function Reference: geodir_user_add_claim

Summary

This function has not been documented yet.

Actions

‘geodir_payment_checkout_redirect’ [Line: 831]

Source Code

function geodir_user_add_claim(){

	global $wp_query, $post, $General, $wpdb, $plugin_prefix, $current_user;
	
	if(isset($_REQUEST['add_claim_nonce_field']) && isset($_REQUEST['geodir_pid']) && is_user_logged_in()){
		
		if ( !wp_verify_nonce( $_REQUEST['add_claim_nonce_field'], 'add_claim_nonce'.$_REQUEST['geodir_pid'] ) ){
			echo "add_claim_nonce_field:fail";
			return;
		}

			
		$list_id = $pid = $_POST['geodir_pid'];
			
		$claim_post = get_post($pid);
		
		if(isset($_POST['geodir_sendact']) && $_POST['geodir_sendact'] == 'add_claim')
		{
			
			$uid = $claim_post->post_author;
			
			$list_title = $claim_post->post_title;
			
			$user_id = $current_user->ID;
			
			$user_name = $current_user->user_login;
			
			$user_email = $current_user->user_email;
			
			$user_fullname = $_POST['geodir_full_name'];
			
			$user_number = $_POST['geodir_user_number'];
			
			$user_position = $_POST['geodir_user_position'];
			
			$user_comments = $_POST['geodir_user_comments'];
			
			$claim_date = date("F j, Y, g:i a");
			
			$org_author = get_the_author_meta( 'login', $uid );
			
			$org_authorid = $claim_post->post_author;
			
			$rand_string = createRandomString();
			
			$user_ip = getenv("REMOTE_ADDR") ;
			
			// Force to upgrade to complete claim listing
			$force_upgrade = geodir_claim_force_upgrade();
			$package_list = geodir_claim_payment_package_list( $claim_post->post_type );
			
			$force_payment = $force_upgrade && $package_list ? true : false;
            $geodir_upgrade_pkg = '';
            $package_info = array();
			if ( $force_payment ) {
				$geodir_upgrade_pkg = isset($_POST['geodir_claim_pkg']) ? $_POST['geodir_claim_pkg'] : '';
				$package_info = geodir_get_package_info_by_id( $geodir_upgrade_pkg );
				
				if ( empty( $package_info ) || !$list_id ) {
					return;
				}
			}
		
			if ( $list_id ) {
				$claimsql = $wpdb->prepare("INSERT INTO ".GEODIR_CLAIM_TABLE." (list_id, list_title, user_id, user_name, user_email, user_fullname, user_number, user_position, user_comments, claim_date, org_author, org_authorid, rand_string, user_ip ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s )",
				array($list_id,$list_title,$user_id,$user_name,$user_email,$user_fullname,$user_number,$user_position,$user_comments,$claim_date,$org_author,$org_authorid,$rand_string,$user_ip)
				);	
			
				$wpdb->query($claimsql);
				$claim_id = $wpdb->insert_id;
				
				geodir_adminEmail( $list_id, $user_id, 'claim_requested' ); /* email to admin*/
				geodir_clientEmail( $list_id, $user_id, 'claim_requested' ); /* email to client*/
				
				if ( get_option( 'geodir_claim_auto_approve' ) == 'yes' && !$force_payment ) {
					geodir_clientEmail( $list_id, $user_id, 'auto_claim', $rand_string );/* email to client*/
				}
				
				// Force to upgrade to complete claim listing
				$upgrade_pkg_data = array();
				$upgrade_pkg_data['post_id'] = $list_id;
				$upgrade_pkg_data['package_id'] = $geodir_upgrade_pkg;
				$upgrade_pkg_data['date'] = date_i18n( 'Y-m-d H:i:s', current_time( 'timestamp' ) );
				$upgrade_pkg_data['amount'] = (isset($package_info->amount)) ? $package_info->amount : '';
				$upgrade_pkg_data['user_id'] = $user_id;
				$upgrade_pkg_data['author_id'] = $org_authorid;
				$upgrade_pkg_data['claim_id'] = $claim_id;
				
				$post_status = get_post_status( $list_id );
				
				// invoice data
				$invoice_id = NULL;
				if ($force_payment && !empty($package_info) && (float)$package_info->amount > 0 ) {
					$post_id = $list_id;
					$package_id = $geodir_upgrade_pkg;
				
					$alive_days = $package_info->days;
				
					if ( $package_info->sub_active ) {
						$sub_units_num_var = $package_info->sub_units_num;
						$sub_units_var = $package_info->sub_units;
						$alive_days = geodir_payment_get_units_to_days( $sub_units_num_var, $sub_units_var );
						$sub_num_trial_days_var = $package_info->sub_num_trial_days;
						$sub_num_trial_units = isset( $package_info->sub_num_trial_units ) ? $package_info->sub_num_trial_units : 'D';
						$sub_num_trial_days_var = geodir_payment_get_units_to_days( $sub_num_trial_days_var, $sub_num_trial_units );
						
						if ( $package_info->sub_num_trial_days > 0 ) {
							$alive_days = $sub_num_trial_days_var;
						}
					}
				
					$expire_date = $alive_days > 0 ? date_i18n( 'Y-m-d', strtotime( date_i18n( 'Y-m-d' ) . ' + ' . (int)$alive_days . ' days' ) ) : '';
				
					$amount = $package_info->amount;
				
					$tax_amount = geodir_payment_get_tax_amount( $amount, $package_id, $post_id );
				
					$amount = geodir_payment_price( $amount, false );
				
					$paid_amount = ( $amount + $tax_amount );
					$paid_amount = $paid_amount > 0 ? $paid_amount : 0;
				
					$payment_status = $paid_amount > 0 ? 'pending' : 'confirmed';
				
					$invoice_type = 'claim_listing';
					$invoice_callback = 'claim_listing';
					$invoice_title = wp_sprintf(  __( 'Claim Listing: %s', 'geodirclaim' ), get_the_title( $post_id ) );
				
					$data = array();
					$data['type'] = $amount > 0 ? 'paid' : 'free';
					$data['post_id'] = $post_id;
					$data['post_title'] = $invoice_title;
					$data['post_action'] = 'claim';
					$data['invoice_type'] = $invoice_type;
					$data['invoice_callback'] = $invoice_callback;
					$data['invoice_data'] = maybe_serialize( $upgrade_pkg_data );
					$data['package_id'] = $package_id;
					$data['package_title'] = $package_info->title;
					$data['amount'] = $amount;
					$data['alive_days'] = $alive_days;
					$data['expire_date'] = $expire_date;
					$data['tax_amount'] = $tax_amount;
					$data['paied_amount'] = $paid_amount;
					$data['status'] = $payment_status;

					$invoice_id = geodir_create_invoice( $data );
					
					$upgrade_pkg_data['invoice_id'] = $invoice_id;
				}
				// invoice data
								
				$upgrade_pkg_data = maybe_serialize( $upgrade_pkg_data );
				
				$sql = $wpdb->prepare( "UPDATE " . GEODIR_CLAIM_TABLE . " SET `upgrade_pkg_id`=%d, `upgrade_pkg_data`=%s WHERE `pid`=%d", array( $geodir_upgrade_pkg, $upgrade_pkg_data, $wpdb->insert_id ) );
				$wpdb->query( $sql );
				
				if ( $invoice_id ) {
					$new_post_status = get_post_status( $list_id );
					
					if ( $new_post_status != $post_status ) {
						$post_update = array();
						$post_update['ID'] = $list_id;
						$post_update['post_status'] = $post_status;
						
						wp_update_post( $post_update );
					}
					
					if ( $payment_status == 'confirmed' ) {
						geodir_update_invoice_status( $invoice_id, $payment_status );
					}
					
					do_action( 'geodir_payment_checkout_redirect', $invoice_id );
				}
			}
						
			$postlink = get_permalink( $claim_post->ID );
			$url = geodir_getlink( $postlink, array( 'geodir_claim_request' => 'success' ), false );
			wp_redirect($url);
			gd_die();
		}
	} else {
		wp_redirect(geodir_login_url());
		gd_die();
	}	
}