$maxmagicsweight && !$force) { showmessage('magics_weight_range_invalid', '', array('less' => $weight + $totalweight - $maxmagicsweight)); } else { if(C::t('common_member_magic')->count($uid, $magicid)) { C::t('common_member_magic')->increase($uid, $magicid, array('num' => $magicnum), false, true); } else { C::t('common_member_magic')->insert(array( 'uid' => $uid, 'magicid' => $magicid, 'num' => $magicnum )); } } } function getmagicweight($uid, $magicarray) { $totalweight = 0; $query = C::t('common_member_magic')->fetch_all($uid); foreach($query as $magic) { $totalweight += $magicarray[$magic['magicid']]['weight'] * $magic['num']; } return $totalweight; } function getpostinfo($id, $type, $colsarray = '') { global $_G; $sql = $comma = ''; $type = in_array($type, array('tid', 'pid', 'blogid')) && !empty($type) ? $type : 'tid'; $cols = '*'; if(!empty($colsarray) && is_array($colsarray)) { $cols = ''; foreach($colsarray as $val) { $cols .= $comma.$val; $comma = ', '; } } switch($type) { case 'tid': $info = C::t('forum_thread')->fetch_by_tid_displayorder($id, 0); break; case 'pid': $info = C::t('forum_post')->fetch($_G['tid'], $id); if($info && $info['invisible'] == 0) { $thread = C::t('forum_thread')->fetch($_G['tid']); $thread['thread_author'] = $thread['author']; $thread['thread_authorid'] = $thread['authorid']; $thread['thread_status'] = $thread['status']; unset($thread['author']); unset($thread['authorid']); unset($thread['dateline']); unset($thread['status']); $info = array_merge($info, $thread); } else { $info = array(); } break; case 'blogid': $info = C::t('home_blog')->fetch($id); if(!($info && $info['status'] == '0')) { $info = array(); } break; } if(!$info) { showmessage('magics_target_nonexistence'); } else { return daddslashes($info, 1); } } function getuserinfo($username) { $member = C::t('common_member')->fetch_by_username($username); if(!$member) { showmessage('magics_target_member_nonexistence'); } else { return daddslashes($member, 1); } } function givemagic($username, $magicid, $magicnum, $totalnum, $totalprice, $givemessage, $magicarray) { global $_G; $member = C::t('common_member')->fetch_by_username($username); if(!$member) { showmessage('magics_target_member_nonexistence'); } elseif($member['uid'] == $_G['uid']) { showmessage('magics_give_myself'); } $member = array_merge(C::t('common_usergroup_field')->fetch($member['groupid']), $member); $totalweight = getmagicweight($member['uid'], $magicarray); $magicweight = $magicarray[$magicid]['weight'] * $magicnum; if($magicarray[$magicid]['weight'] && $magicweight + $totalweight > $member['maxmagicsweight']) { $num = floor(($member['maxmagicsweight'] - $totalweight) / $magicarray[$magicid]['weight']); $num = max(0, $num); showmessage('magics_give_weight_range_invalid', '', array('num' => $num)); } getmagic($magicid, $magicnum, $magicweight, $totalweight, $member['uid'], $member['maxmagicsweight']); notification_add($member['uid'], 'magic', 'magics_receive', array('magicname' => $magicarray[$magicid]['name'], 'msg' => $givemessage)); updatemagiclog($magicid, '3', $magicnum, $magicarray[$magicid]['price'], $member['uid']); if(empty($totalprice)) { usemagic($magicid, $totalnum, $magicnum); showmessage('magics_give_succeed', 'home.php?mod=magic&action=mybox', array('toname' => $username, 'num' => $magicnum, 'magicname' => $magicarray[$magicid]['name'])); } } function magicthreadmod($tid) { foreach(C::t('forum_threadmod')->fetch_all_by_tid_magicid($tid) as $threadmod) { if(!$threadmod['magicid'] && in_array($threadmod['action'], array('CLS', 'ECL', 'STK', 'EST', 'HLT', 'EHL'))) { showmessage('magics_mod_forbidden'); } } } function magicshowsetting($setname, $varname, $value, $type = 'radio', $width = '20%') { $check = array(); echo '

'.$setname.'

'; if($type == 'radio') { $value ? $check['true'] = 'checked="checked"' : $check['false'] = 'checked="checked"'; echo " ".lang('core', 'yes')."     \n". " ".lang('core', 'no')."\n"; } elseif($type == 'text') { echo "\n"; } elseif($type == 'hidden') { echo "\n"; } else { echo $type; } } function magicshowtips($tips) { echo '

'.$tips.'

'; } function magicshowtype($type = '') { if($type != 'bottom') { echo '

'; } else { echo '

'; } } function usemagic($magicid, $totalnum, $num = 1) { global $_G; if($totalnum == $num) { C::t('common_member_magic')->delete($_G['uid'], $magicid); } else { C::t('common_member_magic')->increase($_G['uid'], $magicid, array('num' => -$num)); } } function updatemagicthreadlog($tid, $magicid, $action = 'MAG', $expiration = 0, $extra = 0) { global $_G; $_G['username'] = !$extra ? $_G['username'] : ''; $data = array( 'tid' => $tid, 'uid' => $_G['uid'], 'magicid' => $magicid, 'username' => $_G['username'], 'dateline' => $_G['timestamp'], 'expiration' => $expiration, 'action' => $action, 'status' => 1 ); C::t('forum_threadmod')->insert($data); } function updatemagiclog($magicid, $action, $amount, $price, $targetuid = 0, $idtype = '', $targetid = 0) { global $_G; list($price, $credit) = explode('|', $price); $data = array( 'uid' => $_G['uid'], 'magicid' => $magicid, 'action' => $action, 'dateline' => $_G['timestamp'], 'amount' => $amount, 'price' => $price, 'credit' => $credit, 'idtype' => $idtype, 'targetid' => $targetid, 'targetuid' => $targetuid ); C::t('common_magiclog')->insert($data); } function magic_check_idtype($id, $idtype) { global $_G; include_once libfile('function/spacecp'); $value = ''; $tablename = gettablebyidtype($idtype); if($tablename) { $value = C::t($tablename)->fetch_by_id_idtype($id); if($value['uid'] != $_G['uid']) { $value = null; } } if(empty($value)) { showmessage('magicuse_bad_object'); } return $value; } function magic_peroid($magic, $uid) { global $_G; if($magic['useperoid']) { $dateline = 0; if($magic['useperoid'] == 1) { $dateline = TIMESTAMP - (TIMESTAMP + $_G['setting']['timeoffset'] * 3600) % 86400 + $_G['setting']['timeoffset'] * 3600; } elseif($magic['useperoid'] == 4) { $dateline = TIMESTAMP - 86400; } elseif($magic['useperoid'] == 2) { $dateline = TIMESTAMP - 86400 * 7; } elseif($magic['useperoid'] == 3) { $dateline = TIMESTAMP - 86400 * 30; } $num = C::t('common_magiclog')->count_by_uid_magicid_action_dateline($uid, $magic['magicid'], 2, $dateline); return $magic['usenum'] - $num; } else { return true; } } ?>