Skip to content
Extraits de code Groupes Projets
Valider bfc33191 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Report de 049dee86 : Extraire la fonction de determination automatique du...

Report de 049dee86 : Extraire la fonction de determination automatique du statut d'un document dans une fonction inc_determiner_statut_document_dist() surchargeable
parent 9764525c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -189,55 +189,28 @@ function document_instituer($id_document, $champs = array()) { ...@@ -189,55 +189,28 @@ function document_instituer($id_document, $champs = array()) {
$statut_ancien = $row['statut']; $statut_ancien = $row['statut'];
$date_publication_ancienne = $row['date_publication']; $date_publication_ancienne = $row['date_publication'];
$champs = array();
/* Autodetermination du statut si non fourni */ /* Autodetermination du statut si non fourni */
if (is_null($statut)) { if (is_null($statut)) {
$statut = 'prepa'; $determiner_statut_document = charger_fonction('determiner_statut_document', 'inc');
$champs = $determiner_statut_document($id_document, $statut_ancien, $date_publication_ancienne);
$trouver_table = charger_fonction('trouver_table', 'base'); // rien a faire
$res = sql_select( if ($champs === false) {
'id_objet,objet',
'spip_documents_liens',
"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)
$date_publication = strtotime('2038-01-01 00:00:00');
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'])
) {
$statut = 'publie';
$date_publication = 0;
continue;
} // si pas publie, et article, il faut checker la date de post-publi eventuelle
elseif ($row['objet'] == 'article'
and $row2 = sql_fetsel(
'date',
'spip_articles',
'id_article=' . intval($row['id_objet']) . " AND statut='publie'"
)
) {
$statut = 'publie';
$date_publication = min($date_publication, strtotime($row2['date']));
}
}
$date_publication = date('Y-m-d H:i:s', $date_publication);
if ($statut == 'publie' and $statut_ancien == 'publie' and $date_publication == $date_publication_ancienne) {
return false; return false;
} }
if ($statut != 'publie' and $statut_ancien != 'publie' and $statut_ancien != '0') {
return false; }
else {
if ($statut !== $statut_ancien) {
$champs['statut'] = $statut;
} }
} }
$champs = array(); if (!is_null($date_publication)
if ($statut !== $statut_ancien) { and empty($champs['date_publication'])
$champs['statut'] = $statut; and $date_publication != $date_publication_ancienne) {
}
if ($date_publication != $date_publication_ancienne) {
$champs['date_publication'] = $date_publication; $champs['date_publication'] = $date_publication;
} }
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Gestion des modes de documents
*
* @package SPIP\Medias\Modes
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Determiner le statut automatique d'un document
* @param int $id_document
* @param string $statut_ancien
* @param string $date_publication_ancienne
* @return array|false
*/
function inc_determiner_statut_document($id_document, $statut_ancien, $date_publication_ancienne) {
$statut = 'prepa';
$trouver_table = charger_fonction('trouver_table', 'base');
$res = sql_select(
'id_objet,objet',
'spip_documents_liens',
"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)
$date_publication = strtotime('2038-01-01 00:00:00');
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'])
) {
$statut = 'publie';
$date_publication = 0;
continue;
} // si pas publie, et article, il faut checker la date de post-publi eventuelle
elseif ($row['objet'] == 'article'
and $row2 = sql_fetsel(
'date',
'spip_articles',
'id_article=' . intval($row['id_objet']) . " AND statut='publie'"
)
) {
$statut = 'publie';
$date_publication = min($date_publication, strtotime($row2['date']));
}
}
$date_publication = date('Y-m-d H:i:s', $date_publication);
if ($statut == 'publie' and $statut_ancien == 'publie' and $date_publication == $date_publication_ancienne) {
return false;
}
if ($statut != 'publie' and $statut_ancien != 'publie' and $statut_ancien != '0') {
return false;
}
$champs = [];
if ($statut !== $statut_ancien) {
$champs['statut'] = $statut;
}
if ($date_publication !== $date_publication_ancienne) {
$champs['date_publication'] = $date_publication;
}
return $champs;
}
<paquet <paquet
prefix="medias" prefix="medias"
categorie="multimedia" categorie="multimedia"
version="2.20.32" version="2.20.33"
etat="stable" etat="stable"
compatibilite="[3.2.0;3.2.*]" compatibilite="[3.2.0;3.2.*]"
logo="prive/themes/spip/images/portfolio-32.png" logo="prive/themes/spip/images/portfolio-32.png"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter