/** * Charge points from a specified member's account. * * @param MEMBER The member that is being charged * @param integer The amount being charged * @param SHORT_TEXT The reason for the charging */ function charge_member($member_id, $amount, $reason) { require_lang('points'); require_code('points'); $_before = point_info($member_id); $before = array_key_exists('points_used', $_before) ? intval($_before['points_used']) : 0; $new = $before + $amount; $GLOBALS['FORUM_DRIVER']->set_custom_field($member_id, 'points_used', strval($new)); add_to_charge_log($member_id, $amount, $reason); global $TOTAL_POINTS_CACHE, $POINT_INFO_CACHE; if (array_key_exists($member_id, $TOTAL_POINTS_CACHE)) { $TOTAL_POINTS_CACHE[$member_id] -= $amount; } if (array_key_exists($member_id, $POINT_INFO_CACHE) && array_key_exists('points_used', $POINT_INFO_CACHE[$member_id])) { $POINT_INFO_CACHE[$member_id]['points_used'] += $amount; } }
/** * Standard import function. * * @param object The DB connection to import from * @param string The table prefix the target prefix is using * @param PATH The base directory we are importing from */ function import_points_gifts_and_charges($db, $table_prefix, $file_base) { require_code('points2'); $rows = $db->query('SELECT * FROM ' . $table_prefix . 'chargelog', NULL, NULL, true); if (is_null($rows)) { $rows = array(); } $on_same_msn = $this->on_same_msn($file_base); foreach ($rows as $row) { $user = $on_same_msn ? $row['user_id'] : import_id_remap_get('member', $row['user_id'], true); if (is_null($user)) { $user = $GLOBALS['FORUM_DRIVER']->get_guest_id(); } add_to_charge_log($user, $row['amount'], $this->get_lang_string($db, $row['reason']), $row['date_and_time']); } $rows = $db->query('SELECT * FROM ' . $table_prefix . 'gifts', NULL, NULL, true); if (is_null($rows)) { $rows = array(); } foreach ($rows as $row) { $viewer_member = $on_same_msn ? $row['gift_from'] : import_id_remap_get('member', $row['gift_from'], true); $member = $on_same_msn ? $row['gift_to'] : import_id_remap_get('member', $row['gift_to'], true); if (is_null($viewer_member)) { $viewer_member = $GLOBALS['FORUM_DRIVER']->get_guest_id(); } if (is_null($member)) { $member = $GLOBALS['FORUM_DRIVER']->get_guest_id(); } $GLOBALS['SITE_DB']->query_insert('gifts', array('date_and_time' => $row['date_and_time'], 'amount' => $row['amount'], 'gift_from' => $viewer_member, 'gift_to' => $member, 'reason' => insert_lang_comcode($this->get_lang_string($db, $row['reason']), 4), 'anonymous' => $row['anonymous'])); } $rows = $db->query('SELECT * FROM ' . $table_prefix . 'leader_board', NULL, NULL, true); if (is_null($rows)) { $rows = array(); } foreach ($rows as $row) { $member = $on_same_msn ? $row['lb_member'] : import_id_remap_get('member', $row['lb_member'], true); if (is_null($member)) { continue; } $GLOBALS['SITE_DB']->query_delete('leader_board', array('lb_member' => $member, 'lb_points' => $row['lb_points'], 'date_and_time' => $row['date_and_time']), '', 1); $GLOBALS['SITE_DB']->query_insert('leader_board', array('lb_member' => $member, 'lb_points' => $row['lb_points'], 'date_and_time' => $row['date_and_time'])); } }