示例#1
0
/**
 * 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;
    }
}
示例#2
0
 /**
  * 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']));
     }
 }