function updatepostcredits($operator, $uidarray, $action, $fid = 0) { global $_G; $val = $operator == '+' ? 1 : -1; $extsql = array(); if (empty($uidarray)) { return false; } $uidarray = (array) $uidarray; $uidarr = array(); foreach ($uidarray as $uid) { $uidarr[$uid] = !isset($uidarr[$uid]) ? 1 : $uidarr[$uid] + 1; } foreach ($uidarr as $uid => $coef) { $opnum = $val * $coef; if ($action == 'reply') { $extsql = array('posts' => $opnum); } elseif ($action == 'post') { $extsql = array('threads' => $opnum, 'posts' => $opnum); } if ($uid == $_G['uid']) { updatecreditbyaction($action, $uid, $extsql, '', $opnum, 1, $fid); } elseif (empty($uid)) { continue; } else { batchupdatecredit($action, $uid, $extsql, $opnum, $fid); } } if ($operator == '+' && ($action == 'reply' || $action == 'post')) { C::t('common_member_status')->update(array_keys($uidarr), array('lastpost' => TIMESTAMP), 'UNBUFFERED'); } }
function updatepostcredits($operator, $uidarray, $action, $fid = 0) { global $_G; $val = $operator == '+' ? 1 : -1; $extsql = array(); if ($action == 'reply') { $extsql = array('posts' => $val); } elseif ($action == 'post') { $extsql = array('threads' => $val, 'posts' => $val); } $uidarray = (array) $uidarray; foreach ($uidarray as $uid) { if ($uid == $_G['uid']) { updatecreditbyaction($action, $uid, $extsql, '', $val, 1, $fid); } elseif (empty($uid)) { continue; } else { batchupdatecredit($action, $uid, $extsql, $val, $fid); } } if ($operator == '+' && ($action == 'reply' || $action == 'post')) { $uids = implode(',', $uidarray); DB::query("UPDATE " . DB::table('common_member_status') . " SET lastpost='" . TIMESTAMP . "' WHERE uid IN ('{$uids}')", 'UNBUFFERED'); } }
updatestat('docomment'); C::t('common_member_status')->update($_G['uid'], array('lastpost' => TIMESTAMP), 'UNBUFFERED'); showmessage('do_success', dreferer(), array('doid' => $updo['doid'])); } } if ($_GET['op'] == 'delete') { if (submitcheck('deletesubmit')) { if ($id) { $allowmanage = checkperm('managedoing'); if ($value = C::t('home_docomment')->fetch($id)) { $home_doing = C::t('home_doing')->fetch($value['doid']); $value['duid'] = $home_doing['uid']; if ($allowmanage || $value['uid'] == $_G['uid'] || $value['duid'] == $_G['uid']) { C::t('home_docomment')->update($id, array('uid' => 0, 'username' => '', 'message' => '')); if ($value['uid'] != $_G['uid'] && $value['duid'] != $_G['uid']) { batchupdatecredit('comment', $value['uid'], array(), -1); } C::t('home_doing')->update_replynum_by_doid(-1, $updo['doid']); } } } else { require_once libfile('function/delete'); deletedoings(array($doid)); } dheader('location: ' . dreferer()); exit; } } elseif ($_GET['op'] == 'getcomment') { include_once DISCUZ_ROOT . './source/class/lib/lib_tree.php'; $tree = new lib_tree(); $list = array();
break; case 'UEC': case 'UEO': $closed = $action == 'UEO' ? 1 : 0; DB::query("UPDATE " . DB::table('forum_thread') . " SET closed='{$closed}' WHERE tid IN ({$tids})", 'UNBUFFERED'); DB::query("UPDATE " . DB::table('forum_threadmod') . " SET status='0' WHERE tid IN ({$tids}) AND action IN ('EOP', 'ECL', 'CLK')", 'UNBUFFERED'); break; case 'UED': DB::query("UPDATE " . DB::table('forum_threadmod') . " SET status='0' WHERE tid IN ({$tids}) AND action='EDI'", 'UNBUFFERED'); $digestarray = $authoridarry = array(); $query = DB::query("SELECT authorid, digest FROM " . DB::table('forum_thread') . " WHERE tid IN ({$tids})"); while ($digest = DB::fetch($query)) { $authoridarry[] = $digest['authorid']; $digestarray[$digest['digest']][] = $digest['authorid']; } foreach ($digestarray as $digest => $authorids) { batchupdatecredit('digest', $authorids, array("digestposts=digestposts+'-1'"), -$digest, $fid = 0); } DB::query("UPDATE " . DB::table('forum_thread') . " SET digest='0' WHERE tid IN ({$tids})", 'UNBUFFERED'); break; case 'SPD': DB::query("UPDATE " . DB::table('forum_thread') . " SET " . buildbitsql('status', 5, FALSE) . " WHERE tid IN ({$tids})", 'UNBUFFERED'); DB::query("UPDATE " . DB::table('forum_threadmod') . " SET status='0' WHERE tid IN ({$tids}) AND action IN ('SPA')", 'UNBUFFERED'); break; } } require_once libfile('function/post'); foreach ($actionarray as $action => $tids) { updatemodlog(implode(',', $tids), $action, 0, 1); } }
function deletedoings($ids) { global $_G; $allowmanage = checkperm('managedoing'); $doings = $newdoids = $counts = array(); $query = C::t('home_doing')->fetch_all($ids); foreach ($query as $value) { if ($allowmanage || $value['uid'] == $_G['uid']) { $doings[] = $value; $newdoids[] = $value['doid']; if ($value['uid'] != $_G['uid']) { $counts[$value['uid']]['coef'] -= 1; } $counts[$value['uid']]['doings'] -= 1; } } if (empty($doings)) { return array(); } C::t('home_doing')->delete($newdoids); C::t('home_docomment')->delete_by_doid_uid($newdoids); C::t('home_feed')->delete_by_id_idtype($newdoids, 'doid'); C::t('common_moderate')->delete($newdoids, 'doid'); if ($counts) { foreach ($counts as $uid => $setarr) { if ($uid) { batchupdatecredit('doing', $uid, array('doings' => $setarr['doings']), $setarr['coef']); $lastdoing = C::t('home_doing')->fetch_all_by_uid_doid($uid, '', 'dateline', 0, 1, true, true); $setarr = array('recentnote' => $lastdoing[0]['message'], 'spacenote' => $lastdoing[0]['message']); C::t('common_member_field_home')->update($_G['uid'], $setarr); } } } return $doings; }
function deletepolls($pids) { global $_G; $counts = $polls = $newpids = array(); $allowmanage = checkperm('managepoll'); $query = DB::query("SELECT * FROM " . DB::table('home_poll') . " WHERE pid IN (" . dimplode($pids) . ")"); while ($value = DB::fetch($query)) { if ($allowmanage || $value['uid'] == $_G['uid']) { $polls[] = $value; $newpids[] = $value['pid']; if ($value['uid'] != $_G['uid']) { $counts[$value['uid']]['coef'] -= 1; } $counts[$value['uid']]['polls'] -= 1; } } if (empty($polls)) { return array(); } DB::query("DELETE FROM " . DB::table('home_poll') . " WHERE pid IN (" . dimplode($newpids) . ")"); DB::query("DELETE FROM " . DB::table('home_pollfield') . " WHERE pid IN (" . dimplode($newpids) . ")"); DB::query("DELETE FROM " . DB::table('home_polloption') . " WHERE pid IN (" . dimplode($newpids) . ")"); DB::query("DELETE FROM " . DB::table('home_polluser') . " WHERE pid IN (" . dimplode($newpids) . ")"); DB::query("DELETE FROM " . DB::table('home_comment') . " WHERE id IN (" . dimplode($newpids) . ") AND idtype='pid'"); DB::query("DELETE FROM " . DB::table('home_feed') . " WHERE id IN (" . dimplode($newpids) . ") AND idtype='pid'"); if ($counts) { foreach ($counts as $uid => $setarr) { batchupdatecredit('createpoll', $uid, array('polls' => $setarr['polls']), $setarr['coef']); } } return $polls; }
function deletedoings($ids) { global $_G; $allowmanage = checkperm('managedoing'); $doings = $newdoids = $counts = array(); $query = C::t('home_doing')->fetch_all($ids); foreach ($query as $value) { if ($allowmanage || $value['uid'] == $_G['uid']) { $doings[] = $value; $newdoids[] = $value['doid']; if ($value['uid'] != $_G['uid']) { $counts[$value['uid']]['coef'] -= 1; } $counts[$value['uid']]['doings'] -= 1; } } if (empty($doings)) { return array(); } C::t('home_doing')->delete($newdoids); C::t('home_docomment')->delete_by_doid_uid($newdoids); C::t('home_feed')->delete_by_id_idtype($newdoids, 'doid'); C::t('common_moderate')->delete($newdoids, 'doid'); if ($counts) { foreach ($counts as $uid => $setarr) { batchupdatecredit('doing', $uid, array('doings' => $setarr['doings']), $setarr['coef']); } } return $doings; }