src/Api/Helper/PaysHelper.php line 107

Open in your IDE?
  1. <?php
  2. namespace App\Api\Helper;
  3. use Symfony\Component\Yaml\Yaml;
  4. class PaysHelper {
  5.     protected $client;
  6.     protected $locale;
  7.     protected $rootdir;
  8.     public function __construct(\App\Api\ApiClient $client, $locale, $rootdir) {
  9.         $this->client = $client;
  10.         $this->locale = $locale;
  11.         $this->rootdir = $rootdir;
  12.     }
  13.     public function getOneBySlug($slug) {
  14.         
  15.         /*(jb) liste des exceptions de slug */
  16.         $slugExceptionArray = [
  17.             "indonesia" => "indonesie",
  18.             "thailand" => "thailande",
  19.             "cambodia" => "cambodge",
  20.         ];
  21.         if(isset($slugExceptionArray[$slug])){
  22.             $slug = $slugExceptionArray[$slug];
  23.         }
  24.         $pays = $this->client->get('/pays/' . $slug);
  25.         
  26.         if (!empty($pays)) {
  27.             return $pays[0];
  28.         }
  29.         return null;
  30.         
  31.     }
  32.     
  33.     public function getAll($sort = null, $direction = null, $limit = null, $offset = null) {
  34.         
  35.         $param = '';
  36.         $param .= $sort ? '&sort=' . $sort : '';
  37.         $param .= $direction ? '&direction=' . $direction : '';
  38.         $param .= $limit ? '&limit=' . $limit : '';
  39.         $param .= $offset ? '&offset=' . $offset : '';
  40.         
  41.         $pays = $this->client->get('/pays?1=1' . $param);
  42.         // OD-340 / suppression de la Birmanie => ajout d'un filtre sur l'id
  43.         $arrResults = [];
  44.         $arrToExclude = [10]; // Les pays à exclure
  45.         foreach ($pays as $item) {
  46.             if (!in_array($item['pays_id'], $arrToExclude)) {
  47.                 $arrResults[] = $item;
  48.             }
  49.         }
  50.         return $arrResults;
  51.     }
  52.     public function getAllMultiple($paysSlugs = [], $theme = '', $favoris = '', $dateDebut = '', $duree = '', $tag = '', $sort = null, $direction = null, $limit = null, $offset = null) {
  53.         $param  = '';
  54.         foreach ($paysSlugs as $pays) {
  55.             $param .= $pays ? '&pays[]=' . $pays : '';
  56.         }
  57.         $param .= $theme ? '&theme=' . $theme : '';
  58.         $param .= $favoris ? '&favoris=' . $favoris : '';
  59.         $param .= $dateDebut ? '&dateDebut=' . $dateDebut : '';
  60.         $param .= $duree ? '&duree=' . $duree : '';
  61.         $param .= $sort ? '&sort=' . $sort : '';
  62.         $param .= $tag ? '&tag=' . $tag : '';
  63.         $param .= $direction ? '&direction=' . $direction : '';
  64.         $param .= $limit ? '&limit=' . $limit : '';
  65.         $param .= $offset ? '&offset=' . $offset : '';
  66.         //dd($param);
  67.         $voyages = $this->client->get('/tours?1=1' . $param);
  68.         //dd('/tours?1=1' . $param);
  69.         return $voyages;
  70.     }
  71.     
  72.     public function getAllTranslated($locale,$context = null) {
  73.         $arrPaysTranslated = [];
  74.         $ArrPays = $this->getAll();
  75.         foreach ($ArrPays as $pays) {
  76.             $data = [
  77.                 "table"=>"ext_pays",
  78.                 "content_id"=>$pays['pays_id'],
  79.                 "locale"=>$locale
  80.             ];
  81.             //19/07/21 - TOM - cache pour les traductions car beaucoup trop long
  82.             if(!is_null($context)){
  83.                 $strTradFile = $this->rootdir . DIRECTORY_SEPARATOR ."public" . DIRECTORY_SEPARATOR ."cache-traductions.yaml";
  84.     
  85.                 $arrYamlFile = Yaml::parseFile($strTradFile);
  86.             }else{
  87.                 $strTradFile = "cache-traductions.yaml";
  88.     
  89.                 $arrYamlFile = Yaml::parseFile($strTradFile);
  90.             }
  91.             
  92.             //Si traduction trouvée
  93.             if(isset($arrYamlFile[md5(serialize($data))])) {
  94.                 $arrPaysTranslated[] = unserialize(urldecode($arrYamlFile[md5(serialize($data))]));
  95.             }
  96.             //Si non trouvée
  97.             else {
  98.                 //Appel à l'API
  99.                 $paysTranslated = $this->client->post('/find-traduction-content',$data);
  100.                 //Mise en cache
  101.                 file_put_contents($strTradFile, Yaml::dump(array_merge(is_array($arrYamlFile) ? $arrYamlFile : [], [md5(serialize($data)) => urlencode(serialize($paysTranslated))])));
  102.         
  103.                 $arrPaysTranslated[] = $paysTranslated;
  104.             }
  105.         }
  106.         return $arrPaysTranslated;
  107.     }
  108. }