Plugin Linkcheck - Articles avec statut "prepa" dans la liste des articles visibles

Bonjour,

SPIP 3.2 à jour + dernière version de LinkCheck.

Des articles avec le statut "prepa", apparaissent dans la liste des
articles visibles.

Je pense que cela vient de ecrire/base/objets.php
: objet_test_si_publie, qui renvoie true si le statut n'est pas trouvé
?

/**
 * Determininer si un objet est publie ou non
 *
 * On se base pour cela sur sa declaration de statut
 * pour des cas particuliers non declarables, on permet de fournir une
fonction
 * base_xxxx_test_si_publie qui sera appele par la fonction
 *
 * @param string $objet
 * @param int $id_objet
 * @param string $serveur
 * @return bool
 */
function objet_test_si_publie($objet, $id_objet, $serveur = '') {
	// voir si une fonction est definie pour faire le boulot
	// elle a la priorite dans ce cas
	if ($f = charger_fonction($objet . '_test_si_publie', 'base',
true)) {
		return $f($objet, $id_objet, $serveur);
	}

	// sinon on se fie a la declaration de l'objet si presente
	$id_table = $table_objet = table_objet($objet);
	$id_table_objet = id_table_objet($objet, $serveur);
	$trouver_table = charger_fonction('trouver_table', 'base');
	if ($desc = $trouver_table($table_objet, $serveur)
		and isset($desc['statut'])
		and $desc['statut']
	) {
		$boucle = new Boucle();
		$boucle->show = $desc;
		$boucle->nom = 'objet_test_si_publie';
		$boucle->id_boucle = $id_table;
		$boucle->id_table = $id_table;
		$boucle->sql_serveur = $serveur;
		$boucle->select[] = $id_table_objet;
		$boucle->from[$table_objet] = table_objet_sql($objet,
$serveur);
		$boucle->where[] = $id_table . '.' . $id_table_objet .
'=' . intval($id_objet);

		include_spip('public/compiler');
		include_spip('public/composer');
		instituer_boucle($boucle, false, true);
		$res = calculer_select(
			$boucle->select,
			$boucle->from,
			$boucle->from_type,
			$boucle->where,
			$boucle->join,
			$boucle->group,
			$boucle->order,
			$boucle->limit,
			$boucle->having,
			$table_objet,
			$id_table,
			$serveur
		);
		if (sql_fetch($res)) {
			return true;
		}

		return false;
	}

	// si pas d'info statut ni de fonction : l'objet est publie
	return true;
}

Cordialement,

Eric

Un exemple :

spip_linkchecks :

id_linkcheck : 36828
url : http://domain.tld
distant : 1
etat : mort
code : no-code
redirection
essais : 0
date : 2018-01-26 00:30:03
publie : oui
maj : 2018-1-26 00:43:36

Ce lien est contenu dans 2 articles avec le statut : prepa. Ces
articles sont en cours de rédaction.

        

Mmmh je ne reproduis pas personnellement

Il me les classe bien dans "Non visibles en ligne"

On 7 mars 2018 à 16:17 +0100, eric <webmaster@opalesurfcasting.net>, wrote:

Un exemple :

spip_linkchecks :

id_linkcheck : 36828
url : http://domain.tld
distant : 1
etat : mort
code : no-code
redirection
essais : 0
date : 2018-01-26 00:30:03
publie : oui
maj : 2018-1-26 00:43:36

Ce lien est contenu dans 2 articles avec le statut : prepa. Ces
articles sont en cours de rédaction.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le mercredi 07 mars 2018 à 16:22 +0100, Quentin Drouet a écrit :

Mmmh je ne reproduis pas personnellement

Il me les classe bien dans "Non visibles en ligne"

Bonjour,

Dans l'interface de gestion LinkCheck :

J'ai sélectionné l'onglet "Mort".
En dessous :

Onglets : Visibles en ligne + article.

J'ai bien des articles publiés donc visibles en ligne.

Mais j'ai également des articles avec le statut prepa.

En base, spip_linkchecks, pour un second lien, inclus dans un article
avec le statut prepa, j'ai :

id_linkcheck : 36817
....
distant : 1
...
publie : oui

Pour la table spip_linckecks_liens :

2 lignes

id_linkchecks : 36817 x 2
id_objet : 1381 et 401
objet : article et message
publie : non et oui

Apparemment, ce lien est utilisé dans 2 objets l'un non publié
(article), l'autre oui (message).

