示例#1
0
 public function hasVirus()
 {
     $retour = false;
     if ($this->isOnDisk()) {
         include_once 'classes/cs_virus_scan.php';
         $virus_scanner = new cs_virus_scan($this->_environment);
         if (!$virus_scanner->isClean($this->getDiskFileName())) {
             $this->_virus_name = $virus_scanner->getVirusName();
             if (!empty($this->_virus_name)) {
                 $retour = true;
             }
         }
         unset($virus_scanner);
     }
     return $retour;
 }
 private function doUpload($uploadData, $file_upload_rubric)
 {
     $session = $this->_environment->getSessionItem();
     $isMulti = is_array($uploadData["name"]);
     $virus_found = false;
     $file_array = array();
     if ($isMulti) {
         $numFiles = sizeof($uploadData["name"]);
         for ($i = 0; $i < $numFiles; $i++) {
             $tempFile = $uploadData["tmp_name"][$i];
             /*
             					 if($session->issetValue($file_upload_rubric . "_add_files")) {
             					$file_array = $session->getValue($file_upload_rubric . "_add_files");
             					} else {
             					$file_array = array();
             					}*/
             global $c_virus_scan;
             global $c_virus_scan_cron;
             $c_virus_scan = !isset($c_virus_scan) || $c_virus_scan === false ? false : true;
             $c_virus_scan_cron = !isset($c_virus_scan_cron) || $c_virus_scan_cron === false ? false : true;
             if (!empty($tempFile) && $uploadData["size"][$i] > 0) {
                 $disc_manager = $this->_environment->getDiscManager();
                 if (isset($c_virus_scan) && $c_virus_scan && isset($c_virus_scan_cron) && !$c_virus_scan_cron) {
                     // use virus scanner
                     require_once 'classes/cs_virus_scan.php';
                     $virus_scanner = new cs_virus_scan($this->_environment);
                     $temp_array = array();
                     if (!$virus_scanner->isClean($tempFile, $uploadData['name'])) {
                         // Error virus detected
                         $virus_found = true;
                         $temp_array['virus'] = true;
                         $temp_array['virusname'] = $virus_scanner->getVirusName();
                     } else {
                         $temp_array['tmp_name'] = $disc_manager->moveUploadedFileToTempFolder($tempFile);
                         $temp_array['file_id'] = $temp_array['name'] . '_' . getCurrentDateTimeInMySQL();
                     }
                     $temp_array['name'] = $uploadData['name'][$i];
                     $file_array[] = $temp_array;
                 } else {
                     // do not use virus scanner
                     require_once 'functions/date_functions.php';
                     $temp_array = array();
                     $temp_array['name'] = $uploadData['name'][$i];
                     $temp_array['tmp_name'] = $disc_manager->moveUploadedFileToTempFolder($tempFile);
                     $temp_array['file_id'] = $temp_array['name'] . '_' . getCurrentDateTimeInMySQL();
                     $file_array[] = $temp_array;
                 }
                 unset($disc_manager);
             }
         }
     } else {
         $tempFile = $uploadData["tmp_name"];
         /*
         				if($session->issetValue($file_upload_rubric . "_add_files")) {
         					$file_array = $session->getValue($file_upload_rubric . "_add_files");
         				} else {
         					$file_array = array();
         				}*/
         global $c_virus_scan;
         global $c_virus_scan_cron;
         $c_virus_scan = !isset($c_virus_scan) || $c_virus_scan === false ? false : true;
         $c_virus_scan_cron = !isset($c_virus_scan_cron) || $c_virus_scan_cron === false ? false : true;
         if (!empty($tempFile) && $uploadData["size"] > 0) {
             $disc_manager = $this->_environment->getDiscManager();
             if (isset($c_virus_scan) && $c_virus_scan && isset($c_virus_scan_cron) && !$c_virus_scan_cron) {
                 // use virus scanner
                 require_once 'classes/cs_virus_scan.php';
                 $virus_scanner = new cs_virus_scan($this->_environment);
                 $temp_array = array();
                 if (!$virus_scanner->isClean($tempFile, $uploadData['name'])) {
                     // Error virus detected
                     $virus_found = true;
                     $temp_array['virus'] = true;
                     $temp_array['virusname'] = $virus_scanner->getVirusName();
                 } else {
                     $temp_array['tmp_name'] = $disc_manager->moveUploadedFileToTempFolder($tempFile);
                     $temp_array['file_id'] = $temp_array['name'] . '_' . getCurrentDateTimeInMySQL();
                 }
                 $temp_array['name'] = $uploadData['name'];
                 $file_array[] = $temp_array;
             } else {
                 // do not use virus scanner
                 require_once 'functions/date_functions.php';
                 $temp_array = array();
                 $temp_array['name'] = $uploadData['name'];
                 $temp_array['tmp_name'] = $disc_manager->moveUploadedFileToTempFolder($tempFile);
                 $temp_array['file_id'] = $temp_array['name'] . '_' . getCurrentDateTimeInMySQL();
                 $file_array[] = $temp_array;
             }
             unset($disc_manager);
         }
     }
     $return = array();
     $sessionArray = array();
     if (sizeof($file_array) > 1) {
         foreach ($file_array as $file) {
             $return[] = array("file" => $file["tmp_name"], "name" => $file["name"], "type" => "", "file_id" => $file["file_id"], "virus" => $file["virus"], "virusname" => $file["virusname"]);
         }
         foreach ($return as $file) {
             $sessionArray[$file["file_id"]] = array("tmp_name" => $file["file"], "name" => $file["name"]);
         }
     } else {
         $return = array("file" => $file_array[0]["tmp_name"], "name" => $file_array[0]["name"], "type" => "", "file_id" => $file_array[0]["file_id"], "virus" => $file_array[0]["virus"], "virusname" => $file_array[0]["virusname"]);
         $sessionArray[$return["file_id"]] = array("tmp_name" => $return["file"], "name" => $return["name"]);
     }
     // merge current upload data with last one - session will be cleaned when storing item
     $currentSessionArray = array();
     if ($session->issetValue("add_files")) {
         $currentSessionArray = $session->getValue("add_files");
     }
     foreach ($currentSessionArray as $key => $value) {
         $sessionArray[$key] = $value;
     }
     $session->setValue("add_files", $sessionArray);
     $this->_environment->getSessionManager()->save($session);
     return $return;
 }