You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
381 lines
12 KiB
381 lines
12 KiB
<?php |
|
|
|
/** |
|
* Functions for documents. |
|
* |
|
* Copyright (C) 2013 Brady Miller <brady.g.miller@gmail.com> |
|
* |
|
* LICENSE: This program is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU General Public License |
|
* as published by the Free Software Foundation; either version 3 |
|
* of the License, or (at your option) any later version. |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* You should have received a copy of the GNU General Public License |
|
* along with this program. If not, see <http://opensource.org/licenses/gpl-license.php>;. |
|
* |
|
* @package OpenEMR |
|
* @author Brady Miller <brady.g.miller@gmail.com> |
|
* @link https://www.open-emr.org |
|
*/ |
|
|
|
require_once($GLOBALS['fileroot'] . "/controllers/C_Document.class.php"); |
|
|
|
/** |
|
* Function to add a document via the C_Document class. |
|
* |
|
* @param string $name Name of the document |
|
* @param string $type Mime type of file |
|
* @param string $tmp_name Temporary file name |
|
* @param string $error Errors in file upload |
|
* @param string $size Size of file |
|
* @param int $owner Owner/user/service that imported the file |
|
* @param string $patient_id_or_simple_directory Patient id or simple directory for storage when patient id not known (such as '00' or 'direct') |
|
* @param int $category_id Document category id |
|
* @param string $higher_level_path Can set a higher level path here (and then place the path depth in $path_depth) |
|
* @param int $path_depth Path depth when using the $higher_level_path feature |
|
* @return array/boolean Array(doc_id,url) of the file as stored in documents table, false = failure |
|
*/ |
|
function addNewDocument($name, $type, $tmp_name, $error, $size, $owner = '', $patient_id_or_simple_directory = "00", $category_id = '1', $higher_level_path = '', $path_depth = '1') |
|
{ |
|
|
|
if (empty($owner)) { |
|
$owner = $_SESSION['authUserID']; |
|
} |
|
|
|
// Build the $_FILES array |
|
$TEMP_FILES = array(); |
|
$TEMP_FILES['file']['name'][0] = $name; |
|
$TEMP_FILES['file']['type'][0] = $type; |
|
$TEMP_FILES['file']['tmp_name'][0] = $tmp_name; |
|
$TEMP_FILES['file']['error'][0] = $error; |
|
$TEMP_FILES['file']['size'][0] = $size; |
|
$_FILES = $TEMP_FILES; |
|
|
|
// Build the parameters |
|
$_GET['higher_level_path'] = $higher_level_path; |
|
$_GET['patient_id'] = $patient_id_or_simple_directory; |
|
$_POST['destination'] = ''; |
|
$_POST['submit'] = 'Upload'; |
|
$_POST['path_depth'] = $path_depth; |
|
$_POST['patient_id'] = (is_numeric($patient_id_or_simple_directory) && $patient_id_or_simple_directory > 0) ? $patient_id_or_simple_directory : "00"; |
|
$_POST['category_id'] = $category_id; |
|
$_POST['process'] = 'true'; |
|
|
|
// Add the Document and return the newly added document id |
|
$cd = new C_Document(); |
|
$cd->manual_set_owner = $owner; |
|
$cd->upload_action_process(); |
|
$v = $cd->get_template_vars("file"); |
|
if (!isset($v) || !$v) { |
|
return false; |
|
} |
|
|
|
return array ("doc_id" => $v[0]->id, "url" => $v[0]->url); |
|
} |
|
|
|
/** |
|
* Function to return the category id of a category title. |
|
* |
|
* @param string $category_title category title |
|
* @return int/boolean category id (returns false if the category title does not exist) |
|
*/ |
|
function document_category_to_id($category_title) |
|
{ |
|
$ret = sqlQuery("SELECT `id` FROM `categories` WHERE `name`=?", array($category_title)); |
|
if ($ret['id']) { |
|
return $ret['id']; |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
/** |
|
* Function used in the documents request for patient portal.. |
|
* |
|
* @param string $imagetype Image type |
|
* @return File extension Image type (returns false if the Image type does not exist) |
|
*/ |
|
function get_extension($imagetype) |
|
{ |
|
if (empty($imagetype)) { |
|
return false; |
|
} |
|
|
|
switch ($imagetype) { |
|
case 'application/andrew-inset': |
|
return '.ez'; |
|
case 'application/mac-binhex40': |
|
return '.hqx'; |
|
case 'application/mac-compactpro': |
|
return '.cpt'; |
|
case 'application/msword': |
|
return '.doc'; |
|
case 'application/octet-stream': |
|
return '.bin'; |
|
case 'application/octet-stream': |
|
return '.dms'; |
|
case 'application/octet-stream': |
|
return '.lha'; |
|
case 'application/octet-stream': |
|
return '.lzh'; |
|
case 'application/octet-stream': |
|
return '.exe'; |
|
case 'application/octet-stream': |
|
return '.class'; |
|
case 'application/octet-stream': |
|
return '.so'; |
|
case 'application/octet-stream': |
|
return '.dll'; |
|
case 'application/oda': |
|
return '.oda'; |
|
case 'application/pdf': |
|
return '.pdf'; |
|
case 'application/postscript': |
|
return '.ai'; |
|
case 'application/postscript': |
|
return '.eps'; |
|
case 'application/postscript': |
|
return '.ps'; |
|
case 'application/smil': |
|
return '.smi'; |
|
case 'application/smil': |
|
return '.smil'; |
|
case 'application/vnd.wap.wbxml': |
|
return '.wbxml'; |
|
case 'application/vnd.wap.wmlc': |
|
return '.wmlc'; |
|
case 'application/vnd.wap.wmlscriptc': |
|
return '.wmlsc'; |
|
case 'application/x-bcpio': |
|
return '.bcpio'; |
|
case 'application/x-cdlink': |
|
return '.vcd'; |
|
case 'application/x-chess-pgn': |
|
return '.pgn'; |
|
case 'application/x-cpio': |
|
return '.cpio'; |
|
case 'application/x-csh': |
|
return '.csh'; |
|
case 'application/x-director': |
|
return '.dcr'; |
|
case 'application/x-director': |
|
return '.dir'; |
|
case 'application/x-director': |
|
return '.dxr'; |
|
case 'application/x-dvi': |
|
return '.dvi'; |
|
case 'application/x-futuresplash': |
|
return '.spl'; |
|
case 'application/x-gtar': |
|
return '.gtar'; |
|
case 'application/x-hdf': |
|
return '.hdf'; |
|
case 'application/x-javascript': |
|
return '.js'; |
|
case 'application/x-koan': |
|
return '.skp'; |
|
case 'application/x-koan': |
|
return '.skd'; |
|
case 'application/x-koan': |
|
return '.skt'; |
|
case 'application/x-koan': |
|
return '.skm'; |
|
case 'application/x-latex': |
|
return '.latex'; |
|
case 'application/x-netcdf': |
|
return '.nc'; |
|
case 'application/x-netcdf': |
|
return '.cdf'; |
|
case 'application/x-sh': |
|
return '.sh'; |
|
case 'application/x-shar': |
|
return '.shar'; |
|
case 'application/x-shockwave-flash': |
|
return '.swf'; |
|
case 'application/x-stuffit': |
|
return '.sit'; |
|
case 'application/x-sv4cpio': |
|
return '.sv4cpio'; |
|
case 'application/x-sv4crc': |
|
return '.sv4crc'; |
|
case 'application/x-tar': |
|
return '.tar'; |
|
case 'application/x-tcl': |
|
return '.tcl'; |
|
case 'application/x-tex': |
|
return '.tex'; |
|
case 'application/x-texinfo': |
|
return '.texinfo'; |
|
case 'application/x-texinfo': |
|
return '.texi'; |
|
case 'application/x-troff': |
|
return '.t'; |
|
case 'application/x-troff': |
|
return '.tr'; |
|
case 'application/x-troff': |
|
return '.roff'; |
|
case 'application/x-troff-man': |
|
return '.man'; |
|
case 'application/x-troff-me': |
|
return '.me'; |
|
case 'application/x-troff-ms': |
|
return '.ms'; |
|
case 'application/x-ustar': |
|
return '.ustar'; |
|
case 'application/x-wais-source': |
|
return '.src'; |
|
case 'application/xhtml+xml': |
|
return '.xhtml'; |
|
case 'application/xhtml+xml': |
|
return '.xht'; |
|
case 'application/zip': |
|
return '.zip'; |
|
case 'audio/basic': |
|
return '.au'; |
|
case 'audio/basic': |
|
return '.snd'; |
|
case 'audio/midi': |
|
return '.mid'; |
|
case 'audio/midi': |
|
return '.midi'; |
|
case 'audio/midi': |
|
return '.kar'; |
|
case 'audio/mpeg': |
|
return '.mpga'; |
|
case 'audio/mpeg': |
|
return '.mp2'; |
|
case 'audio/mpeg': |
|
return '.mp3'; |
|
case 'audio/x-aiff': |
|
return '.aif'; |
|
case 'audio/x-aiff': |
|
return '.aiff'; |
|
case 'audio/x-aiff': |
|
return '.aifc'; |
|
case 'audio/x-mpegurl': |
|
return '.m3u'; |
|
case 'audio/x-pn-realaudio': |
|
return '.ram'; |
|
case 'audio/x-pn-realaudio': |
|
return '.rm'; |
|
case 'audio/x-pn-realaudio-plugin': |
|
return '.rpm'; |
|
case 'audio/x-realaudio': |
|
return '.ra'; |
|
case 'audio/x-wav': |
|
return '.wav'; |
|
case 'chemical/x-pdb': |
|
return '.pdb'; |
|
case 'chemical/x-xyz': |
|
return '.xyz'; |
|
case 'image/bmp': |
|
return '.bmp'; |
|
case 'image/gif': |
|
return '.gif'; |
|
case 'image/ief': |
|
return '.ief'; |
|
case 'image/jpeg': |
|
return '.jpeg'; |
|
case 'image/jpeg': |
|
return '.jpg'; |
|
case 'image/jpeg': |
|
return '.jpe'; |
|
case 'image/png': |
|
return '.png'; |
|
case 'image/tiff': |
|
return '.tiff'; |
|
case 'image/tif': |
|
return '.tif'; |
|
case 'image/vnd.djvu': |
|
return '.djvu'; |
|
case 'image/vnd.djvu': |
|
return '.djv'; |
|
case 'image/vnd.wap.wbmp': |
|
return '.wbmp'; |
|
case 'image/x-cmu-raster': |
|
return '.ras'; |
|
case 'image/x-portable-anymap': |
|
return '.pnm'; |
|
case 'image/x-portable-bitmap': |
|
return '.pbm'; |
|
case 'image/x-portable-graymap': |
|
return '.pgm'; |
|
case 'image/x-portable-pixmap': |
|
return '.ppm'; |
|
case 'image/x-rgb': |
|
return '.rgb'; |
|
case 'image/x-xbitmap': |
|
return '.xbm'; |
|
case 'image/x-xpixmap': |
|
return '.xpm'; |
|
case 'image/x-windowdump': |
|
return '.xwd'; |
|
case 'model/iges': |
|
return '.igs'; |
|
case 'model/iges': |
|
return '.iges'; |
|
case 'model/mesh': |
|
return '.msh'; |
|
case 'model/mesh': |
|
return '.mesh'; |
|
case 'model/mesh': |
|
return '.silo'; |
|
case 'model/vrml': |
|
return '.wrl'; |
|
case 'model/vrml': |
|
return '.vrml'; |
|
case 'text/css': |
|
return '.css'; |
|
case 'text/html': |
|
return '.html'; |
|
case 'text/html': |
|
return '.htm'; |
|
case 'text/plain': |
|
return '.asc'; |
|
case 'text/plain': |
|
return '.txt'; |
|
case 'text/richtext': |
|
return '.rtx'; |
|
case 'text/rtf': |
|
return '.rtf'; |
|
case 'text/sgml': |
|
return '.sgml'; |
|
case 'text/sgml': |
|
return '.sgm'; |
|
case 'text/tab-seperated-values': |
|
return '.tsv'; |
|
case 'text/vnd.wap.wml': |
|
return '.wml'; |
|
case 'text/vnd.wap.wmlscript': |
|
return '.wmls'; |
|
case 'text/x-setext': |
|
return '.etx'; |
|
case 'text/xml': |
|
return '.xml'; |
|
case 'text/xml': |
|
return '.xsl'; |
|
case 'video/mpeg': |
|
return '.mpeg'; |
|
case 'video/mpeg': |
|
return '.mpg'; |
|
case 'video/mpeg': |
|
return '.mpe'; |
|
case 'video/quicktime': |
|
return '.qt'; |
|
case 'video/quicktime': |
|
return '.mov'; |
|
case 'video/vnd.mpegurl': |
|
return '.mxu'; |
|
case 'video/x-msvideo': |
|
return '.avi'; |
|
case 'video/x-sgi-movie': |
|
return '.movie'; |
|
case 'x-conference-xcooltalk': |
|
return '.ice'; |
|
default: |
|
return ""; |
|
} |
|
}
|
|
|