<?php
namespace nur\mapper\item;

use nur\mapper\base\Mapper;

/**
 * Class EnsureLatin1Mapper: s'assurer que toutes les valeurs chaines peuvent
 * être converties en latin1 sans problème. les chaines restent en utf-8, mais
 * elles sont translitérées si nécessaire
 */
class EnsureLatin1Mapper extends Mapper {
  static function ensure_latin1(&$values): void {
    if (is_array($values)) {
      foreach ($values as &$value) {
        self::ensure_latin1($value);
      }; unset($value);
    } elseif (is_string($values)) {
      $latin1 = iconv("utf-8", "latin1//TRANSLIT//IGNORE", $values);
      $values = iconv("latin1", "utf-8", $latin1);
    }
  }

  function mapper($item) {
    self::ensure_latin1($item);
    return $item;
  }
}