diff --git a/blocks_fonctions.php b/blocks_fonctions.php index 1bf4d740a03fffbf0289af2b116c350651eef83f..24f5c54ce3818f2f403f2e95ae0684d687018c37 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é