Depuis la disparition de la variable $core
et son remplacement par dcCore::app()
un certain nombre de fonctions de rappel des behaviors n’ont plus besoin qu’on passe cette variable en paramètre, comme c’était fréquemment le cas auparavant.
Pour assurer la compatibilité, de nouveaux noms de behavior ont remplacé ceux-ci — un suffixe V2 a été ajouté à leur identifiant —, les anciens étant supprimés :
Avant :
# --BEHAVIOR-- adminBlogPreferencesForm
dcCore::app()->callBehavior('adminBlogPreferencesForm', dcCore::app(), $blog_settings);
Après :
# --BEHAVIOR-- adminBlogPreferencesForm
dcCore::app()->callBehavior('adminBlogPreferencesFormV2', $blog_settings);
Où vous constaterez la disparition du 1er paramètre.
Pour éviter de (trop) casser le code tiers un nouveau plugin, nommé dcProxyV2, fait maintenant partie de la distribution, à partir de la prochaine 2.24. Celui-ci fait l’interface entre les anciens behaviors (valides jusqu’à la 2.23.1) avec les nouveaux (valides à partir de la 2.24).
Ce plugin permet, sur l’appel d’un nouveau behavior (V2) d’appeler l’ancien avec le paramètre manquant. Exemple avec le behavior adminBlogPreferencesFormV2
qui provoquera aussi cet appel (ancienne signature) :
return dcCore::app()->callBehavior('adminBlogPreferencesForm', dcCore::app(), $blog_settings);
En pratique soit vous utilisez toujours les anciens behaviors et votre code devrait continuer à fonctionner comme avant, soit vous utilisez les nouvelles formes (suffixées V2) et vous enlevez le paramètre $core
ou dcCore::app()
de l’appel — si vous utilisiez callBehavior()
— et vous supprimez ce paramètre des fonctions de rappel concernées (celles enregistrées avec addBehavior()
).
Exemple avec la modification de la fonction de rappel pour l’ancien adminBlogPreferencesForm, avant :
public static function adminBlogPreferencesForm(dcCore $core, $settings)
{
…
Après, utilisée pour le nouveau adminBlogPreferencesFormV2 :
public static function adminBlogPreferencesForm(dcSettings $settings)
{
…
Voici les listes des behaviors concernés. Chacun de ceux-ci sont maintenant suffixés avec V2 et le paramètre $core
a été supprimé de l’appel et doit l’être de la liste des paramètres de la fonction de rappel.
Le paramètre $core
était habituellement positionné en 1re position sauf pour quelques uns d’entre eux pour lesquels il était en dernier, ceux-ci sont indiqués en italique.
Système
- coreBeforeLoadingNsFiles
- coreCommentSearch
- corePostSearch
Public
- publicAfterContentFilter
- publicAfterDocument
- publicBeforeContentFilter
- publicBeforeDocument
- publicBeforeReceiveTrackback
- publicContentFilter
- publicPrepend
- templateAfterBlock
- templateAfterValue
- templateBeforeBlock
- templateBeforeValue
- templateInsideBlock
- tplAfterData
- tplBeforeData
Admin
- adminBlogFilter
- adminBlogListHeader
- adminBlogListValue
- adminBlogPreferencesForm
- adminBlogsActionsPage
- adminColumnsLists
- adminCommentFilter
- adminCommentListHeader
- adminCommentListValue
- adminCommentsActions
- adminCommentsActionsPage
- adminCommentsSpamForm
- adminCurrentThemeDetails
- adminDashboardContents
- adminDashboardFavorites
- adminDashboardFavs
- adminDashboardFavsIcon
- adminDashboardItems
- adminDashboardOptionsForm
- adminFiltersLists
- adminMediaFilter
- adminPageFooter
- adminPagesActionsPage
- adminPagesListHeader
- adminPagesListValue
- adminPostFilter
- adminPostListHeader
- adminPostListValue
- adminPostMiniListHeader
- adminPostsActions
- adminPostsActionsPage
- adminPreferencesForm
- adminRteFlags
- adminSearchPageCombo
- adminSearchPageDisplay
- adminSearchPageHead
- adminSearchPageProcess
- adminUsersActions
- adminUsersActionsContent
- adminUserFilter
- adminUserListHeader
- adminUserListValue
- exportFull
- exportSingle
- importExportModules
- importFull
- importInit
- importPrepareDC12
- importSingle
- pluginsToolsHeaders
- pluginsToolsTabs
- restCheckStoreUpdate
- themesToolsHeaders
- themesToolsTabs
Nous reviendrons sur ce plugin dcProxyV2 plus tard, celui-ci intégrant aussi d’autres aspects pour assurer la compatibilité ascendante.
1 De pvg -
coucou, dans le dernier exemple, il ne manquerait pas le V2 à adminBlogPreferencesForm dans le code php ?
2 De Franck -
Non, la fonction elle-même n’a pas besoin d’être renommée, la signature seule a besoin d’être modifiée.