示例#1
0
 function add($VAR)
 {
     global $_FILES, $smarty, $C_debug, $C_translate;
     if ($VAR['file_location_type'] == '') {
         return false;
     }
     $lt = $VAR['file_location_type'];
     // UPLOADED FILE FROM LOCAL PC
     if ($lt == 0) {
         ### Validate the file upoad:
         if (!isset($_FILES['upload_file']) || $_FILES['upload_file']['size'] <= 0) {
             global $C_debug;
             $C_debug->alert('You must go back and enter a file for upload!');
             return;
         }
         $VAR['file_size'] = $_FILES['upload_file']['size'];
         $VAR['file_type'] = $_FILES['upload_file']['type'];
         $VAR['file_name'] = $_FILES['upload_file']['name'];
     } elseif ($lt == 1) {
         ### Validate the remote file can be opened and is greater than 0K
         $file = $VAR['url_file'];
         if (empty($file) || !($fp = fopen($file, "r"))) {
             # error
             $C_debug->alert($C_translate->translate('remote_file_err', 'file', ''));
             return;
         } else {
             $VAR['file_location'] = $file;
             $fn = explode("/", $file);
             $count = count($fn) - 1;
             $VAR['file_name'] = $fn[$count];
             $headers = stream_get_meta_data($fp);
             $headers = $headers['wrapper_data'];
             for ($i = 0; $i < count($headers); $i++) {
                 if (preg_match('/^Content-Type:/i', $headers[$i])) {
                     $VAR['file_type'] = preg_replace('/Content-Type: /i', '', $headers[$i]);
                 } elseif (preg_match('/^Content-Length:/i', $headers[$i])) {
                     $VAR['file_size'] = preg_replace('/Content-Length: /i', '', $headers[$i]);
                 }
             }
         }
     } elseif ($lt == 2) {
         @($file = $VAR['local_file']);
         if (is_file($file) && is_readable($file)) {
             if (preg_match("@/@", $file)) {
                 $fn = explode("/", $file);
             } else {
                 if (preg_match("@\\@", $file)) {
                     $fn = explode("\\", $file);
                 } else {
                     $fn[0] = $file;
                 }
             }
             $count = count($fn) - 1;
             $VAR['file_name'] = $fn[$count];
             $VAR['file_size'] = filesize($file);
             $VAR['file_location'] = $file;
             include_once PATH_CORE . 'file_extensions.inc.php';
             $ext = new file_extensions();
             $VAR['file_type'] = $ext->content_type($file);
         } else {
             $C_debug->alert($C_translate->translate('local_file_err', 'file', ''));
             return;
         }
     } else {
         return false;
     }
     ### Create the record
     $type = "add";
     $this->method["{$type}"] = explode(",", $this->method["{$type}"]);
     $db = new CORE_database();
     $id = $db->add($VAR, $this, $type);
     ### Copy the uploaded file, or exit if fail:
     if ($lt == 0) {
         if (isset($id) && $id > 0) {
             if (!copy($_FILES['upload_file']['tmp_name'], PATH_FILES . 'file_' . $id . '.dat')) {
                 $C_debug->alert($C_translate->translate('copy_file_err', 'file', ''));
             }
         }
         unlink($_FILES['upload_file']['tmp_name']);
     }
 }