From c77973bf9ebb94d9f57f32b2f7941dbada874e3b Mon Sep 17 00:00:00 2001
From: efalcy <efalcy@git-test.afi-sa.fr>
Date: Fri, 22 Feb 2013 17:10:36 +0000
Subject: [PATCH] SIGB Koha : Option permettant d'interdire la reservation de
 document

---
 cosmogramme/php/config_integrations.php         |  1 +
 library/Class/WebService/SIGB/Koha.php          |  3 ++-
 .../SIGB/Koha/GetRecordsResponseReader.php      |  7 ++++++-
 library/Class/WebService/SIGB/Koha/Service.php  | 17 ++++++++++++++---
 4 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/cosmogramme/php/config_integrations.php b/cosmogramme/php/config_integrations.php
index 4d0a1c23703..415eb1b22f2 100644
--- a/cosmogramme/php/config_integrations.php
+++ b/cosmogramme/php/config_integrations.php
@@ -256,6 +256,7 @@ function getBlocsParams($id_bib,$type,$valeurs)
 		if (in_array($clef, array(COM_VSMART, COM_KOHA, COM_CARTHAME, COM_NANOOK, COM_ORPHEE, COM_MICROBIB, COM_BIBLIXNET))) 
 			$champs_params[0]=array("url_serveur");
 
+		if ($clef==COM_KOHA)  $champs_params[0]=["url_serveur","Interdire_reservation_doc_dispo"];
 		if ($clef==COM_OPSYS) $champs_params[0]=array("url_serveur", "catalogue_web");
 
 		if ($clef==COM_DYNIX) $champs_params[0]=array("url_serveur", "client_id");
diff --git a/library/Class/WebService/SIGB/Koha.php b/library/Class/WebService/SIGB/Koha.php
index b441d9280de..035e19489de 100644
--- a/library/Class/WebService/SIGB/Koha.php
+++ b/library/Class/WebService/SIGB/Koha.php
@@ -25,7 +25,8 @@ class Class_WebService_SIGB_Koha {
 	public static function getService($params){
 		if (!isset(self::$service)) {
 			$instance = new self();
-			self::$service = Class_WebService_SIGB_Koha_Service::getService($params['url_serveur']);
+			array_merge([$params['Interdire_reservation_doc_dispo']=0],$params);
+			self::$service = Class_WebService_SIGB_Koha_Service::getService($params['url_serveur'],$params['Interdire_reservation_doc_dispo']==='1');
 		}
 
 		return self::$service;
diff --git a/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php b/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
index 90d7608dac7..be9ca9ec279 100644
--- a/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
+++ b/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
@@ -21,6 +21,7 @@
 class Class_WebService_SIGB_Koha_GetRecordsResponseReader {
 	protected $_xml_parser;
 	protected $_notice;
+	protected $inderdire_resa_doc_dispo=false;
 	protected $_not_for_loan_status = array(
 																					0 => Class_WebService_SIGB_Exemplaire::DISPO_LIBRE,
 																					1 => "Exclu du prêt",
@@ -40,6 +41,10 @@ class Class_WebService_SIGB_Koha_GetRecordsResponseReader {
 		return new self();
 	}
 
+	public function setInterdireResaDocDispo($dispo) {
+		$this->interdire_resa_doc_dispo = $dispo;
+		return $this;
+	}
 
 	public function getNoticeFromXML($xml) {
 		$this->_xml_parser = Class_WebService_XMLParser::newInstance();
@@ -52,7 +57,7 @@ class Class_WebService_SIGB_Koha_GetRecordsResponseReader {
 
 
 	public function allowAvailableDocumentReservation() {
-		return true;
+		return !$this->interdire_resa_doc_dispo;
 	}
 
 
diff --git a/library/Class/WebService/SIGB/Koha/Service.php b/library/Class/WebService/SIGB/Koha/Service.php
index 888d2f8cb67..e7d5d651152 100644
--- a/library/Class/WebService/SIGB/Koha/Service.php
+++ b/library/Class/WebService/SIGB/Koha/Service.php
@@ -20,13 +20,18 @@
  */
 
 class Class_WebService_SIGB_Koha_Service extends Class_WebService_SIGB_AbstractRESTService {
+
+	protected $interdire_resa_doc_dispo = false;
+
 	public static function newInstance() {
 		return new self();
 	}
 
 
-	public static function getService($server_root) {
-		return self::newInstance()->setServerRoot($server_root);
+	public static function getService($server_root,$interdire_reservation_doc_dispo=false) {
+
+		return self::newInstance()->setServerRoot($server_root)
+															->setInterdireResaDocDispo($interdire_reservation_doc_dispo);
 	}
 
 
@@ -106,9 +111,15 @@ class Class_WebService_SIGB_Koha_Service extends Class_WebService_SIGB_AbstractR
 	}
 
 
+	public function setInterdireResaDocDispo($dispo) {
+		$this->interdire_resa_doc_dispo = $dispo;
+		return $this;
+	}
+
 	public function getNotice($id) {
 		return $this->ilsdiGetRecords($id, 
-																	Class_WebService_SIGB_Koha_GetRecordsResponseReader::newInstance());
+																	Class_WebService_SIGB_Koha_GetRecordsResponseReader::newInstance()
+																	->setInterdireResaDocDispo($this->interdire_resa_doc_dispo));
 	}
 }
 
-- 
GitLab