Skip to content
This repository has been archived by the owner on Jul 7, 2024. It is now read-only.

supprimer la construction array_map('array_pop', $x) #187

Closed
Fil opened this issue May 23, 2017 · 10 comments
Closed

supprimer la construction array_map('array_pop', $x) #187

Fil opened this issue May 23, 2017 · 10 comments
Assignees

Comments

@Fil
Copy link
Member

Fil commented May 23, 2017

L'idée était d'écrire simplement "récupérer le premier élément de chaque élément du tableau", mais on dirait que ça ne fonctionne plus si le tableau comporte plusieurs éléments, ce qui provoquait une grande lenteur sur la page d'accueil (cf. seenthis/seenthis@0276740 )

Fil added a commit to seenthis/seenthis that referenced this issue May 23, 2017
@Fil
Copy link
Member Author

Fil commented May 23, 2017

J'ai utilisé cette construction à pas mal d'endroits dans plugins/seenthis et seenthis_squelettes ; seuls ceux où les éléments qu'on passe comportent plusieurs champs vont poser problème, mais je crois que par principe il faudrait les éliminer tous. Comme c'est un peu chiant à écrire est-ce qu'on fait une fonction dédiée ?

@Fil
Copy link
Member Author

Fil commented May 23, 2017

À noter : seenthis/seenthis@0276740 aurait pu être corrigé autrement, en supprimant ,date de la requête SQL qui précède.

@brunob brunob self-assigned this May 23, 2017
@marcimat
Copy link

Je disais : maintenant il vaut mieux utiliser array_column($tableau, 'nom de la colonne'); plutôt que des array_map('reset', $tableau); ou équivalent.

@brunob
Copy link
Member

brunob commented May 23, 2017

foreach($mentions as $m) $pointe[] = $m['id']; => $pointe = array_column($mentions, 'id'); donc

Le patch suivant réglerait le problème pour les deux occurrences où on passe un élément à plusieurs champs :

Index: inc/seenthis_data.php
===================================================================
--- inc/seenthis_data.php	(révision 418)
+++ inc/seenthis_data.php	(copie de travail)
@@ -507,7 +507,7 @@
 
 	# les mentions @login vers $moi :
 	$mentions = sql_allfetsel('id_me', 'spip_me_auteur', 'id_auteur='.$moi, '', 'date DESC', '0,'.($debut + $max_pagination));
-	$pointe = array_merge($pointe, array_map('array_pop', $mentions));
+	$pointe = array_column($mentions, 'id_me');
 
 	# les messages qui parlent d'un sujet ou url qui m'interesse $moi
 	if ($pointetags = liste_pointe_tags($debut, $max_pagination, $moi)) {
@@ -516,7 +516,7 @@
 
 	# les messages auxquels j'ai repondu $moi
 	$mentions = sql_allfetsel('DISTINCT(id_parent) as id, date', 'spip_me', "id_auteur=$moi AND id_parent>0 AND statut='publi'", '', 'date DESC', '0,'.($debut + $max_pagination));
-	foreach($mentions as $m) $pointe[] = $m['id'];
+	$pointe = array_column($mentions, 'id');
 
 	# faut-il ajouter les messages ayant des URLs avec un tag opencalais que je suis ?

brunob added a commit to seenthis/seenthis that referenced this issue May 23, 2017
@brunob
Copy link
Member

brunob commented May 23, 2017

Appliqué dans la branche 3.1, reste à voir si on reporte dans la branche 2.1 dans quel cas il faudra préciser que PHP >= 5.5.0 est nécessaire.

@Fil
Copy link
Member Author

Fil commented May 23, 2017 via email

@brunob
Copy link
Member

brunob commented May 23, 2017

Vi, on pourrait pomper ce que fait bonux https://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-bonux-3/lib/array_column/array_column.php?rev=89337 pour la branche 2.1 uniquement, et ajouter un necessite bonux pour la branche 3.1.

@Fil
Copy link
Member Author

Fil commented Jul 1, 2017

Discussion en ce moment sur spip-dev pour que cette fonction soit ajoutée en cas de besoin au niveau de SPIP.

@Fil Fil closed this as completed Jul 1, 2017
@brunob
Copy link
Member

brunob commented Jul 1, 2017

Dans un premier temps, il suffit d'ajouter un necessite spip_bonux (qui fourni array_column) dans la branche 3.1 du plugin seenthis, parce que je ne suis pas certain de pouvoir assurer le portage de seenthis vers SPIP 3.2 en 5 minutes (notamment au niveau du plugin inclure ajaxload et des changements apportés par la nouvelle version de jQuery).

@brunob
Copy link
Member

brunob commented Oct 28, 2019

Maintenant que seenthis est en 3.2 on peut considérer que c'est bien fermé :)

brunob added a commit to seenthis/seenthis that referenced this issue Mar 4, 2024
évieter des warnings du type ` array_pop(): Argument #1 ($array) must be passed by reference, value given`

terminer le travail de seenthis/seenthis_squelettes#187
brunob added a commit to seenthis/seenthis that referenced this issue Mar 4, 2024
éviter des warnings du type ` array_pop(): Argument #1 ($array) must be passed by reference, value given`

terminer le travail de seenthis/seenthis_squelettes#187
brunob added a commit that referenced this issue Mar 4, 2024
éviter des warnings du type ` array_pop(): Argument #1 ($array) must be passed by reference, value given`

terminer le travail de #187
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants