Changeset 96945 in spip-zone


Ignore:
Timestamp:
May 2, 2016, 5:52:06 AM (5 years ago)
Author:
bystrano@…
Message:

L'API editer_logo utilise le nouveau système à base de rôles

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/logos_roles/trunk/action/editer_logo.php

    r96944 r96945  
    3030 *     `on` ou `off`
    3131 */
    32 function logo_supprimer($objet, $id_objet, $etat) {
     32function logo_supprimer($objet, $id_objet, $role) {
    3333        $chercher_logo = charger_fonction('chercher_logo', 'inc');
    3434        $objet = objet_type($objet);
    3535        $primary = id_table_objet($objet);
    36         include_spip('inc/chercher_logo');
    3736
    38         // existe-t-il deja un logo ?
    39         $logo = $chercher_logo($id_objet, $primary, $etat);
    40         if ($logo) {
     37        $logo = $chercher_logo($id_objet, $primary, $role);
     38        // si pas de logo on ne fait rien
     39        if (! $logo) {
     40                return;
     41        }
     42
     43        include_spip('action/editer_liens');
     44        // S'il n'y pas de document qui gère le logo, on le supprime avec la méthode
     45        // historique
     46        if (! objet_trouver_liens(array('document' => '*'), array($objet => $id_objet), array('role' => $role))) {
    4147                spip_unlink($logo[0]);
     48        } else {
     49                // Si le logo est géré par un document on ne supprime que le lien
     50                objet_dissocier(
     51                        array('document' => '*'),
     52                        array($objet => $id_objet),
     53                        array('role' => $role)
     54                );
    4255        }
    4356}
     
    5669 *     Erreur, sinon ''
    5770 */
    58 function logo_modifier($objet, $id_objet, $etat, $source) {
     71function logo_modifier($objet, $id_objet, $role, $source) {
    5972        $chercher_logo = charger_fonction('chercher_logo', 'inc');
    6073        $objet = objet_type($objet);
     
    6376        $type = type_du_logo($primary);
    6477
    65         // nom du logo
    66         $nom = $type . $etat . $id_objet;
    67 
    68         // supprimer le logo eventueel existant
    69         logo_supprimer($objet, $id_objet, $etat);
    70 
    71         include_spip('inc/documents');
    72         $erreur = '';
     78        // supprimer le logo éventuel existant
     79        logo_supprimer($objet, $id_objet, $role);
    7380
    7481        if (!$source) {
    7582                spip_log('spip_image_ajouter : source inconnue');
    76                 $erreur = 'source inconnue';
    77 
    78                 return $erreur;
     83                return $erreur = 'source inconnue';
    7984        }
    8085
    81         $file_tmp = _DIR_LOGOS . $nom . '.tmp';
    82 
    83         $ok = false;
    84         // fichier dans upload/
    85         if (is_string($source)) {
    86                 if (file_exists($source)) {
    87                         $ok = @copy($source, $file_tmp);
    88                 } elseif (file_exists($f = determine_upload() . $source)) {
    89                         $ok = @copy($f, $file_tmp);
    90                 }
    91         } // Intercepter une erreur a l'envoi
    92         elseif (!$erreur = check_upload_error($source['error'], '', true)) {
    93                 // analyse le type de l'image (on ne fait pas confiance au nom de
    94                 // fichier envoye par le browser : pour les Macs c'est plus sur)
    95                 $ok = deplacer_fichier_upload($source['tmp_name'], $file_tmp);
     86        include_spip('action/ajouter_documents');
     87        $ajouter_un_document = charger_fonction('ajouter_un_document', 'action');
     88        // On ne passe pas l'objet, pour éviter de créer un lien avec le rôle par
     89        // défaut. On fait le lien à la main un peu plus bas.
     90        $id_document = $ajouter_un_document('new', $source, null, null, 'image');
     91        if (is_string($id_document)) {
     92                return $erreur = $id_document;
    9693        }
    9794
    98         if ($erreur) {
    99                 return $erreur;
    100         }
    101         if (!$ok or !file_exists($file_tmp)) {
    102                 spip_log($erreur = "probleme de copie pour $file_tmp ");
     95        include_spip('action/editer_liens');
     96        objet_associer(
     97                array('document' => $id_document),
     98                array($objet => $id_objet),
     99                array('role' => $role)
     100        );
    103101
    104                 return $erreur;
    105         }
    106 
    107         $size = @getimagesize($file_tmp);
    108         $type = !$size ? '' : ($size[2] > 3 ? '' : $GLOBALS['formats_logos'][$size[2] - 1]);
    109         if ($type) {
    110                 @rename($file_tmp, $file_tmp . ".$type");
    111                 $file_tmp = $file_tmp . ".$type";
    112                 $poids = filesize($file_tmp);
    113 
    114                 if (defined('_LOGO_MAX_WIDTH') or defined('_LOGO_MAX_HEIGHT')) {
    115 
    116                         if ((defined('_LOGO_MAX_WIDTH') and _LOGO_MAX_WIDTH and $size[0] > _LOGO_MAX_WIDTH)
    117                                 or (defined('_LOGO_MAX_HEIGHT') and _LOGO_MAX_HEIGHT and $size[1] > _LOGO_MAX_HEIGHT)
    118                         ) {
    119                                 $max_width = (defined('_LOGO_MAX_WIDTH') and _LOGO_MAX_WIDTH) ? _LOGO_MAX_WIDTH : '*';
    120                                 $max_height = (defined('_LOGO_MAX_HEIGHT') and _LOGO_MAX_HEIGHT) ? _LOGO_MAX_HEIGHT : '*';
    121 
    122                                 // pas la peine d'embeter le redacteur avec ca si on a active le calcul des miniatures
    123                                 // on met directement a la taille maxi a la volee
    124                                 if (isset($GLOBALS['meta']['creer_preview']) and $GLOBALS['meta']['creer_preview'] == 'oui') {
    125                                         include_spip('inc/filtres');
    126                                         $img = filtrer('image_reduire', $file_tmp, $max_width, $max_height);
    127                                         $img = extraire_attribut($img, 'src');
    128                                         $img = supprimer_timestamp($img);
    129                                         if (@file_exists($img) and $img !== $file_tmp) {
    130                                                 spip_unlink($file_tmp);
    131                                                 @rename($img, $file_tmp);
    132                                                 $size = @getimagesize($file_tmp);
    133                                         }
    134                                 }
    135                                 // verifier au cas ou image_reduire a echoue
    136                                 if ((defined('_LOGO_MAX_WIDTH') and _LOGO_MAX_WIDTH and $size[0] > _LOGO_MAX_WIDTH)
    137                                         or (defined('_LOGO_MAX_HEIGHT') and _LOGO_MAX_HEIGHT and $size[1] > _LOGO_MAX_HEIGHT)
    138                                 ) {
    139                                         spip_unlink($file_tmp);
    140                                         $erreur = _T(
    141                                                 'info_logo_max_poids',
    142                                                 array(
    143                                                         'maxi' =>
    144                                                                 _T(
    145                                                                         'info_largeur_vignette',
    146                                                                         array(
    147                                                                                 'largeur_vignette' => $max_width,
    148                                                                                 'hauteur_vignette' => $max_height
    149                                                                         )
    150                                                                 ),
    151                                                         'actuel' =>
    152                                                                 _T(
    153                                                                         'info_largeur_vignette',
    154                                                                         array(
    155                                                                                 'largeur_vignette' => $size[0],
    156                                                                                 'hauteur_vignette' => $size[1]
    157                                                                         )
    158                                                                 )
    159                                                 )
    160                                         );
    161                                 }
    162                         }
    163                 }
    164 
    165                 if (!$erreur and defined('_LOGO_MAX_SIZE') and _LOGO_MAX_SIZE and $poids > _LOGO_MAX_SIZE * 1024) {
    166                         spip_unlink($file_tmp);
    167                         $erreur = _T(
    168                                 'info_logo_max_poids',
    169                                 array(
    170                                         'maxi' => taille_en_octets(_LOGO_MAX_SIZE * 1024),
    171                                         'actuel' => taille_en_octets($poids)
    172                                 )
    173                         );
    174                 }
    175 
    176                 if (!$erreur) {
    177                         @rename($file_tmp, _DIR_LOGOS . $nom . ".$type");
    178                 }
    179         } else {
    180                 spip_unlink($file_tmp);
    181                 $erreur = _T(
    182                         'info_logo_format_interdit',
    183                         array('formats' => join(', ', $GLOBALS['formats_logos']))
    184                 );
    185         }
    186 
    187         return $erreur;
     102        return $erreur = '';
    188103}
Note: See TracChangeset for help on using the changeset viewer.