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($strTradFileYaml::dump(array_merge(is_array($arrYamlFile) ? $arrYamlFile : [], [md5(serialize($data)) => urlencode(serialize($paysTranslated))])));
  102.         
  103.                 $arrPaysTranslated[] = $paysTranslated;
  104.             }
  105.         }
  106.         return $arrPaysTranslated;
  107.     }
  108. }