Skip to content
Extraits de code Groupes Projets
Valider 5af462f9 rédigé par JLuc's avatar JLuc Validation de marcimat
Parcourir les fichiers

fix: Éviter erreur unserialize prefs dans `lister_themes_prives()`

Aussitôt après une demande d'inscription (voir `inscription_nouveau()`),
`$prefs` vaut une chaine statut_tmp.

Fix: #5035
parent 15b76af8
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -1438,7 +1438,14 @@ function creer_chemin() { ...@@ -1438,7 +1438,14 @@ function creer_chemin() {
} }
function lister_themes_prives() { /**
* Retourne la liste des thèmes du privé utilisables pour cette session
*
* @see inscription_nouveau() pour une particularité historique du champ 'prefs'
*
* @return string[] Nom des thèmes.
*/
function lister_themes_prives(): array {
static $themes = null; static $themes = null;
if (is_null($themes)) { if (is_null($themes)) {
// si pas encore definie // si pas encore definie
...@@ -1446,22 +1453,20 @@ function lister_themes_prives() { ...@@ -1446,22 +1453,20 @@ function lister_themes_prives() {
define('_SPIP_THEME_PRIVE', 'spip'); define('_SPIP_THEME_PRIVE', 'spip');
} }
$themes = [_SPIP_THEME_PRIVE]; $themes = [_SPIP_THEME_PRIVE];
// lors d'une installation neuve, prefs n'est pas definie. // Lors d'une installation neuve, prefs n'est pas definie ; sinon, c'est un tableau sérialisé
if (isset($GLOBALS['visiteur_session']['prefs'])) { // FIXME: Aussitôt après une demande d'inscription, $prefs vaut une chaine statut_tmp;
$prefs = $GLOBALS['visiteur_session']['prefs']; $prefs = $GLOBALS['visiteur_session']['prefs'] ?? [];
if (is_string($prefs) and (stripos($prefs, 'a:') === 0)) {
$prefs = unserialize($prefs);
} else { } else {
$prefs = []; $prefs = [];
} }
if (is_string($prefs)) {
$prefs = unserialize($GLOBALS['visiteur_session']['prefs']); $theme = $prefs['theme'] ?? $GLOBALS['theme_prive_defaut'] ?? null;
} if ($theme and $theme !== _SPIP_THEME_PRIVE) {
if ( // placer le theme choisi en tete
((isset($prefs['theme']) and $theme = $prefs['theme'])
or (isset($GLOBALS['theme_prive_defaut']) and $theme = $GLOBALS['theme_prive_defaut']))
and $theme != _SPIP_THEME_PRIVE
) {
array_unshift($themes, $theme); array_unshift($themes, $theme);
} // placer le theme choisi en tete }
} }
return $themes; return $themes;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter