# Migrer à partir des versions précédentes

L'API de `Zend_File_Transfer` a changé au cours du temps. Si vous avez commencé à utiliser `Zend_File_Transfer` et ses sous-composants avec les versions précédentes, suivez les lignes directrices ci-dessous pour migrer vos scripts et ainsi utiliser la nouvelle API.

## Migrer de la version 1.6 vers 1.7 ou plus récent

### Changements quand vous utilisez des filtres ou des validateurs

Certaines remarques des utilisateurs indiquaient que les validateurs de `Zend_File_Transfer` ne fonctionnaient pas correctement avec `Zend_Config` dû au fait qu'ils n'utilisait pas de tableaux nommés.

De plus, tous les filtres et validateurs de `Zend_File_Transfer` ont été réécrits. Même si les anciennes signatures continuent à fonctionner, elles ont été marqués comme dépréciées et émettent une notice PHP vous informant de faire le changement.

La liste suivante vous montre les changements à réaliser pour une utilisation appropriée des paramètres.

#### Filtre Rename

- Ancienne API : `Zend_Filter_File_Rename($oldfile, $newfile, $overwrite)`

- Nouvelle API : `Zend_Filter_File_Rename($options)` où `$options` accepte un tableau avec les clés suivantes : source est équivalent à `$oldfile`, target est équivalent à `$newfile`, overwrite est équivalent à `$overwrite.`

##### Changer le filtre rename entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addFilter('Rename',
                       array('/path/to/oldfile', '/path/to/newfile', true));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addFilter('Rename',
                       array('source' => '/path/to/oldfile',
                             'target' => '/path/to/newfile',
                             'overwrite' => true));

#### Validateur Count

- Ancienne API : `Zend_Validate_File_Count($min, $max)`

- Nouvelle API : `Zend_Validate_File_Count($options)` où `$options` accepte un tableau avec les clés suivantes : min est équivalent à `$min`, max est équivalent à `$max`.

##### Changer le validateur count entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Count',
                          array(2, 3));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Count',
                          false,
                          array('min' => 2,
                                'max' => 3));

#### Validateur Extension

- Ancienne API : `Zend_Validate_File_Extension($extension, $case)`

- Nouvelle API : `Zend_Validate_File_Extension($options)` où `$options` accepte un tableau avec les clés suivantes : * est équivalent à `$extension` et peut avoir tout autre clé, case est équivalent à `$case`.

##### Changer le validateur extension entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Extension',
                       array('jpg,gif,bmp', true));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Extension',
                          false,
                          array('extension1' => 'jpg,gif,bmp',
                                'case' => true));

#### Validateur FilesSize

- Ancienne API : `Zend_Validate_File_FilesSize($min, $max, $bytestring)`

- Nouvelle API : `Zend_Validate_File_FilesSize($options)` où `$options` accepte un tableau avec les clés suivantes : min est équivalent à `$min`, max est équivalent à `$max`, bytestring est équivalent à `$bytestring`.

De plus la signature de la méthode `useByteString()` a changé. Elle peut être seulement utilisée pour tester si le validateur prévoie d'utiliser les chaînes lisibles ou la valeur brute dans les messages générées. Pour paramétrer la valeur de cette option, utilisez la méthode `setUseByteString()`.

##### Changer le validateur filessize entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('FilesSize',
                          array(100, 10000, true));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('FilesSize',
                          false,
                          array('min' => 100,
                                'max' => 10000,
                                'bytestring' => true));

    // Exemple pour 1.6
    $upload->useByteString(true); // set flag

    // Même exemple pour 1.7
    $upload->setUseByteSting(true); // set flag

#### Validateur Hash

- Ancienne API : `Zend_Validate_File_Hash($hash, $algorithm)`

- Nouvelle API : `Zend_Validate_File_Hash($options)` où `$options` accepte un tableau avec les clés suivantes : * est équivalent à `$hash` et peut avoir tout autre clé, algorithm est équivalent à `$algorithm`.

##### Changer le validateur hash entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Hash',
                          array('12345', 'md5'));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Hash',
                          false,
                          array('hash1' => '12345',
                                'algorithm' => 'md5'));

#### Validateur ImageSize

- Ancienne API : `Zend_Validate_File_ImageSize($minwidth, $minheight, $maxwidth, $maxheight)`

- Nouvelle API : `Zend_Validate_File_FilesSize($options)` où `$options` accepte un tableau avec les clés suivantes : minwidth est équivalent à `$minwidth`, maxwidth est équivalent à `$maxwidth`, minheight est équivalent à `$minheight`, maxheight est équivalent à `$maxheight`.

##### Changer le validateur imagesize entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('ImageSize',
                          array(10, 10, 100, 100));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('ImageSize',
                          false,
                          array('minwidth' => 10,
                                'minheight' => 10,
                                'maxwidth' => 100,
                                'maxheight' => 100));

#### Validateur Size

- Ancienne API : `Zend_Validate_File_Size($min, $max, $bytestring)`

- Nouvelle API : `Zend_Validate_File_Size($options)` où `$options` accepte un tableau avec les clés suivantes : min est équivalent à `$min`, max est équivalent à `$max`, bytestring est équivalent à `$bytestring`

##### Changer le validateur size entre 1.6 et 1.7

    // Exemple pour 1.6
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Size',
                          array(100, 10000, true));

    // Même exemple pour 1.7
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('Size',
                          false,
                          array('min' => 100,
                                'max' => 10000,
                                'bytestring' => true));

## Migrer de la version 1.6.1 vers 1.6.2 ou plus récent

### Changements quand vous utilisez des validateurs

Certaines remarques des utilisateurs indiquaient que les validateurs de `Zend_File_Transfer` ne fonctionnaient pas comme ceux par défaut fournis avec `Zend_Form`. `Zend_Form` permet par exemple l'utilisation du paramètre `breakChainOnFailure` qui stoppe la validation de tous les validateurs suivants dès qu'une erreur de validation apparaît.

Nous avons donc ajouter ce paramètre à tous les validateurs existants pour `Zend_File_Transfer`.

- Ancienne API : `addValidator($validator, $options, $files)`.

- Nouvelle API : `addValidator($validator, $breakChainOnFailure, $options, $files)`.

Pour migrer vos scripts vers la nouvelle API, ajoutez simplement un a `FALSE` après voir défini le validateur souhaité.

#### Changer les validateurs de fichiers de 1.6.1 vers 1.6.2

    // Exemple pour 1.6.1
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('FilesSize', array('1B', '100kB'));

    // Même exemple pour 1.6.2 et plus récent
    // Notez l'ajout du booléen false
    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('FilesSize', false, array('1B', '100kB'));