| Conditions | 19 |
| Paths | 1126 |
| Total Lines | 77 |
| Code Lines | 54 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 32 | function rpg_points_change($user_id, $change_type, $dark_matter, $comment = false, $already_changed = false) { |
||
| 33 | global $debug, $config, $dm_change_legit, $user; |
||
| 34 | |||
| 35 | if(!$user_id) { |
||
| 36 | return false; |
||
| 37 | } |
||
| 38 | |||
| 39 | $dm_change_legit = true; |
||
| 40 | $sn_data_dark_matter_db_name = pname_resource_name(RES_DARK_MATTER); |
||
| 41 | |||
| 42 | if($already_changed) { |
||
| 43 | $rows_affected = 1; |
||
| 44 | } else { |
||
| 45 | $changeset = array(); |
||
| 46 | $a_user = db_user_by_id($user_id, true); |
||
|
|
|||
| 47 | if($dark_matter < 0) { |
||
| 48 | $dark_matter_exists = mrc_get_level($a_user, null, RES_DARK_MATTER, false, true); |
||
| 49 | $dark_matter_exists < 0 ? $dark_matter_exists = 0 : false; |
||
| 50 | $metamatter_to_reduce = -$dark_matter - $dark_matter_exists; |
||
| 51 | if($metamatter_to_reduce > 0) { |
||
| 52 | $metamatter_exists = mrc_get_level($a_user, null, RES_METAMATTER); |
||
| 53 | if($metamatter_exists < $metamatter_to_reduce) { |
||
| 54 | $debug->error('Ошибка снятия ТМ - ММ+ТМ меньше, чем сумма для снятия!', 'Ошибка снятия ТМ', LOG_ERR_INT_NOT_ENOUGH_DARK_MATTER); |
||
| 55 | } |
||
| 56 | if(is_array($comment)) { |
||
| 57 | $comment = call_user_func_array('sprintf', $comment); |
||
| 58 | } |
||
| 59 | // mm_points_change($user_id, $change_type, -$metamatter_to_reduce, 'ММ в ТМ: ' . (-$dark_matter) . ' ТМ = ' . $dark_matter_exists . ' ТМ + ' . $metamatter_to_reduce . ' ММ. ' . $comment); |
||
| 60 | SN::$auth->account->metamatter_change($change_type, -$metamatter_to_reduce, 'ММ в ТМ: ' . (-$dark_matter) . ' ТМ = ' . $dark_matter_exists . ' ТМ + ' . $metamatter_to_reduce . ' ММ. ' . $comment); |
||
| 61 | $dark_matter = -$dark_matter_exists; |
||
| 62 | } |
||
| 63 | } else { |
||
| 64 | $changeset[] = "`dark_matter_total` = `dark_matter_total` + '{$dark_matter}'"; |
||
| 65 | } |
||
| 66 | $dark_matter ? $changeset[] = "`{$sn_data_dark_matter_db_name}` = `{$sn_data_dark_matter_db_name}` + '{$dark_matter}'" : false; |
||
| 67 | !empty($changeset) ? db_user_set_by_id($user_id, implode(',', $changeset)) : false; |
||
| 68 | $rows_affected = SN::$db->db_affected_rows(); |
||
| 69 | } |
||
| 70 | |||
| 71 | if($rows_affected || !$dark_matter) { |
||
| 72 | $page_url = SN::$db->db_escape($_SERVER['SCRIPT_NAME']); |
||
| 73 | if(is_array($comment)) { |
||
| 74 | $comment = call_user_func_array('sprintf', $comment); |
||
| 75 | } |
||
| 76 | $comment = SN::$db->db_escape($comment); |
||
| 77 | $row = db_user_by_id($user_id, false); |
||
| 78 | $row['username'] = SN::$db->db_escape($row['username']); |
||
| 79 | doquery( |
||
| 80 | "INSERT INTO {{log_dark_matter}} (`log_dark_matter_username`, `log_dark_matter_reason`, |
||
| 81 | `log_dark_matter_amount`, `log_dark_matter_comment`, `log_dark_matter_page`, `log_dark_matter_sender`) |
||
| 82 | VALUES ( |
||
| 83 | '{$row['username']}', {$change_type}, |
||
| 84 | {$dark_matter}, '{$comment}', '{$page_url}', {$user_id} |
||
| 85 | );"); |
||
| 86 | |||
| 87 | if($user['id'] == $user_id) { |
||
| 88 | $user['dark_matter'] += $dark_matter; |
||
| 89 | } |
||
| 90 | |||
| 91 | if($dark_matter > 0) { |
||
| 92 | $old_referral = doquery("SELECT * FROM {{referrals}} WHERE `id` = {$user_id} LIMIT 1 FOR UPDATE;", '', true); |
||
| 93 | if($old_referral['id']) { |
||
| 94 | doquery("UPDATE {{referrals}} SET dark_matter = dark_matter + '{$dark_matter}' WHERE `id` = {$user_id} LIMIT 1;"); |
||
| 95 | $new_referral = doquery("SELECT * FROM {{referrals}} WHERE `id` = {$user_id} LIMIT 1;", '', true); |
||
| 96 | |||
| 97 | $partner_bonus = floor($new_referral['dark_matter'] / $config->rpg_bonus_divisor) - ($old_referral['dark_matter'] >= $config->rpg_bonus_minimum ? floor($old_referral['dark_matter'] / $config->rpg_bonus_divisor) : 0); |
||
| 98 | if($partner_bonus > 0 && $new_referral['dark_matter'] >= $config->rpg_bonus_minimum) { |
||
| 99 | rpg_points_change($new_referral['id_partner'], RPG_REFERRAL, $partner_bonus, "Incoming From Referral ID {$user_id}"); |
||
| 100 | } |
||
| 101 | } |
||
| 102 | } |
||
| 103 | } else { |
||
| 104 | $debug->warning("Error adjusting Dark Matter for player ID {$user_id} (Player Not Found?) with {$dark_matter}. Reason: {$comment}", 'Dark Matter Change', 402); |
||
| 105 | } |
||
| 106 | |||
| 107 | $dm_change_legit = false; |
||
| 108 | return $rows_affected; |
||
| 109 | } |
||
| 197 |