Les liens des documents qui sont liés a un objet inexistant ne sont pas supprimés dans genie/optimiser.php #3165

Closed
opened 9 years ago by miros · 1 comments
miros commented 9 years ago

Bonjour,

Dans SPIP 2.1, les liens des documents qui sont liés a un objet inexistant ne sont pas supprimés dans genie/optimiser.php .

Cela provient du fait que la sélection des liens est stockée dans $res et que la suppression de ces liens s'applique à $sel.

Ci-dessous un extrait du code actuel, dans SPIP 2.1, de genie/optimiser.php :

	# les liens des documents qui sont lies a un objet inexistant
	$r = sql_select("DISTINCT objet","spip_documents_liens");
	while ($t = sql_fetch($r)){
		$type = $t['objet'];
		$spip_table_objet = table_objet_sql($type);
		$id_table_objet = id_table_objet($type);
		$res = sql_select("L.id_document AS id,id_objet",
			      "spip_documents_liens AS L
			        LEFT JOIN $spip_table_objet AS O
			          ON O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type),
				"O.$id_table_objet IS NULL");
		// sur une cle primaire composee, pas d'autres solutions que de virer un a un
		while ($row = sql_fetch($sel)){
			sql_delete("spip_documents_liens", array("id_document=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type)));
			spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table spip_documents_liens");
		}
	}

Cordialement
Equipement

Bonjour, Dans SPIP 2.1, les liens des documents qui sont liés a un objet inexistant ne sont pas supprimés dans genie/optimiser.php . Cela provient du fait que la sélection des liens est stockée dans $res et que la suppression de ces liens s'applique à $sel. Ci-dessous un extrait du code actuel, dans SPIP 2.1, de genie/optimiser.php : <pre> # les liens des documents qui sont lies a un objet inexistant $r = sql_select("DISTINCT objet","spip_documents_liens"); while ($t = sql_fetch($r)){ $type = $t['objet']; $spip_table_objet = table_objet_sql($type); $id_table_objet = id_table_objet($type); $res = sql_select("L.id_document AS id,id_objet", "spip_documents_liens AS L LEFT JOIN $spip_table_objet AS O ON O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type), "O.$id_table_objet IS NULL"); // sur une cle primaire composee, pas d'autres solutions que de virer un a un while ($row = sql_fetch($sel)){ sql_delete("spip_documents_liens", array("id_document=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type))); spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table spip_documents_liens"); } } </pre> Cordialement Equipement
b_b commented 9 years ago
Owner

Une fois de plus je ferme le ticket à la main car Redmine ne le fait toujours pas automatiquement...
Statut changé à Fermé

Une fois de plus je ferme le ticket à la main car Redmine ne le fait toujours pas automatiquement... **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.