Je regarde dans la table spip_linkchecks_liens pour le premier exemple

S’il est utilisé par au moins un objet publié, il est considéré comme visible en ligne, c’est la logique

Q

On 7 mars 2018 à 16:53 +0100, eric <webmaster@opalesurfcasting.net>, wrote:

Le mercredi 07 mars 2018 à 16:22 +0100, Quentin Drouet a écrit :
> Mmmh je ne reproduis pas personnellement
>
> Il me les classe bien dans "Non visibles en ligne"

Bonjour,

Dans l'interface de gestion LinkCheck :

J'ai sélectionné l'onglet "Mort".
En dessous :

Onglets : Visibles en ligne + article.

J'ai bien des articles publiés donc visibles en ligne.

Mais j'ai également des articles avec le statut prepa.

En base, spip_linkchecks, pour un second lien, inclus dans un article
avec le statut prepa, j'ai :

id_linkcheck : 36817
....
distant : 1
...
publie : oui

Pour la table spip_linckecks_liens :

2 lignes

id_linkchecks : 36817 x 2
id_objet : 1381 et 401
objet : article et message
publie : non et oui

Apparemment, ce lien est utilisé dans 2 objets l'un non publié
(article), l'autre oui (message).

Je regarde dans la table spip_linkchecks_liens pour le premier exemple

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Je regarde dans la table spip_linkchecks_liens pour le premier
exemple

J'ai bien 2 lignes :
id_linkckecks : 36828
id_objet : 1400 et 1643
objet : 2 x article
publie : 2 x non

Dans la table spip_linkchecks :
id_linkckecks : 36828
publie : oui

Je réinitialise et relance un scan pour voir.

Merci.

Le mercredi 07 mars 2018 à 16:58 +0100, eric a écrit :

>
> Je regarde dans la table spip_linkchecks_liens pour le premier
> exemple
J'ai bien 2 lignes :
id_linkckecks : 36828
id_objet : 1400 et 1643
objet : 2 x article
publie : 2 x non

Dans la table spip_linkchecks :
id_linkckecks : 36828
publie : oui

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le mercredi 07 mars 2018 à 16:54 +0100, Quentin Drouet a écrit :

S’il est utilisé par au moins un objet publié, il est considéré comme
visible en ligne, c’est la logique

Q

Pour le premier exemple, après réinitialisation des tables :

J'ai bien 2 articles avec statut prepa, 2 liens dans la table
spip_linckecks_liens avec publie=non, et, 1 ligne dans spip_linkchecks
avec publie=oui.

Cordialement,

Eric

Bonsoir,

Il doit y avoir un problème à la ligne 160 de inc/linkcheck_fcts.php
$statut n'est pas défini.
Si l'objet n'est pas publié, et que le lien existe déjà (créer à partir
d'un objet précédent), publie sera mis à oui. - ligne 162

En tout cas, c'est ce qui se passe dans mon cas.

Le même lien contenu dans 2 articles avec le statut prepa donne dans
spip_linkchecks : publie = oui.

Il est bien créé avec publie=non la première fois, mais le second
passage le met à oui.

Je continue ...

Le mercredi 07 mars 2018 à 17:12 +0100, eric a écrit :

Le mercredi 07 mars 2018 à 16:54 +0100, Quentin Drouet a écrit :
>
> S’il est utilisé par au moins un objet publié, il est considéré
> comme
> visible en ligne, c’est la logique
>
> Q
Pour le premier exemple, après réinitialisation des tables :

J'ai bien 2 articles avec statut prepa, 2 liens dans la table
spip_linckecks_liens avec publie=non, et, 1 ligne dans
spip_linkchecks
avec publie=oui.

Cordialement,

Eric
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Il doit y avoir un problème à la ligne 160 de inc/linkcheck_fcts.php
$statut n'est pas défini.

ligne 160 :
- if ($publie_linkcheck != $statut) {
+ if ($publie_linkcheck != $publie) { // verifier si le statut dans la
table est différent de celui du lien en cours de traitement.
si oui, on traite, on update la colonne
si non, on ne fait rien.

Je pense que c'est suffisant.

Cordialement,

Eric

Le mercredi 07 mars 2018 à 19:46 +0100, Quentin Drouet a écrit :

Ok c’était donc le pb de doublon et potentiellement l’ordre d’analyse

Tu peux commiter sur la zone à priori

C'est fait.

Mais je n'ai pas de mot de passe ?

Comment faire ?

Index: README.md

--- README.md (révision 109367)
+++ README.md (copie de travail)
@@ -20,7 +20,10 @@
* gestion des autoriser() pas très claire (permettre d'ouvrir le
plugin aux rédacteurices)

## Versions 1.4.x
+### Version 1.4.12 (2018-03-07)

+* Correction d'un bug: 1 lien inclus dans plusieurs objets, tous non
publiés, obtient le statut publié dans la table de centralisation des
liens (@eldk)
+
### Version 1.4.8 (2017-10-03)

* Sur la boite des liens recensés, changer la classe `bam` par
`section` pour pouvoir lire le titre
@@ -214,4 +217,4 @@

## Todo

-* Ajouter la possibilité de remplacer automatiquement (via un bouton)
les liens déplacés par la redirection découverte
\ No newline at end of file
+* Ajouter la possibilité de remplacer automatiquement (via un bouton)
les liens déplacés par la redirection découverte
Index: inc/linkcheck_fcts.php

--- inc/linkcheck_fcts.php (révision 109367)
+++ inc/linkcheck_fcts.php (copie de travail)
@@ -157,7 +157,7 @@
)
);
$publie_linkcheck =
sql_getfetsel('publie', 'spip_linkchecks', 'id_linkcheck =
'.intval($exi['id']));
- if ($publie_linkcheck != $statut) {
+ if ($publie_linkcheck != $publie) {
if ($publie_linkcheck ==
'non') {
sql_updateq('spip_link
checks', array('publie' => 'oui'), 'id_linkcheck =
'.intval($exi['id']));
} else {
Index: paquet.xml

--- paquet.xml (révision 109367)
+++ paquet.xml (copie de travail)
@@ -1,7 +1,7 @@
<paquet
prefix="linkcheck"
categorie="maintenance"
- version="1.4.11"
+ version="1.4.12"
etat="stable"
compatibilite="[3.0.5;3.2.*]"
logo="prive/themes/spip/images/linkcheck-64.png"

Le demander gentilment sur la liste spip-zone :wink:

Le 7 mars 2018 à 21:46 +0100, eric <webmaster@opalesurfcasting.net>, a écrit :

Le mercredi 07 mars 2018 à 19:46 +0100, Quentin Drouet a écrit :
> Ok c’était donc le pb de doublon et potentiellement l’ordre d’analyse
>
> Tu peux commiter sur la zone à priori

C'est fait.

Mais je n'ai pas de mot de passe ?

Comment faire ?
>
Index: README.md

--- README.md (révision 109367)
+++ README.md (copie de travail)
@@ -20,7 +20,10 @@
* gestion des autoriser() pas très claire (permettre d'ouvrir le
plugin aux rédacteurices)

## Versions 1.4.x
+### Version 1.4.12 (2018-03-07)

+* Correction d'un bug: 1 lien inclus dans plusieurs objets, tous non
publiés, obtient le statut publié dans la table de centralisation des
liens (@eldk)
+
### Version 1.4.8 (2017-10-03)

* Sur la boite des liens recensés, changer la classe `bam` par
`section` pour pouvoir lire le titre
@@ -214,4 +217,4 @@

## Todo

-* Ajouter la possibilité de remplacer automatiquement (via un bouton)
les liens déplacés par la redirection découverte
\ No newline at end of file
+* Ajouter la possibilité de remplacer automatiquement (via un bouton)
les liens déplacés par la redirection découverte
Index: inc/linkcheck_fcts.php

--- inc/linkcheck_fcts.php (révision 109367)
+++ inc/linkcheck_fcts.php (copie de travail)
@@ -157,7 +157,7 @@
)
);
$publie_linkcheck =
sql_getfetsel('publie', 'spip_linkchecks', 'id_linkcheck =
'.intval($exi['id']));
- if ($publie_linkcheck != $statut) {
+ if ($publie_linkcheck != $publie) {
if ($publie_linkcheck ==
'non') {
sql_updateq('spip_link
checks', array('publie' => 'oui'), 'id_linkcheck =
'.intval($exi['id']));
} else {
Index: paquet.xml

--- paquet.xml (révision 109367)
+++ paquet.xml (copie de travail)
@@ -1,7 +1,7 @@
<paquet
prefix="linkcheck"
categorie="maintenance"
- version="1.4.11"
+ version="1.4.12"
etat="stable"
compatibilite="[3.0.5;3.2.*]"
logo="prive/themes/spip/images/linkcheck-64.png"
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc