Member Teams -> Social Groups del II

Som beskrevet i et tidligere indlæg har jeg installeret modulet Social Groups på testudgaven af morsverden med IPB3.4.

Nu skal jeg på en eller anden måde have overført alt eksisterende indhold af netværkene i modulet “Team members” som var lavet til IPB2.3 til det nye Social Groups modul.

Følgende tabeller findes i member_teams (gammel):

  • ibf_team_invites
  • ibf_team_members
  • ibf_team_news
  • ibf_team_ranks
  • ibf_teams

hvor ibf_team og ibf_team_members er de vigtigste, indeholdende alle netværkene samt de medlemmer der er i og deres rettigheder. Tabellernes opbygning:

mysql> describe ibf_teams;
 +--------------+--------------+------+-----+---------+----------------+
 | Field        | Type         | Null | Key | Default | Extra          |
 +--------------+--------------+------+-----+---------+----------------+
 | tid          | int(10)      | NO   | PRI | NULL    | auto_increment |
 | fid          | int(10)      | NO   |     | 0       |                |
 | perm_id      | int(10)      | NO   |     | 0       |                |
 | group_id     | int(10)      | NO   |     | NULL    |                |
 | tname        | varchar(50)  | NO   | MUL |         |                |
 | tdescription | varchar(200) | NO   |     |         |                |
 | tlogo        | varchar(100) | NO   |     |         |                |
 | ttext        | mediumtext   | NO   |     | NULL    |                |
 | leader_mid   | int(10)      | NO   |     | 0       |                |
 | is_open      | tinyint(5)   | NO   |     | 1       |                |
 | approved     | tinyint(5)   | NO   |     | 1       |                |
 +--------------+--------------+------+-----+---------+----------------+

 

eksempel med gruppen cand.move (synlig, is_open = 1): 
 mysql> select tid, fid, perm_id, group_id, tname, leader_mid, is_open, approved from  ibf_teams where fid = 171;
 +-----+-----+---------+----------+-----------+------------+---------+----------+
 | tid | fid | perm_id | group_id | tname     | leader_mid | is_open | approved |
 +-----+-----+---------+----------+-----------+------------+---------+----------+
 |  14 | 171 |      48 |       79 | cand.move |       2175 |       1 |        1 |
 +-----+-----+---------+----------+-----------+------------+---------+----------+

 

mysql> describe ibf_team_members;
 +--------------+------------+------+-----+---------+-------+
 | Field        | Type       | Null | Key | Default | Extra |
 +--------------+------------+------+-----+---------+-------+
 | mid          | int(10)    | NO   |     | 0       |       |
 | tid          | int(10)    | NO   |     | 0       |       |
 | rid          | int(10)    | NO   |     | 0       |       |
 | approved     | tinyint(5) | NO   |     | 0       |       |
 | can_team_mm  | tinyint(5) | NO   |     | 0       |       |
 | can_forum_mm | tinyint(5) | NO   |     | 0       |       |
 | can_perm_mm  | tinyint(5) | NO   |     | 0       |       |
 | can_news_mm  | tinyint(5) | NO   |     | 0       |       |
 +--------------+------------+------+-----+---------+-------+

Tabeller i sociale grupper (ny):

  • ibf_social_group_members
  • ibf_social_groups
  • ibf_social_groups_cat
  • ibf_social_groups_invites
  • ibf_social_groups_news
  • ibf_social_groups_notes
  • ibf_social_groups_perms
  • ibf_social_groups_pm
  • ibf_social_groups_supermods

hvor det her er ibf_social_groups (svarer til ibf_member_teams) og ibf_social_group_members (svarer til ibf_team_members) jeg i første omgang vil koncentrere mig om, for at få overført alle grupperne + medlemmerne. Det meste andet lader til at kunne oprettes og overføres efterhånden eller er umiddelbart mindre væsentligt i det store og hele.

Vi starter med selve grupperne. Opbygning af ibf_social_groups:

mysql> describe ibf_social_groups;
 +--------------------+--------------+------+-----+---------+----------------+
 | Field              | Type         | Null | Key | Default | Extra          |
 +--------------------+--------------+------+-----+---------+----------------+
 | g_id               | int(6)       | NO   | PRI | NULL    | auto_increment |
 | g_seo_name         | varchar(255) | NO   |     | NULL    |                |
 | g_name             | varchar(255) | NO   |     | NULL    |                |
 | g_forum            | int(6)       | NO   | MUL | NULL    |                |
 | g_cat_id           | int(4)       | NO   | MUL | 1       |                |
 | g_founder          | int(7)       | NO   |     | NULL    |                |
 | g_privacy          | tinyint(1)   | NO   |     | NULL    |                |
 | g_approval         | tinyint(1)   | NO   |     | 0       |                |
 | g_locked           | tinyint(1)   | NO   |     | NULL    |                |
 | g_desc             | mediumtext   | NO   |     | NULL    |                |
 | g_start            | int(10)      | NO   | MUL | NULL    |                |
 | g_banner           | varchar(200) | NO   |     | NULL    |                |
 | g_logo             | varchar(200) | NO   |     | NULL    |                |
 | g_bg               | varchar(200) | NO   |     | NULL    |                |
 | g_portal_news_num  | int(3)       | NO   |     | 5       |                |
 | g_portal_posts_num | int(3)       | NO   |     | 5       |                |
 | g_portal_mem_num   | int(3)       | NO   |     | 5       |                |
 | g_delete_request   | tinyint(1)   | NO   | MUL | NULL    |                |
 | g_featured         | tinyint(1)   | NO   | MUL | NULL    |                |
 | g_memCount         | int(10)      | NO   |     | NULL    |                |
 +--------------------+--------------+------+-----+---------+----------------+
 20 rows in set (0.00 sec)

Der er er ekstra felter udover dem vi pt har, men vi kan starte med at overføre dem vi kender. Map mellem kolonner i tabellen:

ibf_teams → ibf_social_groups
tid → g_id
tname → g_name
tname hvor mellemrum og specialregn er erstattet med _ → g_seo_name
fid → g_forum
leader_mid → g_founder
is_open → g_privacy? 0 → 1 og 1 → 0 (et åbent netværk (1) = ikke-privat (0))
(g_approval? ← 1) (alle gamle netværk skal som udgangspunkt godkende medlemmer)
(g_locked? ← 0)
tdesicription → g_desc
count(*) from ibf_team_members where tid = xx → g_memCount

#testoverfører data for cand.move 
insert into ibf_social_groups (g_id, g_name, g_seo_name, g_forum, g_founder, g_privacy, g_approval, g_locked, g_desc)
 select tid, tname, tname, fid, leader_mid, !is_open, 1, 0, tdescription from ibf_teams where tid = 14;

Her har jeg indtil videre overført tname direkte i g_seo_name, men disse navne skal laves om så mellemrum og andre specialtegn bliver erstattet med en “-” – til URL’en.

antallet af medlemmer skal hentes ud med count(*) from ibf_team_members for hvert tid og sættes ind i g_memCount-kolonnen.

Eksempel med cand.move:

update ibf_social_groups set g_memCount = (Select count(*) FROM ibf_team_members where tid = 14) where g_id = 14;

Nu findes forummet i oversigten under netværk (groups). Men gruppen findes teknisk set stadig ikke og der er ingen medlemmer i. Vi tager medlemmerne først.

mysql> describe ibf_social_group_members;
 +-------------+------------+------+-----+---------+-------+
 | Field       | Type       | Null | Key | Default | Extra |
 +-------------+------------+------+-----+---------+-------+
 | member_id   | int(7)     | NO   | PRI | NULL    |       |
 | g_id        | int(6)     | NO   | PRI | NULL    |       |
 | is_owner    | tinyint(1) | NO   |     | NULL    |       |
 | is_admin    | tinyint(1) | NO   |     | NULL    |       |
 | is_mod      | tinyint(1) | NO   |     | NULL    |       |
 | is_approved | tinyint(1) | NO   |     | 0       |       |
 | join_date   | int(10)    | NO   |     | NULL    |       |
 | is_banned   | tinyint(1) | NO   |     | 0       |       |
 | has_left    | tinyint(1) | NO   |     | NULL    |       |
 | inv_id      | int(10)    | NO   |     | NULL    |       |
 +-------------+------------+------+-----+---------+-------+

Igen mapper vi kolonner fra det gamle ibf_team_members til det nye ibf_social_group_members.

ibf_team_members → ibf_social_group_members
mid → member_id
tid → g_id
approved → is_approved
can_team_mm → is_owner og is_admin
can_forum_mm → is_mod

Igen et eksempel med medlemmerne i netværket cand.move:

insert into ibf_social_group_members (member_id, g_id, is_approved, is_owner, is_admin, is_mod)
 select mid, tid, approved, can_team_mm, can_team_mm, can_forum_mm from ibf_team_members where tid = 14;

Medlemmerne er nu overført, og jeg kan bl.a. se netværket i min oversigt. Men når jeg klikker på gruppen får jeg stadig en besked om at gruppen ikke findes …

Fortsættes næste gang.

Todo:

  1. gruppen skal kunne klikkes ind på fra netværksoversigten
  2. overføre alle grupper og netværk
  3. teste rettigheder
  4. få oprettelse af nye grupper til at virke (virker af en eller anden grund pludselig ikke)
  5. … det løse og det jeg har glemt …