Changeset 44136 in spip-zone


Ignore:
Timestamp:
Feb 4, 2011, 2:43:03 PM (9 years ago)
Author:
cedric@…
Message:

prevoir que l'on peut rattacher un document a un autre. C'est une pre-figuration de la reorganisation des documents.
Dans spip_documents_liens id_document designe toujours l'enfant (dependant de) et (id_objet,objet) le parent.
Donc ici un document annexe (sous-titrage, licence, ..) est designe par id_document, et (id_objet,objet='document') pointe vers le document maitre.
Des variantes du mode 'vignette' sont donc a prevoir, pour les documents annexes

Location:
_plugins_/mediatheque
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mediatheque/action/dissocier_document.php

    r38819 r44136  
    4141
    4242        // Si c'est une vignette, l'eliminer du document auquel elle appartient
     43        // cas tordu peu probable
    4344        sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document);
    4445
     
    6970        // On supprime ensuite s'il est orphelin
    7071        // et si demande
    71         if ($supprime AND !sql_countsel('spip_documents_liens', 'id_document='.$id_document)){
     72        // ici on ne bloque pas la suppression d'un document rattache a un autre
     73        if ($supprime AND !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=".$id_document)){
    7274                $supprimer_document = charger_fonction('supprimer_document','action');
    7375                return $supprimer_document($id_document);
  • _plugins_/mediatheque/action/editer_document.php

    r43458 r44136  
    152152       
    153153                $trouver_table = charger_fonction('trouver_table','base');
    154                 $res = sql_select('id_objet,objet','spip_documents_liens','id_document='.intval($id_document));
     154                $res = sql_select('id_objet,objet','spip_documents_liens',"objet!='document' AND id_document=".intval($id_document));
    155155                // dans 10 ans, ca nous fera un bug a corriger vers 2018
    156156                // penser a ouvrir un ticket d'ici la :p
  • _plugins_/mediatheque/action/supprimer_document.php

    r39199 r44136  
    4040                sql_delete('spip_documents_liens', 'id_document='.$doc['id_vignette']);
    4141        }
     42        // Si c'est un document ayant des documents annexes (sous-titre, ...)
     43        // les supprimer aussi
     44        $annexes = array_map('reset',sql_allfetsel("id_document","spip_documents_liens","objet='document' AND id_objet=".intval($id_document)));
     45  foreach($annexes as $id){
     46          action_supprimer_document_dist($id);
     47  }
    4248
    4349        // dereferencer dans la base
     50  sql_delete('spip_documents_liens', 'id_document='.intval($id_document));
    4451        sql_delete('spip_documents', 'id_document='.intval($id_document));
    4552
  • _plugins_/mediatheque/action/supprimer_tous_orphelins.php

    r42128 r44136  
    2929        $ids_doc_orphelins = sql_select( "id_document", "spip_documents", $where );
    3030
    31         include_spip('action/supprimer_document');
    32 
     31        $supprimer_document = charger_fonction('supprimer_document','action');
    3332        while ($row = sql_fetch($ids_doc_orphelins)) {
    34         action_supprimer_document_dist($row['id_document']); // pour les orphelins du contexte, on traite avec la fonction existante
     33                $supprimer_document($row['id_document']); // pour les orphelins du contexte, on traite avec la fonction existante
    3534        }
    3635}
  • _plugins_/mediatheque/medias_autoriser.php

    r43458 r44136  
    126126                OR !autoriser('ecrire','','',$qui))
    127127                return false;
    128         if (sql_countsel('spip_documents_liens', 'id_document='.intval($id)))
     128        // ne pas considerer le document parent
     129        // (cas des vignettes ou autre document annexe rattache a un document)
     130        if (sql_countsel('spip_documents_liens', "objet!='document' AND id_document=".intval($id)))
    129131                return false;
    130132
Note: See TracChangeset for help on using the changeset viewer.