Function Reference: geodir_manage_claim_listing_actions

Summary

This function has not been documented yet.

Actions

‘geodir_claim_request_delete’ [Line: 883]

‘geodir_claim_request_status_change’ [Line: 945]

‘geodir_claim_request_status_change’ [Line: 980]

‘geodir_claim_request_status_change’ [Line: 1019]

Source Code

function geodir_manage_claim_listing_actions()
{
	global $wpdb, $plugin_prefix;
	
	if(isset($_REQUEST['_wpnonce']) && isset($_REQUEST['id']) && $_REQUEST['id'] != '' && current_user_can( 'manage_options' )){
		
		if ( !wp_verify_nonce( $_REQUEST['_wpnonce'], 'claim_action_'.$_REQUEST['id'] ) )
				return;
		
		if(isset($_REQUEST['pagetype']) && $_REQUEST['pagetype'] == 'delete')
		{
			$pid = $_REQUEST['id'];
			
			$approvesql = $wpdb->prepare("select * from ".GEODIR_CLAIM_TABLE." where pid=%d", array($pid));
			
			$approveinfo = $wpdb->get_results($approvesql);

			$author_id = $approveinfo[0]->user_id;
			
			$post_id = $approveinfo[0]->list_id;
			
			$wpdb->query($wpdb->prepare("delete from ".GEODIR_CLAIM_TABLE." where pid=%d", array($pid)));
			
			$change_clamed = $wpdb->get_row($wpdb->prepare("select pid from ".GEODIR_CLAIM_TABLE." where list_id=%s and status='1'", array($post_id)));
			
			if(!$change_clamed)
			{
				geodir_save_post_meta($post_id, 'claimed','0');
				
				/**
				 * Called on claim request deleted.
				 *
				 * @since 1.2.2
				 *
				 * @param int $pid The claim id.
				 */
				do_action('geodir_claim_request_delete', $pid);
			}
			
			$msg = CLAIM_DELETED_SUCCESS;
			
			$msg = urlencode($msg);
			
			$location = admin_url('admin.php?page=geodirectory&tab=claimlisting_fields&subtab=manage_geodir_claim_listing&claim_success='.$msg);
			wp_redirect($location);
			gd_die();
		}
		
		if(isset($_REQUEST['pagetype']) && $_REQUEST['pagetype'] == 'approve')
		{
			$pid = $_REQUEST['id'];
			
			$approvesql = $wpdb->prepare("select * from ".GEODIR_CLAIM_TABLE." where pid=%d", array($pid));
			
			$approveinfo = $wpdb->get_results($approvesql);
			
			$post_id = $approveinfo[0]->list_id;
			
			$author_id = $approveinfo[0]->user_id;
			
			$claim_id = $pid;
			$old_status = $approveinfo[0]->status;
			$new_status = 1;
			
			$wpdb->query($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)));
			
			geodir_save_post_meta($post_id, 'claimed','1');
			
			$wpdb->query($wpdb->prepare("update $wpdb->posts set post_author=%d where ID=%d", array($author_id,$post_id))); 		
			$wpdb->query($wpdb->prepare("update ".GEODIR_CLAIM_TABLE." set status='1' where pid=%d", array($pid)));
			
			// Force to upgrade to complete claim listing
			$force_upgrade = geodir_claim_force_upgrade();
			$package_list = geodir_claim_payment_package_list( get_post_type( $post_id ) );
			
			if ( $force_upgrade && !empty( $package_list ) && !empty( $approveinfo ) && isset( $approveinfo[0]->upgrade_pkg_id ) ) {
				$geodir_upgrade_pkg = $approveinfo[0]->upgrade_pkg_id;
				$package_info = geodir_get_package_info_by_id( $geodir_upgrade_pkg );
				
				if ( !empty( $package_info ) ) {
					$claim_post_info = array();
					$claim_post_info['package_id'] = $geodir_upgrade_pkg;
				
					geodir_save_listing_payment( $post_id, $claim_post_info );
					
					$wpdb->query( $wpdb->prepare( "UPDATE `" . GEODIR_CLAIM_TABLE . "` SET `upgrade_pkg_id`='' WHERE `pid`=%d", array( $pid ) ) );
				}
			}
			
			/**
			 * Called on claim request status change.
			 *
			 * @since 1.2.2
			 *
			 * @param int $claim_id The claim id.
			 * @param int $new_status New claim status. Ex: 0 for pending, 1 for approved and 2 for rejected etc.
			 * @param int $old_status Old claim status. Ex: 0 for pending, 1 for approved and 2 for rejected etc.
			 */
			do_action('geodir_claim_request_status_change', $claim_id, $new_status, $old_status);
				 
			geodir_clientEmail($post_id,$author_id,'claim_approved'); /* email to client*/
			
			$msg = CLAIM_APPROVE_SUCCESS;
			
			$msg = urlencode($msg);
			
			$location = admin_url('admin.php?page=geodirectory&tab=claimlisting_fields&subtab=manage_geodir_claim_listing&claim_success='.$msg);
			
			wp_redirect($location);

			gd_die();
			
		}
		
		if(isset($_REQUEST['pagetype']) && $_REQUEST['pagetype'] == 'reject')
		{
			$pid = $_REQUEST['id'];
			
			$wpdb->query($wpdb->prepare("update ".GEODIR_CLAIM_TABLE." set status='2' where pid=%d", array($pid)));
			
			$approvesql = $wpdb->prepare("select * from ".GEODIR_CLAIM_TABLE." where pid=%d", array($pid));
			
			$approveinfo = $wpdb->get_results($approvesql);
			
			$post_id = $approveinfo[0]->list_id;
			
			$author_id = $approveinfo[0]->user_id;
			
			$claim_id = $pid;
			$old_status = $approveinfo[0]->status;
			$new_status = 2;
			
			/** This action is documented in geodir_claim_functions.php */
			do_action('geodir_claim_request_status_change', $claim_id, $new_status, $old_status);
			
			geodir_clientEmail($post_id,$author_id,'claim_rejected'); /* email to client*/
			
			$msg = CLAIM_REJECT_SUCCESS;
			
			$msg = urlencode($msg);
			
			$location = admin_url('admin.php?page=geodirectory&tab=claimlisting_fields&subtab=manage_geodir_claim_listing&claim_success='.$msg);
			
			wp_redirect($location);

			gd_die();
			
		}
		
		if(isset($_REQUEST['pagetype']) && $_REQUEST['pagetype'] == 'undo')
		{
			$pid = $_REQUEST['id'];
			
			$approvesql = $wpdb->prepare("select * from ".GEODIR_CLAIM_TABLE." where pid=%d", array($pid));
			
			$approveinfo = $wpdb->get_results($approvesql);
			
			$post_id = $approveinfo[0]->list_id;
			
			$author_id = $approveinfo[0]->org_authorid;
			
			$wpdb->query($wpdb->prepare("update $wpdb->posts set post_author=%d where ID=%d", array($author_id,$post_id)));
			
			$wpdb->query($wpdb->prepare("update ".GEODIR_CLAIM_TABLE." set status='2' where pid=%d", array($pid)));
			
			$change_clamed = $wpdb->get_row($wpdb->prepare("select pid from ".GEODIR_CLAIM_TABLE." where list_id=%s and status='1'", array($post_id)));
			
			if(!$change_clamed)
			{
				geodir_save_post_meta($post_id, 'claimed','0'); /*update claimed post data.*/
				
				/** This action is documented in geodir_claim_functions.php */
				do_action('geodir_claim_request_status_change', $pid, 0, $approveinfo[0]->status);
			}
			
			$location = admin_url('admin.php?page=geodirectory&tab=claimlisting_fields&subtab=manage_geodir_claim_listing&msg=reject');
			
			wp_redirect($location);
			gd_die();
		
		}
	
	}else{		
		wp_redirect(geodir_login_url());
		gd_die();
	}

}