Skip to content
Snippets Groups Projects
Commit e736991c authored by Léonard Brun's avatar Léonard Brun
Browse files

Merge branch 'hotline#32959_archives_municipales' into 'stable'

Hotline#32959 archives municipales

See merge request !1348
parents c762aaa3 95f306cd
Branches
Tags
9 merge requests!1553Master,!1502Master,!1501Stable,!1363Master,!1362Master,!1360Master,!1352Dev#25892 module de demande de consultation sur place,!1351Master,!1350Hotline master
- ticket #32959 : Prise en compte du champ activité dans l'affichage d'exemplaires sans webservices
\ No newline at end of file
......@@ -42,17 +42,23 @@ class Class_CommSigb {
if ($dispo = $this->getDispoExemplaire($exemplaire))
$exemplaires []= array_merge($exemplaire->toRaw(), $dispo);
}
return $exemplaires;
}
public function getDispoExemplaire($bibitem) {
$exemplaire = ["dispo" => ($bibitem->getIsAvailable()
public function getDispoExemplaire($item) {
$exemplaire = ['dispo' => ($item->getIsAvailable()
? $this->_('Disponible')
: $this->_('Non disponible')),
"reservable" => false];
'reservable' => false];
if ($item->isDisconnected() && $item->hasActivite()) {
$exemplaire['dispo'] = $item->getActivite();
return $exemplaire;
}
if (!$sigb_exemplaire = $bibitem->getSigbExemplaire())
if (!$sigb_exemplaire = $item->getSigbExemplaire())
return $exemplaire;
if ($sigb_exemplaire->isPilonne() || !$sigb_exemplaire->isVisibleOPAC())
......@@ -61,25 +67,25 @@ class Class_CommSigb {
if (!$sigb_exemplaire->isValid())
return $exemplaire;
$exemplaire["dispo"]=$sigb_exemplaire->getDisponibilite();
$exemplaire["date_retour"]=$sigb_exemplaire->getDateRetour();
$exemplaire["reservable"]=$sigb_exemplaire->isReservable();
$exemplaire["id_exemplaire"]=$sigb_exemplaire->getId();
$exemplaire["nb_resas"]=$sigb_exemplaire->getNbReservations();
$exemplaire["edition"]=$sigb_exemplaire->getEdition();
$exemplaire["is_available"]=$sigb_exemplaire->isDisponible();
$exemplaire['dispo'] = $sigb_exemplaire->getDisponibilite();
$exemplaire['date_retour'] = $sigb_exemplaire->getDateRetour();
$exemplaire['reservable'] = $sigb_exemplaire->isReservable();
$exemplaire['id_exemplaire'] = $sigb_exemplaire->getId();
$exemplaire['nb_resas'] = $sigb_exemplaire->getNbReservations();
$exemplaire['edition'] = $sigb_exemplaire->getEdition();
$exemplaire['is_available'] = $sigb_exemplaire->isDisponible();
if ($cote = $sigb_exemplaire->getCote())
$exemplaire["cote"] = $cote;
$exemplaire['cote'] = $cote;
if ($emplacement = $sigb_exemplaire->getEmplacement())
$exemplaire["emplacement"] = $emplacement;
$exemplaire['emplacement'] = $emplacement;
if (!$code_annexe = $sigb_exemplaire->getCodeAnnexe())
return $exemplaire;
if ($annexe = Class_CodifAnnexe::findFirstBy(['code' => $code_annexe]))
$exemplaire["id_bib"] = $annexe->getIdBib();
$exemplaire['id_bib'] = $annexe->getIdBib();
return $exemplaire;
}
......
......@@ -46,6 +46,7 @@ class Class_Exemplaire extends Storm_Model_Abstract {
'genre' => null,
'url' => null,
'emplacement' => '',
'activite' => null,
'date_nouveaute' => ''];
protected $_sigb_exemplaire;
......@@ -132,6 +133,12 @@ class Class_Exemplaire extends Storm_Model_Abstract {
}
public function isDisconnected() {
return (!$this->hasIntBib())
|| $this->getIntBib()->isDisconnected();
}
public function updateAvailabilityFromSIGB() {
if (!$sigb_exemplaire = $this->getSigbExemplaire())
return $this;
......
......@@ -28,6 +28,8 @@ class Class_IntBib extends Storm_Model_Abstract {
const PLANIF_NOT_RECURRENT = 'i';
const CODE_FACETTE = 'B';
const COM_NONE = 0;
const COM_PERGAME = 1;
const COM_OPSYS = 2;
const COM_VSMART = 4;
......@@ -39,6 +41,8 @@ class Class_IntBib extends Storm_Model_Abstract {
const COM_BIBLIXNET = 10;
const COM_DYNIX = 11;
const SIGB_NONE = 0;
protected static $COM_CLASSES = [self::COM_PERGAME => 'Class_WebService_SIGB_Pergame',
self::COM_OPSYS => 'Class_WebService_SIGB_Opsys',
self::COM_VSMART => 'Class_WebService_SIGB_VSmart',
......@@ -161,6 +165,12 @@ class Class_IntBib extends Storm_Model_Abstract {
public function isPergame() {
return in_array($this->getSigb(), [1, 13]);
}
public function isDisconnected() {
return static::COM_NONE == $this->getCommSigb()
&& static::SIGB_NONE == $this->getSigb();
}
}
?>
\ No newline at end of file
......@@ -16,33 +16,35 @@
*
* You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
* along with BOKEH; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
class Class_WebService_SIGB_Pergame {
protected static $services;
protected static $_services, $_default_service;
public static function getService($params){
if (!isset(self::$service))
self::$services = array();
if (static::$_default_service)
return static::$_default_service;
if (!isset(static::$_services))
static::$_services = [];
$id_bib = $params['id_bib'];
if (!array_key_exists($id_bib, self::$services))
self::$services[$id_bib] = Class_WebService_SIGB_Pergame_Service::getService($id_bib);
if (!array_key_exists($id_bib, static::$_services))
static::$_services[$id_bib] = Class_WebService_SIGB_Pergame_Service::getService($id_bib);
return self::$services[$id_bib];
return static::$_services[$id_bib];
}
public static function setService($service) {
self::$service = $service;
static::$_default_service = $service;
}
public static function reset() {
self::$service = null;
static::$_default_service = static::$_services = null;
}
}
?>
\ No newline at end of file
......@@ -18,11 +18,13 @@
* along with BOKEH; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
require_once 'AbstractControllerTestCase.php';
/** @see http://forge.afi-sa.fr/issues/21462 */
abstract class NoticeAjaxControllerPergameItemTestCase extends AbstractControllerTestCase {
abstract class NoticeAjaxControllerPergameItemTestCase
extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
......@@ -33,33 +35,40 @@ abstract class NoticeAjaxControllerPergameItemTestCase extends AbstractControlle
'comm_sigb' => Class_IntBib::COM_PERGAME,
'comm_params' => 'a:3:{s:26:"Autoriser_docs_disponibles";s:0:"";s:13:"Max_par_carte";s:1:"4";s:16:"Max_par_document";s:3:"100";}']);
$this->fixture('Class_Notice', ['id' => 23,
'cle_oeuvre' => 'DDD']);
$this->fixture('Class_Exemplaire', ['id' => 732494,
'id_notice' => 23,
'id_bib' => 1,
'code_barres' => '0213689147',
'cote' => 'EA WAD',
'genre' => 8,
'documentaire' => 0,
'section' => 3,
'activite' => 'En rayon',
'emplacement' => 0,
'annexe' => 1,
'date_nouveaute' => '0000-00-00',
'id_origine' => '00013313',
'id_int_bib' => 1,
'is_available' => 1]);
$this->fixture('Class_Pret', ['id' => 98216,
'id_site' => 1,
'pergame' => 291392,
'id_notice_origine' => '13313',
'en_cours' => 1,
'date_pret' => '2015-02-17',
'date_retour' => '2015-03-31',
'code_barres' => '0213689147']);
$this->fixture('Class_Notice', ['id' => 23, 'cle_oeuvre' => 'DDD']);
$this->fixture('Class_Exemplaire',
['id' => 732494,
'id_notice' => 23,
'id_bib' => 1,
'code_barres' => '0213689147',
'cote' => 'EA WAD',
'genre' => 8,
'documentaire' => 0,
'section' => 3,
'activite' => 'En rayon',
'emplacement' => 0,
'annexe' => 1,
'date_nouveaute' => '0000-00-00',
'id_origine' => '00013313',
'id_int_bib' => 1,
'is_available' => 1]);
$this->fixture('Class_Pret',
['id' => 98216,
'id_site' => 1,
'pergame' => 291392,
'id_notice_origine' => '13313',
'en_cours' => 1,
'date_pret' => '2015-02-17',
'date_retour' => '2015-03-31',
'code_barres' => '0213689147']);
}
public function tearDown() {
Class_WebService_SIGB_Pergame::reset();
parent::tearDown();
}
}
......@@ -67,9 +76,11 @@ abstract class NoticeAjaxControllerPergameItemTestCase extends AbstractControlle
class NoticeAjaxControllerPergameItemNoDefaultLabelTest
extends NoticeAjaxControllerPergameItemTestCase {
public function setUp() {
parent::setUp();
$cfg = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray();
$cfg = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray();
$cfg['exemplaires']['grouper'] = 1;
unset($cfg['exemplaires']['en_pret']);
Class_Profil::getCurrentProfil()->setCfgNotice($cfg);
......@@ -93,6 +104,7 @@ class NoticeAjaxControllerPergameItemLabelConfiguredTest
extends NoticeAjaxControllerPergameItemTestCase {
public function setUp() {
parent::setUp();
$cfg = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray();
$cfg['exemplaires']['grouper'] = 1;
$cfg['exemplaires']['en_pret'] = 'En pret';
......
This diff is collapsed.
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment