function atm_size($value, $datatype, $mode = 0) { //使用没有经过addslashes的值,以k为单位 if (empty($value)) { return 0; } $size = 0; if (in_array($datatype, array('image', 'flash', 'media', 'file'))) { $temps = explode('#', $value); if ($url = tag2atm($temps[0])) { $size = islocal($url) ? filesize(local_file($url)) : rm_filesize($url); } } elseif (in_array($datatype, array('images', 'flashs', 'medias', 'files'))) { if ($temps = @unserialize($value)) { foreach ($temps as $v) { if ($url = tag2atm($v['remote'])) { $size += isset($v['size']) ? $v['size'] : (islocal($url) ? filesize(local_file($url)) : rm_filesize($url)); if ($mode) { break; } } } } } unset($temps, $url); return intval($size / 1024); }
function down_url($url) { if (islocal($url)) { file_down(local_file($url)); } else { header("location:{$url}"); } mexit(); }
function closure($clear = 0, $aid = 0, $table = 'archives') { global $db, $tblprefix, $curuser, $m_cookie; $ckey = $curuser->info['msid'] . '_upload'; $ids = implode(',', $this->ufids); empty($m_cookie[$ckey]) || ($ids = $m_cookie[$ckey] . ($ids ? ",{$ids}" : '')); if ($clear) { //表ID对应数组 $tids = array('archives' => 1, 'farchives' => 2, 'members' => 3, 'marchives' => 4, 'comments' => 16, 'replys' => 17, 'offers' => 18, 'mcomments' => 32, 'mreplys' => 33); $tid = $table && isset($tids[$table]) ? $tids[$table] : 0; //防止别人修改cookie注入MySQL if (preg_match('/^\\d+(?:,\\d+)*$/', $ids)) { if ($aid) { $tid && $db->query("UPDATE {$tblprefix}userfiles SET aid={$aid},tid={$tid} WHERE aid=0 AND ufid IN ({$ids})", 'UNBUFFERED'); } elseif ($clear == 1) { $query = $db->query("SELECT url FROM {$tblprefix}userfiles WHERE mid={$curuser->info['mid']} AND ufid IN ({$ids})"); while ($item = $db->fetch_array($query)) { @unlink(local_file($item['url'])); } $db->query("DELETE FROM {$tblprefix}userfiles WHERE ufid IN ({$ids})", 'UNBUFFERED'); } } msetcookie($ckey, '', -31536000); } else { msetcookie($ckey, $ids, 31536000); } }
} } else { $query = $db->query("SELECT * FROM {$tblprefix}userfiles WHERE ufid " . multi_str($selectid) . " ORDER BY ufid"); } while ($item = $db->fetch_array($query)) { $items[$item['ufid']] = $item; } $actuser = new cls_userinfo(); foreach ($items as $item) { $actuser->activeuser($item['mid']); if ($item['thumbed']) { $actuser->updateuptotal(ceil(@filesize(local_file($item['url']) . '.s.jpg') / 1024), 'reduce'); @unlink(local_file($item['url']) . '.s.jpg'); } $actuser->updateuptotal(ceil($item['size'] / 1024), 'reduce', '1'); @unlink(local_file($item['url'])); $actuser->init(); } $db->query("DELETE FROM {$tblprefix}userfiles WHERE ufid " . multi_str(array_keys($items)), 'UNBUFFERED'); unset($actuser); if (!empty($select_all)) { $npage++; if ($npage <= $pages) { $fromid = min(array_keys($items)); $transtr = ''; $transtr .= "&select_all=1"; $transtr .= "&pages={$pages}"; $transtr .= "&npage={$npage}"; $transtr .= "&buserfilesedit=1"; $transtr .= "&fromid={$fromid}"; amessage('operating', "?entry=userfiles&action=userfilesedit&page={$page}{$filterstr}{$transtr}", $pages, $npage, "<a href=\"?entry=userfiles&action=userfilesedit&page={$page}{$filterstr}\">", '</a>');
function arc_delete($isuser = 0) { global $db, $tblprefix, $enablestatic, $cotypes; if (empty($this->aid)) { return false; } $this->basic_data(); if ($isuser && $this->archive['checked']) { return false; } //删除相应的txt存储文本 $this->detail_data(); foreach ($this->namepres as $k) { txtunlink($k); } $wherestr = "WHERE aid='" . $this->aid . "'"; foreach (array('comments', 'favorites', 'subscribes', 'answers', 'arecents', 'purchases', 'offers', 'replys') as $var) { //???????????????? $db->query("DELETE FROM {$tblprefix}{$var} {$wherestr}", 'UNBUFFERED'); } $db->query("DELETE FROM {$tblprefix}albums WHERE aid='" . $this->aid . "' OR pid='" . $this->aid . "'", 'UNBUFFERED'); //合辑关系全部删除 //删除相关已生成的静态文件 $arcurl = arc_format($this->archive); for ($i = 1; $i <= $this->channel['addnum']; $i++) { m_unlink(m_parseurl($arcurl, array('addno' => $i))); } $db->query("DELETE FROM {$tblprefix}archives_" . $this->archive['chid'] . " {$wherestr}", 'UNBUFFERED'); $db->query("DELETE FROM {$tblprefix}archives_sub {$wherestr}", 'UNBUFFERED'); $db->query("DELETE FROM {$tblprefix}archives_rec {$wherestr}", 'UNBUFFERED'); $db->query("DELETE FROM {$tblprefix}archives {$wherestr}", 'UNBUFFERED'); //数量统计 $this->auser->basedeal('archive', 0); $this->archive['checked'] && $this->auser->basedeal('check', 0); $uploadsize = 0; $query = $db->query("SELECT * FROM {$tblprefix}userfiles WHERE tid='1' AND aid='" . $this->aid . "'"); while ($item = $db->fetch_array($query)) { $ufile = local_file($item['url']); @unlink($ufile); clear_dir($ufile . '_s', true); $uploadsize += ceil($item['size'] / 1024); } $this->auser->updateuptotal($uploadsize, 'reduce', 1); $db->query("DELETE FROM {$tblprefix}userfiles {$wherestr}", 'UNBUFFERED'); $this->init(); return true; }