| Conditions | 16 |
| Paths | 23 |
| Total Lines | 70 |
| Code Lines | 37 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 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 |
||
| 36 | function sn_RestoreFleetToPlanet(&$fleet_row, $start = true, $only_resources = false, $safe_fleet = false, &$result) { |
||
| 37 | db_mysql::db_transaction_check(true); |
||
| 38 | |||
| 39 | $result = CACHE_NOTHING; |
||
| 40 | if (!is_array($fleet_row)) { |
||
| 41 | return $result; |
||
| 42 | } |
||
| 43 | |||
| 44 | $prefix = $start ? 'start' : 'end'; |
||
| 45 | |||
| 46 | // Поскольку эта функция может быть вызвана не из обработчика флотов - нам надо всё заблокировать вроде бы НЕ МОЖЕТ!!! |
||
| 47 | // TODO Проеверить от многократного срабатывания !!! |
||
| 48 | // Тут не блокируем пока - сначала надо заблокировать пользователя, что бы не было дедлока |
||
| 49 | // $fleet_row = doquery("SELECT * FROM {{fleets}} WHERE `fleet_id`='{$fleet_row['fleet_id']}' LIMIT 1", true); |
||
| 50 | // Узнаем ИД владельца планеты - без блокировки |
||
| 51 | // TODO поменять на владельца планеты - когда его будут возвращать всегда !!! |
||
| 52 | $user_id = DBStaticPlanet::db_planet_by_vector($fleet_row, "fleet_{$prefix}_"); |
||
| 53 | $user_id = $user_id['id_owner']; |
||
| 54 | // Блокируем пользователя |
||
| 55 | $user = db_user_by_id($user_id, true); |
||
| 56 | // Блокируем планету |
||
| 57 | $planet_arrival = DBStaticPlanet::db_planet_by_vector($fleet_row, "fleet_{$prefix}_"); |
||
| 58 | // Блокируем флот |
||
| 59 | // $fleet_row = doquery("SELECT * FROM {{fleets}} WHERE `fleet_id`='{$fleet_row['fleet_id']}' LIMIT 1 FOR UPDATE;", true); |
||
| 60 | |||
| 61 | // Если флот уже обработан - не существует или возращается - тогда ничего не делаем |
||
| 62 | if (!$fleet_row || !is_array($fleet_row) || ($fleet_row['fleet_mess'] == 1 && $only_resources)) { |
||
| 63 | return $result; |
||
| 64 | } |
||
| 65 | |||
| 66 | // Флот, который возвращается на захваченную планету, пропадает |
||
| 67 | if ($start && $fleet_row['fleet_mess'] == 1 && $planet_arrival['id_owner'] != $fleet_row['fleet_owner']) { |
||
| 68 | DbFleetStatic::db_fleet_delete($fleet_row['fleet_id']); |
||
| 69 | |||
| 70 | return $result; |
||
| 71 | } |
||
| 72 | |||
| 73 | $db_changeset = array(); |
||
| 74 | if (!$only_resources) { |
||
| 75 | DbFleetStatic::db_fleet_delete($fleet_row['fleet_id']); |
||
| 76 | |||
| 77 | if ($fleet_row['fleet_owner'] == $planet_arrival['id_owner']) { |
||
| 78 | $fleet_array = sys_unit_str2arr($fleet_row['fleet_array']); |
||
| 79 | foreach ($fleet_array as $ship_id => $ship_count) { |
||
| 80 | if ($ship_count) { |
||
| 81 | $db_changeset['unit'][] = OldDbChangeSet::db_changeset_prepare_unit($ship_id, $ship_count, $user, $planet_arrival['id']); |
||
| 82 | } |
||
| 83 | } |
||
| 84 | } else { |
||
| 85 | return CACHE_NOTHING; |
||
| 86 | } |
||
| 87 | } else { |
||
| 88 | $fleet_set = array( |
||
| 89 | 'fleet_resource_metal' => 0, |
||
| 90 | 'fleet_resource_crystal' => 0, |
||
| 91 | 'fleet_resource_deuterium' => 0, |
||
| 92 | 'fleet_mess' => 1, |
||
| 93 | ); |
||
| 94 | DbFleetStatic::fleet_update_set($fleet_row['fleet_id'], $fleet_set); |
||
| 95 | } |
||
| 96 | |||
| 97 | if (!empty($db_changeset)) { |
||
| 98 | OldDbChangeSet::db_changeset_apply($db_changeset); |
||
| 99 | } |
||
| 100 | |||
| 101 | DBStaticPlanet::db_planet_set_by_id($planet_arrival['id'], |
||
| 102 | "`metal` = `metal` + '{$fleet_row['fleet_resource_metal']}', `crystal` = `crystal` + '{$fleet_row['fleet_resource_crystal']}', `deuterium` = `deuterium` + '{$fleet_row['fleet_resource_deuterium']}'"); |
||
| 103 | $result = CACHE_FLEET | ($start ? CACHE_PLANET_SRC : CACHE_PLANET_DST); |
||
| 104 | |||
| 105 | return $result; |
||
| 106 | } |
||
| 107 |