function db_changeset_apply($db_changeset) { return classSupernova::db_changeset_apply($db_changeset); }
function qst_reward(&$user, &$rewards, &$quest_list) { if (empty($rewards)) { return; } global $lang; $db_changeset = array(); $total_rewards = array(); $comment_dm = ''; foreach ($rewards as $quest_id => $user_data) { foreach ($user_data as $user_id => $planet_data) { foreach ($planet_data as $planet_id => $reward_list) { $comment = sprintf($lang['qst_msg_complete_body'], $quest_list[$quest_id]['quest_name']); $comment_dm .= isset($reward_list[RES_DARK_MATTER]) ? $comment : ''; $comment_reward = array(); foreach ($reward_list as $unit_id => $unit_amount) { $comment_reward[] = $unit_amount . ' ' . $lang['tech'][$unit_id]; $total_rewards[$user_id][$planet_id][$unit_id] += $unit_amount; } $comment .= " {$lang['qst_msg_your_reward']} " . implode(',', $comment_reward); msg_send_simple_message($user['id'], 0, SN_TIME_NOW, MSG_TYPE_ADMIN, $lang['msg_from_admin'], $lang['qst_msg_complete_subject'], $comment); sn_db_perform('{{quest_status}}', array('quest_status_quest_id' => $quest_id, 'quest_status_user_id' => $user_id, 'quest_status_status' => QUEST_STATUS_COMPLETE)); } } } $group_resources = sn_get_groups('resources_loot'); $quest_rewards_allowed = sn_get_groups('quest_rewards'); if (!empty($total_rewards)) { foreach ($total_rewards as $user_id => $planet_data) { $user_row = classSupernova::db_get_record_by_id(LOC_USER, $user_id); foreach ($planet_data as $planet_id => $unit_data) { $local_changeset = array(); foreach ($unit_data as $unit_id => $unit_amount) { if (!isset($quest_rewards_allowed[$unit_id])) { continue; } if ($unit_id == RES_DARK_MATTER) { rpg_points_change($user['id'], RPG_QUEST, $unit_amount, $comment_dm); } elseif (isset($group_resources[$unit_id])) { $local_changeset[pname_resource_name($unit_id)] = array('delta' => $unit_amount); } else { $db_changeset['unit'][] = sn_db_unit_changeset_prepare($unit_id, $unit_amount, $user_row, $planet_id); } // unit } if (!empty($local_changeset)) { $planet_id = $planet_id == 0 && isset($user_row['id_planet']) ? $user_row['id_planet'] : $planet_id; $db_changeset[$planet_id ? 'planets' : 'users'][] = array('action' => SQL_OP_UPDATE, P_VERSION => 1, 'where' => array("id" => $planet_id ? $planet_id : $user_id), 'fields' => $local_changeset); } } } classSupernova::db_changeset_apply($db_changeset); } }