From d7eb8bc81b445bd8d0dcc986dda4cceaaa6259e9 Mon Sep 17 00:00:00 2001
From: efalcy <efalcy@afi-sa.fr>
Date: Fri, 10 Aug 2018 11:21:03 +0200
Subject: [PATCH] dev #65688 : replace 'en transfert de .. a ..' by 'en
 transfert' and fix translations

---
 library/Class/Profil.php                      |  2 +-
 library/Class/WebService/SIGB/Exemplaire.php  | 54 +++++++++++--------
 .../SIGB/Koha/GetRecordsResponseReader.php    | 27 ++++++----
 .../View/Helper/Notice/ExemplairesTable.php   |  6 +--
 .../Class/WebService/SIGB/KohaTest.php        | 14 ++---
 5 files changed, 59 insertions(+), 44 deletions(-)

diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index 7e3e7dfcb4b..558241dc66c 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -365,7 +365,7 @@ class Class_Profil extends Storm_Model_Abstract {
                                                                                  'resa' => 1,
                                                                                  'dispo' => 1,
                                                                                  'date_retour' => 0,
-                                                                                 'en_pret' => Class_WebService_SIGB_Exemplaire::DISPO_EN_PRET]]),
+                                                                                 'en_pret' => Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_EN_PRET')]]),
          'hauteur_banniere' => 100,
          'mail_site' => '',
          'mail_suggestion_achat' => '',
diff --git a/library/Class/WebService/SIGB/Exemplaire.php b/library/Class/WebService/SIGB/Exemplaire.php
index 42cad2852d7..5b40e233f1d 100644
--- a/library/Class/WebService/SIGB/Exemplaire.php
+++ b/library/Class/WebService/SIGB/Exemplaire.php
@@ -20,16 +20,7 @@
  */
 
 class Class_WebService_SIGB_Exemplaire {
-  const DISPO_EN_PRET = 'En prêt';
-  const DISPO_LIBRE = 'Disponible';
-  const DISPO_INDISPONIBLE = 'Indisponible';
-  const DISPO_PERDU = 'Perdu';
-  const DISPO_PILONNE = 'Pilonné';
-  const DISPO_ENDOMMAGE = 'Endommagé';
-  const DISPO_TRANSIT = 'En transit';
-  const DISPO_DEJA_RESERVE = 'Réservé';
-  const DISPO_EN_COMMANDE = 'En commande';
-  const DISPO_EN_TRANSFERT = 'En transfert de %s à %s depuis le %s';
+  use Trait_Translator;
 
 
   protected $id;
@@ -63,11 +54,27 @@ class Class_WebService_SIGB_Exemplaire {
     return new self(null);
   }
 
+  public  function message($code) {
+    $messages = [
+                 'DISPO_EN_PRET' =>  $this->_('En prêt'),
+                 'DISPO_LIBRE' => $this->_('Disponible'),
+                 'DISPO_INDISPONIBLE' => $this->_('Indisponible'),
+                 'DISPO_PERDU' => $this->_('Perdu'),
+                 'DISPO_PILONNE' => $this->_('Pilonné'),
+                 'DISPO_ENDOMMAGE' => $this->_('Endommagé'),
+                 'DISPO_TRANSIT' => $this->_('En transit'),
+                 'DISPO_DEJA_RESERVE' => $this->_('Réservé'),
+                 'DISPO_EN_COMMANDE' => $this->_('En commande'),
+                 'DISPO_EN_TRANSFERT' => $this->_('En transfert')
+    ];
+    return isset($messages[$code]) ? $messages[$code]: '';
+  }
+
 
   public function __construct($id){
     $this->id = $id;
     $this->titre = "";
-    $this->disponibilite = self::DISPO_INDISPONIBLE;
+    $this->disponibilite = self::message('DISPO_INDISPONIBLE');
     $this->bibliotheque = '';
     $this->section = '';
     $this->auteur = '';
@@ -86,6 +93,9 @@ class Class_WebService_SIGB_Exemplaire {
   }
 
 
+
+
+
   public function setId($id) {
     $this->id = $id;
     return $this;
@@ -297,7 +307,7 @@ class Class_WebService_SIGB_Exemplaire {
 
 
   public function setDisponibiliteEnTransit() {
-    return $this->setDisponibilite(self::DISPO_TRANSIT);
+    return $this->setDisponibilite($this->message('DISPO_TRANSIT'));
   }
 
 
@@ -307,49 +317,49 @@ class Class_WebService_SIGB_Exemplaire {
 
 
   public function setDisponibiliteLibre() {
-    $this->setDisponibilite(self::DISPO_LIBRE);
+    $this->setDisponibilite($this->message('DISPO_LIBRE'));
     return $this;
   }
 
 
   public function setDisponibiliteIndisponible()  {
-    $this->setDisponibilite(self::DISPO_INDISPONIBLE);
+    $this->setDisponibilite($this->message('DISPO_INDISPONIBLE'));
     return $this;
   }
 
 
   public function setDisponibilitePerdu() {
-    $this->setDisponibilite(self::DISPO_PERDU);
+    $this->setDisponibilite($this->message('DISPO_PERDU'));
     return $this;
   }
 
 
   public function setDisponibiliteTransfert($to, $from, $datesent) {
-    $this->setDisponibilite(sprintf(self::DISPO_EN_TRANSFERT, $to,$from,$datesent));
+    $this->setDisponibilite($this->message('DISPO_EN_TRANSFERT'));
     return $this;
   }
 
 
   public function setDisponibilitePilonne() {
-    $this->setDisponibilite(self::DISPO_PILONNE);
+    $this->setDisponibilite($this->message('DISPO_PILONNE'));
     return $this;
   }
 
 
   public function setDisponibiliteEndommage() {
-    $this->setDisponibilite(self::DISPO_ENDOMMAGE);
+    $this->setDisponibilite($this->message('DISPO_ENDOMMAGE'));
     return $this;
   }
 
 
   public function setDisponibiliteDejaReserve() {
-    $this->setDisponibilite(self::DISPO_DEJA_RESERVE);
+    $this->setDisponibilite($this->message('DISPO_DEJA_RESERVE'));
     return $this;
   }
 
 
   public function setDisponibiliteEnCommande() {
-    $this->setDisponibilite(self::DISPO_EN_COMMANDE);
+    $this->setDisponibilite($this->message('DISPO_EN_COMMANDE'));
     return $this;
   }
 
@@ -462,7 +472,7 @@ class Class_WebService_SIGB_Exemplaire {
    * @return bool
    */
   public function isPilonne(){
-    return $this->getDisponibilite() == self::DISPO_PILONNE;
+    return $this->getDisponibilite() == $this->message('DISPO_PILONNE');
   }
 
 
@@ -471,7 +481,7 @@ class Class_WebService_SIGB_Exemplaire {
   }
 
   public function isDisponible() {
-    return self::DISPO_LIBRE == $this->disponibilite;
+    return $this->message('DISPO_LIBRE') == $this->disponibilite;
   }
 
 
diff --git a/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php b/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
index 2dd130d9abe..af5e6c8465f 100644
--- a/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
+++ b/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
@@ -21,25 +21,30 @@
 
 class Class_WebService_SIGB_Koha_GetRecordsResponseReader {
   use Class_WebService_SIGB_Koha_TraitFormat;
-
+  use Trait_Translator;
   static protected $_default_reader;
 
-  protected $_record, $_item, $_holds = [];
+  protected $_record, $_item, $_holds = [],
+    $_not_for_loan_status = [];
   protected $_cannot_hold_available = false;
-  protected $_not_for_loan_status = [0 => Class_WebService_SIGB_Exemplaire::DISPO_LIBRE,
-                                     1 => 'Exclu du prêt',
-                                     2 => 'En traitement',
-                                     3 => 'Consultation sur place',
-                                     4 => 'En réserve',
-                                     5 => 'En réparation',
-                                     6 => 'En reliure',
-                                     7 => 'Exclu du prêt temporairement'];
 
   public static function newInstance() {
-    return new self();
+    return (new self())->setNotForLoanStatus();
   }
 
 
+  protected function setNotForLoanStatus() {
+    $this->_not_for_loan_status = [0 => Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_LIBRE'),
+                                   1 => $this->_('Exclu du prêt'),
+                                   2 => $this->_('En traitement'),
+                                   3 => $this->_('Consultation sur place'),
+                                   4 => $this->_('En réserve'),
+                                   5 => $this->_('En réparation'),
+                                   6 => $this->_('En reliure'),
+                                   7 => $this->_('Exclu du prêt temporairement')];
+    return $this;
+  }
+
   /** @category testing */
   public static function setDefaultReader($reader) {
     static::$_default_reader = $reader;
diff --git a/library/ZendAfi/View/Helper/Notice/ExemplairesTable.php b/library/ZendAfi/View/Helper/Notice/ExemplairesTable.php
index 6c986fc0247..b7b6b9a05b9 100644
--- a/library/ZendAfi/View/Helper/Notice/ExemplairesTable.php
+++ b/library/ZendAfi/View/Helper/Notice/ExemplairesTable.php
@@ -246,7 +246,7 @@ class ZendAfi_View_Helper_Notice_Exemplaires_Dispo extends ZendAfi_View_Helper_N
   public function renderContent($exemplaire) {
     $class_dispo='';
     $libelle = $exemplaire->getDisponibilite();
-    $class_dispo = ($libelle == Class_WebService_SIGB_Exemplaire::DISPO_LIBRE)
+    $class_dispo = ($libelle == Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_LIBRE'))
       ? 'disponible'
       : '';
 
@@ -267,8 +267,8 @@ class ZendAfi_View_Helper_Notice_Exemplaires_Dispo extends ZendAfi_View_Helper_N
       $libelle.=
         '<span>'
         .$this->view->_plural($exemplaire->getNbResas(),
-                              '','Nb résa: %s ',
-                              'Nb résas: %s ',
+                              '',$this->view->_('Nb résa: %s '),
+                              $this->view->_('Nb résas: %s '),
                               $exemplaire->getNbResas())
         .'</span>';
 
diff --git a/tests/library/Class/WebService/SIGB/KohaTest.php b/tests/library/Class/WebService/SIGB/KohaTest.php
index 4eba63d256c..3b79e497552 100644
--- a/tests/library/Class/WebService/SIGB/KohaTest.php
+++ b/tests/library/Class/WebService/SIGB/KohaTest.php
@@ -182,7 +182,7 @@ class KohaServiceGetNoticeJardinEnfantTest extends KohaTestCase {
 
   /** @test */
   function firstExemplaireDisponibiliteShouldBeEmpruntable() {
-    $this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_EN_PRET, $this->jardins_enfant->exemplaireAt(0)->getDisponibilite());
+    $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_EN_PRET'), $this->jardins_enfant->exemplaireAt(0)->getDisponibilite());
   }
 }
 
@@ -246,7 +246,7 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
   /** @test */
   public function firstExemplaireDisponibiliteShouldBeEnPret()  {
-    $this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_EN_PRET, $this->potter->exemplaireAt(0)->getDisponibilite());
+    $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_EN_PRET'), $this->potter->exemplaireAt(0)->getDisponibilite());
   }
 
   /** @test */
@@ -272,7 +272,7 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
   /** @test */
   public function secondExemplaireDisponibiliteShouldBeEnPret() {
-    $this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_EN_PRET, $this->potter->exemplaireAt(1)->getDisponibilite());
+    $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_EN_PRET'), $this->potter->exemplaireAt(1)->getDisponibilite());
   }
 
   /** @test */
@@ -282,7 +282,7 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
   /** @test */
   public function thirdExemplaireDisponibiliteShouldBeEmpruntable() {
-    $this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_LIBRE, $this->potter->exemplaireAt(2)->getDisponibilite());
+    $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_LIBRE'), $this->potter->exemplaireAt(2)->getDisponibilite());
   }
 
   /** @test */
@@ -292,7 +292,7 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
   /** @test */
   public function fourthExemplaireDisponibiliteShouldBePilonne()  {
-    $this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_PILONNE, $this->potter->exemplaireAt(3)->getDisponibilite());
+    $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_PILONNE'), $this->potter->exemplaireAt(3)->getDisponibilite());
   }
 
   /** @test */
@@ -302,7 +302,7 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
   /** @test */
   public function fifthExemplaireDisponibiliteShouldBePerdu() {
-    $this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_PERDU, $this->potter->exemplaireAt(4)->getDisponibilite());
+    $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_PERDU'), $this->potter->exemplaireAt(4)->getDisponibilite());
   }
 
   /** @test */
@@ -1151,7 +1151,7 @@ class KohaServiceGetNoticeJardinEnfantWithTransfertTest extends KohaTestCase {
 
   /** @test */
   public function itemShouldNotBeAvailable() {
-    $this->assertContains('En transfert de BDP à MAURES depuis le 2018',
+    $this->assertContains('En transfert',
                            $this->record->exemplaireAt(0)->getDisponibilite());
   }
 
-- 
GitLab