2 // Copyright (C) 2006-2010 Rod Roark <rod@sunsetsystems.com>
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
9 require_once("../globals.php");
10 require_once("$srcdir/patient.inc");
11 require_once("$srcdir/pnotes.inc");
12 require_once("$srcdir/forms.inc");
13 require_once("$srcdir/options.inc.php");
14 require_once("$srcdir/gprelations.inc.php");
18 $filename = $_GET['file'];
19 $filepath = $GLOBALS['hylafax_basedir'] . '/recvq/' . $filename;
21 else if ($_GET['scan']) {
23 $filename = $_GET['scan'];
24 $filepath = $GLOBALS['scanner_output_directory'] . '/' . $filename;
27 die("No filename was given.");
30 $ext = substr($filename, strrpos($filename, '.'));
31 $filebase = basename("/$filename", $ext);
32 $faxcache = $GLOBALS['OE_SITE_DIR'] . "/faxcache/$mode/$filebase";
36 // This function builds an array of document categories recursively.
37 // Kittens are the children of cats, you know. :-)
39 function getKittens($catid, $catstring, &$categories) {
40 $cres = sqlStatement("SELECT id, name FROM categories " .
41 "WHERE parent = $catid ORDER BY name");
43 while ($crow = sqlFetchArray($cres)) {
45 getKittens($crow['id'], ($catstring ?
"$catstring / " : "") .
46 ($catid ?
$crow['name'] : ''), $categories);
48 // If no kitties, then this is a leaf node and should be listed.
49 if (!$childcount) $categories[$catid] = $catstring;
52 // This merges the tiff files for the selected pages into one tiff file.
54 function mergeTiffs() {
60 // form_images are the checkboxes to the right of the images.
61 foreach ($_POST['form_images'] as $inbase) {
62 $inames .= ' ' . escapeshellarg("$inbase.tif");
64 if (!$inames) die(xl("Internal error - no pages were selected!"));
65 $tmp0 = exec("cd '$faxcache'; tiffcp $inames temp.tif", $tmp1, $tmp2);
67 $msg .= "tiffcp returned $tmp2: $tmp0 ";
72 // If we are submitting...
74 if ($_POST['form_save']) {
75 $action_taken = false;
79 if ($_POST['form_cb_copy']) {
80 $patient_id = (int) $_POST['form_pid'];
81 if (!$patient_id) die(xl('Internal error - patient ID was not provided!'));
82 // Compute the name of the target directory and make sure it exists.
83 $docdir = $GLOBALS['OE_SITE_DIR'] . "/documents/$patient_id";
84 exec("mkdir -p '$docdir'");
86 // If copying to patient documents...
88 if ($_POST['form_cb_copy_type'] == 1) {
89 // Compute a target filename that does not yet exist.
90 $ffname = trim($_POST['form_filename']);
91 $i = strrpos($ffname, '.');
92 if ($i) $ffname = trim(substr($ffname, 0, $i));
93 if (!$ffname) $ffname = $filebase;
96 // If the target filename exists, modify it until it doesn't.
98 while (is_file("$docdir/$ffname$ffmod$ffsuff")) {
102 $target = "$docdir/$ffname$ffmod$ffsuff";
103 $docdate = fixDate($_POST['form_docdate']);
105 // Create the target PDF. Note that we are relying on the .tif files for
106 // the individual pages to already exist in the faxcache directory.
108 $info_msg .= mergeTiffs();
109 // The -j option here requires that libtiff is configured with libjpeg.
110 // It could be omitted, but the output PDFs would then be quite large.
111 $tmp0 = exec("tiff2pdf -j -p letter -o '$target' '$faxcache/temp.tif'", $tmp1, $tmp2);
114 $info_msg .= "tiff2pdf returned $tmp2: $tmp0 ";
117 $newid = generate_id();
118 $fsize = filesize($target);
119 $catid = (int) $_POST['form_category'];
120 // Update the database.
121 $query = "INSERT INTO documents ( " .
122 "id, type, size, date, url, mimetype, foreign_id, docdate" .
124 "'$newid', 'file_url', '$fsize', NOW(), 'file://$target', " .
125 "'application/pdf', $patient_id, '$docdate' " .
127 sqlStatement($query);
128 $query = "INSERT INTO categories_to_documents ( " .
129 "category_id, document_id" .
131 "'$catid', '$newid' " .
133 sqlStatement($query);
136 // If we are posting a note...
137 if ($_POST['form_cb_note'] && !$info_msg) {
138 // Build note text in a way that identifies the new document.
139 // See pnotes_full.php which uses this to auto-display the document.
140 $note = "$ffname$ffmod$ffsuff";
141 for ($tmp = $catid; $tmp;) {
142 $catrow = sqlQuery("SELECT name, parent FROM categories WHERE id = '$tmp'");
143 $note = $catrow['name'] . "/$note";
144 $tmp = $catrow['parent'];
146 $note = "New scanned document $newid: $note";
147 $form_note_message = trim($_POST['form_note_message']);
148 if (get_magic_quotes_gpc()) $form_note_message = stripslashes($form_note_message);
149 if ($form_note_message) $note .= "\n" . $form_note_message;
150 // addPnote() will do its own addslashes().
151 $noteid = addPnote($_POST['form_pid'], $note, $userauthorized, '1',
152 $_POST['form_note_type'], $_POST['form_note_to']);
153 // Link the new patient note to the document.
154 setGpRelation(1, $newid, 6, $noteid);
155 } // end post patient note
156 } // end copy to documents
158 // Otherwise creating a scanned encounter note...
162 // Get desired $encounter_id.
164 if (empty($_POST['form_copy_sn_visit'])) {
165 $info_msg .= "This patient has no visits! ";
167 $encounter_id = 0 +
$_POST['form_copy_sn_visit'];
171 // Merge the selected pages.
172 $info_msg .= mergeTiffs();
173 $tmp_name = "$faxcache/temp.tif";
177 // The following is cloned from contrib/forms/scanned_notes/new.php:
179 $query = "INSERT INTO form_scanned_notes ( " .
182 "'" . $_POST['form_copy_sn_comments'] . "' " .
184 $formid = sqlInsert($query);
185 addForm($encounter_id, "Scanned Notes", $formid, "scanned_notes",
186 $patient_id, $userauthorized);
188 $imagedir = $GLOBALS['OE_SITE_DIR'] . "/documents/$patient_id/encounters";
189 $imagepath = "$imagedir/${encounter_id}_$formid.jpg";
192 if (! is_dir($imagedir)) {
193 $tmp0 = exec('mkdir -p "'.$imagedir.'"', $tmp1, $tmp2);
194 if ($tmp2) die("mkdir returned $tmp2: $tmp0");
195 exec("touch '$imagedir/index.html'");
197 if (is_file($imagepath)) unlink($imagepath);
198 // TBD: There may be a faster way to create this file, given that
199 // we already have a jpeg for each page in faxcache.
200 $cmd = "convert -resize 800 -density 96 '$tmp_name' -append '$imagepath'";
201 $tmp0 = exec($cmd, $tmp1, $tmp2);
202 if ($tmp2) die("\"$cmd\" returned $tmp2: $tmp0");
205 // If we are posting a patient note...
206 if ($_POST['form_cb_note'] && !$info_msg) {
207 $note = "New scanned encounter note for visit on " . substr($erow['date'], 0, 10);
208 $form_note_message = trim($_POST['form_note_message']);
209 if (get_magic_quotes_gpc()) $form_note_message = stripslashes($form_note_message);
210 if ($form_note_message) $note .= "\n" . $form_note_message;
211 // addPnote() will do its own addslashes().
212 addPnote($patient_id, $note, $userauthorized, '1',
213 $_POST['form_note_type'], $_POST['form_note_to']);
214 } // end post patient note
217 $action_taken = true;
219 } // end copy to chart
221 if ($_POST['form_cb_forward']) {
222 $form_from = trim($_POST['form_from']);
223 $form_to = trim($_POST['form_to']);
224 $form_fax = trim($_POST['form_fax']);
225 $form_message = trim($_POST['form_message']);
226 $form_finemode = $_POST['form_finemode'] ?
'-m' : '-l';
228 if (get_magic_quotes_gpc()) {
229 $form_from = stripslashes($form_from);
230 $form_to = stripslashes($form_to);
231 $form_message = stripslashes($form_message);
234 // Generate a cover page using enscript. This can be a cool thing
235 // to do, as enscript is very powerful.
239 $tmpfn1 = tempnam("/tmp", "fax1");
240 $tmpfn2 = tempnam("/tmp", "fax2");
241 $tmph = fopen($tmpfn1, "w");
243 $fh = fopen($GLOBALS['OE_SITE_DIR'] . "/faxcover.txt", 'r');
244 while (!feof($fh)) $cpstring .= fread($fh, 8192);
246 $cpstring = str_replace('{CURRENT_DATE}' , date('F j, Y'), $cpstring);
247 $cpstring = str_replace('{SENDER_NAME}' , $form_from , $cpstring);
248 $cpstring = str_replace('{RECIPIENT_NAME}', $form_to , $cpstring);
249 $cpstring = str_replace('{RECIPIENT_FAX}' , $form_fax , $cpstring);
250 $cpstring = str_replace('{MESSAGE}' , $form_message , $cpstring);
251 fwrite($tmph, $cpstring);
253 $tmp0 = exec("cd $webserver_root/custom; " . $GLOBALS['hylafax_enscript'] .
254 " -o $tmpfn2 $tmpfn1", $tmp1, $tmp2);
256 $info_msg .= "enscript returned $tmp2: $tmp0 ";
260 // Send the fax as the cover page followed by the selected pages.
261 $info_msg .= mergeTiffs();
262 $tmp0 = exec("sendfax -A -n $form_finemode -d " .
263 escapeshellarg($form_fax) . " $tmpfn2 '$faxcache/temp.tif'",
266 $info_msg .= "sendfax returned $tmp2: $tmp0 ";
270 $action_taken = true;
273 $form_cb_delete = $_POST['form_cb_delete'];
275 // If deleting selected, do it and then check if any are left.
276 if ($form_cb_delete == '1' && !$info_msg) {
277 foreach ($_POST['form_images'] as $inbase) {
278 unlink("$faxcache/$inbase.jpg");
279 $action_taken = true;
281 // Check if any .jpg files remain... if not we'll clean up.
283 $dh = opendir($faxcache);
284 if (! $dh) die("Cannot read $faxcache");
285 $form_cb_delete = '2';
286 while (false !== ($jfname = readdir($dh))) {
287 if (preg_match('/\.jpg$/', $jfname)) $form_cb_delete = '1';
293 if ($form_cb_delete == '2' && !$info_msg) {
294 // Delete the tiff file, with archiving if desired.
295 if ($GLOBALS['hylafax_archdir'] && $mode == 'fax') {
296 rename($filepath, $GLOBALS['hylafax_archdir'] . '/' . $filename);
301 if (is_dir($faxcache)) {
302 $dh = opendir($faxcache);
303 while (($tmp = readdir($dh)) !== false) {
304 if (is_file("$faxcache/$tmp")) unlink("$faxcache/$tmp");
309 $action_taken = true;
312 if (!$action_taken && !$info_msg)
313 $info_msg = xl('You did not choose any actions.');
315 if ($info_msg ||
$form_cb_delete != '1') {
316 // Close this window and refresh the fax list.
317 echo "<html>\n<body>\n<script language='JavaScript'>\n";
318 if ($info_msg) echo " alert('$info_msg');\n";
319 echo " if (!opener.closed && opener.refreshme) opener.refreshme();\n";
320 echo " window.close();\n";
321 echo "</script>\n</body>\n</html>\n";
324 } // end submit logic
326 // If we get this far then we are displaying the form.
328 // Find out if the scanned_notes form is installed and active.
330 $tmp = sqlQuery("SELECT count(*) AS count FROM registry WHERE " .
331 "directory LIKE 'scanned_notes' AND state = 1 AND sql_run = 1");
332 $using_scanned_notes = $tmp['count'];
334 // If the image cache does not yet exist for this fax, build it.
335 // This will contain a .tif image as well as a .jpg image for each page.
339 if (! is_dir($faxcache)) {
340 $tmp0 = exec('mkdir -p "'.$faxcache.'"', $tmp1, $tmp2);
341 if ($tmp2) die("mkdir returned $tmp2: $tmp0");
342 if (strtolower($ext) != '.tif') {
343 // convert's default density for PDF-to-TIFF conversion is 72 dpi which is
344 // not very good, so we upgrade it to "fine mode" fax quality. It's really
345 // better and faster if the scanner produces TIFFs instead of PDFs.
346 $tmp0 = exec("convert -density 203x196 '$filepath' '$faxcache/deleteme.tif'", $tmp1, $tmp2);
347 if ($tmp2) die("convert returned $tmp2: $tmp0");
348 $tmp0 = exec("cd '$faxcache'; tiffsplit 'deleteme.tif'; rm -f 'deleteme.tif'", $tmp1, $tmp2);
349 if ($tmp2) die("tiffsplit/rm returned $tmp2: $tmp0");
351 $tmp0 = exec("cd '$faxcache'; tiffsplit '$filepath'", $tmp1, $tmp2);
352 if ($tmp2) die("tiffsplit returned $tmp2: $tmp0");
354 $tmp0 = exec("cd '$faxcache'; mogrify -resize 750x970 -format jpg *.tif", $tmp1, $tmp2);
355 if ($tmp2) die("mogrify returned $tmp2: $tmp0; ext is '$ext'; filepath is '$filepath'");
358 // Get the categories list.
359 $categories = array();
360 getKittens(0, '', $categories);
362 // Get the users list.
363 $ures = sqlStatement("SELECT username, fname, lname FROM users " .
364 "WHERE active = 1 AND ( info IS NULL OR info NOT LIKE '%Inactive%' ) " .
365 "ORDER BY lname, fname");
369 <?php
if (function_exists(html_header_show
)) html_header_show(); ?
>
370 <title
><?php
xl('Dispatch Received Document','e'); ?
></title
>
371 <link rel
="stylesheet" href
='<?php echo $css_header ?>' type
='text/css'>
375 td
, input
, select
, textarea
{
386 border
-color
: #0000ff;
393 <style type
="text/css">@import
url(../../library
/dynarch_calendar
.css
);</style
>
395 <script type
="text/javascript" src
="../../library/topdialog.js"></script
>
396 <script type
="text/javascript" src
="../../library/dialog.js"></script
>
397 <script type
="text/javascript" src
="../../library/textformat.js"></script
>
398 <script type
="text/javascript" src
="../../library/dynarch_calendar.js"></script
>
399 <?php
include_once("{$GLOBALS['srcdir']}/dynarch_calendar_en.inc.php"); ?
>
400 <script type
="text/javascript" src
="../../library/dynarch_calendar_setup.js"></script
>
401 <script type
="text/javascript" src
="../../library/js/jquery-1.2.2.min.js"></script
>
403 <script language
="JavaScript">
405 var mypcc
= '<?php echo $GLOBALS['phone_country_code
'] ?>';
407 <?php
require($GLOBALS['srcdir'] . "/restoreSession.php"); ?
>
409 function divclick(cb
, divid
) {
410 var divstyle
= document
.getElementById(divid
).style
;
412 if (divid
== 'div_copy_doc') {
413 document
.getElementById('div_copy_sn').style
.display
= 'none';
415 else if (divid
== 'div_copy_sn') {
416 document
.getElementById('div_copy_doc').style
.display
= 'none';
418 divstyle
.display
= 'block';
420 divstyle
.display
= 'none';
425 // This is for callback by the find-patient popup.
426 function setpatient(pid
, lname
, fname
, dob
) {
427 var f
= document
.forms
[0];
428 f
.form_patient
.value
= lname +
', ' + fname
;
429 f
.form_pid
.value
= pid
;
430 <?php
if ($using_scanned_notes) { ?
>
431 // This loads the patient's list of recent encounters:
432 f
.form_copy_sn_visit
.options
.length
= 0;
433 f
.form_copy_sn_visit
.options
[0] = new Option('Loading...', '0');
434 $
.getScript("fax_dispatch_newpid.php?p=" + pid
);
438 // This invokes the find-patient popup.
439 function sel_patient() {
440 dlgopen('../main/calendar/find_patient_popup.php', '_blank', 500, 400);
443 // Check for errors when the form is submitted.
444 function validate() {
445 var f
= document
.forms
[0];
447 if (f
.form_cb_copy
.checked
) {
448 if (! f
.form_pid
.value
) {
449 alert('You have not selected a patient!');
454 if (f
.form_cb_forward
.checked
) {
455 var s
= f
.form_fax
.value
;
457 alert('A fax number is required!');
461 for (var i
= 0; i
< s
.length
; ++i
) {
463 if (c
>= '0' && c
<= '9') {
466 else if (digcount
== 0 || c
!= '-') {
467 alert('Invalid character(s) in fax number!');
472 if (s
.charAt(0) < '2') {
473 alert('Local phone number starts with an invalid digit!');
477 else if (digcount
== 11) {
478 if (s
.charAt(0) != '1') {
479 alert('11-digit number must begin with 1!');
483 else if (digcount
== 10) {
484 if (s
.charAt(0) < '2') {
485 alert('10-digit number starts with an invalid digit!');
488 f
.form_fax
.value
= '1' + s
;
491 alert('Invalid number of digits in fax telephone number!');
496 if (f
.form_cb_copy
.checked || f
.form_cb_forward
.checked
) {
498 for (var i
= 0; i
< f
.elements
.length
; ++i
) {
499 if (f
.elements
[i
].name
== 'form_images[]' && f
.elements
[i
].checked
)
502 if (check_count
== 0) {
503 alert('No pages have been selected!');
508 top
.restoreSession();
512 function allCheckboxes(issel
) {
513 var f
= document
.forms
[0];
514 for (var i
= 0; i
< f
.elements
.length
; ++i
) {
515 if (f
.elements
[i
].name
== 'form_images[]') f
.elements
[i
].checked
= issel
;
523 <body
class="body_top" onunload
='imclosing()'>
525 <center
><h2
><?php
xl('Dispatch Received Document','e'); ?
></h2
></center
>
527 <form method
='post' name
='theform'
528 action
='fax_dispatch.php?<?php echo ($mode == 'fax
') ? 'file
' : 'scan
'; ?>=<?php echo $filename ?>' onsubmit
='return validate()'>
530 <p
><input type
='checkbox' name
='form_cb_copy' value
='1'
531 onclick
='return divclick(this,"div_copy");' />
532 <b
><?php
xl('Copy Pages to Patient Chart','e'); ?
></b
></p
>
534 <div id
='div_copy' class='section' style
='display:none;'>
537 <td
class='itemtitle' width
='1%' nowrap
><?php
xl('Patient','e'); ?
></td
>
539 <input type
='text' size
='10' name
='form_patient' style
='width:100%'
540 value
=' (<?php xl('Click to select
'); ?>)' onclick
='sel_patient()'
541 title
='Click to select patient' readonly
/>
542 <input type
='hidden' name
='form_pid' value
='0' />
546 <td colspan
='2' style
='padding-top:0.5em;'>
547 <input type
='radio' name
='form_cb_copy_type' value
='1'
548 onclick
='return divclick(this,"div_copy_doc");' checked
/>
549 <b
><?php
xl('Patient Document','e'); ?
></b
> 
;
550 <?php
if ($using_scanned_notes) { ?
>
551 <input type
='radio' name
='form_cb_copy_type' value
='2'
552 onclick
='return divclick(this,"div_copy_sn");' />
553 <b
><?php
xl('Scanned Encounter Note','e'); ?
></b
>
555 <div id
='div_copy_doc' class='section' style
='margin-top:0.5em;'>
558 <td
class='itemtitle' nowrap
><?php
xl('Category','e'); ?
></td
>
560 <select name
='form_category' style
='width:100%'>
562 foreach ($categories as $catkey => $catname) {
563 echo " <option value='$catkey'";
564 echo ">$catname</option>\n";
571 <td
class='itemtitle' nowrap
><?php
xl('Filename','e'); ?
></td
>
573 <input type
='text' size
='10' name
='form_filename' style
='width:100%'
574 value
='<?php echo "$filebase.pdf" ?>'
575 title
='Name for this document in the patient chart' />
579 <td
class='itemtitle' nowrap
><?php
xl('Document Date','e'); ?
></td
>
581 <input type
='text' size
='10' name
='form_docdate' id
='form_docdate'
582 value
='<?php echo date('Y
-m
-d
'); ?>'
583 title
='<?php xl('yyyy
-mm
-dd date associated with this document
','e
'); ?>'
584 onkeyup
='datekeyup(this,mypcc)' onblur
='dateblur(this,mypcc)' />
585 <img src
='../pic/show_calendar.gif' align
='absbottom' width
='24' height
='22'
586 id
='img_docdate' border
='0' alt
='[?]' style
='cursor:pointer'
587 title
='<?php xl('Click here to choose a date
','e
'); ?>' />
591 </div
><!-- end div_copy_doc
-->
592 <div id
='div_copy_sn' class='section' style
='display:none;margin-top:0.5em;'>
595 <td
class='itemtitle' width
='1%' nowrap
><?php
xl('Visit Date','e'); ?
></td
>
597 <select name
='form_copy_sn_visit' style
='width:100%'>
602 <td
class='itemtitle' width
='1%' nowrap
><?php
xl('Comments','e'); ?
></td
>
604 <textarea name
='form_copy_sn_comments' rows
='3' cols
='30' style
='width:100%'
605 title
='Comments associated with this scanned note'
610 </div
><!-- end div_copy_sn
-->
614 <td colspan
='2' style
='padding-top:0.5em;'>
615 <input type
='checkbox' name
='form_cb_note' value
='1'
616 onclick
='return divclick(this,"div_note");' />
617 <b
><?php
xl('Create Patient Note','e'); ?
></b
>
618 <div id
='div_note' class='section' style
='display:none;margin-top:0.5em;'>
621 <td
class='itemtitle' width
='1%' nowrap
><?php
xl('Type','e'); ?
></td
>
624 // Added 6/2009 by BM to incorporate the patient notes into the list_options listings
625 generate_form_field(array('data_type'=>1,'field_id'=>'note_type','list_id'=>'note_type','empty_title'=>'SKIP'), '');
630 <td
class='itemtitle' width
='1%' nowrap
>To
</td
>
632 <select name
='form_note_to' style
='width:100%'>
634 while ($urow = sqlFetchArray($ures)) {
635 echo " <option value='" . $urow['username'] . "'";
636 echo ">" . $urow['lname'];
637 if ($urow['fname']) echo ", " . $urow['fname'];
641 <option value
=''>** <?php
xl('Close','e'); ?
> **</option
>
646 <td
class='itemtitle' nowrap
><?php
xl('Message','e'); ?
></td
>
648 <textarea name
='form_note_message' rows
='3' cols
='30' style
='width:100%'
649 title
='Your comments' /></textarea
>
653 </div
><!-- end div_note
-->
657 </div
><!-- end div_copy
-->
659 <p
><input type
='checkbox' name
='form_cb_forward' value
='1'
660 onclick
='return divclick(this,"div_forward");' />
661 <b
><?php
xl('Forward Pages via Fax','e'); ?
></b
></p
>
663 <div id
='div_forward' class='section' style
='display:none;'>
666 <td
class='itemtitle' width
='1%' nowrap
><?php
xl('From','e'); ?
></td
>
668 <input type
='text' size
='10' name
='form_from' style
='width:100%'
669 title
='Type your name here' />
673 <td
class='itemtitle' nowrap
><?php
xl('To','e'); ?
></td
>
675 <input type
='text' size
='10' name
='form_to' style
='width:100%'
676 title
='Type the recipient name here' />
680 <td
class='itemtitle' nowrap
><?php
xl('Fax','e'); ?
></td
>
682 <input type
='text' size
='10' name
='form_fax' style
='width:100%'
683 title
='The fax phone number to send this to' />
687 <td
class='itemtitle' nowrap
><?php
xl('Message','e'); ?
></td
>
689 <textarea name
='form_message' rows
='3' cols
='30' style
='width:100%'
690 title
='Your comments to include with this message' /></textarea
>
694 <td
class='itemtitle' nowrap
><?php
xl('Quality','e'); ?
></td
>
696 <input type
='radio' name
='form_finemode' value
='' /><?php
xl('Normal','e'); ?
>  
;
697 <input type
='radio' name
='form_finemode' value
='1' checked
/><?php
xl('Fine','e'); ?
>  
;
701 </div
><!-- end div_forward
-->
703 <p
><b
><?php
xl('Delete Pages','e'); ?
>:</b
> 
;
704 <input type
='radio' name
='form_cb_delete' value
='2' />All
 
;
705 <input type
='radio' name
='form_cb_delete' value
='1' checked
/>Selected
 
;
706 <input type
='radio' name
='form_cb_delete' value
='0' />None
711 <input type
='submit' name
='form_save' value
='<?php xl('OK
','e
'); ?>' />
713 <input type
='button' value
='<?php xl('Cancel
','e
'); ?>' onclick
='window.close()' />
715 <input type
='button' value
='<?php xl('Select All
','e
'); ?>' onclick
='allCheckboxes(true)' />
717 <input type
='button' value
='<?php xl('Clear All
','e
'); ?>' onclick
='allCheckboxes(false)' />
720 <p
><br
/><b
><?php
xl('Please select the desired pages to copy or forward:','e'); ?
></b
></p
>
724 $dh = opendir($faxcache);
725 if (! $dh) die("Cannot read $faxcache");
727 while (false !== ($jfname = readdir($dh))) {
728 if (preg_match("/^(.*)\.jpg/", $jfname, $matches)) {
730 $jfnamebase = $matches[1];
732 echo " <td valign='top'>\n";
733 echo " <img src='../../sites/" . $_SESSION['site_id'] . "/faxcache/$mode/$filebase/$jfname' />\n";
735 echo " <td align='center' valign='top'>\n";
736 echo " <input type='checkbox' name='form_images[]' value='$jfnamebase' checked />\n";
737 echo " <br />$page\n";
749 <script language
='JavaScript'>
750 Calendar
.setup({inputField
:"form_docdate", ifFormat
:"%Y-%m-%d", button
:"img_docdate"});