示例#1
0
 function upload($file_data)
 {
     if (!@$file_data) {
         return false;
     }
     if (!is_uploaded_file(@$file_data['tmp_name'])) {
         return false;
     }
     # Add file!!
     $ldb_data = array();
     $ldb_data['file_name'] = $file_data['name'];
     $ldb_data['file_name'] = preg_replace('/\\.+/', '.', $ldb_data['file_name']);
     $ldb_data['file_name'] = preg_replace('/[^\\pL\\d,._\\- ]/Uuims', ' ', $ldb_data['file_name']);
     $ldb_data['file_name'] = preg_replace('/\\s+/Uuims', ' ', $ldb_data['file_name']);
     $ldb_data['file_name'] = trim($ldb_data['file_name']);
     $ldb_data['file_size'] = filesize($file_data['tmp_name']);
     $ldb_data['uid'] = user('id');
     $ldb_data['tms_upload'] = time();
     $ldb_data['links_count'] = 1;
     $ldb_data['file_mime'] = @$file_data['type'];
     $ldb_data['att_type'] = @$file_data['att_type'] ? $file_data['att_type'] : 'ATTACH';
     $ldb_data['att_type2'] = @$file_data['att_type2'];
     $ldb_data['key'] = md5(md5(mt_rand() . time() . implode(';', $ldb_data) . @$_SERVER['HTTP_USER_AGENT']));
     $file_id = ldb_insert('site_attach_files', $ldb_data);
     if (!copy($file_data['tmp_name'], ROOT_PATH . '/uploads/att-' . $file_id . '.dat')) {
         ldb_query('DELETE FROM `site_attach_files` WHERE `id`=' . $file_id);
         return false;
     }
     # Save data file
     file_put_contents(ROOT_PATH . '/uploads/att-' . $file_id . '.inf', serialize($ldb_data));
     return $file_id;
 }
