Author: cedric@yterium.com
Date: Fri Jun 9 11:39:56 2006
New Revision: 3532
Log:
Un outil de reconstitution des liens sauvages article->image
Added:
_plugins_/_amelioration_admin_/gestion_documents/exec/reparer_liens_documents.php
Modified:
_plugins_/_amelioration_admin_/gestion_documents/exec/portfolio.php
Modified: _plugins_/_amelioration_admin_/gestion_documents/exec/portfolio.php
--- _plugins_/_amelioration_admin_/gestion_documents/exec/portfolio.php (original)
+++ _plugins_/_amelioration_admin_/gestion_documents/exec/portfolio.php Fri Jun 9 11:39:56 2006
@@ -10,7 +10,7 @@
*
*/
-$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
+$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(dirname(__FILE__)))));
define('_DIR_PLUGIN_GESTION_DOCUMENTS',(_DIR_PLUGINS.end($p)));
function generer_query_string($conteneur,$id_type,$nb_aff,$filtre){
@@ -391,6 +391,7 @@
generer_url_ecrire('portfolio',"updatetable=oui&".generer_query_string($conteneur,$id_type,$nb_aff,$filtre)),
"administration-24.gif");
}
+ icone_horizontale (_L('Reparer les liens'), generer_url_ecrire('reparer_liens_documents'),"../"._DIR_PLUGIN_GESTION_DOCUMENTS."/stock_broken_image.png");
echo "<form action='".generer_url_ecrire('portfolio',generer_query_string($conteneur,"",$nb_aff,$filtre))."' method='post'><div>\n";
echo _L('Type :') . "<br /><select name='id_type'";
Added: _plugins_/_amelioration_admin_/gestion_documents/exec/reparer_liens_documents.php
--- _plugins_/_amelioration_admin_/gestion_documents/exec/reparer_liens_documents.php (added)
+++ _plugins_/_amelioration_admin_/gestion_documents/exec/reparer_liens_documents.php Fri Jun 9 11:39:56 2006
@@ -0,0 +1,94 @@
+<?php
+
+/*
+ * gestion_documents
+ *
+ * interface de gestion des documents
+ *
+ * Auteur : cedric.morin@yterium.com
+ * © 2006 - Distribue sous licence GPL
+ *
+ */
+
+$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(dirname(__FILE__)))));
+define('_DIR_PLUGIN_GESTION_DOCUMENTS',(_DIR_PLUGINS.end($p)));
+
+function exec_reparer_liens_documents(){
+ global $connect_statut;
+
+ include_spip ("inc/presentation");
+ include_spip ("inc/documents");
+ include_spip ("inc/logos");
+ include_spip ("inc/session");
+ include_spip ("inc/indexation");
+
+ //
+ // Recupere les donnees
+ //
+
+ debut_page(_L("Reparer les liens"), "documents", "documents");
+ debut_gauche();
+
+
+ //////////////////////////////////////////////////////
+ // Boite "voir en ligne"
+ //
+
+ debut_boite_info();
+
+ echo propre(_L('Cette page reconstitue les liens entre documents et articles dans lequel ils sont insés;rés par un tag <imgxx> <docxx> ou <embxx>'));
+
+ fin_boite_info();
+
+ debut_raccourcis();
+ icone_horizontale (_L('Portfolio'),
+ generer_url_ecrire('portfolio'),
+ "../"._DIR_PLUGIN_GESTION_DOCUMENTS."/stock_broken_image.png");
+ fin_raccourcis();
+ debut_droite();
+
+ global $connect_statut;
+ if ($connect_statut != '0minirezo') {
+ echo "<strong>"._T('avis_acces_interdit')."</strong>";
+ fin_page();
+ exit;
+ }
+
+ $liste_tables = array('spip_articles'=>'spip_documents_articles','spip_breves'=>'spip_documents_breves','spip_rubriques'=>'spip_documents_rubriques');
+
+
+ foreach($liste_tables as $table=>$lien){
+ $primary = primary_index_table($table);
+ $res = spip_query("SELECT * FROM $table");
+ while ($row = spip_fetch_array($res,SPIP_ASSOC)){
+ $liste_doc = array();
+ $id_objet = $row[$primary];
+ foreach($row as $field=>$value){
+ if (preg_match_all(",<(img|doc|emb)([0-9]+)(\|[[:alnum:]])*>,",$value,$matches,PREG_SET_ORDER)){
+ foreach($matches as $match){
+ #echo "$primary=$id_objet champ $field : tag " . $match[1] .$match[2] ."<br/>";
+ $liste_doc[intval($match[2])]=true;
+ }
+ }
+ }
+ if (count($liste_doc)){
+ // reperer les liens deja existants
+ $cond = calcul_mysql_in("id_document", implode(",",array_keys($liste_doc)));
+ $res2 = spip_query("SELECT * FROM $lien WHERE $cond AND $primary=".spip_abstract_quote($id_objet));
+ while ($row2 = spip_fetch_array($res2))
+ unset($liste_doc[$row2['id_document']]);
+ }
+ if (count($liste_doc)){
+ foreach($liste_doc as $id_document=>$dummy){
+ echo "lien (id_document=$id_document,$primary=$id_objet) ajouté <br/>";
+ spip_abstract_insert($lien,"(id_document,$primary)","(".spip_abstract_quote($id_document).",".spip_abstract_quote($id_objet).")");
+ }
+ }
+ }
+ }
+
+ echo _L("Liens mis a jour");
+ fin_page();
+}
+
+?>