Get information about one or more submitted faxes with FaxQuery2

This sample demonstrates how to retrieve information about a sent fax using the FaxQuery2 method. This method has more flexible querying options than FaxQuery.

<?php
 
/**************** Settings begin **************/
// See http://www.interfax.net/en/dev/webservice/reference/faxquery2
// for an explanation of properties           
 
// Valid values for [property]_verb are:
// Equals | GreaterThan | GreaterOrEqual | LessThan | LessOrEqual | Like | IncludedIn | Between
// Leave both [property]_verb and [property]_data empty to ignore the property in the query
 
$username = '';  
$password = '';
 
$subject_verb = '';
$subject_data = '';
 
$faxnumber_verb = '';
$faxnumber_data = '';
 
$date_from = '';
$date_to = '';
 
$user_id_verb = '';
$user_id_data = '';
 
$reply_address_verb = '';
$reply_address_data = '';
 
$transaction_id_verb = '';
$transaction_id_data = '';
 
$parent_transaction_id_verb = '';
$parent_transaction_id_data = '';
 
$status_verb = '';
$status_data = '';
 
// The following values control display settings
 
$show_hidden_transactions = TRUE;
$only_parents = FALSE;
$num_of_results = 100;
$starting_record = 0;
 
// Valid values for $order_by are:
// TransactionID | SubmitTime | CompletionTime | Status | DestinationFax | Subject | PagesSent | UserID | ReplyEmail
 
$order_by = 'TransactionID';
$asc_order_direction = TRUE;
$return_items = TRUE;
$return_stats = TRUE;
 
/**************** Settings end **************/
 
// Set default values for empty query properties
 
if(!($subject_verb && $subject_data)){
	$subject_verb = 'Equals';
	$subject_data = '';
}
 
if(!($faxnumber_verb && $faxnumber_data)){
	$faxnumber_verb = 'Equals';
	$faxnumber_data = '';
}
 
if(!$date_from) $date_from = '1999-01-01T00:00:01';
 
if(!$date_to) $date_to = '2999-12-31T23:59:59';
 
if(!($user_id_verb && $user_id_data)){
	$user_id_verb = 'Equals';
	$user_id_data = '';
}
 
if(!($reply_address_verb && $reply_address_data)){
	$reply_address_verb = 'Equals';
	$reply_address_data = '';
}
 
if(!($transaction_id_verb && $transaction_id_data)){
	$transaction_id_verb = 'Equals';
	$transaction_id_data = '';
}
 
if(!($parent_transaction_id_verb && $parent_transaction_id_data)){
	$parent_transaction_id_verb = 'Equals';
	$parent_transaction_id_data = '';
}
 
if(!($status_verb && !is_null($status_data))){
	$status_verb = 'Equals';
	$status_data = '';
}
 
// End setting default values
 
 
$params->Username                                 = $username;
$params->Password                                 = $password;
$params->QueryForm->Subject->Verb                 = $subject_verb;
$params->QueryForm->Subject->VerbData             = $subject_data;
$params->QueryForm->FaxNumber->Verb               = $faxnumber_verb;
$params->QueryForm->FaxNumber->VerbData           = $faxnumber_data;
$params->QueryForm->DateFrom                      = $date_from;
$params->QueryForm->DateTo                        = $date_to;
$params->QueryForm->UserID->Verb                  = $user_id_verb;
$params->QueryForm->UserID->VerbData              = $user_id_data;
$params->QueryForm->ReplyAddress->Verb            = $reply_address_verb;
$params->QueryForm->ReplyAddress->VerbData        = $reply_address_data;
$params->QueryForm->TransactionID->Verb           = $transaction_id_verb;
$params->QueryForm->TransactionID->VerbData       = $transaction_id_data;
$params->QueryForm->ParentTransactionID->Verb     = $parent_transaction_id_verb;
$params->QueryForm->ParentTransactionID->VerbData = $parent_transaction_id_data;
$params->QueryForm->Status->Verb                  = $status_verb;
$params->QueryForm->Status->VerbData              = $status_data;
$params->QueryForm->ShowHiddenTransactions        = $show_hidden_transactions;
$params->QueryControl->OnlyParents                = $only_parents;
$params->QueryControl->NumOfResults               = $num_of_results;
$params->QueryControl->StartingRecord             = $starting_record;
$params->QueryControl->OrderBy                    = $order_by;
$params->QueryControl->AscOrderDirection          = $asc_order_direction;
$params->QueryControl->ReturnItems                = $return_items;
$params->QueryControl->ReturnStats                = $return_stats;
 
 
$client = new SoapClient("http://ws.interfax.net/dfs.asmx?wsdl");
 
// Use the call below to trace PHP's SOAP call
// $client = new SoapClient("http://ws.interfax.net/dfs.asmx?wsdl", array('trace' => 1));
 
$queryResult = $client->FaxQuery2($params);
 
// Display the SOAP call; use in conjunction with the alternative SOAP call above
// echo $client->__getLastRequest();
 
// Format and present retrieved data
 
