FORK CPL 50209 - migrationV4=>V5

Fork CPL 50209 - Migation V4=>V5 :

A la sortie de la version 5, j'ai fait le choix de consacrer mon énergie à l'évolution de mes plugins plutôt qu'à leur portage en V5. Ce qui a eu pour conséquence de garder tous mes sites en V4. Avant de m'attaquer au chantier de migration, je voulais amener tous les plugins à un palier stable. Ca a duré jusqu'à maintenant! 

Après m'être fait la main sur 2 plugins simples, pour vérifier que migrer les plugins n'était pas une tâche insurmontable, j'ai testé la migration d'un "vrai" site pour voir les problèmes liés aux volumes de données et de la skin. Mes volumes ne posent pas de problème de déroulement de la migration. Mais il y a  des  informations qui sont oubliées au passage, en particulier au niveau des groupes autorisés. Comme je ne me voyait pas reprendre un par un chaque élément après la migration, j'ai préféré passer du temps à tester le code et à le modifier si possible, en me disant que ça pourrait servir pour les autres sites. A Force de fouiner, j'ai trouvé des trucs que je n'avais pas vu au début.

Je rapporte ci-après les observations que j'ai faites dans la migration V4.6=>V5.02.09 et qui m'ont amené à faire les modifications suivantes, pour mes besoins. Elles ne sont pas forcément à reprendre toutes, je fais juste profiter la communauté de mes recherches. Elles sont là pour vous permettre de faire votre choix dans celles que vous souhaitez apporter éventuellement (manuellement). Mais vous pouvez remplacer tout simplement les fichiers /install/func_install.php et /install/func_jmmis.php avant de faire votre migration. Bien sûr dans tous les cas, faites une migration à blanc, pour tester. 

Note : les numéros de ligne sont après mes modifications, ils ne correspondent pas avec le fichier orignal.

Créer les 2 boites articles : une seule boîte article est créée et tous les articles se retrouvent dans cette boîte.

Remplacer la ligne 613 de func_install.php
     $am1 = 'am.'.$am[1];
par
     $am1 = (isset($am[1])) ? 'am.'.$am[1] : 'am.'.$doc[5];


 

Remplacer la ligne 667 de func_install.php
    $am1 = 'am.'.$am[1];
par
    $am1 = (isset($am[1])) ? 'am.'.$am[1] : 'am.'.$docids[$i][5];

je n'utilise pas le fork ajoute menu de jeanMi, je n'ai donc pas testé cette partie; je n'ai testé que la partie 2 boites articles. Pour les articles hors menu j'utilise le plugin ajoutemenu.


Mettre le groupe autorisé sur l'option de menu des articles : les options de menu sont générées sans groupe autorisé quelle que soit la protection de l'article. Pour reproduire cette protection:

ajouter la ligne 705
$data[17] = $docids[$i][6];

Catégories de forums : les catégories affectées à des groupes dont le nom est écrit en majuscule, perdent le groupe. De plus, il peut y avoir plus de 10 catégories. Les catégorie de discussion sont toutes migrées en statut inactif; en V4 la notion de catégorie active n'existe pas, autant créer les catégories au statut actif.

remplacer les lignes 565 et 566 de func_install.php
$cat = strtolower($frcat[$i][0]);
if (substr($cat, 0, 2) == 'pr') $cat = substr($cat, 2).',all_members';
par
$catT = explode(',',$frcat[$i][0]);
$cat = (strtolower($catT[1]) == 'pr') ? $catT[0].',all_members' : $catT[0].','.$catT[1];

et ajouter la ligne 575
$frcat[$i][5] = 'on';

Récupérer le groupe autorisé des diaporamas ET le bon modèle : Le groupe autorisé du diaporama n'est pas reporté. Quel que soit modèle d'affichage du diaporama en V4, il se retrouve en LightBox en V5.

dans le tableau $datas de la fonction Diaporama_getDiaporamas de func_jmmis.php,  
remplacer $params[36][1] par $params[35][1])

dans le tableau $datas de la fonction Diaporama_getDiaporamas de func_jmmis.php, 
ajouter $params[37][1] après $params[35][1])

ajouter la ligne 880 dans func_install.php
$data[17] = utf8_encode(str_replace($pats, $patr, $gal[14]));

Garder les commentaires html dans les titres des diaporamas : si vous avez mis des commentaires html (<!--  -->) dans le titre du diaporama pour pouvoir les classer, ces commentaires sont supprimés lors de la migration.

supprimer tous les strip_tags dans le tableau $datas de la fonction Diaporama_getDiaporamas de func_jmmis.php 

Pour les photos, créer les boites latérales comme le plugin diaporama de JeanMi : La boite latérale de V4 permet de faire un index des diaporamas. En V5, on fait autant de boite qu'on veut, mais, il faut le faire manuellement, pour les boites et pour les options de menu. En V4, JeanMi a permis de faire un peu cela avec la notion d'exportation des diaporamas. Un diaporama "exporté" a un statut ("e") entre "actif" et "inactif": il n'est pas visible dans la boite latérale (donc il n'est pas actif), on peut le voir via un item d'ajoutemenu (donc il n'est pas inactif). 

J'ai fait cette modif pour mettre tous les diaporamas de statut "a" dans une boite latérale, et tous les diaporamas de statut "e" dans une deuxième boite latérale.

Créer la fonction creBoxPhoto (ligne 2573) et son appel 2 fois (lignes 886 et 887) pour les diaporamas en statut 'a' ET en statut 'e', s'il y en a (on crée 2 boites). 
En fonction du statut, une option de menu est créée dans chacune des boites.
Les boites sont nommées arbitrairement "album photo" et "archives".

