function parseattach($attachpids, $attachtags, &$postlist, $skipaids = array()) { global $_G; $query = DB::query("SELECT a.*, af.description, l.relatedid AS payed\n\t\tFROM " . DB::table('forum_attachment') . " a\n\t\tLEFT JOIN " . DB::table('forum_attachmentfield') . " af ON a.aid=af.aid\n\t\tLEFT JOIN " . DB::table('common_credit_log') . " l ON l.relatedid=a.aid AND l.uid='{$_G['uid']}' AND l.operation='BAC'\n\t\tWHERE a.pid IN ({$attachpids})"); $attachexists = FALSE; while ($attach = DB::fetch($query)) { $attachexists = TRUE; if ($skipaids && in_array($attach['aid'], $skipaids)) { continue; } $attached = 0; $extension = strtolower(fileext($attach['filename'])); $attach['ext'] = $extension; $attach['attachicon'] = attachtype($extension . "\t" . $attach['filetype']); $attach['attachsize'] = sizecount($attach['filesize']); $attach['attachimg'] = $_G['setting']['attachimgpost'] && $attach['isimage'] && (!$attach['readperm'] || $_G['group']['readaccess'] >= $attach['readperm']) ? 1 : 0; if ($attach['price']) { if ($_G['setting']['maxchargespan'] && TIMESTAMP - $attach['dateline'] >= $_G['setting']['maxchargespan'] * 3600) { DB::query("UPDATE " . DB::table('forum_attachment') . " SET price='0' WHERE aid='{$attach['aid']}'"); $attach['price'] = 0; } else { if (!$_G['uid'] || !$_G['forum']['ismoderator'] && $attach['uid'] != $_G['uid'] && !$attach['payed']) { $attach['unpayed'] = 1; } } } $exemptattachpay = $_G['group']['exempt'] & 8 ? 1 : 0; $attach['payed'] = $attach['payed'] || $_G['forum']['ismoderator'] || $attach['uid'] == $_G['uid'] ? 1 : 0; $attach['url'] = ($attach['remote'] ? $_G['setting']['ftp']['attachurl'] . '/' : $_G['setting']['attachurl']) . 'forum/'; $attach['dateline'] = dgmdate($attach['dateline'], 'u'); $postlist[$attach['pid']]['attachments'][$attach['aid']] = $attach; if (!empty($attachtags[$attach['pid']]) && is_array($attachtags[$attach['pid']]) && in_array($attach['aid'], $attachtags[$attach['pid']])) { $findattach[$attach['pid']][] = "/\\[attach\\]{$attach['aid']}\\[\\/attach\\]/i"; $replaceattach[$attach['pid']][] = attachtag($attach['pid'], $attach['aid'], $postlist); $attached = 1; } if (!$attached) { if ($attach['isimage']) { $postlist[$attach['pid']]['imagelist'] .= attachlist($attach); } else { if (!$_G['forum_skipaidlist'] || !in_array($attach['aid'], $_G['forum_skipaidlist'])) { $postlist[$attach['pid']]['attachlist'] .= attachlist($attach); } } } } if ($attachexists) { foreach ($attachtags as $pid => $aids) { if ($findattach[$pid]) { $postlist[$pid]['message'] = preg_replace($findattach[$pid], $replaceattach[$pid], $postlist[$pid]['message'], 1); $postlist[$pid]['message'] = preg_replace($findattach[$pid], '', $postlist[$pid]['message']); } } } else { updatepost(array('attachment' => '0'), "pid IN ({$attachpids})", true); } }
function parseattach($attachpids, $attachtags, &$postlist, $showimages = 1, $skipaids = array()) { global $db, $tablepre, $discuz_uid, $readaccess, $attachlist, $attachimgpost, $maxchargespan, $timestamp, $forum, $ftp, $attachurl, $dateformat, $timeformat, $timeoffset, $hideattach, $thread, $tradesaids, $trades, $exthtml, $tagstatus; $query = $db->query("SELECT a.*, ap.aid AS payed FROM {$tablepre}attachments a LEFT JOIN {$tablepre}attachpaymentlog ap ON ap.aid=a.aid AND ap.uid='{$discuz_uid}' WHERE a.pid IN ({$attachpids})"); if ($db->num_rows($query)) { while ($attach = $db->fetch_array($query)) { $exthtml = ''; if ($skipaids && in_array($attach['aid'], $skipaids)) { continue; } $attached = 0; $extension = strtolower(fileext($attach['filename'])); $attach['attachicon'] = attachtype($extension . "\t" . $attach['filetype']); $attach['attachsize'] = sizecount($attach['filesize']); $attach['attachimg'] = $showimages && $attachimgpost && $attach['isimage'] && (!$attach['readperm'] || $readaccess >= $attach['readperm']) ? 1 : 0; if ($attach['price']) { if ($maxchargespan && $timestamp - $attach['dateline'] >= $maxchargespan * 3600) { $db->query("UPDATE {$tablepre}attachments SET price='0' WHERE aid='{$attach['aid']}'"); $attach['price'] = 0; } else { if (!$discuz_uid || !$forum['ismoderator'] && $attach['uid'] != $discuz_uid && !$attach['payed']) { $attach['unpayed'] = 1; } } } $attach['payed'] = $attach['payed'] || $forum['ismoderator'] || $attach['uid'] == $discuz_uid ? 1 : 0; $attach['url'] = $attach['remote'] ? $ftp['attachurl'] : $attachurl; $attach['dateline'] = gmdate("{$dateformat} {$timeformat}", $attach['dateline'] + $timeoffset * 3600); $postlist[$attach['pid']]['attachments'][$attach['aid']] = $attach; if (is_array($attachtags[$attach['pid']]) && in_array($attach['aid'], $attachtags[$attach['pid']])) { $findattach[$attach['pid']][] = "/\\[attach\\]{$attach['aid']}\\[\\/attach\\]/i"; $replaceattach[$attach['pid']][] = $hideattach[$attach['pid']] ? '[attach]***[/attach]' : attachtag($attach['pid'], $attach['aid'], $postlist); $attached = 1; } if (!$attached || $attach['unpayed']) { $postlist[$attach['pid']]['attachlist'] .= attachlist($attach); } } foreach ($attachtags as $pid => $aids) { if ($findattach[$pid]) { $postlist[$pid]['message'] = preg_replace($findattach[$pid], $replaceattach[$pid], $postlist[$pid]['message'], 1); $postlist[$pid]['message'] = preg_replace($findattach[$pid], '', $postlist[$pid]['message']); } } } else { $db->query("UPDATE {$tablepre}posts SET attachment='0' WHERE pid IN ({$attachpids})", 'UNBUFFERED'); } }