Saturday, February 23, 2013

A quick PHP script to fax documents

For me, I had to send my weekly time sheets to the employer along with a word document highlighting the details of the work sent. Instead of being another element in the crowd to use one of those routine methods of visiting a fax machine in the front office, I just thought I would innovate on a quick browser based utility which would pick up the documents, format them neatly, send one copy to the employer and archive one copy with us for our reference.

I am sharing one stripped down baseline version of this utility here (code shared through Github Gist).

You can run using any PHP version (5.2 or above). You need Interfax username and password for the same.

<?php session_start(); ?>
<?php
$txtEmployeeName = isset($_POST["txtEmployeeName"])? trim($_POST["txtEmployeeName"]):"";
$txtEmployeeEmail = isset($_POST["txtEmployeeEmail"])? trim($_POST["txtEmployeeEmail"]):"";
$txtEmployeeID = isset($_POST["txtEmployeeID"])? trim($_POST["txtEmployeeID"]):"";
$txtGeneralNotes = isset($_POST["txtGeneralNotes"])? trim($_POST["txtGeneralNotes"]):"";
if (strlen ($txtEmployeeName) > 0 &&
strlen ($txtEmployeeEmail) > 0 &&
strlen ($txtEmployeeID) > 0)
{
$userfiles = array ();
if (isset($_FILES["filTimesheet"]))
{
foreach ($_FILES['filTimesheet']['name'] as $i => $name)
{
if ($_FILES['filTimesheet']['error'][$i] == 4) {
continue;
}
$newfilename = $txtEmployeeID ."_" . $txtEmployeeName ."_".$name;
move_uploaded_file ($_FILES['filTimesheet']['tmp_name'][$i],"./faxtmp/".$newfilename);
array_push ($userfiles, realpath ("./faxtmp/".$newfilename));
}
}
$username = 'YOUR_INTERFAX_USER_NAME';
$password = 'YOUR_INTERFAX_PASSWORD';
$faxnumbers = ' YOUR_FAX_NUMBER';
$contacts = 'A_NAME_FOR_FAX_NUMBER';
$files = $userfiles;
$postponetime = '2001-12-31T00:00:00-00:00';
$retries = '3';
$csid = 'AA CSID';
$pageheader = 'To: {To} From: {From} Pages: {TotalPages}';
$subject = 'Fax';
$replyemail = '';
$page_size = 'A4';
$page_orientation = 'Portrait';
$high_resolution = FALSE;
$fine_rendering = TRUE;
$filetypes = '';
$data = '';
$filesizes = '';
// Open files and determine file types from extension
foreach ($files as $filename){
$filetype_exploded_array = explode('.', $filename);
$filetype = $filetype_exploded_array[count($filetype_exploded_array) - 1];
$filetypes .= $filetype . ';';
if(!($fp = fopen($filename, "r"))){
// Error opening file
// Handle error however appropriate for your script
echo "Error opening file";
exit;
}
// Read data from the file into $data
$filedata = "";
while (!feof($fp)) $filedata .= fread($fp,1024);
$filesizes .= strlen($filedata) . ';';
$data .= $filedata;
fclose($fp);
}
$filetypes = trim($filetypes, ';');
$filesizes = trim($filesizes, ';');
// Call WS method
$client = new SoapClient("http://ws.interfax.net/dfs.asmx?wsdl");
error_reporting(E_ERROR | E_PARSE);
$params->Username = $username;
$params->Password = $password;
$params->FaxNumbers = $faxnumbers;
$params->Contacts = $contacts;
$params->FilesData = $data;
$params->FileTypes = $filetypes;
$params->FileSizes = $filesizes;
$params->Postpone = $postponetime;
$params->RetriesToPerform = $retries;
$params->CSID = $csid;
$params->PageHeader = $pageheader;
$params->JobID = '';
$params->Subject = $subject;
$params->ReplyAddress = $replyemail;
$params->PageSize = $page_size;
$params->PageOrientation = $page_orientation;
$params->IsHighResolution = $high_resolution;
$params->IsFineRendering = $fine_rendering;
$result = $client->SendfaxEx_2($params);
$faxfail = false;
if ($result < 0)
$faxfail = true;
}
?>
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Send Timesheet</title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./style.css">
<script language="JavaScript" type="text/javascript" src="jquery-1.9.1.js"></script>
<script language="JavaScript" type="text/javascript" src="jquery.MultiFile.js"></script>
</head>
<body>
<div id="container">
<div id="contact-form" class="clearfix">
<h1>Send your timesheet!</h1>
<form method="post" action="sendtsheet.php" enctype="multipart/form-data">
<label for="name">Name: <span class="required">*</span></label>
<input type="text" id="txtEmployeeName" name="txtEmployeeName" value="<?php echo ($txtEmployeeName)?>" />
<label for="email">Email Address: <span class="required">*</span></label>
<input type="email" id="txtEmployeeEmail" name="txtEmployeeEmail" value="<?php echo ($txtEmployeeEmail)?>" />
<label for="email">Employee ID: <span class="required">*</span></label>
<input type="email" id="txtEmployeeID" name="txtEmployeeID" value="<?php echo ($txtEmployeeID)?>" />
<label for="message">Any other General Notes:
<textarea id="txtGeneralNotes" name="txtGeneralNotes"><?php echo ($txtGeneralNotes)?></textarea>
<label for="lblTimesheetFiles">Timesheet Files:
<input type="file" id="filTimesheet" name="filTimesheet[]" />
<span id="loading"></span>
<input type="submit" value="Holla!" id="submit-button" />
<p id="req-field-desc"><span class="required">*</span> indicates a required field</p>
</form>
<?php unset($_SESSION['cf_returndata']); ?>
</div>
</div>
<Script Language="JavaScript" type="text/javascript">
$(function(){
$('#filTimesheet').MultiFile({
accept:'pdf|doc|docx', max:3, STRING: {
remove:'Remove',
selected:'Chosen File: $file',
denied:'Incorrect File Extension $ext!',
duplicate:'Duplicate File:\n$file!'
}
});
});
</Script>
</body>
</html>
view raw sendtsheet.php hosted with ❤ by GitHub

[Imported from Blogdrive]Online Virus Scanners

Online Virus Scanners Virus Scanners are no longer difficult to install, tedious to configure. There are easy to use Online Virus Scanne...