|
Subject: la contrib deplacer document Newsgroups: gmane.comp.web.spip.user Date: 2005-07-22 13:34:15 GMT (3 years, 49 weeks, 5 days, 11 hours and 31 minutes ago)
Bonjour !! Je viens d'implémenter la contrib deplacer un document vers un répertoire autre que le répertoir IMG (voir http://www.spip-contrib.net/Deplacer-un-document-vers-un) En fait cette contrib est intéressante car elle classe les documents suivant les répertoires du site. C'est donc plus simple à gérer lorsque l'on as beaucoup de docs. Seulement voila, avec spip 1.8.1, il y a quelques soucis... Déja elle fait appel à une fonction construire_hierarchie, qui ne fait plus apparament partie de la 1.8.1 .Je l'ai quand même choper d'une autre version de spip et je l'ai placé dans mes_fonctions.php3. Le scripte deplacer_document ne fait plus d'erreur, il déplace bien le fichier vers le bon répertoire, en revanche, le lien vers le document n'est plus bon du tout et il ne recréer pas l'arborescance(il déplace seulement le fichier vers un autre répertoire). quelqu'un a-t-il une idée par rapport à ce probleme, avez vous réussi à l'implémenter dans spip 1.8.1 ??? Merci ! !! ci joint mon fichier mes_fonctions.php3 <?
* +-------------------------------------+
function construire_hierarchie($id_rubrique) {
function deplacer_document($url,$chemin,$racine,$type)
// on cherche dans le code HTML d'affichage les chemins d'accès spécifiques aux docs
//on récupère l'id du document et de l'article auquel il est rattaché dans la BDD
// variable ok teste si la création des répertoires s'est correctement effectuée
//si aucun chemin n'est spécifié on crée une arborescence
//on construit la hierarchie de l'article pour créer le chemin d'accès
$chemin = array();
$result2 = spip_query($query2);
//on crée le nouveau chemin
//on modifie le nom du fichier dans la BDD
$result = spip_query($query);
?> ATTENTION Le message contenu dans cet email ainsi que dans tout fichier attaché est destiné exclusivement aux personnes dont le nom figure ci-dessus. Il peut contenir des informations confidentielles ou protégées par le secret professionnel et dont la divulgation est strictement prohibée. Si vous avez reçu cet email par erreur,détruisez-en le contenu. Vous n'êtes pas autorisé, dans cette hypothèse, à copier, distribuer ou conserver ce message. Merci. WARNING This information in this mail and in any attachments is intended for the above-mentioned addressees only. It may contain privileged or confidential informationthe review, dissemination or disclosure of which is strictly prohibited. If you have received this email by error, please destroy it. In this case, you are not authorisedto disclose, copy, distribute, or retain this message or any part of it. Thank you. <div> <p>Bonjour !! </p> <p>Je viens d'implémenter la contrib deplacer un document vers un répertoire autre que le répertoir IMG (voir <a href="http://www.spip-contrib.net/Deplacer-un-document-vers-un" target="_blank">http://www.spip-contrib.net/Deplacer-un-document-vers-un</a>)</p> <p>En fait cette contrib est intéressante car elle classe les documents suivant les répertoires du site. C'est donc plus simple à gérer lorsque l'on as beaucoup de docs.</p> <p>Seulement voila, avec spip 1.8.1, il y a quelques soucis... Déja elle fait appel à une fonction construire_hierarchie, qui ne fait plus apparament partie de la 1.8.1 .Je l'ai quand même choper d'une autre version de spip et je l'ai placé dans mes_fonctions.php3. Le scripte deplacer_document ne fait plus d'erreur, il déplace bien le fichier vers le bon répertoire, en revanche, le lien vers le document n'est plus bon du tout et il ne recréer pas l'arborescance(il déplace seulement le fichier vers un autre répertoire).</p> <p>quelqu'un a-t-il une idée par rapport à ce probleme, avez vous réussi à l'implémenter dans spip 1.8.1 ??? </p> <p>Merci ! !! </p> <p>ci joint mon fichier mes_fonctions.php3 </p> <p><? <br>/* <br> * +----------------------------------+ <br> * Nom du Filtre : deplacer_document() <br> * +----------------------------------+ <br> * Date : vendredi 21 novembre 2003 <br> * Auteur : seb <br> * schoupas <at> opac-montpellier.fr <br> * +-------------------------------------+ <br> * Fonctions de ce filtre : <br> * deplacer un document vers un repertoire autre que IMG <br> * modifier le chemin indiqué dans la BDD <br> * pointer sur le nouveau chemin pour les URL affichées en HTML. </p> <p> * +-------------------------------------+ <br> * <br> * Pour toute suggestion, remarque, proposition d'ajout <br> * reportez-vous au forum de l'article : <br> * <a href="http://www.uzine.net/spip_contrib/article.php3?id_article=300" target="_blank">http://www.uzine.net/spip_contrib/article.php3?id_article=300</a> </p> <br><p>function construire_hierarchie($id_rubrique) { <br> $hierarchie = ""; <br> $id_rubrique = intval($id_rubrique); <br> while ($id_rubrique) { <br> $hierarchie = $id_rubrique."-".$hierarchie; <br> $query = "SELECT a.id_parent AS ida, b.id_parent AS idb ". <br> "FROM spip_rubriques AS a LEFT JOIN spip_rubriques AS b ON (b.id_rubrique = a.id_parent) ". <br> "WHERE a.id_rubrique = $id_rubrique"; <br> $result = spip_query($query); <br> if ($row = spip_fetch_array($result)) { <br> if ($id_parent = $row['ida']) $hierarchie = $id_parent."-".$hierarchie; <br> $id_grand_parent = $row['idb']; <br> } <br> else break; <br> $id_rubrique = $id_grand_parent; <br> } <br> return $hierarchie; <br>} </p> <p>function deplacer_document($url,$chemin,$racine,$type) <br>{ <br> $type = explode(",",$type); <br> if(is_array($type) ) $type = join ("|", $type); <br> </p> <p> // on cherche dans le code HTML d'affichage les chemins d'accès spécifiques aux docs <br> if(ereg("(IMG)/($type)/([A-Za-z_]*).($type)",$url,$reg) ) <br> { <br> $chemin_old = $reg[1]."/".$reg[2]."/"; <br> $fichier=$reg[3].".".$reg[4]; </p> <p> //on récupère l'id du document et de l'article auquel il est rattaché dans la BDD <br> $query = "SELECT d.id_document,da.id_article,id_rubrique FROM spip_documents d,spip_documents_articles da,spip_articles a WHERE d.id_document=da.id_document AND da.id_article=a.id_article AND fichier ='".$chemin_old.$fichier."'";</p> <p> <br> $result = spip_query($query); <br> $row = spip_fetch_array($result); <br> $id_document = $row["id_document"]; <br> $id_rubrique = $row["id_rubrique"]; </p> <p> // variable ok teste si la création des répertoires s'est correctement effectuée <br> $ok = true; </p> <p> //si aucun chemin n'est spécifié on crée une arborescence <br> if($chemin == "") <br> { </p> <br><p> //on construit la hierarchie de l'article pour créer le chemin d'accès <br> $hierarchie = construire_hierarchie($id_rubrique); <br> <br> $hierarchie = explode("-", substr($hierarchie, 0, -1)); </p> <p> $chemin = array(); <br> $i = 0; <br> <br> foreach($hierarchie as $tmp) <br> { <br> $query2 = "SELECT titre from spip_rubriques where id_rubrique=".$tmp; </p> <p> $result2 = spip_query($query2); <br> $row2 = spip_fetch_array($result2); <br> $chemin[$i] = $row2['titre']; <br> //on vérifie l'existence des répertoires et on les crée le cas échéant <br> $repertoire = $racine.join("/",$chemin); <br> if(!is_dir($repertoire)) <br> $ok = mkdir($repertoire,0666); <br> $i++; <br> } </p> <p> //on crée le nouveau chemin <br> $chemin = $racine.join("/",$chemin)."/"; <br> } <br> <br> //on vérifie maintenant si le fichier existe sur le rep distant <br> //si ce n'est pas le cas, on le déplace du local vers le distant <br> if(!file_exists($chemin.$fichier) && $ok ) <br> { <br> //on copie le fichier vers le repertoire distant <br> if(copy($chemin_old.$fichier, $chemin.$fichier) ) <br> { <br> //si la copie réussit,on l'efface du repertoire local <br> unlink($chemin_old.$fichier); </p> <p> //on modifie le nom du fichier dans la BDD <br> $query = "SELECT fichier from spip_documents WHERE id_document=".$id_document; <br> $result = spip_query($query); <br> $row = spip_fetch_array($result); <br> if($row['fichier']==$chemin_old.$fichier) <br> { <br> $query = "UPDATE spip_documents SET fichier = '".$chemin.$fichier."' WHERE id_document=".$id_document;</p> <p> $result = spip_query($query); <br> } <br> // on remplace avec le bon chemin d'accès à l'affichage <br> $url = ereg_replace ($chemin_old.$fichier, $chemin.$fichier, $url); <br> <br> } <br> } <br> //on retourne l'url modifiée <br> return $url; <br> } <br> //si rien ne ressemble à un chemin type IMG/doc on retourne l'url telle quelle <br> else return $url; <br> <br>}*/ </p> <p>?> </p> <br><p>ATTENTION Le message contenu dans cet email ainsi que dans tout fichier attaché est destiné exclusivement aux personnes dont le nom figure ci-dessus. Il peut contenir des informations confidentielles ou protégées par le secret professionnel et dont la divulgation est strictement prohibée. Si vous avez reçu cet email par erreur,détruisez-en le contenu. Vous n'êtes pas autorisé, dans cette hypothèse, à copier, distribuer ou conserver ce message. Merci.</p> <p>WARNING This information in this mail and in any attachments is intended for the above-mentioned addressees only. It may contain privileged or confidential informationthe review, dissemination or disclosure of which is strictly prohibited. If you have received this email by error, please destroy it. In this case, you are not authorisedto disclose, copy, distribute, or retain this message or any part of it. Thank you.</p> <br> </div> |
|
|