示例#2
0
 function upload_complete()
 {
     $up_id = intval(@$_GET['upid']);
     $id = intval(@$_GET['id']);
     include_once CORE_PATH . '/ttl.php';
     # Check file
     $f_in = ROOT_PATH . '/tmp/upload/' . md5($this->sid . $up_id) . '-' . $id;
     if (!file_exists($f_in)) {
         return $this->error('UPLOAD_INT_F_E', lang('fl_e_int'));
     }
     # Size...
     # Name...
     $fname = trim(basename(@$_GET['qqfile']));
     if (!$fname) {
         $fname = 'ass.txt';
     }
     # Check extension
     $finfo = pathinfo($fname);
     $ext = strtolower(@$finfo['extension']);
     if (!ext_allowed($ext)) {
         return $this->error('UPLOAD_NTYPE', lang('fl_e_ntype'));
     }
     #	return exit(htmlspecialchars(json_encode(array('error'=>lang('fl_e_ntype'))), ENT_NOQUOTES));
     # Okay...
     $fname = preg_replace('!<>\\/\\n\\r\\t!', '', $fname);
     $up_code = md5($this->sid . $up_id);
     $ph = substr(sha1(md5(microtime(true)) . mt_rand() . md5($fname)), 8, 8);
     $ttl = $GLOBALS['ttl_def'];
     $tms_del = time() + $ttl;
     # Create DB record
     ldb_insert('upload', array('uid' => $this->uid, 'code' => $up_code, 'ph' => $ph, 'tms_upload' => time(), 'tms_last' => time(), 'tms_delete' => $tms_del, 'ttl' => $ttl));
     $rec = ldb_select('upload', '*', '`uid`=' . $this->uid . ' AND `code`=\'' . $up_code . '\' LIMIT 1');
     $rec = @$rec[0];
     if (!$rec) {
         return $this->error('UPLOAD_INT_D_E', lang('fl_e_int'));
         #return exit(htmlspecialchars(json_encode(array('error'=>lang('fl_e_int').' (D_E)')), ENT_NOQUOTES));
     }
     # Create uploading DIR
     $u_dir = ROOT_PATH . '/d/' . substr($up_code, 0, 2);
     @mkdir($u_dir);
     @chmod($u_dir, 0777);
     $u_dir .= '/' . substr($up_code, 2);
     @mkdir($u_dir);
     @chmod($u_dir, 0777);
     #$u_dir .= '/'.$id;
     #@mkdir($u_dir);
     if (!file_exists($u_dir)) {
         return $this->error('UPLOAD_INT_DR_E', lang('fl_e_int'));
         return exit(htmlspecialchars(json_encode(array('error' => lang('fl_e_int') . ' (DR_E)')), ENT_NOQUOTES));
     }
     # Copy file!
     if (!copy($f_in, $u_dir . '/' . $id . '.dat')) {
         return $this->error('UPLOAD_INT_CP_E', lang('fl_e_int'));
         return exit(htmlspecialchars(json_encode(array('error' => lang('fl_e_int') . ' (CP_E)')), ENT_NOQUOTES));
     }
     @unlink($f_in);
     # Make simlink...
     #chdir($u_dir);
     #system('ln -s '.escapeshellarg('./'.$fname).' '.escapeshellarg('./file.'.$finfo['extension']));
     $fmime = get_mime_type($fname);
     $fsize = filesize_fix($u_dir . '/' . $id . '.dat');
     $dh = substr(sha1(md5(microtime(true)) . mt_rand() . md5($fname . $fmime)), 8, 8);
     # Add to DB!
     $file_id = ldb_insert('file', array('uid' => $this->uid, 'upid' => $rec['id'], 'upn' => $id, 'dh' => $dh, 'file_name' => $fname, 'file_ext' => $ext, 'file_size' => $fsize, 'tms_add' => time(), 'tms_last' => time()));
     if (!$file_id) {
         return $this->error('UPLOAD_INT_DB_E', lang('fl_e_int'));
         return exit(htmlspecialchars(json_encode(array('error' => lang('fl_e_int') . ' (DB_E)')), ENT_NOQUOTES));
     }
     ldb_query('UPDATE `upload` SET `file_count`=`file_count`+1, `file_size`=`file_size`+' . $fsize . ' WHERE `id`=' . $rec['id']);
     # return exit(htmlspecialchars(json_encode(array('error'=>  ldb_log_html())), ENT_NOQUOTES));
     # Make info file
     $inf = array();
     $inf[] = $fname;
     $inf[] = $fmime;
     $inf[] = $file_id;
     $inf[] = $fsize;
     $inf[] = $dh;
     file_put_contents($u_dir . '/' . $id . '.inf', implode("\n", $inf));
     @chmod($u_dir . '/' . $id . '.dat', 0777);
     @chmod($u_dir . '/' . $id . '.inf', 0777);
     echo '<upload status="ok" upload_id="' . $rec['id'] . '" upload_code="' . $rec['code'] . '" upload_ph="' . $rec['ph'] . '" tms_delete="' . $rec['tms_delete'] . '" ttl="' . $rec['ttl'] . '" prolong="' . $rec['prolong'] . '" tms_last="' . $rec['tms_last'] . '" file_id="' . $file_id . '" file_n="' . $id . '" file_dh="' . $dh . '"/>' . "\n";
 }
 public function migrate()
 {
     # Get revisions from FS
     if (!$this->loadFileRevisions()) {
         return false;
         # Error?
     }
     if (!$this->migrationsFilesystem) {
         # Nothing to migrate
         cli_log("Up-to-date or nothing to migrate");
         return true;
     }
     cli_log("Pending migrations: " . count($this->migrationsFilesystem));
     foreach ($this->migrationsFilesystem as $id => $migrat) {
         cli_log("Apply migration ID {$id}");
         if (!$migrat->run()) {
             cli_error("Error return code in migration {$id}");
             exit(1);
         }
         # Save migration ID
         ldb_insert($this->schemaTableName, array('id' => $id, 'tms' => time()));
     }
     cli_log("Migration OK!");
     return true;
 }