Changeset 92753 in spip-zone


Ignore:
Timestamp:
Nov 8, 2015, 8:01:49 PM (4 years ago)
Author:
marcimat@…
Message:

En relation avec #3576 : ne pas actualiser les liens des documents vus systématiquement, mais seulement s'il y a une différence entre le texte et la base de données.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/inc/marquer_doublons_doc.php

    r92751 r92753  
    110110        ));
    111111
    112         // tous les documents liés à l'article sont considérés non vus
    113         objet_qualifier_liens(array('document'=>'*'), array($type=>$id), array('vu'=>'non'));
     112        $texte_documents_vus = $GLOBALS['doublons_documents_inclus'];
    114113
    115         // ceux présents sont considérés comme vus
    116         if (count($GLOBALS['doublons_documents_inclus'])){
    117                 // on repasse par une requete sur spip_documents pour verifier que les documents existent bien !
    118                 $in_liste = sql_in('id_document', $GLOBALS['doublons_documents_inclus']);
    119                 $res = sql_allfetsel("id_document", "spip_documents", $in_liste);
    120                 $res = array_map('reset', $res);
    121                 // Creer le lien s'il n'existe pas deja
    122                 objet_associer(array('document'=>$res),array($type=>$id),array('vu'=>'oui'));
    123                 objet_qualifier_liens(array('document'=>$res),array($type=>$id),array('vu'=>'oui'));
     114        // on ne modifie les liaisons que si c'est nécessaire
     115        $bdd_documents_vus = array(
     116                'oui' => array(),
     117                'non' => array()
     118        );
     119
     120        $liaisons = objet_trouver_liens(array('document'=>'*'), array($type => $id));
     121        foreach ($liaisons as $l) {
     122                $bdd_documents_vus[$l['vu']][] = $l['id_document'];
     123        }
     124
     125        // il y en a des nouveaux documents vus dans le texte
     126        $nouveaux = array_diff($texte_documents_vus, $bdd_documents_vus['oui']);
     127
     128        // il y en a des anciens documents vus dans la bdd
     129        $anciens = array_diff($bdd_documents_vus['oui'], $texte_documents_vus);
     130
     131        // si on a des choses à actualiser
     132        if ($nouveaux OR $anciens) {
     133                if ($nouveaux) {
     134                        // on vérifie que les documents indiqués vus existent réellement tout de même (en cas d'erreur de saisie)
     135                        $ids = sql_allfetsel("id_document", "spip_documents", sql_in('id_document', $nouveaux));
     136                        $ids = array_map('reset', $ids);
     137                        if ($ids) {
     138                                var_dump('associer');
     139                                // Creer le lien s'il n'existe pas déjà
     140                                objet_associer(array('document' => $ids), array($type => $id), array('vu' => 'oui'));
     141                                objet_qualifier_liens(array('document' => $ids), array($type => $id), array('vu' => 'oui'));
     142                        }
     143                }
     144                if ($anciens) {
     145                        objet_qualifier_liens(array('document' => $anciens), array($type => $id), array('vu' => 'non'));
     146                }
    124147        }
    125148}
Note: See TracChangeset for help on using the changeset viewer.