if ($queryResult->FaxQuery2Result->ResultCode == 0){ // status request succeeded
 
	if ($return_stats){
		echo '<h1>Stats</h1>';
		$statsCount = count($queryResult->FaxQuery2Result->Stats->StatusCount);
 
		switch($statsCount){
			case 0:
				echo 'No transactions fit query';
				break;
 
			case 1:
				echo 'Status ' . $queryResult->FaxQuery2Result->Stats->StatusCount->Status . ' :';
				echo $queryResult->FaxQuery2Result->Stats->StatusCount->Count . '<br />';
				break;
 
			default:
				for($j = 0; $j < $statsCount; $j++){
					echo 'Status ' . $queryResult->FaxQuery2Result->Stats->StatusCount[$j]->Status . ' :';
					echo $queryResult->FaxQuery2Result->Stats->StatusCount[$j]->Count . '<br/>';
				}
				break;
		}
	}
 
	if ($return_items){ 
 
		$queryCount = count($queryResult->FaxQuery2Result->FaxItems->FaxItemEx2);
		echo '<h1>Details</h1>';
		switch($queryCount){
			case 0:
				echo 'No transactions fit query';
				break;
 
			case 1:	// single item returned by WS call
				echo 'ParentTransactionID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->ParentTransactionID . '<br />';
				echo 'TransactionID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->TransactionID . '<br />';
				echo 'SubmitTime: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->SubmitTime . '<br />';
				echo 'PostponeTime: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PostponeTime . '<br />';
				echo 'CompletionTime: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->CompletionTime . '<br />';
				echo 'UserID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->UserID . '<br />';
				echo 'Contact: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Contact . '<br />';
				echo 'Job ID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->JobID . '<br />';
				echo 'DestinationFax: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->DestinationFax . '<br />';
				echo 'ReplyEmail: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->ReplyEmail . '<br />';
				echo 'RemoteCSID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->RemoteCSID . '<br />';
				echo 'PagesSent: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PagesSent . '<br />';
				echo 'Status: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Status . '<br />';
				echo 'Duration: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Duration . '<br />';
				echo 'Subject: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Subject . '<br />';
				echo 'PagesSubmitted: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PagesSubmitted . '<br />';
				echo 'SenderCSID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->SenderCSID . '<br />';
				echo 'Priority: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Priority . '<br />';
				echo 'Units: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Units . '<br />';
				echo 'CostPerUnit: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->CostPerUnit . '<br />';
				echo 'PageSize: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PageSize . '<br />';
				echo 'PageOrientation: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PageOrientation . '<br />';
				echo 'PageResolution: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PageResolution . '<br />';
				echo 'RenderingQuality: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->RenderingQuality . '<br />';
				echo 'PageHeader: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->PageHeader . '<br />';
				echo 'RetriesToPerform: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->RetriesToPerform . '<br />';
				echo 'TrialsPerformed: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->TrialsPerformed . '<br />';
				echo 'LocaleID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->LocaleID . '<br />';
				echo 'GMTBias: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->GMTBias . '<br />';
				echo 'RetriesInterval: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->RetriesInterval . '<br />';
				echo 'UserData: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->UserData . '<br />';
				echo 'DeleteAfterUsage: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->DeleteAfterUsage . '<br />';
				echo 'Mode: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->Mode . '<br />';
				echo 'NumOfTransactions: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->NumOfTransactions . '<br />';
				echo 'MessageID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2->MessageID . '<br />';
				break;
 
			default: // multiple items returned by WS call
				for($i = 0; $i < $queryCount; $i++){
					echo 'ParentTransactionID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->ParentTransactionID . '<br />';
					echo 'TransactionID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->TransactionID . '<br />';
					echo 'SubmitTime: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->SubmitTime . '<br />';
					echo 'PostponeTime: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PostponeTime . '<br />';
					echo 'CompletionTime: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->CompletionTime . '<br />';
					echo 'UserID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->UserID . '<br />';
					echo 'Contact: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Contact . '<br />';
					echo 'Job ID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->JobID . '<br />';
					echo 'DestinationFax: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->DestinationFax . '<br />';
					echo 'ReplyEmail: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->ReplyEmail . '<br />';
					echo 'RemoteCSID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->RemoteCSID . '<br />';
					echo 'PagesSent: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PagesSent . '<br />';
					echo 'Status: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Status . '<br />';
					echo 'Duration: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Duration . '<br />';
					echo 'Subject: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Subject . '<br />';
					echo 'PagesSubmitted: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PagesSubmitted . '<br />';
					echo 'SenderCSID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->SenderCSID . '<br />';
					echo 'Priority: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Priority . '<br />';
					echo 'Units: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Units . '<br />';
					echo 'CostPerUnit: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->CostPerUnit . '<br />';
					echo 'PageSize: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PageSize . '<br />';
					echo 'PageOrientation: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PageOrientation . '<br />';
					echo 'PageResolution: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PageResolution . '<br />';
					echo 'RenderingQuality: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->RenderingQuality . '<br />';
					echo 'PageHeader: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->PageHeader . '<br />';
					echo 'RetriesToPerform: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->RetriesToPerform . '<br />';
					echo 'TrialsPerformed: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->TrialsPerformed . '<br />';
					echo 'LocaleID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->LocaleID . '<br />';
					echo 'GMTBias: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->GMTBias . '<br />';
					echo 'RetriesInterval: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->RetriesInterval . '<br />';
					echo 'UserData: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->UserData . '<br />';
					echo 'DeleteAfterUsage: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->DeleteAfterUsage . '<br />';
					echo 'Mode: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->Mode . '<br />';
					echo 'NumOfTransactions: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->NumOfTransactions . '<br />';
					echo 'MessageID: ' . $queryResult->FaxQuery2Result->FaxItems->FaxItemEx2[$i]->MessageID . '<br />';
					echo '------------------------------------<br />';
				}  // close loop
					break;
			}  // close switch
	}
} else { // problem getting status
	// Do something here, like alerting an administrator
	echo 'Problem retrieving status, error <a href="http://www.interfax.net/en/dev/webservice/reference/web-service-return-codes">' . $queryResult->FaxQuery2Result->ResultCode . '</a>';
}
 
?>