Ajouter le paquet de lignes suivant à partir de 884
// création boites latérales photos (actives et archives)
if ($gal[15] == 'a' and !isset($numBoxA)) $numBoxA = creBoxPhoto('A');
if ($gal[15] == 'e' and !isset($numBoxE)) $numBoxE = creBoxPhoto('E');

// création option de menu galeries
$idMnu = ($gal[15] == 'a') ? $numBoxA : $numBoxE;
$data = array_fill(0, 18, '');
$data[0] = 'om';
$data[2] = 'a';
$data[5] = (isset($user[0]) && '' != $user[0]) ? $user[0] : 'webmaster'; $data[6] = (isset($user[1]) && '' != $user[1]) ? $user[1] : 'webmaster@guppy.cms';
$data[7] = utf8_encode(str_replace($pats, $patr, $gal[1]));
$data[8] = utf8_encode(str_replace($pats, $patr, $gal[2]));
$data[9] = utf8_encode(str_replace($pats, $patr, $gal[3]));
$data[10] = utf8_encode(str_replace($pats, $patr, $gal[4]));
$data[11] = '_self';
$data[12] = '';
$data[13] = 'photorama2.php?lng='.$lang[0].'&pg='.$id.'&mnuid='.$idMnu.'&tconfig=0';
$data[14] = 'photorama2.php?lng='.$lang[1].'&pg='.$id.'&mnuid='.$idMnu.'&tconfig=0';
$data[15] = $idMnu;
$data[16] = '0';
$data[17] = utf8_encode(str_replace($pats, $patr, $gal[14]));
$optmnu = ActionOnFields('migr', $data);
unset($data);
$to_reindex['om'] = 'om';

dans la fonction Diaporama_getDiaporamas de func_jmmis.php, remplacer la ligne 77 
if ($diapo[2] == 'a') {
par
if ($diapo[2] == 'a' or $diapo[2] == 'e') {

Bien migrer le répertoire vignettes des diaporamas : Le répertoire vignette des diaporamas n'est pas reconnu.

ajouter après la ligne 919 dans func_install.php
if (strpos($dir,$gal[5]) !== FALSE) {
$vgt = substr($dir,strlen(CHEMIN.$gal[5])); 
$dir = PHOTOREP.'gal_'.$id.$vgt;           
SetChmod($dir);                             
@rename($dir, PHOTOREP.'gal_'.$id.'/vgnt');
} else {


Récupérer tous les attributs des iconeframe : Les items du plugin iconeFrame ne s'ouvrent pas dans le menu V5 une fois migré.

ajouter la ligne 1045
$data[16] = '0';

Pour récupérer la notion d affichage des menus et le transformer en statut,
ajouter en 101 le paquet de lignes, dans la fonction IFrame_getIcons de func_jmmis.php

    $plgs = ReadDBFields(CHEMIN.'data/plugin.dtb');
    foreach ($plgs as $plg) if (substr($plg[0],0,10) == 'iconeframe') $statut[substr($plg[0],11)] = 'a';

ajouter en 114
$confnum = substr($info['filename'],6);

ajouter en 147
'confnum' => $confnum,
'statut' => ($statut[$confnum] == 'a') ? 'a' : 'i');

et remplacer la ligne 1033 dans func_install.php
$data[2] = 'a';
par
$data[2] = $icon['statut'];


pour récupérer les  bons droits des items iconeFrame : L'affectation de l'item à un groupe n'est pas récupérée.

à la ligne 1046 remplacer
$data[17] = $icon['prvgrp'] == 'on' ? 'all_members' : '';
par
$data[17] = ($icon['prvgrp'] != '') ? $icon['prvgrp'] : (($icon['membre'] == 'on') ? 'all_members' : '');


Récupérer la gestion en zone membre : la configuration "gestion en zone membre" est oubliée dans la migration.

en ligne 1344 ajouter les lignes
$omembers = $members;
$ix = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
foreach($ix as $i) $members[$i] = $omembers[$i] == 'on' ? 'all_members' : '';

Forcer le service contact : On ne peut pas récupérer les formulaires contact du plugin puisqu'on a supprimé le répertoire. On n'a donc aucune information. Je suggère de forcer le service contact. en tout cas de ne pas récupérer le $serviz[21] de la V4.
 

en ligne 1429 ajouter les lignes
$serviz[21] = 'on';
$serviz[99] = 'on';
$menuico[10] = 'on';

De même certaines variables de V4 n'ont pas la même signification en V5, je suggère de les forcer à ''

en ligne 1424, ajouter:
$supervision[10] = '';
$serviz[58] = '';
$serviz[63] = '';

Ne pas mettre de description dans les galeries : Le nom de la galerie est répété dans sa description. Ca ne sert à rien et ça alourdi la page du photorama. Je préconise de supprimer cette description.

supprimer les lignes 878 et 879
$data[11] = utf8_encode(str_replace($pats, $patr, $gal[3]));
$data[12] = utf8_encode(str_replace($pats, $patr, $gal[4]));

Migration des vignettes de galeries : Les vignettes sont bien transportées, mais elles sont affichées avec une largeur de 100 pixels. Ce n'est pas un grave problème, mais si, plus tard, on recrée les vignettes d'une galerie, elles s'affichent avec leur vraie dimension, ce qui fait une incohérence entre les galeries.
           

remplacer la ligne 947
$wmax = $vmax > 0 ? $vmax : 100;
par
$wmax = $wmax > 0 ? $wmax : 100;

remplacer la ligne 953
if (intval($vimg) <= 0) $vimg = $vmax
par
if (intval($wimg) <= 0) $wimg = $wmax


 


Date de création : 21/11/2019 - 08:52
Dernière modification : 29/11/2019 - 08:40
Catégorie : - FORK CPL 50209
Page lue 1139 fois