Changeset 110142 in spip-zone


Ignore:
Timestamp:
May 8, 2018, 1:34:43 PM (3 years ago)
Author:
tcharlss@…
Message:

v1.0.7 : chercher en priorité les images aves les meilleurs résolutions. On refactorise un peu le pipeline pour mutualiser une partie du code. On passe en test car c'est utilisé sur plusieurs sites en prod et ça fonctionne très bien.

Location:
_plugins_/logo_auto/branches/logo_auto_php
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/logo_auto/branches/logo_auto_php/logo_auto_pipelines.php

    r107853 r110142  
    99 *
    1010 * Dans l'ordre, si aucun logo n'a été trouvé avant :
    11  * - 1ère image jointe au contenu
    12  * - 1ère vignette de document joint au contenu
     11 * - image jointe au contenu, meilleure résolution
     12 * - vignette de document joint au contenu, meilleure résolution
    1313 *
    1414 * @param array $flux
     
    1616 */
    1717function logo_auto_quete_logo_objet($flux) {
     18
    1819        // Si personne n'a trouvé de logo avant et que c'est pas pour le survol
    1920        if (empty($flux['data']) and $flux['args']['mode'] !== 'off') {
    20                 // On cherche la première image jointe au contenu
     21
     22                // On cherche une image jointe au contenu avec la meilleure résolution.
    2123                include_spip('base/abstract_sql');
    22                 if ($image = sql_fetsel(
    23                         'fichier, extension',
    24                         'spip_documents AS d' .
    25                                 ' INNER JOIN spip_documents_liens AS l' .
    26                                 ' ON d.id_document = l.id_document',
     24                $image = sql_fetsel(
    2725                        array(
    28                                 'l.objet = '.sql_quote($flux['args']['objet']),
    29                                 'l.id_objet = '.intval($flux['args']['id_objet']),
    30                                 sql_in('extension', array('png', 'jpg', 'gif')),
     26                                'fichier',
     27                                'media',
     28                                '(largeur * hauteur) AS mpx',
     29                                //'IF (largeur>hauteur, largeur/hauteur, hauteur/largeur) AS ratio',
    3130                        ),
    32                         '', //group
    33                         '0+titre, d.id_document'
    34                 )) {
     31                        'spip_documents AS docs' .
     32                                ' INNER JOIN spip_documents_liens AS liens' .
     33                                ' ON docs.id_document = liens.id_document',
     34                        array(
     35                                'liens.objet = ' . sql_quote($flux['args']['objet']),
     36                                'liens.id_objet = ' . intval($flux['args']['id_objet']),
     37                                'media = ' . sql_quote('image'),
     38                        ),
     39                        '', // group
     40                        'mpx DESC, 0+titre, docs.id_document'
     41                );
     42
     43                // Sinon on cherche une vignette de document avec la meilleure résolution.
     44                if (!$image) {
     45                        $image = sql_fetsel(
     46                                array(
     47                                        'vignettes.fichier',
     48                                        'vignettes.media',
     49                                        '(vignettes.largeur * vignettes.hauteur) AS mpx',
     50                                        //'IF (vignettes.largeur>vignettes.hauteur, vignettes.largeur/vignettes.hauteur, vignettes.hauteur/vignettes.largeur) AS ratio',
     51                                ),
     52                                'spip_documents_liens AS liens' .
     53                                        ' JOIN spip_documents AS vignettes' .
     54                                        ' INNER JOIN spip_documents as docs' .
     55                                                ' ON docs.id_vignette = vignettes.id_document' .
     56                                                ' AND docs.id_document = liens.id_document',
     57                                array(
     58                                        'liens.objet = ' . sql_quote($flux['args']['objet']),
     59                                        'liens.id_objet = ' . intval($flux['args']['id_objet']),
     60                                        'vignettes.media = ' . sql_quote('image'),
     61                                ),
     62                                '', // group
     63                                'mpx DESC, 0+vignettes.titre, docs.id_document'
     64                        );
     65                }
     66
     67                // Si on a trouvé une image
     68                if (!empty($image['fichier'])) {
    3569                        // Si c'est un URL on retourne le chemin directement
    3670                        if (filter_var($image['fichier'], FILTER_VALIDATE_URL)) {
     
    4175                                $chemin_complet = _DIR_IMG . $image['fichier'];
    4276                        }
    43                        
     77
    4478                        $flux['data'] = array(
    45                                 'chemin' => $chemin_complet,
     79                                'chemin'    => $chemin_complet,
    4680                                'timestamp' => @filemtime($chemin_complet),
    4781                        );
    4882                }
    49                 // Si on ne trouve pas d'image, on cherche une vignette de document
    50                 elseif ($vignette = sql_fetsel(
    51                         'v.fichier',
    52                         'spip_documents_liens AS l' .
    53                                 ' JOIN spip_documents AS v' .
    54                                 ' INNER JOIN spip_documents as d' .
    55                                         ' ON d.id_vignette = v.id_document' .
    56                                         ' AND d.id_document = l.id_document',
    57                         array(
    58                                 'l.objet = '.sql_quote($flux['args']['objet']),
    59                                 'l.id_objet = '.intval($flux['args']['id_objet']),
    60                         ),
    61                         '', //group
    62                         '0+d.titre, d.id_document'
    63                 )) {
    64                         // Si c'est un URL on retourne le chemin directement
    65                         if (filter_var($vignette['fichier'], FILTER_VALIDATE_URL)) {
    66                                 $chemin_complet = $vignette['fichier'];
    67                         }
    68                         // Sinon on va le chercher dans IMG
    69                         else {
    70                                 $chemin_complet = _DIR_IMG . $vignette['fichier'];
    71                         }
    72                        
    73                         $flux['data'] = array(
    74                                 'chemin' => $chemin_complet,
    75                                 'timestamp' => @filemtime($chemin_complet),
    76                         );
    77                 }
     83
    7884        }
    79        
     85
    8086        return $flux;
    8187}
  • _plugins_/logo_auto/branches/logo_auto_php/paquet.xml

    r107853 r110142  
    22        prefix="logo_auto"
    33        categorie="multimedia"
    4         version="1.0.6"
    5         etat="experimental"
     4        version="1.0.7"
     5        etat="test"
    66        compatibilite="[3.1.0;3.2.*]"
    77        logo="logo_auto.png"
Note: See TracChangeset for help on using the changeset viewer.