From 50b2e3b2b8c01e0eaf9b17af1133f19dde1f515b Mon Sep 17 00:00:00 2001
From: nicod_ <nicod@lerebooteux.fr>
Date: Wed, 26 Apr 2023 20:55:09 +0200
Subject: [PATCH] =?UTF-8?q?Dans=20l'espace=20priv=C3=A9,=20remonter=20tous?=
 =?UTF-8?q?=20les=20blocs,=20mais=20dans=20le=20public=20uniquement=20les?=
 =?UTF-8?q?=20publi=C3=A9s=20Trier=20les=20blocs=20par=20rang=5Flien?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 blocks_fonctions.php | 60 ++++++++++++++++++++++++++++----------------
 1 file changed, 39 insertions(+), 21 deletions(-)

diff --git a/blocks_fonctions.php b/blocks_fonctions.php
index 1bf4d74..24f5c54 100644
--- a/blocks_fonctions.php
+++ b/blocks_fonctions.php
@@ -66,29 +66,35 @@ function balise_GENERER_BLOCK_dist($p) {
 }
 
 function _block_charger_block($id_bloc) {
-	// TODO : vérifier statut
-	$infos = sql_fetsel(
+	$retour = '';
+	$where = ['b.id_bloc = ' . (int)$id_bloc];
+	if (!test_espace_prive()) {
+		$where[] = 'b.statut = ' . sql_quote('publie');
+	}
+	if ($infos = sql_fetsel(
 		'b.valeurs, bt.saisies, bt.identifiant',
 		'spip_blocs_types bt join spip_blocs b using(id_blocs_type)',
-		'b.id_bloc = ' . (int)$id_bloc
-	);
-
-	$contexte = [
-		'id_bloc' => $id_bloc,
-	];
-	// transmettre les valeurs saisies dans le bloc au squelette
-	$saisies_bloc_type = blocks_deserialize($infos['saisies']);
-	if ($valeurs_saisies = blocks_deserialize($infos['valeurs'])) {
-		include_spip('inc/saisies_lister');
-		$saisies_par_nom = saisies_lister_par_nom($saisies_bloc_type);
-		foreach ($saisies_par_nom as $nom => $saisie) {
-			$contexte[$nom] = $valeurs_saisies[$nom];
+		$where
+	)) {
+		$contexte = [
+			'id_bloc' => $id_bloc,
+		];
+		// transmettre les valeurs saisies dans le bloc au squelette
+		$saisies_bloc_type = blocks_deserialize($infos['saisies']);
+		if ($valeurs_saisies = blocks_deserialize($infos['valeurs'])) {
+			include_spip('inc/saisies_lister');
+			$saisies_par_nom = saisies_lister_par_nom($saisies_bloc_type);
+			foreach ($saisies_par_nom as $nom => $saisie) {
+				$contexte[$nom] = $valeurs_saisies[$nom];
+			}
 		}
-	}
 
-	$squelette = blocks_trouver_squelette($infos['identifiant']);
+		$squelette = blocks_trouver_squelette($infos['identifiant']);
 
-	return recuperer_fond($squelette, $contexte);
+		$retour = recuperer_fond($squelette, $contexte);
+	}
+
+	return $retour;
 }
 
 /**
@@ -129,15 +135,27 @@ function balise_GENERER_BLOCKS_dist($p) {
 
 function _block_charger_blocks($objet, $id_objet) {
 	$retour = '';
-	$blocs = objet_trouver_liens(['bloc' => '*'], [$objet => $id_objet]);
-	// TODO : vérifier statuts et rangs_liens
+	$where = [
+		'bl.objet = ' . sql_quote($objet),
+		'bl.id_objet = ' . (int)$id_objet,
+	];
+	if (!test_espace_prive()) {
+		$where[] = 'b.statut = ' . sql_quote('publie');
+	}
+	$blocs = sql_allfetsel(
+		'b.id_bloc',
+		'spip_blocs_liens bl join spip_blocs b using(id_bloc)',
+		$where,
+		'',
+		'bl.rang_lien'
+	);
 	foreach ($blocs as $bloc) {
 		$retour .= _block_charger_block($bloc['id_bloc']);
 	}
+
 	return $retour;
 }
 
-
 /**
  * Générer le titre d'un bloc
  * composé de son type et du titre de l'objet auquel il est lié
-- 
GitLab