V2 Migration Forum : Différence entre versions

De NoFrag
Aller à : navigation, rechercher
(phpbb_topics)
(phpbb_topics)
Ligne 218 : Ligne 218 :
  
 
   À étudier : utilisation de la fonction php [https://wiki.phpbb.com/Function.submit_post submit_post]
 
   À étudier : utilisation de la fonction php [https://wiki.phpbb.com/Function.submit_post submit_post]
 
 
   Test effectué sous [https://github.com/bibiwan/migrationforumwefragv2/blob/master/testpost.php github].
 
   Test effectué sous [https://github.com/bibiwan/migrationforumwefragv2/blob/master/testpost.php github].
  

Version du 31 août 2017 à 14:43

Objectif

  • Basculer le forum vers phpbb 3.2

Procédure

Analyse

  • Récupérer le dump du forum.
  • Installer un xampp ou équivalent
  • Installer phpbb sur son poste
  • Utiliser DBeaver ou tout autre autre outil équivalent pour comparer les tables phpbb avec celles du forum (travail manuel)

Transposition

  • Définir l'ordre de traitement des tables
users_groups => users => user_group 
categories => forums => topics => posts => forums_tracks (à consolider)
manuellement : acl des groupes
  • Produire une procédure par table
  • Partage sur git : [1]

Liste des tables

Table phpbb_users

 Voir pour utiliser l'API phpbb add_users
 Test effectué sous github.
  
  • user_id (int(10) unsigned) => wefrag_users.id(int(11))
  • user_type(tinyint(2)) => 0
    • 0 pour tous les inscrits admins compris
    • 1 quand pas encore activé
    • 2 pour ignorer l'utilisateur (?) ex. bot
    • 3 pour les "Founders" : sorte de super-admin en god mode
    • Voir https://wiki.phpbb.com/Table.phpbb_users
  • group_id(mediumint(8) unsigned) => phpbb_groups.group_id
  • user_permission(mediumtext) => vide
  • user_perm_from(mediumint(8) unsigned) => 0
  • user_ip(varchar(40)) => vide
  • user_regdate(int(11) unsigned) => vide
  • username(varchar(255)) => wefrag_users.login(varchar(255))
  • username_clean(varchar(255)) => wefrag_users.login(varchar(255))
  • user_password(varchar(255)) => wefrag_users.crypted_password(varchar(40))
  • user_passch (int(11) unsigned) => wefrag_user_password_resets.?
    • pas forcément nécessaire
  • user_email(varchar(100)) => wefrag_users.email(varchar(255))
    • vérifier longueur max en table
  • user_email_hash(bigint(20)) =>
    • d'après ce lien : crc32(strtolower($user_email)) . strlen($user_email),
    • à tester
  • user_birthday(varchar(10)) => wefrag_users.birthdate(date)
  • user_lastvisit(int(11) unsigned) => 0
  • user_lastmark(int(11) unsigned) => 0
  • user_lastpost_time(int(11) unsigned) =>
 Récupérer la date du dernier post.
  • user_lastpage(varchar(200)) => vide
  • user_last_confirm_key(varchar(10)) => vide
  • user_last_search(int(11) unsigned) => 0
  • user_warnings(tinyint(4)) => 0
  • user_last_warning(int(11) unsigned) => 0
  • user_login_attempts(tinyint(4)) => 0
  • user_inactive_reason(tinyint(2)) => 0
  • user_inactive_time(int(11) unsigned) => 0
  • user_posts(mediumint(8) unsigned) =>
 Alimenter le nombre de posts
  • user_lang(varchar(30)) => fr
  • user_timezone(varchar(100)) => vide
  • user_dateformat(varchar(64)) => D j M Y H:i
  • user_style(mediumint(8) unsigned) => 0
  • user_rank(mediumint(8) unsigned) => 0
  • user_colour(varchar(6)) => vide
  • user_new_privmsg(int(4)) => 0
  • user_unread_privmsg(int(4)) => 0
  • user_last_privmsg(int(11) unsigned) => 0
  • user_message_rules(tinyint(1) unsigned)=> 0
  • user_full_folder(int(11))=> -3
  • user_emailtime(int(11) unsigned)=> 0
  • user_topic_show_days(smallint(4) unsigned) => 0
  • user_topic_sortby_type(varchar(1)) => t
  • user_topic_sortby_dir (varchar(1)) => d
  • user_post_show_days (smallint(4) unsigned) => 0
  • user_post_sortby_type(varchar(1)) => t
  • user_post_sortby_dir (varchar(1)) => a
  • user_notify (tinyint(1) unsigned) => 0
  • user_notify_pm (tinyint(1) unsigned) => 1
  • user_notify_type (tinyint(4))=> 0
  • user_allow_pm(tinyint(1) unsigned) => 1
  • user_allow_viewonline(tinyint(1) unsigned) => 1
  • user_allow_viewemail(tinyint(1) unsigned) => 1
  • user_allow_massemail(tinyint(1) unsigned) => 1
  • user_options( int(11) UNSIGNED) => 230271
  • user_avatar (varchar(255)) => vide
  • user_avatar_type (varchar(255)) => vide
  • user_avatar_width (smallint(4) unsigned) => 0
  • user_avatar_height (smallint(4) unsigned) => 0
  • user_sig (mediumtext) => vide
  • user_sig_bbcode_uid (varchar(8)) => vide
  • user_sig_bbcode_bitfield (varchar(255)) => vide
  • user_jabber (varchar(255)) => vide
  • user_actkey (varchar(32)) => vide
  • user_newpasswd (varchar(255)) => vide
  • user_form_salt (varchar(32)) => ????
  • user_new (tinyint(1)) => 1
  • user_reminded (tinyint(4)) => 0
  • user_reminded_time (int(11) UNSIGNED) => 0

phpbb_forums

 Cette entité contient les catégories (wefrag_categories)et les forums (wefrag_forums). Il faut donc prévoir un premier passage pour les catégories et un second pour les forums, et une renumérotation des catégories avec création d'une table de correspondance.
 Autre solution : saisie manuelle des catégories, mise à jour de la table wefrag_forums avec les bonnes catégories.
 3ème solution : saisie manuelle des catégories et des forums, mise à jour de la table wefrag_posts avec les bonnes catégories et forums.

Catégories

  • forum_id (mediumint(8) unsigned) => wefrag_categories.id (table de correspondance)
  • parent_id (mediumint(8) unsigned) => 0
  • left_id (mediumint(8) unsigned) => ????
  • right_id (mediumint(8) unsigned) => ????
  • forum_parents (mediumtext) => vide
  • forum_name (varchar(255)) => wefrag_categories.title (varchar(255))
  • forum_desc (text) => vide
  • forum_desc_bitfield (varchar(255)) => vide
  • forum_desc_options (int(11) unsigned) => 7
  • forum_desc_uid (varchar(8)) => vide
  • forum_link (varchar(255)) => vide
  • forum_password (varchar(255)) => vide
  • forum_style (mediumint(8) unsigned) => 0
  • forum_image (varchar(255)) => vide
  • forum_rules (text) => vide
  • forum_rules_link (varchar(255)) => vide
  • forum_rules_bitfield (varchar(255)) => vide
  • forum_rules_options (int(11) unsigned) => 7
  • forum_rules_uid (varchar(8)) => vide
  • forum_topics_per_page (tinyint(4)) => 0
  • forum_type (tinyint(4)) => 0
  • forum_status (tinyint(4)) => 0
  • forum_last_post_id (int(10) unsigned) => à mettre à jour avec l'identifiant du dernier post de la catégorie
  • forum_last_poster_id (int(10) unsigned) => à mettre à jour avec l'identifiant du poster du dernier post de la catégorie
  • forum_last_post_subject (varchar(255)) => à mettre à jour avec le sujet du dernier post de la catégorie
  • forum_last_post_time (int(11) unsigned ) => à mettre à jour avec le datetime du dernier post de la catégorie
  • forum_last_poster_name(varchar(255)) => à mettre à jour avec le login du poster du dernier post de la catégorie
  • forum_last_poster_colour(varchar(6)) => à mettre à jour avec la couleur du poster du dernier post de la catégorie
  • forum_flags (tinyint(4)) => 32
  • display_on_index (tinyint(1) unsigned) => 1
  • enable_indexing (tinyint(1) unsigned ) => 1
  • enable_icons(tinyint(1) unsigned ) => 1
  • enable_prune(tinyint(1) unsigned ) => 0
  • prune_next (int(11) unsigned)=> 0
  • prune_days (mediumint(8) unsigned)=> 0
  • prune_viewed(mediumint(8) unsigned)=> 0
  • prune_freq(mediumint(8) unsigned)=> 0
  • display_subforum_list (tinyint(1) unsigned)=> 1
  • forum_options(int(20) unsigned)=> 0
  • forum_posts_approved (mediumint(8) unsigned)=> 0
  • forum_posts_unapproved (mediumint(8) unsigned)=> 0
  • forum_posts_softdeleted (mediumint(8) unsigned)=> 0
  • forum_topics_approved (mediumint(8) unsigned)=> 0
  • forum_topics_unapproved (mediumint(8) unsigned)=> 0
  • forum_topics_softdeleted (mediumint(8) unsigned)=> 0
  • enable_shadow_prune (tinyint(1) unsigned) => 0
  • prune_shadow_days (mediumint(8) unsigned)=> 7
  • prune_shadow_freq (mediumint(8) unsigned)=> 1
  • prune_shadow_next int(11) => 0


Forums

  • forum_id (mediumint(8) unsigned) => wefrag_forums.id (int(11))
  • parent_id (mediumint(8) unsigned) => wefrag_forums.category_id (table de correspondance)
  • left_id (mediumint(8) unsigned) => ????
  • right_id (mediumint(8) unsigned) => ????
  • forum_parents (mediumtext) => vide
  • forum_name (varchar(255)) => wefrag_forums.title (varchar(255))
  • forum_desc (text) => wefrag_forums.description (text)
  • forum_desc_bitfield (varchar(255)) => vide
  • forum_desc_options (int(11) unsigned) => 7
  • forum_desc_uid (varchar(8)) => vide
  • forum_link (varchar(255)) => vide
  • forum_password (varchar(255)) => vide
  • forum_style (mediumint(8) unsigned) => 0
  • forum_image (varchar(255)) => vide
  • forum_rules (text) => vide
  • forum_rules_link (varchar(255)) => vide
  • forum_rules_bitfield (varchar(255)) => vide
  • forum_rules_options (int(11) unsigned) => 7
  • forum_rules_uid (varchar(8)) => vide
  • forum_topics_per_page (tinyint(4)) => 0
  • forum_type (tinyint(4)) => 1
  • forum_status (tinyint(4)) => 0
  • forum_last_post_id (int(10) unsigned) => à mettre à jour avec l'identifiant du dernier post du forum
  • forum_last_poster_id (int(10) unsigned) => à mettre à jour avec l'identifiant du poster du dernier post du forum
  • forum_last_post_subject (varchar(255)) => à mettre à jour avec le sujet du dernier post du forum
  • forum_last_post_time (int(11) unsigned ) => à mettre à jour avec le datetime du dernier post du forum
  • forum_last_poster_name(varchar(255)) => à mettre à jour avec le login du poster du dernier post du forum
  • forum_last_poster_colour(varchar(6)) => à mettre à jour avec la couleur du poster du dernier post du forum
  • forum_flags (tinyint(4)) => 48
  • display_on_index (tinyint(1) unsigned) => 1
  • enable_indexing (tinyint(1) unsigned ) => 1
  • enable_icons(tinyint(1) unsigned ) => 1
  • enable_prune(tinyint(1) unsigned ) => 0
  • prune_next (int(11) unsigned)=> 0
  • prune_days (mediumint(8) unsigned)=> 0
  • prune_viewed(mediumint(8) unsigned)=> 0
  • prune_freq(mediumint(8) unsigned)=> 0
  • display_subforum_list (tinyint(1) unsigned)=> 1
  • forum_options(int(20) unsigned)=> 0
  • forum_posts_approved (mediumint(8) unsigned)=> 1
  • forum_posts_unapproved (mediumint(8) unsigned)=> 0
  • forum_posts_softdeleted (mediumint(8) unsigned)=> 0
  • forum_topics_approved (mediumint(8) unsigned)=> 1
  • forum_topics_unapproved (mediumint(8) unsigned)=> 0
  • forum_topics_softdeleted (mediumint(8) unsigned)=> 0
  • enable_shadow_prune (tinyint(1) unsigned) => 0
  • prune_shadow_days (mediumint(8) unsigned)=> 7
  • prune_shadow_freq (mediumint(8) unsigned)=> 1
  • prune_shadow_next int(11) => 0

phpbb_topics

 Traitement de toutes les lignes de wefrag_posts qui ont une donnée topic_id non significative.
 À étudier : utilisation de la fonction php submit_post
 Test effectué sous github.
  • topic_id (int(10) unsigned) => wefrag_posts.id (int(11))
  • forum_id (mediumint(8) unsigned) => wefrag_posts.forum_id (int(11))
  • icon_id (mediumint(8) unsigned) => 0
  • topic_attachment (tinyint(1) unsigned) => 0
  • topic_reported (tinyint(1) unsigned) => 0
  • topic_title (varchar(255)) => wefrag_posts.title
  • topic_poster (int(10) unsigned) => wefrag_posts.user_id (int(11))
  • topic_time (int(11) unsigned) => wefrag_posts.created_at(datetime)
  • topic_time_limit (int(11) unsigned) => 0
  • topic_views (mediumint(8) unsigned) => 0
  • topic_status (tinyint(3)) =>
    • à étudier en fonction du statut locké ou pas
  • topic_type (tinyint(3)) => 0
  • topic_first_post_id (int(10) unsigned) =>
    • étudier la nécessité d'insérer le premier post pour avoir une valeur ici
  • topic_first_poster_name (varchar(255)) =>
    • récupérer le login du poster (wefrag_posts.user_id)
  • topic_first_poster_colour
    • récupérer la couleur du poster (wefrag_posts.user_id)
  • topic_last_post_id
    • mettre à jour lors du traitement des posts
  • topic_last_poster_id
    • mettre à jour lors du traitement des posts
  • topic_last_poster_name
    • mettre à jour lors du traitement des posts
  • topic_last_poster_colour
    • mettre à jour lors du traitement des posts
  • topic_last_post_subject
    • mettre à jour lors du traitement des posts
  • topic_last_post_time
    • mettre à jour lors du traitement des posts
  • topic_last_view_time => mettre la même valeur que topic_last_post_time
  • topic_moved_id (int(10) unsigned) => 0
  • topic_bumped(tinyint(1) unsigned) => 0
  • topic_bumper(mediumint(8) unsigned) => 0
  • poll_title (varchar(255)) => vide
  • poll_start (int(11) unsigned) => 0
  • poll_length (int(11) unsigned) => 0
  • poll_max_options (tinyint(4)) => 1
  • poll_last_vote (int(11) unsigned) => 0
  • poll_vote_change (tinyint(1)) => 0
  • topic_visibility (tinyint(3)) => 1
  • topic_delete_time (int(11) unsigned) => 0
  • topic_delete_reason (varchar(255)) => vide
  • topic_delete_user (int(10) unsigned) => 0
  • topic_posts_approved (mediumint(8) unsigned) => 1
  • topic_posts_unapproved (mediumint(8) unsigned) => 0
  • topic_posts_softdeleted (mediumint(8) unsigned) => 0

phpbb_posts

Traitement de toutes les lignes de wefrag_posts.

 à étudier : utilisation de la fonction php submit_post
  • post_id (int(10) unsigned) => wefrag_posts.id (int(11))
  • topic_id (int(10) unsigned) => wefrag_posts.topic_id (int(11))
  • forum_id (mediumint(8) unsigned) => wefrag_posts.forum_id (int(11))
  • poster_id (int(10) unsigned) => wefrag_posts.user_id (int(11))
  • icon_id (mediumint(8) unsigned) => 0
  • poster_ip (varchar(40)) => wefrag_posts.poster_ip_address(varchar(255))
  • post_time (int(11) unsigned) => wefrag_posts.created_at(datetime)
  • post_reported (tinyint(1) unsigned) => 0
  • enable_bbcode (tinyint(1) unsigned) => 1
  • enable_smilies (tinyint(1) unsigned) => 0
  • enable_magic_url (tinyint(1) unsigned) => 1
  • enable_sig (tinyint(1) unsigned) => 0
  • post_username (varchar(255)) => vide
  • post_subject (varchar(255)) => wefrag_posts.title (varchar(255))
  • post_text (mediumtext) => wefrag_posts.body (text)
  • post_checksum (varchar(32)) =>
    • md5 du texte du message.
  • post_attachment (tinyint(1) unsigned) => 0
  • bbcode_bitfield (varchar(255)) => vide
  • bbcode_uid (varchar(8)) => vide
  • post_postcount (tinyint(1) unsigned) =>
    • vérifier si ce compteur varie…
  • post_edit_time (int(11) unsigned) => 0
  • post_edit_reason (varchar(255)) => vide
  • post_edit_user (int(10) unsigned) => 0
  • post_edit_count (smallint(4) unsigned ) => 0
  • post_edit_locked (tinyint(1) unsigned) => 0
  • post_visibility (tinyint(3)) => 1
  • post_delete_time (int(11) unsigned) => 0
  • post_delete_reason (varchar(255)) => vide
  • post_delete_user(int(10) unsigned) => 0

phpbb_groups

 Utilisation de la table wefrag_groups.

 Nécessaire ou pas en fonction du nombre de groupes dans la base wefrag.
  • group_id
  • group_type
  • group_founder_manage
  • group_skip_auth
  • group_name
  • group_desc
  • group_desc_bitfield
  • group_desc_options
  • group_desc_uid
  • group_display
  • group_avatar
  • group_avatar_type
  • group_avatar_width
  • group_avatar_height
  • group_rank
  • group_colour
  • group_sig_chars
  • group_receive_pm
  • group_message_limit
  • group_legend
  • group_max_recipients

phpbb_user_group

 Utilisation de la table wefrag_users pour récupérer le groupe
  • group_id (mediumint(8) unsigned) => wefrag_users.group_id(int(11))
    • valeur à 2 pour le mettre dans le groupe registered.
  • user_id (int(10) unsigned) => wefrag_users.id(int(11))
  • group_leader (tinyint(1) unsigned) => 0
  • user_pending (tinyint(1) unsigned) => 0

phpbb_topics_track

Utilisation de la table wefrag_user_topic_reads
  • user_id => wefrag_user_topic_reads.user_id
  • topic_id => wefrag_user_topic_reads.topic_id
  • forum_id =>
    • récupérer l'id du forum du topic
  • mark_time => wefrag_user_topic_reads.read_at

phpbb_topics_posted

 Table à alimenter lors de la création d'un topic (et d'un post ?)
 Non nécessaire si utilisation de l'api à priori.
  • user_id
  • topic_id
  • topic_posted => 1 si topic, 0 si post ?