Пример #1
0
 function note_action_process($patient_id)
 {
     // this function is a dual function that will set up a note associated with a document or send a document via email.
     if ($_POST['process'] != "true") {
         return;
     }
     $n = new Note();
     $n->set_owner($_SESSION['authUserID']);
     parent::populate_object($n);
     if ($_POST['identifier'] == "no") {
         // associate a note with a document
         $n->persist();
     } elseif ($_POST['identifier'] == "yes") {
         // send the document via email
         $d = new Document($_POST['foreign_id']);
         $url = $d->get_url();
         $storagemethod = $d->get_storagemethod();
         $couch_docid = $d->get_couch_docid();
         $couch_revid = $d->get_couch_revid();
         if ($couch_docid && $couch_revid) {
             $couch = new CouchDB();
             $data = array($GLOBALS['couchdb_dbase'], $couch_docid);
             $resp = $couch->retrieve_doc($data);
             $content = $resp->data;
             if ($content == '' && $GLOBALS['couchdb_log'] == 1) {
                 $log_content = date('Y-m-d H:i:s') . " ==> Retrieving document\r\n";
                 $log_content = date('Y-m-d H:i:s') . " ==> URL: " . $url . "\r\n";
                 $log_content .= date('Y-m-d H:i:s') . " ==> CouchDB Document Id: " . $couch_docid . "\r\n";
                 $log_content .= date('Y-m-d H:i:s') . " ==> CouchDB Revision Id: " . $couch_revid . "\r\n";
                 $log_content .= date('Y-m-d H:i:s') . " ==> Failed to fetch document content from CouchDB.\r\n";
                 //$log_content .= date('Y-m-d H:i:s')." ==> Will try to download file from HardDisk if exists.\r\n\r\n";
                 $this->document_upload_download_log($d->get_foreign_id(), $log_content);
                 die(xlt("File retrieval from CouchDB failed"));
             }
             // place it in a temporary file and will remove the file below after emailed
             $temp_couchdb_url = $GLOBALS['OE_SITE_DIR'] . '/documents/temp/couch_' . date("YmdHis") . $d->get_url_file();
             $fh = fopen($temp_couchdb_url, "w");
             fwrite($fh, base64_decode($content));
             fclose($fh);
             $temp_url = $temp_couchdb_url;
             // doing this ensure hard drive file never deleted in case something weird happens
         } else {
             $url = preg_replace("|^(.*)://|", "", $url);
             // Collect filename and path
             $from_all = explode("/", $url);
             $from_filename = array_pop($from_all);
             $from_pathname_array = array();
             for ($i = 0; $i < $d->get_path_depth(); $i++) {
                 $from_pathname_array[] = array_pop($from_all);
             }
             $from_pathname_array = array_reverse($from_pathname_array);
             $from_pathname = implode("/", $from_pathname_array);
             $temp_url = $GLOBALS['OE_SITE_DIR'] . '/documents/' . $from_pathname . '/' . $from_filename;
         }
         if (!file_exists($temp_url)) {
             echo xl('The requested document is not present at the expected location on the filesystem or there are not sufficient permissions to access it.', '', '', ' ') . $temp_url;
         }
         $url = $temp_url;
         $body_notes = attr($_POST['note']);
         $pdetails = getPatientData($patient_id);
         $pname = $pdetails['fname'] . " " . $pdetails['lname'];
         $this->document_send($_POST['provide_email'], $body_notes, $url, $pname);
         if ($couch_docid && $couch_revid) {
             // remove the temporary couchdb file
             unlink($temp_couchdb_url);
         }
     }
     $this->_state = false;
     $_POST['process'] = "";
     return $this->view_action($patient_id, $n->get_foreign_id());
 }
Пример #2
0
 function note_action_process($patient_id)
 {
     if ($_POST['process'] != "true") {
         return;
     }
     $n = new Note();
     $n->set_owner($_SESSION['authUserID']);
     parent::populate_object($n);
     $n->persist();
     $this->_state = false;
     $_POST['process'] = "";
     return $this->view_action($patient_id, $n->get_foreign_id());
 }