From f35316bcbe28f7681b01db99fc9ecf04208d529c Mon Sep 17 00:00:00 2001
From: nicod_ <nicod@lerebooteux.fr>
Date: Wed, 22 Jan 2020 22:20:39 +0100
Subject: [PATCH] =?UTF-8?q?Ne=20pas=20consid=C3=A9rer=20une=20rubrique=20c?=
 =?UTF-8?q?omme=20publi=C3=A9e=20quand=20on=20lui=20ajoute=20un=20logo.=20?=
 =?UTF-8?q?https://core.spip.net/issues/4424?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 action/editer_document.php | 16 ++++++++++------
 medias_pipelines.php       |  4 ++--
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/action/editer_document.php b/action/editer_document.php
index 170ebfc4..30bbbbca 100644
--- a/action/editer_document.php
+++ b/action/editer_document.php
@@ -195,8 +195,8 @@ function document_instituer($id_document, $champs = array()) {
 
 		$trouver_table = charger_fonction('trouver_table', 'base');
 		$res = sql_select(
-			'id_objet,objet',
-			'spip_documents_liens',
+			'id_objet,objet, mode',
+			'spip_documents_liens join spip_documents using(id_document)',
 			"objet!='document' AND id_document=" . intval($id_document)
 		);
 		// On aura 19 jours 3h14 et 7 secondes pour corriger en 2038 (limitation de la représentation POSIX du temps sur les 32 bits)
@@ -204,10 +204,14 @@ function document_instituer($id_document, $champs = array()) {
 		include_spip('base/objets');
 		while ($row = sql_fetch($res)) {
 			if (
-				// cas particulier des rubriques qui sont publiees des qu'elles contiennent un document !
-				$row['objet'] == 'rubrique'
-				// ou si objet publie selon sa declaration
-				or objet_test_si_publie($row['objet'], $row['id_objet'])
+				// si ce n'est pas un logo
+				!in_array($row['mode'], array('logoon','logooff'))
+				and (
+					// cas particulier des rubriques qui sont publiees des qu'elles contiennent un document !
+					$row['objet'] == 'rubrique'
+					// ou si objet publie selon sa declaration
+					or objet_test_si_publie($row['objet'], $row['id_objet'])
+				)
 			) {
 				$statut = 'publie';
 				$date_publication = 0;
diff --git a/medias_pipelines.php b/medias_pipelines.php
index b84c3d14..e2d75f46 100644
--- a/medias_pipelines.php
+++ b/medias_pipelines.php
@@ -311,12 +311,12 @@ function medias_objet_compte_enfants($flux) {
 		if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
 			$flux['data']['document'] = sql_countsel(
 				'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
-				'L.objet=' . sql_quote($objet) . 'AND L.id_objet=' . intval($id) . " AND (D.statut='publie')"
+				'L.objet=' . sql_quote($objet) . 'AND L.id_objet=' . intval($id) . " AND (D.statut='publie') and D.mode NOT IN ('logoon','logoff') "
 			);
 		} else {
 			$flux['data']['document'] = sql_countsel(
 				'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
-				'L.objet=' . sql_quote($objet) . 'AND L.id_objet=' . intval($id) . " AND (D.statut='publie' OR D.statut='prepa')"
+				'L.objet=' . sql_quote($objet) . 'AND L.id_objet=' . intval($id) . " AND (D.statut='publie' OR D.statut='prepa') and D.mode NOT IN ('logoon','logoff')"
 			);
 		}
 	}
-- 
GitLab