mirror of
https://github.com/discourse/discourse.git
synced 2025-02-07 11:58:27 +00:00
6394d7cddf
* Optional import of custom user fields from phpBB 3.1+ * Optional import of likes from phpBB3 Requires the phpBB "Thanks for posts" extension * Fix import of bookmarks from phpBB3 * Update `created_at` of existing user * Support mapping of phpBB forums to existing Discourse categories This is in addition to the ability of merging phpBB forums and importing into newly created Discourse categories.
46 lines
1.7 KiB
Ruby
46 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative 'database_3_0'
|
|
require_relative '../support/constants'
|
|
|
|
module ImportScripts::PhpBB3
|
|
class Database_3_1 < Database_3_0
|
|
def fetch_users(last_user_id, profile_fields)
|
|
query(<<-SQL, :user_id)
|
|
SELECT u.user_id, u.user_email, u.username,
|
|
CASE WHEN u.user_password LIKE '$2y$%'
|
|
THEN CONCAT('$2a$', SUBSTRING(u.user_password, 5))
|
|
ELSE u.user_password
|
|
END AS user_password, u.user_regdate, u.user_lastvisit, u.user_ip,
|
|
u.user_type, u.user_inactive_reason, g.group_name, b.ban_start, b.ban_end, b.ban_reason,
|
|
u.user_posts, f.pf_phpbb_website AS user_website, f.pf_phpbb_location AS user_from,
|
|
u.user_birthday, u.user_avatar_type, u.user_avatar
|
|
#{profile_fields_query(profile_fields)}
|
|
FROM #{@table_prefix}users u
|
|
LEFT OUTER JOIN #{@table_prefix}profile_fields_data f ON (u.user_id = f.user_id)
|
|
JOIN #{@table_prefix}groups g ON (g.group_id = u.group_id)
|
|
LEFT OUTER JOIN #{@table_prefix}banlist b ON (
|
|
u.user_id = b.ban_userid AND b.ban_exclude = 0 AND
|
|
(b.ban_end = 0 OR b.ban_end >= UNIX_TIMESTAMP())
|
|
)
|
|
WHERE u.user_id > #{last_user_id} AND u.user_type != #{Constants::USER_TYPE_IGNORE}
|
|
ORDER BY u.user_id
|
|
LIMIT #{@batch_size}
|
|
SQL
|
|
end
|
|
|
|
private
|
|
|
|
def profile_fields_query(profile_fields)
|
|
@profile_fields_query ||= begin
|
|
if profile_fields.present?
|
|
columns = profile_fields.map { |field| "pf_#{field[:phpbb_field_name]}" }
|
|
", #{columns.join(', ')}"
|
|
else
|
|
""
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|