Pourquoi utiliser l’approche Trait avec une grande Class ?

Lors de la remise à niveau (et mise au norme WP Code Standards) d’un code source parfois de plus de 10 ans, le problème de fichier d’une classe de près de 10000 lignes s’est posé. En effet, le process phpcs est très lent et il peut être difficile de regrouper les functions ajoutées au fil des années. La répartition en sous-classe ou classe spécifique avec des nouveaux noms n’est pas aisée et demande beaucoup de changements dans les fichiers. En fouillant et cherchant dans la doc et les forums, rares sont ceux qui citent l’approche par des Trait qui ressemblent à une classe très simple en php.

Prenons le cas d’un ensemble de méthode qui gère une page de réglages de l’admin et des functions connexes dans les meta boxes.

On crée un fichier, le Trait est dedans, on y copie ces dites functions. Pas de renommage, la pseudo variable $this reste opérante…

  • L’appel au trait se fait en début de la classe que l’on réorganise avec “use”.

Donc il reste plus qu’à mettre en place le fichier contenant le Trait (de préférence un seul)

Il est requis avant celui de la classe contenant le “use” sinon une erreur fatale est provoquée.

Et maintenant, partie par partie, il est plus aisé de faire évoluer le code notamment du côté admin.

Cet article contient trois blocks en chaque langue

dans les trois blocs, trois textes dans chaque langue :

the block is edited in english.

Ce bloc paragraphe est en français.

Dieser Absatzblock ist in deutscher Sprache.

Si la langue secondaire est cochée, Search trouvera cet article ! ( une fonctionnalité unique de la dernière version du plugin xili-language ! ) Après avoir édité cet article complexe, il est facile de créer et d’éditer ceux dans d’autres langues avec le tableau de bord du plugin (meta-box).

This article contains three blocks in each language

in the three block below, three texts in each language :

the block is edited in english.

Ce bloc paragraphe est en français.

Dieser Absatzblock ist in deutscher Sprache.

If secondary language are checked, Search will find this article ! (an unique features of newest version of xili-language plugin ! After editing this complex article, it is easy to create and edit those in other languages with plugin dashboard (meta box).

Quoi de neuf avec xili-language 2.23.11 ?

La dernière version intègre une meilleure gestion de la metabox des traductions dans le nouvel univers Gutenberg qui bouleverse considérablement l’interface et son mode de dialogue avec la base de données.

Certes, on peut facilement faire des colonnes (par exemple).

Mais, pour le développeur, il faut reconsidérer tous les interfaces qu’on ajoutait pour assister l’éditeur, le rédacteur.

Impossible d’ajouter un simple “input” par quelques lignes de php :

De solides connaissances en JS (réact) sont nécessaires. De plus, c’est d’abord un block a minima qu’il faut ajouter.

Exemple : il était facile d’ajouter la case à cocher pour que le permalien soit adapté selon le titre modifié de l’article traduit. En mode classique, elle était non loin du bouton de mise à jour, mise en ligne. Or, ce n’est plus possible, elle a donc mise sous la liste des traductions. Comme les autres cases de la liste, le mode gutenberg, détecte un changement (cocher, décocher,…) et alors enclanche le processus js, json et met à jour les contenus (et liens entre les diverses traductions).

Exemple illustré

l’image est prise en bas de l’éditeur

la case à cocher est en bas à gauche

Pourquoi coder avec les “WP Coding Standards” ?

Quand des sources de code ont parfois plus de dix ans, il est maintenant temps de les réécrire avec les bonnes pratiques.

La première étape consiste à utiliser des outils efficaces comme WPCS module de PHPCS. Le résultat parle de lui-même avec ces deux instantanés l’écran de l’éditeur Sublime :

php w/o wpcs
php w/o wpcs

php-with-format
php-with-format

Les points rouges sur la première image indiquent les nombreuses erreurs de formatage !

Je vous laisse deviner la masse de travail et de vérifications quand il y près de 30000 lignes dans 4 extensions !

 

où est le wiki xili ?

Le wiki xiki est pour le moment suspendu car son contenu était devenu obsolète compte tenu des évolutions de WP et de la trilogie xili-language.

Maintenant motorisé par WP 5.2 et la trilogie xili-language 2.23+

Maintenant fonctionnant avec les derniers WP 5.2 et Xili-language 2.23, le site nécessite PHP 7.1+ pour intégrer le renommage des classes et les nouvelles sources réécrites avec les dernières règles WP. Lors d’un travail de plusieurs semaines, cela a été possible avec l’extension WP coding standards pour PHP Code Sniffer pour Sublime !

Les extensions Xili-dictionary (2.14.03) et xili-tidy-tags (1.12.01) ont aussi été réécrites avec les recommandations WPCS. (Et comme xili-language, disponible dans GitHub et SVN ( derniers dossiers tags) du ‘repository WP’.

PHP 7.2 : comment remplacer la DEPRECATED create_function pour passer une variable dans add_action() ?

create_function est maintenant obsolète avec PHP 7.2. Comment le réécrire avec une fonction anonyme pour passer une variable dans add_action() à la fin d’une fonction calculant cette var? Dans ce cas, l’action ‘admin_notices’ affiche un message lorsque le thème est activé.

Remplacer

add_action( 'admin_notices', create_function( '', 'echo "' . addcslashes( $msg, '"' ) . '";' ) );

par

add_action(
    'admin_notices',
    function() use ( &$msg ) {
       echo $msg;
    }
);

Noter que la variable est passé en référence ( &$msg ) dans function.
Voir dans le fichier functions.php de ce thème dans GitHub ( line 148 ).

Faites en bonne usage !

WordCamp Lille 2018 – Compte-rendu partiel et partial

Comme chaque année précédente depuis 2009, voici ici un compte-rendu partial et partiel du Wordcamp de Lille.
En relisant celui de 2013 placé sous la variable locale $wp_giraffe, il est presque évident de placer celui-ci sous la classe wp_chti avec toutes ses composantes, variables, méthodes et fonctions dans le fichier class-wp-chti.php.

Abbaye de St Amand Les Eaux
Abbaye de St Amand Les Eaux

Né il y 65 ans à Saint-Amand les Eaux ville thermale du nord non loin de la source qui a remplit les bouteilles d’eau (non) gazeuses mis à disposition des gosiers (stressés parfois) des orateurs et oratrices, dans mes souvenirs, j’ai, en mémoire, (comme me l’a confirmé Daniel un ouvrier à la retraite) que “ch’timi” , né dans les tranchées de la Grande Guerre 1914-18 était plutôt réservé aux habitants des cités minières / ouvrières mais le succès du film a élargi le sens et a redoré une région qui est maintenant dans les hauts de la France depuis Louis XIV il y a 450 ans.

Artois, Hainaut (région trans-frontalière avec la Belgique), Flandre maritime, Wallonie, Picardie, (Boulonnais, côte d’Opale.) : Il existe même des livres et dictionnaires pour chacune des variantes des patois au sein de ces parties (ex-comtés des hauts de France).

Lille - Grand-Place
Lille – Grand-Place

Habitant à 45 km de Lille, je me lève donc à 6h40 pour attraper le TER de 7h40 afin d’être au petit-déjeuner annoncé dès 8h30. Sous le vent très frais, au Nouveau Siècle, nous attendrons 8h50 que la sécurité en rouge (pompiers) et en cravate bleue cyan ouvre le nouveau-siècle et fouille (avec méthode) nos sacs… et nous montons dans les galeries bien chauffées et éclairées (pas besoin de casque et de lampe) avec notre badge programme couleur+photo autour du cou et la musette rouge plein de goodies (merci les sponsors) y compris une mini-torche décapsuleur (de bière du nord bien-sûr) pour les prochains soirs) – le tout remis par le porion souriant au maillot rouge qui nous pointe sur sa liste.

Lampe de mineur
Lampe de mineur

Dans le vestiaire, nos manteaux ne sont pas suspendus à des fils mais sur des cintres numérotés (on est à Lille pas sur le carreau de la mine).

Avant de rejoindre les zones d’extraction, un sérieux encas avec notamment des vrais croissants/pains au chocolat de bonne taille comme chez le boulanger dans le coron ou la cité.

Heureux de retrouver les potes (now named contributor or lead !!) dont les premiers nous ont accueillis il y a presque 10 ans en février 2009 à Paris lors du 2ème barcamp qu’ils avaient organisés… que de galeries creusées, que de fossiles trouvés. En fait de vrais ingénieurs – géologues qui avaient deviné l’immense capacité du sous-sol du bassin minier WordPress.

Les topos, les ateliers

quelques notes sur ceux où j’étais – (programme officiel)

Coder par Sylvie Clément

Un C.V. déjà long et on ne peut que partager son enthousiasme à continuer de programmer avec poésie (“Code is Poetry” est la baseline choisi Matt M.)

Design par Thomas

Thomas, qui est (re)connu pour la qualité de son travail bien fait, nous rappelle avec détails et conviction combien ce n’est pas le vieux internet-explorer qui doit nous soucier dans le code html ou le css mais bien le visiteur moins habile qui ne dispose pas des capacités de chacun. De quoi penser aux premières maisons inventées dans le nord pour les handicapés mentaux par les Papillons blancs devenu APEI.

Immersive

une présentation menée comme un sketch / dialogue.

Avec Dylan et Yannis, dans un dialogue sur scène tourbillonnant et aux images “flashantes”, envahissantes et vibrantes (au bord du déclenchement de la crise d’épilepsie), je retiens l’invitation insistante à être la brebis qui sort du troupeau pour explorer de nouveau espace, signature, look, identité qui affirme le message à mettre en ligne via le Web et WP.  Vaste défi quand on connaît les algorithmes des robots de recherche et leurs listes “suggestives” que l’on ne peut plus désactiver !

Au mess/estaminet près des stands, les échanges avec le binôme avant leur départ vers les plages du débarquement confirment que leurs batailles seront gagnantes.

Innovation interface utilisateurs

Repas

Bravo au choix des organisateurs et au traiteur :

La farandole de la cuisine du nord avec en plat central Carbonade était un carnaval/ducasse (festival) de goût Nord Pas de Calais.

Gutenberg par Michael Gout

Michael, qui n’est pas développeur mais communiquant et utilisateur averti de WordPress, a réussi à me convaincre de continuer à explorer le nouvel interface d’édition Gutenberg. Et bien, chapeau (de cuir de mineur) à lui, je vais le mettre en place et en action pour un nouveau site d’une association. Car c’est puissant, pour le moment limité à la zone “content” qui est en dessous de la zone “title” pour un post mais facile (et semble-t-il sans bug). Ai pu combiner slider-diaporama (extension metaslider), texte en colonne, image etc etc… dans une page composite de présentation.

Roubaix

Ici c’est la grande ville (et sa magnifique piscine musée), donc c’est du grand WordPress en contexte “grosse production” avec 4 présentateurs habiles et compréhensibles. Fini la pelle et le piolet, tous les acquis technologiques dans et autour de WordPress sont en action (comme ces énormes machines dans les galeries pilotées par un mineur mais construites par d’innombrables contributeurs de par le monde.)

Si l’on regardait par les baies vitrées de cette belle grande salle “Québec”, une puissante “drache” ( pluie battante comme on dit dans le nord ) a inondé le quartier.

Dans les galeries pour clore la journée

O2Switch : j’ai découvert des serveurs gonflés d’énergie (et non d’air) qui viennent de Clermont-Ferrand…

WYSIJA devenu MailPoet : ai revu KIM que j’avais vu pour la première fois au 2eme BarCamp de 2009

Be Api fondé par Amaury à qui en 2009, je demandais après ses topos très clairs, où est la doc ? il a répondu de lire les sources. Et bien je confirme, même si aujourd’hui le codex est très très riche.

Amaury en 2013
Amaury en 2013

et bien-sûr les organisateurs qui ont initié le meetup et ce Camp. (merki merki – dirait la comédienne douaisienne capitaine Marleau !)

Belges

En ce lendemain de Saint-Nicolas, c’est comme le père Noël en Belgique (nos voisins étaient nombreux et bien contents d’être venus. ) comme c’est le 6 décembre et non le 25, nos parents nous emmenaient à Bruxelles ou Courtrai dès novembre pour rêver devant les vitrines de jouets  !

La drache

Selon WIKI De l’allemand dreschen (« battre au fléau »). S’applique à une pluie battante.

toutes les photos n’ont pas été prises ce vendredi car il ne faudrait pas croire que dans le nord comme dans l’ouest il pleut tout le temps !

Le retour avant la nuit

En évitant ce “dernier bar de la fin du monde” face au Nouveau Siècle  et sans laisser le temps à la pluie de mouiller min kapio, j’attrape le TER bondé avec Rouen et je descendrais au premier arrêt dans la nuit.

Bar Avant la fin du monde
Bar Avant la fin du monde

Je passe devant le siège social des Charbonnages de France (non loin de l’hôtel de ville qui a vu Louis XIV car  lui ne fut détruit pas par les guerres) siège devenu copropriété immobilière… la variable Transcient chti_camp_active est close et disparait de la table wp_options.

Hôtel de ville de DOUAI
Hôtel de ville de DOUAI

Le concept bar camp

Comme évoqué à plusieurs reprises, je repense à la formule plus interactive et active de (demi-)journée barcamp qui a ses avantages pour chacun des participants… nous y reviendrons lors du prochain meetup à Lille si les valeureux animateurs nous y invitent…

Bonne nouvelle année 2019 et au prochain meetup ( 6 février 2019 à Lille ) sous le regard de Gutenberg 😉

Les photos sont prises par l’auteur Michel. Les liens ici ou là viennent du sympathique site : https://mineurdefond.fr/

 

WordCamp 2018 à Lille

Ce vendredi 7 décembre 2018 : premier wordcamp sur les terres des Hauts de France. A l’évidence cela discutera ferme sur Gutenberg et les bouleversements occasionnés (ainsi que l’immense travail pour les développeurs d’extension. L’occasion sera aussi ouverte pour discuter autour des extensions multilingues et surtout les spécifications de base de description des langues et de leurs attributs.