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; }
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; }