diff --git a/VERSIONS b/VERSIONS
index 468abc758bf7d62a9ad2627a867b8bf2da7a7534..752745427743808ed93c4c969ff3f5877f3f2668 100644
--- a/VERSIONS
+++ b/VERSIONS
@@ -1,9 +1,28 @@
+06/02/2015 - v7.1.2
+
+ - ticket #16941: Modification du bouton Facebook pour s'adapter au nouveau fonctionnement de partage (Open Graph)
+
+ - ticket #18848: Retour à la ligne pour les contenus trop longs dans le tableau des suggestions en admin.
+
+ - ticket #20350: Ajout du prix dans les détails d'une notice en se basant sur le champ unimarc 010$d
+
+ - ticket #18504: SIGB Pergame: correction d'un bug dans l'affichage des réservations en cours qui affichait une ressource numérique.
+
+ - ticket #20677: Correction de la table Catalogue qui ne permettait pas d'enregistrer des trop grandes listes de critères d'indexation.
+
+ - ticket #18395: Le flux RSS des articles utilise la date d'évènement si elle existe dans la donnée pubDate
+
+ - ticket #20441: Unimarc21 déplacement des zones 200i en 200e.
+
+
+
 02/02/2015 - v7.1.0
 
 - ticket #14943: - Possibilité de lier directement un album à une notice dans l'édition d'un album
 				 		 		 - L'album s'affiche directement dans l'onglet ressources numérique de la notice liée
 
 
+
 02/02/2015 - v7.0.0
 - versions stable == 6.60.5
 
diff --git a/application/modules/admin/controllers/ModulesnoticeController.php b/application/modules/admin/controllers/ModulesnoticeController.php
index 0283367227f9faaec6934df3929147d34f6ada60..723ca18efd46d72b3f1be168ee24d0efa7311a36 100644
--- a/application/modules/admin/controllers/ModulesnoticeController.php
+++ b/application/modules/admin/controllers/ModulesnoticeController.php
@@ -16,7 +16,7 @@
  *
  * 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
  */
 //////////////////////////////////////////////////////////////////////////////////////////
 // OPAC3 - Propriétés des modules des notices
@@ -32,11 +32,11 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action {
 		// Changer le layout
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('subModal.phtml');
-		
+
 		// Recup des parametres
 		$this->type_module=$this->_getParam('action');
 		$this->id_profil = $this->_getParam("id_profil");
-		
+
 		// Lire la definition du module
 		$module=new Class_Systeme_ModulesNotice();
 		$def_module=$module->getModule($this->type_module);
@@ -47,7 +47,7 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action {
 		$cfg = $profil->getCfgNoticeAsArray();
 		$preferences=$cfg[$this->type_module];
 		if(!$preferences) $preferences=$module->getValeursParDefaut($this->type_module);
-		
+
 		// Variables de vue
 		$this->view->titre_module=$def_module["libelle"];
 		$this->view->preferences=$preferences;
@@ -66,7 +66,7 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action {
 //------------------------------------------------------------------------------------------------------
 	function exemplairesAction(){
 		$this->view->titre = $this->view->_('Propriété du bloc des exemplaires');
-		
+
 		// Retour du formulaire
 		if ($this->_request->isPost())
 		{
@@ -83,7 +83,7 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action {
 		if (!array_isset("en_pret", $this->view->preferences) || !trim($this->view->preferences["en_pret"]))
 			$this->view->preferences["en_pret"]="emprunté";
 	}
-	
+
 //------------------------------------------------------------------------------------------------------
 // Validation et retour config admin de la page d'accueil
 //------------------------------------------------------------------------------------------------------
@@ -99,5 +99,5 @@ class Admin_ModulesnoticeController extends ZendAfi_Controller_Action {
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->renderScript('modulesnotice/_retour.phtml');
 	}
-	
+
 }
\ No newline at end of file
diff --git a/application/modules/opac/controllers/CmsController.php b/application/modules/opac/controllers/CmsController.php
index 969697e94b85463f2f723fc09e8c54b144a35967..a2fc8413cf8c3a1a517a90b02e7755b3e7619eb1 100644
--- a/application/modules/opac/controllers/CmsController.php
+++ b/application/modules/opac/controllers/CmsController.php
@@ -298,6 +298,18 @@ class CmsController extends Zend_Controller_Action {
 	}
 
 
+	/**
+	 * @param array $article
+	 */
+	protected function _getPubDate($article) {
+		if ($article->hasEventsDebut())
+			return $article->getEventsDebut();
+
+		if ($article->hasDebut())
+			return $article->getDebut();
+
+		return $article->getDateMaj();
+	}
 
 	/**
 	 * @param array $articles
@@ -313,9 +325,7 @@ class CmsController extends Zend_Controller_Action {
 				 . $this->_request->getServer('HTTP_HOST')
 				 . $this->view->url($article->getUrl()),
 				 'description' => html_entity_decode(Class_CmsUrlTransformer::imgUrlRelativeToAbsolute($article->getFullContent())),
-				 'lastUpdate'	 => strtotime($article->hasDebut()
-																		? $article->getDebut()
-																		: $article->getDateMaj())
+				 'lastUpdate'	 => strtotime($this->_getPubDate($article))
 				];
 		}
 
diff --git a/application/modules/opac/controllers/RechercheController.php b/application/modules/opac/controllers/RechercheController.php
index 1885e130f03a3cd3872aa6fddfa794cbb759b227..ac0dfc2a363b869243e23bb0b6c4eeccaa62f1cc 100644
--- a/application/modules/opac/controllers/RechercheController.php
+++ b/application/modules/opac/controllers/RechercheController.php
@@ -229,6 +229,7 @@ class RechercheController extends ZendAfi_Controller_Action {
 
 
 	public function viewnoticeAction() {
+
 		$id_notice = (int)$this->_getParam('id');
 		$clef_alpha = $this->_getParam('clef');
 
@@ -256,6 +257,7 @@ class RechercheController extends ZendAfi_Controller_Action {
 			return;
 		}
 
+		Class_ScriptLoader::getInstance()->addRecordMeta($notice);
 
 		if (($ig = Zend_Controller_Front::getInstance()
 				 ->getPlugin('ZendAfi_Controller_Plugin_InspectorGadget'))
diff --git a/application/modules/opac/views/scripts/head.phtml b/application/modules/opac/views/scripts/head.phtml
index d20f9e0c1ddccb4a8670bf2ad6c8178e89b0e50f..c0bbb9b972608c9db3ac1f761bd97a021b69176b 100644
--- a/application/modules/opac/views/scripts/head.phtml
+++ b/application/modules/opac/views/scripts/head.phtml
@@ -10,13 +10,15 @@
 	<meta content="all" name="robots" />
 	<meta content="10 days" name="revisit-after" />
 	<?php
+	Class_ScriptLoader::getInstance()->loadMeta();
+
 	echo $current_profil->getStyleCss();
   if ($current_profil->hasFavicon())
 		echo sprintf('<link rel="shortcut icon" href="%s"/>', $current_profil->getFavicon());
 
 	$head_scripts = Class_ScriptLoader::newInstance()
-		->loadJQuery()
-		->loadJQueryUI()
+											->loadJQuery()
+											->loadJQueryUI()
 		->addOPACStyleSheet('global')
 		->addSkinStyleSheets(['global', 'erreur', 'dialog', 'popup', 'nuage_tags', 'bib'])
 		->addAdminStyleSheet('subModal')
@@ -57,11 +59,11 @@
 	}
 
 
-	if ($this->header_css && $current_profil->getUseParentCss() && !$current_profil->hasPageCss()) 
+	if ($this->header_css && $current_profil->getUseParentCss() && !$current_profil->hasPageCss())
 		$head_scripts->addStyleSheet($this->header_css, ['id' => 'profil_css',
 																										 'media' => 'all']);
 
-	if ($this->header_css && $current_profil->getUseParentCss() && $current_profil->hasPageCss()) 
+	if ($this->header_css && $current_profil->getUseParentCss() && $current_profil->hasPageCss())
 		$head_scripts->addStyleSheet($this->header_css);
 
 	if($current_profil->hasPageCss())
@@ -80,7 +82,7 @@
 			->addOPACStyleSheet('bleu_sur_jaune', ['rel' => 'alternate stylesheet',
 																						 'title' => $this->_('Bleu sur jaune'),
 																						 'data-name' => 'style_bleu_sur_jaune'])
-			->cssAddLine($this->_('<link rel="alternate stylesheet" type="text/css" href="#" title="%s" data-name="style_defaut">', 
+			->cssAddLine($this->_('<link rel="alternate stylesheet" type="text/css" href="#" title="%s" data-name="style_defaut">',
 														'Style par défaut'))
 
 			->cssAddLine('<link id="accessibility_stylesheet" rel="stylesheet" type="text/css" href="#" title="CSS accessibilité">')
@@ -98,12 +100,12 @@
 	$script_loader = Class_ScriptLoader::getInstance();
 	foreach([7,8] as $ie)
 		$script_loader->addSkinStyleSheet('ie' . $ie, ['ie_version' => $ie])
-									->addUserFilesStylSheet($current_profil->getHeaderCssIE($ie), 
+									->addUserFilesStylSheet($current_profil->getHeaderCssIE($ie),
 																					['ie_version' => $ie]);
 
 	$head_scripts->renderStyleSheets();
 	$script_loader->renderStyleSheets();
-	
+
 	$head_scripts->renderJavaScripts();
 	$script_loader->renderJavaScripts();
 ?>
diff --git a/cosmogramme/php/_init.php b/cosmogramme/php/_init.php
index 1813afe6fe4b411c5f8ac2e9c11d4e014922b799..13c63fc20199e6595d47513a44e322424e6131ef 100644
--- a/cosmogramme/php/_init.php
+++ b/cosmogramme/php/_init.php
@@ -1,7 +1,7 @@
 <?php
 // Constantes
 error_reporting(E_ERROR | E_PARSE);
-define("PATCH_LEVEL","229");
+define("PATCH_LEVEL","230");
 
 define("APPLI","cosmogramme");
 define("COSMOPATH", "/var/www/html/vhosts/opac2/www/htdocs");
diff --git a/cosmogramme/php/classes/classe_notice_marc21.php b/cosmogramme/php/classes/classe_notice_marc21.php
index 2ccaed3de2740ca5f3b034b7b2a5f4dfd591e5b4..49f66827b5f8eef1e00a947f08cf2294f37d900b 100644
--- a/cosmogramme/php/classes/classe_notice_marc21.php
+++ b/cosmogramme/php/classes/classe_notice_marc21.php
@@ -16,7 +16,7 @@
  *
  * 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
  */
 //////////////////////////////////////////////////////////////////////////////////////
 // CLASSE MARC21 (Surcharge la classe notice_unimarc)
@@ -30,7 +30,7 @@ class notice_marc21 extends notice_unimarc
 	private $map;
 
 // ----------------------------------------------------------------
-// Constructeur 
+// Constructeur
 // ----------------------------------------------------------------
 	function __construct()
 	{
@@ -104,11 +104,75 @@ class notice_marc21 extends notice_unimarc
 		$this->setNotice($this->marc21ToUnimarc());
 		return true;
 	}
-	
+
 	public function setNotice($string, $type_accents = 0)	{
 		parent::setNotice($string, 4);
 	}
 
+
+	protected function append200IToFirst200E($new_subfields, $i) {
+		$e_subfield_found = false;
+		foreach ($new_subfields as $index => $subfield) {
+			if ($subfield[0] == 'e') {
+				$e_subfield_found = true;
+				$subfield[1] .= ' ' . $i;
+				$new_subfields[$index] = $subfield;
+				break;
+			}
+		}
+		if (!$e_subfield_found) {
+			$new_subfields[] = ['e', $i];
+		}
+
+		return $new_subfields;
+	}
+
+
+	protected function getCodeIFromSubfields($subfields) {
+		foreach ($subfields as $subfield) {
+			if ($subfield['code'] == 'i')
+				return $subfield['valeur'];
+		}
+		return '';
+	}
+
+
+	protected function prepareSubfieldsFor200E($subfields) {
+		$new_subfields = [];
+		foreach ($subfields as $index => $subfield) {
+			if ($subfield['code'] == 'i')
+				continue;
+
+			$new_subfields[] = [$subfield['code'], $subfield['valeur']];
+		}
+		return $new_subfields;
+	}
+
+
+	protected function getNewSubfields($field_block) {
+		$subfields = $this->decoupe_bloc_champ($field_block);
+		$i = $this->getCodeIFromSubfields($subfields);
+		$new_subfields = $this->prepareSubfieldsFor200E($subfields);
+
+		return $i
+			? $this->append200IToFirst200E($new_subfields, $i)
+			: $new_subfields;
+
+	}
+
+	// Special case: append 200$i to 200$e so it appears in clef_alpha
+	// and can be used for deduping
+	protected function unimarc200iTo200e() {
+		if(!$field_blocks = $this->notice_unimarc->get_subfield('200'))
+			return ;
+
+		$this->notice_unimarc->delete_field('200');
+
+		foreach($field_blocks as $field_block)
+			$this->notice_unimarc->add_field('200', '01', $this->getNewSubfields($field_block));
+	}
+
+
 // ----------------------------------------------------------------
 // Transco marc21 to unimarc
 // ----------------------------------------------------------------
@@ -125,7 +189,7 @@ class notice_marc21 extends notice_unimarc
 		// identifiants
 		$bloc=$this->get_subfield('001');
 		$this->notice_unimarc->add_field("001","",$bloc[0]);
-		
+
 		// date de nouveaute
 		$bloc=$this->get_subfield('008');
 		$this->notice_unimarc->add_field("005","",$bloc[0]);
@@ -143,7 +207,8 @@ class notice_marc21 extends notice_unimarc
 
 		// titres
 		$this->traiteZone("245","200");
-		$this->traiteZone("246","510");	
+		$this->unimarc200iTo200e();
+		$this->traiteZone("246","510");
 		$this->traiteZone("130","500");	 // titre uniforme
 		$this->traiteZone("505","464");	 // titres de depouillement
 		$this->traiteZone("856","464");	 // morceaux docs sonores
@@ -152,7 +217,7 @@ class notice_marc21 extends notice_unimarc
 		$this->traiteZone("765","510");	 // titre original
 		$this->traiteZone("780","432");	 // titre précédent pour périodiques
 		$this->traiteZone("785","440");	 // titre successeur
-		
+
 		// auteurs
 		$this->traiteZone("100","700");
 		$this->traiteZone("110","710");
diff --git a/cosmogramme/sql/patch/patch_229.php b/cosmogramme/sql/patch/patch_229.php
index 3658a468f77bb8491cb159354bf4d2bdadb8c97d..516e56e5133833c81a92ea5b2d14788096d3a907 100644
--- a/cosmogramme/sql/patch/patch_229.php
+++ b/cosmogramme/sql/patch/patch_229.php
@@ -1,9 +1,9 @@
 <?php
-
 $adapter = Zend_Db_Table_Abstract::getDefaultAdapter();
 $adapter->query('ALTER TABLE frbr_link ADD source_key VARCHAR(255) null default null');
 $adapter->query('ALTER TABLE frbr_link ADD KEY source_key (source_key)');
 $adapter->query('ALTER TABLE frbr_link ADD target_key VARCHAR(255) null default null');
 $adapter->query('ALTER TABLE frbr_link ADD KEY target_key (target_key)');
 $adapter->query('ALTER TABLE frbr_link ADD KEY source_type (source_type)');
-$adapter->query('ALTER TABLE frbr_link ADD KEY target_type (target_type)');
\ No newline at end of file
+$adapter->query('ALTER TABLE frbr_link ADD KEY target_type (target_type)');
+?>
diff --git a/cosmogramme/sql/patch/patch_230.php b/cosmogramme/sql/patch/patch_230.php
new file mode 100644
index 0000000000000000000000000000000000000000..4dd6d5eeeba28fadd67e4cf030bd0f3781540a4d
--- /dev/null
+++ b/cosmogramme/sql/patch/patch_230.php
@@ -0,0 +1,14 @@
+<?php
+$adapter = Zend_Registry::get('sql');
+$adapter->query('ALTER TABLE catalogue MODIFY libelle VARCHAR(255)');
+$adapter->query('ALTER TABLE catalogue MODIFY matiere TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY genre TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY section TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY tags TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY interet TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY langue TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY annexe TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY emplacement TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY auteur TEXT');
+$adapter->query('ALTER TABLE catalogue MODIFY bibliotheque TEXT');
+?>
\ No newline at end of file
diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
index eb5e0aa9a27bcdbff3217ff53dfd4b0ea8e7f3f0..488882d7683ddedea1758197019430e128bdba61 100644
--- a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
+++ b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
@@ -410,8 +410,7 @@ abstract class NoticeIntegrationMarc21ToUnimarcTest extends NoticeIntegrationTes
 }
 
 
-
-class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegrationTestCase {
+abstract class NoticeIntegrationMarc21DynixTestCase extends NoticeIntegrationTestCase {
 	protected $_profil_donnees = ['id_profil' => 150,
 																'libelle' => 'MARC21 Dynix',
 																'accents' => '4',
@@ -420,7 +419,9 @@ class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegration
 																'type_fichier' => '0',
 																'format' => '6',
 																'attributs' => 'a:7:{i:0;a:8:{s:8:"type_doc";a:12:{i:0;a:3:{s:4:"code";s:1:"0";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:1;a:3:{s:4:"code";s:1:"1";s:5:"label";s:5:"am;na";s:8:"zone_995";s:22:"LIV;MS;LDV;LVI;LV;LIVC";}i:2;a:3:{s:4:"code";s:1:"2";s:5:"label";s:2:"as";s:8:"zone_995";s:12:"PER;REVC;REV";}i:3;a:3:{s:4:"code";s:1:"3";s:5:"label";s:3:"i;j";s:8:"zone_995";s:17:"CD;LIVCD;LIVK7;K7";}i:4;a:3:{s:4:"code";s:1:"4";s:5:"label";s:1:"g";s:8:"zone_995";s:25:"DIAPO;DVD;VHS;VHD;VD;DVDJ";}i:5;a:3:{s:4:"code";s:1:"5";s:5:"label";s:3:"l;m";s:8:"zone_995";s:3:"CDR";}i:6;a:3:{s:4:"code";s:1:"7";s:5:"label";s:0:"";s:8:"zone_995";s:7:"LCA;LCD";}i:7;a:3:{s:4:"code";s:1:"8";s:5:"label";s:0:"";s:8:"zone_995";s:3:"DOS";}i:8;a:3:{s:4:"code";s:1:"9";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}i:9;a:3:{s:4:"code";s:2:"10";s:5:"label";s:0:"";s:8:"zone_995";s:6:"WEB;MF";}i:10;a:3:{s:4:"code";s:2:"11";s:5:"label";s:0:"";s:8:"zone_995";s:2:"JV";}i:11;a:3:{s:4:"code";s:3:"100";s:5:"label";s:0:"";s:8:"zone_995";s:0:"";}}s:17:"champ_code_barres";s:3:"999";s:10:"champ_cote";s:1:"k";s:14:"champ_type_doc";s:1:"r";s:11:"champ_genre";s:0:"";s:13:"champ_section";s:1:"z";s:17:"champ_emplacement";s:1:"u";s:12:"champ_annexe";s:1:"b";}i:1;a:1:{s:6:"champs";s:0:"";}i:2;a:1:{s:6:"champs";s:0:"";}i:3;a:1:{s:6:"champs";s:0:"";}i:5;a:3:{s:6:"champs";s:0:"";s:17:"xml_balise_abonne";s:0:"";s:17:"xml_champs_abonne";a:11:{s:6:"IDABON";s:0:"";s:9:"ORDREABON";s:0:"";s:3:"NOM";s:0:"";s:6:"PRENOM";s:0:"";s:9:"NAISSANCE";s:0:"";s:8:"PASSWORD";s:0:"";s:4:"MAIL";s:0:"";s:10:"DATE_DEBUT";s:0:"";s:8:"DATE_FIN";s:0:"";s:7:"ID_SIGB";s:0:"";s:9:"NUM_CARTE";s:0:"";}}i:4;a:5:{s:4:"zone";s:3:"995";s:5:"champ";s:1:"v";s:6:"format";s:1:"3";s:5:"jours";s:0:"";s:7:"valeurs";s:1:"n";}i:6;a:2:{s:4:"zone";s:3:"901";s:5:"champ";s:1:"a";}}'];
+}
 
+class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegrationMarc21DynixTestCase {
 	public function setUp() {
 		parent::setUp();
 
@@ -478,6 +479,17 @@ class NoticeIntegrationMarc21CoupCavalierToUnimarcTest extends NoticeIntegration
 }
 
 
+class NoticeIntegrationMarc21BorisToUnimarcTest extends NoticeIntegrationMarc21DynixTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->loadNotice('marc21_boris');
+	}
+
+	/** @test */
+	public function sectionShouldHaveId2() {
+		$this->assertEquals('BORIS-JAI1AN1AN1AN1AN---TMAGNIER-2014-0', $this->notice_data['clef_alpha']);
+	}
+}
 
 
 class NoticeIntegrationBourdieuWithElectreGeneratedNoticeRecordTest extends NoticeIntegrationTestCase {
diff --git a/cosmogramme/tests/php/classes/marc21_boris.txt b/cosmogramme/tests/php/classes/marc21_boris.txt
new file mode 100644
index 0000000000000000000000000000000000000000..190a8dbab16d5c0782b86f9811f77e99b1c61bc0
--- /dev/null
+++ b/cosmogramme/tests/php/classes/marc21_boris.txt
@@ -0,0 +1 @@
+01213     2200157   4500001000700000008004100007020003400048245005200082260003100134300003300165520018300198520015400381520019600535520019600731999012800927425542140505s2014    FR     ar|||| 0|| 0|fre|d  a978-2-36474-495-0 (Cartonné)  aBorispJ'ai 1 an + 1 an + 1 an + 1 an /cMathis  aParis :bT. Magnier,c2014  a1 vol. (32 p.) ;c15 x 15 cm  aLa nature a tout prévu : l'herbe pour ne pas se faire mal en tombant, la pluie pour se laver, le soleil pour se sécher... et surtout une maman pour préparer de bons goûters !  aBoris se dispute avec son reflet dans le miroir. Il ne dit que des choses désagréables et clame haut et fort qu'un miroir dit toujours la vérité.  aAujourd'hui, Boris fête ses 4 ans, ce qui signifie quatre fois plus de gâteaux et de cadeaux. Le magnifique robot provoque l'indignation des autres jouets par ses moqueries à leur égard.   aAujourd'hui, Boris fête ses 4 ans, ce qui signifie quatre fois plus de gâteaux et de cadeaux. Le magnifique robot provoque l'indignation des autres jouets par ses moqueries à leur égard.   aM (JAUNE)wASISc1i00688997d7/1/2015e7/1/2015kCHECKEDOUTl10JALBTPmALFMEDAn5pE6.60rMsYt1IMPu14/5/2014xALBzTPET
\ No newline at end of file
diff --git a/library/Class/Codification.php b/library/Class/Codification.php
index a55c3948bb32b02648aae4b93a545f6cb02cd6ed..2e24d2f07a445bbc428bebaf6cd859738787b332 100644
--- a/library/Class/Codification.php
+++ b/library/Class/Codification.php
@@ -38,7 +38,7 @@
  * N: année
  * O: notes
  * P: pcdm4
- * Q:
+ * Q: prix
  * R: résumé
  * S: section
  * T: type de doc
@@ -54,7 +54,7 @@
 class Class_Codification {
 	use Trait_Singleton, Trait_Translator;
 	const
-		CHAMPS = 'JAKEFCNMDGHPILOR8',
+		CHAMPS = 'JAKEFCNMDGHPILOR8Q',
 		CODE_COLLECTION = 'C',
 		CODE_EDITEUR = 'E',
 		CODE_IDENTIFIANT = 'I',
@@ -62,6 +62,7 @@ class Class_Codification {
 		CODE_COLLATION = 'K',
 		CODE_ANNEE = 'N',
 		CODE_NOTES = 'O',
+		CODE_PRIX = 'Q',
 		CODE_RESUME = 'R',
 		CODE_URL = '8',
 		CODE_NOUVEAUTE = '9',
@@ -178,7 +179,8 @@ class Class_Codification {
 			Class_CodifTags::CODE_FACETTE							=> [		$this->_("Tag"),							$this->_("Tag(s)")],
 			Class_Codification::CODE_URL							=> [		$this->_("Lien internet"),		$this->_("Liens internet")],
 			Class_Codification::CODE_AVAILABILITY     => [		$this->_("En rayon"),		      $this->_("En rayon")],
-			Class_Codification::CODE_NOUVEAUTE  			=> [		$this->_("Nouveauté"),			  $this->_("Nouveauté")]];
+  		Class_Codification::CODE_NOUVEAUTE  			=> [		$this->_("Nouveauté"),			  $this->_("Nouveauté")],
+		Class_Codification::CODE_PRIX  			=> [		$this->_("Prix"),			  $this->_("Prix")]];
 
 		$this->addThesauriToNomChamps();
 		$this->setFacetDisplayNames();
diff --git a/library/Class/Notice.php b/library/Class/Notice.php
index 69fd86ae29abfab1d0fa87cf5a7188cc33393fa2..848eb238f03526afaf1cc27b626c25641d242f28 100644
--- a/library/Class/Notice.php
+++ b/library/Class/Notice.php
@@ -621,6 +621,7 @@ class Class_Notice extends Storm_Model_Abstract {
 			case Class_Codification::CODE_RESUME: return  $this->getResume();
 			case Class_Codification::CODE_URL: return  $this->getUrls();
 			case Class_Codification::CODE_ANNEE: return  $this->getAnnee();
+			case Class_Codification::CODE_PRIX: return  $this->getPrix();
 			case Class_Codification::CODE_IDENTIFIANT: return  (new Class_Isbn($this->getIsbnOrEan()))->getAll()['isbn10'];
 			case Class_Codification::CODE_NOUVEAUTE: return $this->isNouveaute() ? $this->_('Oui'): $this->_('Non');
 		}
@@ -633,7 +634,9 @@ class Class_Notice extends Storm_Model_Abstract {
 		return (new Class_Notice_Urls($this))->asArray();
 	}
 
-
+	public function getPrix() {
+		return $this->get_subfield("010", "d");
+	}
 
 	public function hasTome() {
 		if ($data = $this->get_subfield("461", "t")
diff --git a/library/Class/Pret.php b/library/Class/Pret.php
index 8429c49a87c7df68502960c73eaddbfebf9d094a..55547cf96b4dc8564702e61fa491c82160ad4c24 100644
--- a/library/Class/Pret.php
+++ b/library/Class/Pret.php
@@ -16,12 +16,12 @@
  *
  * 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_Pret extends Storm_Model_Abstract {
 	protected $_table_name = 'prets';
-	protected $_table_primary = 'id_pret'; 
+	protected $_table_primary = 'id_pret';
 
 	protected $_belongs_to = array('bib' => array('model' => 'Class_Bib',
 																								'referenced_in' => 'id_site'));
@@ -32,8 +32,8 @@ class Class_Pret extends Storm_Model_Abstract {
 
 
 	public function getExemplaire() {
-		return Class_Exemplaire::getLoader()->findFirstBy(array('id_bib' => $this->getIdSite(),
-																														'code_barres' => $this->getCodeBarres()));
+		return Class_Exemplaire::findFirstBy(['id_bib' => $this->getIdSite(),
+																					'code_barres' => $this->getCodeBarres()]);$item;
 	}
 }
 
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index 880b7ec61fddecff66e496642f622026dac71161..cd9b9ac39a9205444669899749e57201081947ba 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -212,8 +212,8 @@ class Class_Profil extends Storm_Model_Abstract {
 																																								 'plan' => 1,
 																																								 'resa' => 1,
 																																								 'dispo' => 1,
-																																								 'date_retour' => 0],
-																															 'en_pret' => 'En prêt']),
+																																								 'date_retour' => 0,
+																																								 'en_pret' => Class_WebService_SIGB_Exemplaire::DISPO_EN_PRET]]),
 				 'hauteur_banniere' => 100,
 				 'mail_site' => '',
 				 'mail_suggestion_achat' => '',
diff --git a/library/Class/Reservation.php b/library/Class/Reservation.php
index 4f72f78104463e66fd2ab40f0989aeb912a956d5..2e75a6ed7b1f316e3dc098d2cfb7835c8c7accb4 100644
--- a/library/Class/Reservation.php
+++ b/library/Class/Reservation.php
@@ -16,15 +16,15 @@
  *
  * 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_Reservation extends Storm_Model_Abstract {
 	protected $_table_name = 'reservations';
-	protected $_table_primary = 'id_resa'; 
+	protected $_table_primary = 'id_resa';
 
-	protected $_belongs_to = array('bib' => array('model' => 'Class_Bib',
-																								'referenced_in' => 'id_site'));
+	protected $_belongs_to = ['bib' => ['model' => 'Class_Bib',
+																			'referenced_in' => 'id_site']];
 
 	protected $_notice;
 
@@ -33,7 +33,8 @@ class Class_Reservation extends Storm_Model_Abstract {
 		if (isset($this->_notice))
 			return $this->_notice;
 
-		if ($exemplaire = Class_Exemplaire::getLoader()->findFirstBy(array('id_origine' => $this->getIdNoticeOrigine())))
+		if ($exemplaire = Class_Exemplaire::findFirstBy(['id_origine' => $this->getIdNoticeOrigine(),
+																										 'order' => 'zone995 desc']))
 			return $this->_notice = $exemplaire->getNotice();
 
 		return null;
@@ -41,8 +42,8 @@ class Class_Reservation extends Storm_Model_Abstract {
 
 
 	public function getRang() {
-		return 1 + $this->getLoader()->countBy(array('ID_NOTICE_ORIGINE' => $this->getIdNoticeOrigine(),
-																								 'where' => sprintf('DATE_RESA<"%s"', $this->getDateResa())));
+		return 1 + Class_Reservation::getLoader()->countBy(['ID_NOTICE_ORIGINE' => $this->getIdNoticeOrigine(),
+																												'where' => sprintf('DATE_RESA<"%s"', $this->getDateResa())]);
 	}
 
 
@@ -54,5 +55,4 @@ class Class_Reservation extends Storm_Model_Abstract {
 		return "Réservé";
 	}
 }
-
 ?>
\ No newline at end of file
diff --git a/library/Class/ScriptLoader.php b/library/Class/ScriptLoader.php
index 42e4dffd8fa1ea172a91cd5989dcb3373844a673..ea35782c0b12f6f88f30b6263c2de7c03f47cbf8 100644
--- a/library/Class/ScriptLoader.php
+++ b/library/Class/ScriptLoader.php
@@ -36,7 +36,8 @@ class Class_ScriptLoader {
 		$_amber_ready_scripts,
 		$_jquery_ready_scripts,
 		$_jquery_ready_mode = self::MODE_JQUERY_READY,
-		$_version_pergame_hash;
+		$_version_pergame_hash,
+		$_metas = [];
 
 	/**
 	 * @return ScriptLoader
@@ -730,6 +731,20 @@ class Class_ScriptLoader {
 			->addAdminScript('codemirror-4.4/keymap/emacs')
 			->addStyleSheet(URL_ADMIN_JS . 'codemirror-4.4/lib/codemirror');
 	}
+
+
+	public function addRecordMeta($record) {
+		$this->_metas[] = '<meta property="og:title" content="' . $record->getTitrePrincipal() . ' - ' . $record->getAuteurPrincipal() . '" />';
+		$this->_metas[] = '<meta property="og:description" content="' . $record->getResume() . '" />';
+		$this->_metas[] = '<meta property="og:image" content="' . $record->fetchUrlImage() . '" />';
+		return $this;
+	}
+
+
+	public function loadMeta() {
+		echo implode('',$this->_metas);
+		return $this;
+	}
 }
 
 ?>
\ No newline at end of file
diff --git a/library/Class/Systeme/PergameService.php b/library/Class/Systeme/PergameService.php
index 33c2dabf0fd8b36641c7c23874bcb2ce4cfc7ee5..710f8c982bb27e6a508807ba49dca59daa02b27b 100644
--- a/library/Class/Systeme/PergameService.php
+++ b/library/Class/Systeme/PergameService.php
@@ -16,7 +16,7 @@
  *
  * 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_Systeme_PergameService {
@@ -58,7 +58,7 @@ class Class_Systeme_PergameService {
 		$nb_resas=fetchOne("select count(*) from reservations where IDABON='".$this->user->IDABON."' and ORDREABON=".$this->user->ORDREABON);
 		return $nb_resas;
 	}
-	
+
 
 	public function getPrets() {
 		$data=fetchAll("select * from prets where IDABON='".$this->user->IDABON."' and ORDREABON=".$this->user->ORDREABON." and EN_COURS=1");
@@ -80,31 +80,26 @@ class Class_Systeme_PergameService {
 
 
 	public function getDisponibilite($ex) {
-		// terme en pret
-		$tmp=Class_Profil::getCurrentProfil()->getCfgNoticeAsArray();
-		$libelle_en_pret="emprunté";
-		if (array_isset("en_pret", $tmp["exemplaires"]))
-			$libelle_en_pret=$tmp["exemplaires"]["en_pret"];
-		
 		// verif pret
 		$code_barres=$ex["code_barres"];
-		$prets = fetchAll("select * from prets where code_barres='$code_barres' and EN_COURS=1");
+		$prets = Class_Pret::findAllBy(['code_barres' => $code_barres,
+																		'en_cours' => 1]);
 
 		// Activité
 		$ex["dispo"]=$ex["activite"];
 		$ex["reservable"]=true;
 		if ($prets)
 		{
-			$ex["dispo"]=$libelle_en_pret;
+			$ex["dispo"] = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray()['exemplaires']['en_pret'];
 			$ex["date_retour"] = strftime('%d/%m/%y' ,strtotime($prets[0]['DATE_RETOUR']));
-		}	
+		}
 		else
 		{
 			$regles=$this->getReglesReservation($ex["id_bib"]);
 			if($regles["Autoriser_docs_disponibles"]==1) $ex["reservable"]=true;
 			else $ex["reservable"]=false;
 		}
-		
+
 		// nombre de réservations
 		$nb_resas=fetchOne("select count(*) from reservations where ID_NOTICE_ORIGINE=".intval($ex["id_origine"]));
 		if($nb_resas)
@@ -152,7 +147,7 @@ class Class_Systeme_PergameService {
 			return $notice;
 		}
 
-		return ($model = Class_Notice::find($id_notice)) 
+		return ($model = Class_Notice::find($id_notice))
 			? $model->getNotice('JA') : [];
 	}
 
@@ -166,26 +161,26 @@ class Class_Systeme_PergameService {
 		}
 
 		foreach($ids as $id) {
-			if ($inSql > '') 
+			if ($inSql > '')
 				$inSql.=",";
 			$inSql.=$id["id_notice"];
 		}
 
 		$id_notice = fetchOne("select id_notice from notices where id_notice in($inSql) and type_doc=$support");
 
-		return ($model = Class_Notice::find($id_notice)) 
+		return ($model = Class_Notice::find($id_notice))
 			? $model->getNotice('JA') : [];
 	}
 
 
 	public function reserverExemplairePergame($id_bib, $exemplaire, $code_annexe) {
-		if (!$this->user || !$this->user->ID_USER) 
+		if (!$this->user || !$this->user->ID_USER)
 			return ['erreur' => 'Vous devez être connecté pour réserver un document'];
 
-		if(!$this->user->IDABON) 
+		if(!$this->user->IDABON)
 			return ['erreur' => 'Vous devez être connecté en tant qu\'abonné pour réserver un document'];
-		
-		if (!$exemplaire) 
+
+		if (!$exemplaire)
 			return ['erreur' => 'Une erreur s\'est produite lors de la lecture de la notice.'];
 
 		$notice = $exemplaire->getNotice();
@@ -202,22 +197,22 @@ class Class_Systeme_PergameService {
 			'idabon' => $id_abon,
 			'ordreabon'=> $ordre_abon]);
 
-		if ($resa) 
+		if ($resa)
 			return ['erreur' => 'Vous avez déjà réservé ce document le ' . formatDate($resa->getDateResa(), 1)];
 
 		$regles = $this->getReglesReservation($exemplaire->getIdBib());
 
 		// controle quota par carte
 		$nb = Class_Reservation::countBy(['idabon' => $id_abon]);
-		if ($nb >= $regles['Max_par_carte']) 
+		if ($nb >= $regles['Max_par_carte'])
 			return ['erreur' => 'La réservation est impossible car vous avez atteint le nombre maximum de réservations sur votre carte.'];
-		
+
 		// controle quota par document
 		$nb = Class_Reservation::countBy(['id_notice_origine' => $id_origine]);
 		if ($nb >= $regles['Max_par_document'])
 			return ['erreur' => 'La réservation est impossible car le nombre maximum de réservations pour ce document a été atteint (' . $regles["Max_par_document"] . ').'];
-		
-		if (!$id_bib) 
+
+		if (!$id_bib)
 			$id_bib = 1;
 
 		$time_source = self::getTimeSource();
@@ -241,7 +236,7 @@ class Class_Systeme_PergameService {
 
 	 public function supprimerReservation($id_reservation)  {
 		 $resa = fetchEnreg("select * from reservations where ID_RESA=$id_reservation");
-		 if(!$resa) 
+		 if(!$resa)
 			 return false;
 		 sqlExecute("delete from reservations where ID_RESA=$id_reservation");
 
@@ -269,7 +264,7 @@ class Class_Systeme_PergameService {
 		 $nbProlong = (int)$pret["NB_PROLONGATIONS"];
 		 $nbProlong += 1;
 		 $dateRetour = $pret["DATE_RETOUR"];
-		 if($nbProlong > $regles["Nombre_max_par_document"]) 
+		 if($nbProlong > $regles["Nombre_max_par_document"])
 			 return ['statut' => 0,
 			         'erreur' => 'Le prêt n\'a pas pu être prolongé car il a atteint le nombre de prolongations autorisé.' . $complement_msg];
 
@@ -277,7 +272,7 @@ class Class_Systeme_PergameService {
 		 $anteriorite_max = (int)$regles['Anteriorite_max_en_jours'];
 		 if ($anteriorite_max) {
 			 $ecart = ecartDates($dateJour, $dateRetour);
-			 if ($ecart>$anteriorite_max) 
+			 if ($ecart>$anteriorite_max)
 				 return ['statut' => 0,
 				         'erreur' => 'Le prêt n\'a pas pu être prolongé car il a un retard trop important.' . $complement_msg];
 		 }
@@ -285,14 +280,14 @@ class Class_Systeme_PergameService {
 		 // Controle si le doc est réservé
 		 if ($regles['Interdire_si_reservation'] == 1) {
 			 $controle = fetchOne("Select Count(*) From reservations Where ID_NOTICE_ORIGINE=".$pret["ID_NOTICE_ORIGINE"]);
-			 if($controle > 0) 
+			 if($controle > 0)
 				 return ['statut' => 0,
 				         'erreur' => 'Le prêt n\'a pas pu être prolongé car il est réservé.' . $complement_msg];
 		 }
 
 		 // On prolonge
 		 $newDate = ajouterJours($pret["DATE_RETOUR"], $regles['Duree_en_jours']);
-		 while($newDate<=$dateJour) 
+		 while($newDate<=$dateJour)
 			 $newDate = ajouterJours($newDate,$regles['Duree_en_jours']);
 		 $tempsProlong=(int)$regles['Duree_en_jours'];
 
@@ -312,7 +307,7 @@ class Class_Systeme_PergameService {
 
 	 private function ecrireTransaction($type_mvt, $enreg) {
 		 $data = '';
-		 foreach($enreg as $item) 
+		 foreach($enreg as $item)
 			 $data .= $item . '|';
 		 Class_Transaction::newInstance(['type_mvt' => $type_mvt, 'data' => $data])
 			 ->save();
@@ -320,13 +315,13 @@ class Class_Systeme_PergameService {
 
 
 	public function getReglesReservation($id_bib) {
-		if (!$id_bib) 
+		if (!$id_bib)
 			return false;
 		$bib = Class_IntBib::find($id_bib);
 		$data = $bib->getCommParamsAsArray();
-		if (!isset($data["Max_par_carte"])) 
+		if (!isset($data["Max_par_carte"]))
 			$data["Max_par_carte"] = 3;
-		if (!isset($data["Max_par_document"])) 
+		if (!isset($data["Max_par_document"]))
 			$data["Max_par_document"] = 3;
 		return $data;
 	}
diff --git a/library/Class/WebService/SIGB/Emprunteur.php b/library/Class/WebService/SIGB/Emprunteur.php
index 2b38b4808bc1abc7e705f8de6058ed50212cf08f..48fe7286a048278ec6ecb20eebbe20595fb1fcdf 100644
--- a/library/Class/WebService/SIGB/Emprunteur.php
+++ b/library/Class/WebService/SIGB/Emprunteur.php
@@ -16,11 +16,11 @@
  *
  * 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_Emprunteur {
-	protected 
+	protected
 		$_id,
 		$_name,
 		$_emprunts,
@@ -44,7 +44,7 @@ class Class_WebService_SIGB_Emprunteur {
 	  $_date_naissance,
 	  $_is_contact_email= 0,
 	  $_is_contact_sms= 0;
-	
+
 
 	public function __sleep() {
 		$this->getEmprunts();
@@ -551,7 +551,7 @@ class Class_WebService_SIGB_Emprunteur {
 	public function getEndDate() {
 		return $this->_end_date;
 	}
-		
+
 
 	/**
 	 * @param Class_WebService_SIGB_AbstractService $service
@@ -615,7 +615,7 @@ class Class_WebService_SIGB_Emprunteur {
 		return $this;
 	}
 
-	
+
 	/**
 	 * @return boolean
 	 */
diff --git a/library/Class/WebService/SIGB/Exemplaire.php b/library/Class/WebService/SIGB/Exemplaire.php
index 749d489f9228f479e25b8562526bab51a3a5bebd..82383398640a3f5cd7e5ed1353f0d74efbdfafc1 100644
--- a/library/Class/WebService/SIGB/Exemplaire.php
+++ b/library/Class/WebService/SIGB/Exemplaire.php
@@ -16,7 +16,7 @@
  *
  * 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_Exemplaire {
@@ -99,16 +99,16 @@ class Class_WebService_SIGB_Exemplaire {
 	public function getExemplaireOPAC() {
 		if (isset($this->_exemplaire_opac))
 			return $this->_exemplaire_opac;
-		
+
 		if ($no_notice = $this->getNoNotice())
 			$params = array('id_origine' => $no_notice);
-		
+
 		if ($this->code_barre)
 			$params = array('code_barres' => $this->code_barre);
 
 		if (!isset($params))
 			return null;
-		
+
 		return $this->_exemplaire_opac = Class_Exemplaire::getLoader()->findFirstBy($params);
 	}
 
@@ -182,7 +182,7 @@ class Class_WebService_SIGB_Exemplaire {
 		return $this->bibliotheque;
 	}
 
- 
+
 	public function getAuteur(){
 		if (!$this->auteur  and ($notice = $this->getNoticeOPAC()))
 			$this->auteur = $notice->getAuteurPrincipal();
@@ -294,13 +294,7 @@ class Class_WebService_SIGB_Exemplaire {
 
 
 	public function getLibelleDispoEnPret() {
-		if (!$tmp = Class_Profil::getCurrentProfil()->getCfgNoticeAsArray())
-			return self::DISPO_EN_PRET;
-
-		if (array_isset("en_pret", $tmp["exemplaires"]))
-			 return $tmp["exemplaires"]["en_pret"];
-
-		return self::DISPO_EN_PRET;
+		return Class_Profil::getCurrentProfil()->getCfgNoticeAsArray()['exemplaires']['en_pret'];
 	}
 
 
@@ -367,11 +361,11 @@ class Class_WebService_SIGB_Exemplaire {
 		return $this;
 	}
 
-	
+
 	public function getEdition() {
 		return $this->edition;
 	}
-	
+
 
 	public function getDisponibiliteLabel() {
 		return $this->_disponibiliteLabel;
diff --git a/library/Class/WebService/SIGB/Pergame/Service.php b/library/Class/WebService/SIGB/Pergame/Service.php
index 14053507de7f350098e6f1d6ea821baf7885f349..40fadf007a975a19b0076983c912a8c4e6e47e7a 100644
--- a/library/Class/WebService/SIGB/Pergame/Service.php
+++ b/library/Class/WebService/SIGB/Pergame/Service.php
@@ -16,7 +16,7 @@
  *
  * 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_Service extends Class_WebService_SIGB_AbstractService {
@@ -63,16 +63,15 @@ class Class_WebService_SIGB_Pergame_Service extends Class_WebService_SIGB_Abstra
 	}
 
 
-	public function getEmpruntsOf($emprunteur)
-	{
-		$params = Class_IntBib::getLoader()->find($this->_id_bib)->getCommParamsAsArray();
+	public function getEmpruntsOf($emprunteur) {
+		$params = Class_IntBib::find($this->_id_bib)->getCommParamsAsArray();
 		$renouvelable = isset($params['Autoriser_prolongations']) ? $params['Autoriser_prolongations'] : false;
-		
-		$user = Class_Users::getLoader()->find($emprunteur->getId());
-		$prets = Class_Pret::getLoader()->findAllBy(array('IDABON' => $user->getIdabon(),
-																											'ORDREABON' => $user->getOrdreabon(),
-																											'EN_COURS' => 1));
-		$emprunts = array();
+
+		$user = Class_Users::find($emprunteur->getId());
+		$prets = Class_Pret::findAllBy(['IDABON' => $user->getIdabon(),
+																		'ORDREABON' => $user->getOrdreabon(),
+																		'EN_COURS' => 1]);
+		$emprunts = [];
 		foreach($prets as $pret)
 		{
 			$emprunts []= Class_WebService_SIGB_Emprunt::newInstanceWithEmptyExemplaire()
@@ -90,7 +89,7 @@ class Class_WebService_SIGB_Pergame_Service extends Class_WebService_SIGB_Abstra
 		$user = Class_Users::find($emprunteur->getId());
 		$reservations_db = Class_Reservation::findAllBy(['IDABON' => $user->getIdabon(),
 																										 'ORDREABON' => $user->getOrdreabon()]);
-		$reservations = array();
+		$reservations = [];
 		foreach($reservations_db as $reservation) {
 			$bib = Class_Bib::find($reservation->getIdSite());
 
@@ -107,8 +106,8 @@ class Class_WebService_SIGB_Pergame_Service extends Class_WebService_SIGB_Abstra
 
 
 	public function reserverExemplaire($user, $exemplaire, $code_annexe) {
-		return $this->getLegacyService()->reserverExemplairePergame($this->_id_bib, 
-																												 $exemplaire, 
+		return $this->getLegacyService()->reserverExemplairePergame($this->_id_bib,
+																												 $exemplaire,
 																												 $code_annexe);
 	}
 
@@ -122,7 +121,7 @@ class Class_WebService_SIGB_Pergame_Service extends Class_WebService_SIGB_Abstra
 		return $this->getLegacyService()->prolongerPret($pret_id);
 	}
 
-	
+
 	public function getNotice($id){
 		if (!$exemplaire = Class_Exemplaire::getLoader()->findFirstBy(array('id_origine' => $id,
 																																				'id_bib' => $this->_id_bib)))
diff --git a/library/Class/WebService/SIGB/Reservation.php b/library/Class/WebService/SIGB/Reservation.php
index ff8d5be190169d14fc782e9c4abbc6c752174230..049bfbfe3ae932fe888be296145c36cfc76e56a3 100644
--- a/library/Class/WebService/SIGB/Reservation.php
+++ b/library/Class/WebService/SIGB/Reservation.php
@@ -16,7 +16,7 @@
  *
  * 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_Reservation extends Class_WebService_SIGB_ExemplaireOperation {
@@ -24,6 +24,7 @@ class Class_WebService_SIGB_Reservation extends Class_WebService_SIGB_Exemplaire
 	protected $etat;
 	protected $pickup_location_label;
 
+
 	public function getRang() {
 		if (!isset($this->rang)) $this->rang=1;
 		return $this->rang;
@@ -32,7 +33,7 @@ class Class_WebService_SIGB_Reservation extends Class_WebService_SIGB_Exemplaire
 
 	public function setRang($rang) {
 		$this->rang = (int)$rang;
-		if ($this->rang == 0) 
+		if ($this->rang == 0)
 			$this->rang = 1;
 		return $this;
 	}
@@ -48,14 +49,17 @@ class Class_WebService_SIGB_Reservation extends Class_WebService_SIGB_Exemplaire
 		return $this->etat;
 	}
 
+
 	public function setPickupLocationLabel($pickup_location_label) {
 		$this->pickup_location_label = $pickup_location_label;
 	}
 
+
 	public function getPickupLocationLabel() {
 		return $this->pickup_location_label;
 	}
 
+
 	public function onParseAttributes() {
 		$this->setRang($this->getAttribute('Rang'));
 		$this->setEtat($this->getAttribute('Etat'));
@@ -63,15 +67,14 @@ class Class_WebService_SIGB_Reservation extends Class_WebService_SIGB_Exemplaire
 		if (!$code_annexe = $this->getAttribute('Lieu'))
 			return;
 
-		if ($annexe = Class_CodifAnnexe::getLoader()->findFirstBy(array('code' => $code_annexe)))
-				$this->setBibliotheque($annexe->getLibelle());
+		if ($annexe = Class_CodifAnnexe::findFirstBy(['code' => $code_annexe]))
+			$this->setBibliotheque($annexe->getLibelle());
 	}
-	
+
 
 	/** @codeCoverageIgnore */
 	public function __toString(){
 		return parent::__toString().", Rang:".$this->getRang();
 	}
 }
-
-?>
\ No newline at end of file
+?>
diff --git a/library/ZendAfi/View/Helper/ShareUrl.php b/library/ZendAfi/View/Helper/ShareUrl.php
index de93d96568f4fd110b31b7d4c2bd2d32e2af0411..bd26e36ea859ba944a7be54efdd6faeba3230440 100644
--- a/library/ZendAfi/View/Helper/ShareUrl.php
+++ b/library/ZendAfi/View/Helper/ShareUrl.php
@@ -16,12 +16,12 @@
  *
  * 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 ZendAfi_View_Helper_ShareUrl extends Zend_View_Helper_HtmlElement {
 	static protected $_web_client;
-	protected $reseaux=["facebook" => ["url" => "https://www.facebook.com/sharer/sharer.php?m2w&s=100&p"],
+	protected $reseaux=["facebook" => ["url" => "https://www.facebook.com/sharer/sharer.php"],
 											"twitter"	 => ["url" => "http://twitter.com/share?"]];
 
 	protected $url_shortener="http://is.gd/api.php?longurl=";					// Url pour obtenir une une url courte
@@ -30,12 +30,12 @@ class ZendAfi_View_Helper_ShareUrl extends Zend_View_Helper_HtmlElement {
 	// Rend la structure
 	//------------------------------------------------------------------------------------------------------
 	public function getReseaux($id_reseau=false)	{
-		if($id_reseau) 
+		if($id_reseau)
 			return $this->reseaux[$id_reseau];
-		else 
+		else
 			return $this->reseaux;
 	}
-	
+
 
 	//------------------------------------------------------------------------------------------------------
 	// Rend l'url a passer en parametre
@@ -45,11 +45,7 @@ class ZendAfi_View_Helper_ShareUrl extends Zend_View_Helper_HtmlElement {
 
 		// Url réseau
 		if($id_reseau==='facebook')
-			return $this->reseaux[$id_reseau]["url"].
-				$this->getFacebookUrl($this->shortenUrl($url_afi),
-															$titre, 
-															$message, 
-															$url_img);
+			return $this->reseaux[$id_reseau]["url"];
 
 		if($id_reseau==='twitter')
 			return $this->reseaux[$id_reseau]["url"].
@@ -61,7 +57,7 @@ class ZendAfi_View_Helper_ShareUrl extends Zend_View_Helper_HtmlElement {
 
 	public function shortenUrl($original_url) {
 		$short_url = self::getDefaultWebClient()->open_url($this->url_shortener.urlencode($original_url));
-		if (!$short_url or substr($short_url,0,5)=="Error") 
+		if (!$short_url or substr($short_url,0,5)=="Error")
 			return $original_url;
 		return $short_url;
 	}
@@ -82,17 +78,6 @@ class ZendAfi_View_Helper_ShareUrl extends Zend_View_Helper_HtmlElement {
 		self::$_web_client = null;
 	}
 
-
-	public function getFacebookUrl($url_afi,$titre, $message, $url_img) {
-
-		return http_build_query(['[title]' => $titre,
-														 '[summary]' => $message,
-														 '[url]' => $url_afi,
-														 '[images][0]' =>  $url_img],
-														'','&p');
-	}
-
-	
 	public function getTwitterUrl($url_afi, $titre, $message) {
 
 		return http_build_query(['url' => $url_afi,
@@ -101,5 +86,5 @@ class ZendAfi_View_Helper_ShareUrl extends Zend_View_Helper_HtmlElement {
 														'','&');
 	}
 
-	
+
 }
\ No newline at end of file
diff --git a/library/startup.php b/library/startup.php
index d98e33e7d3989380cfbadf4f66cc15c3dd3af629..d4eb260026edcd7f038529a48a2995287a8d24eb 100644
--- a/library/startup.php
+++ b/library/startup.php
@@ -58,7 +58,7 @@ function defineConstant($name, $value) {
 
 function setupConstants() {
 	defineConstant('BOKEH_MAJOR_VERSION','7.1');
-	defineConstant('BOKEH_RELEASE_NUMBER', BOKEH_MAJOR_VERSION . '.0');
+	defineConstant('BOKEH_RELEASE_NUMBER', BOKEH_MAJOR_VERSION . '.2');
 
 	defineConstant('ROOT_PATH',  realpath(dirname(__FILE__).'/..').'/');
 
diff --git a/public/admin/css/global.css b/public/admin/css/global.css
index 59eeab65bfe7dbe064b559aedb6f83b3f38ac36a..8be9bafdfec0ba1674eaef1c32c8aba880f160a6 100644
--- a/public/admin/css/global.css
+++ b/public/admin/css/global.css
@@ -1207,6 +1207,14 @@ span.ui-dialog-title {
     background: url(../images/patience.gif) no-repeat top left;
 }
 
+#suggestions { 
+  table-layout: fixed;
+}
+
+#suggestions td {
+  word-break: break-all;
+  word-wrap: break-word;
+}
 
 
 /** monocle preview epub */
diff --git a/scripts/emacs/phafi-mode.el b/scripts/emacs/phafi-mode.el
index c54f4c6cf25f2292aa731653c97160891d40d354..3d0b35b7ff86940a648f6fc9e00d31319b7a4f43 100644
--- a/scripts/emacs/phafi-mode.el
+++ b/scripts/emacs/phafi-mode.el
@@ -93,7 +93,7 @@
   (setq ac-sources '(ac-source-gtags ac-source-words-in-buffer ac-source-php-auto-yasnippets))
   (imenu-add-menubar-index)
   (phafi-init-menu)
-  (phafi-enable-autotest)
+;;(phafi-enable-autotest)
   (setq
    magit-diff-options '("-w")
    flymake-mode t
diff --git a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
index d1515d1f422c4d7053b2faeb925fffc870f7e828..d6c27d9b87bfa574ab6aec779d946c89f90540b7 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
@@ -298,31 +298,37 @@ class AbonneControllerPretsListReservationTest extends AbstractAbonneControllerP
 		$potter =
 			(new Class_WebService_SIGB_Reservation('12',
 																						 (new Class_WebService_SIGB_Exemplaire(123))->setTitre('Potter')))
-			->parseExtraAttributes(array('Etat' => 'Réservation émise',
-																	 'Rang' => '2',
-																	 'Bibliotheque' => 'Tombouctou',
-																	 'N° de notice' => 564));
-
-		Class_Exemplaire::newInstance(['id_origine' => 564,
-																	 'notice' => $this->fixture('Class_Notice',
-																															 ['id' => 823,
-																																'titre_principal' => 'Potter'])
-																		])->assertSave();
+			->parseExtraAttributes(['Etat' => 'Réservation émise',
+															'Rang' => '2',
+															'Bibliotheque' => 'Tombouctou',
+															'N° de notice' => 564]);
 
 		// This item has no library: non-regression test.
 		$dobby =
 			(new Class_WebService_SIGB_Reservation('13',
 																						 (new Class_WebService_SIGB_Exemplaire(124))->setTitre('Dobby')))
-			->parseExtraAttributes(array('Etat' => 'Réservation émise',
-																	 'Rang' => '2',
-																	 'N° de notice' => 565));
+			->parseExtraAttributes(['Etat' => 'Réservation émise',
+															'Rang' => '2',
+															'N° de notice' => 565]);
+
+		$this->fixture('Class_Notice',
+									 ['id' => 820,
+										'titre_principal' => 'Potter']);
 
-		Class_Exemplaire::newInstance(['id_origine' => 565,
-																	 'notice' => $this->fixture('Class_Notice',
-																															['id' => 824,
-																															 'titre_principal' => 'Dobby'])
-																		])->assertSave();
+		$this->fixture('Class_Notice',
+									 ['id' => 824,
+										'titre_principal' => 'Dobby']);
 
+		$this->fixture('Class_Exemplaire',
+									 ['id' => 120,
+										'id_origine' => 564,
+										'id_notice' => 820]);
+
+		$this->fixture('Class_Exemplaire',
+									 ['id' => 130,
+										'id_origine' => 565,
+										'id_notice' => '824',
+										'zone995' => '']);
 
 		$this->florence
 			->setFicheSigb(['type_comm' => Class_IntBib::COM_OPSYS,
@@ -374,7 +380,7 @@ class AbonneControllerPretsListReservationTest extends AbstractAbonneControllerP
 
 	/** @test */
 	public function titreShouldBePotterAndLinkToNotice() {
-		$this->assertXPathContentContains('//tbody/tr[1]//td//a[contains(@href, "recherche/viewnotice/id/823/retour_abonne/reservations")]',
+		$this->assertXPathContentContains('//tbody/tr[1]//td//a[contains(@href, "recherche/viewnotice/id/820/retour_abonne/reservations")]',
 																			'Potter',
 																			$this->_response->getBody());
 	}
diff --git a/tests/application/modules/opac/controllers/CmsControllerTest.php b/tests/application/modules/opac/controllers/CmsControllerTest.php
index a980dba7b644a7684b9532531dd04bbbb0e292ad..226338958b1aa38a0b151e6b7d4856e880a5b2a6 100644
--- a/tests/application/modules/opac/controllers/CmsControllerTest.php
+++ b/tests/application/modules/opac/controllers/CmsControllerTest.php
@@ -80,7 +80,8 @@ extends AbstractControllerTestCase {
 									 ['id' => 1,
 										'titre' => 'La fête de la banane',
 										'contenu' => 'Une fête qui glisse !<img src="'.BASE_URL.'/image/banane.jpg"/>'])
-				 ->setDateMaj('2011-11-11 11:11:11');
+				 ->setDateMaj('2011-11-11 11:11:11')
+								->setEventsDebut('2009-09-09 09:09:09');
 		$fete_frite=$this->fixture('Class_Article',
 									 ['id' => 2,
 										'titre' => 'La fête de la frite',
@@ -144,9 +145,10 @@ extends AbstractControllerTestCase {
 
 
 	/** @test */
-	public function firstItemDateShouldBe11_11_2011() {
+	public function firstItemDateShouldBe09_09_2009() {
 		$this->assertXpathContentContains('//channel/item[1]/pubDate',
-																			'11 Nov 2011');
+																			'09 Sep 2009',
+																			$this->_response->getBody());
 	}
 
 
diff --git a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
index 54c2efa7bbaef2c2be62fddde5ac4bccf68fb560..4c50518dc858150a67f2464adb693b2fc97f3bf8 100644
--- a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
+++ b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
@@ -121,6 +121,10 @@ class NoticeAjaxControllerNoticeWithCustomLinks extends AbstractControllerTestCa
 		$this->dispatch('/opac/noticeajax/detail/id_notice/999', true);
 	}
 
+	/** @test */
+	public function detailsShouldContainPrice() {
+		$this->assertXPathContentContains('//dt[contains(@class, "prix")]/following-sibling::dd', '18,80');
+	}
 
 	/** @test */
 	public function linkToPageDesLibrairesFrShouldBePresent() {
@@ -942,7 +946,7 @@ class NoticeAjaxControllerVideoMorceauTest extends AbstractControllerTestCase {
 	 * @test
 	 */
 	public function responseShouldContainsPlayer() {
-		$this->assertXPath('//param[@name="movie"][@value="http://youtube.googleapis.com/v/axb2sHpGwHQ&source=uds&autoplay=1"]');
+		$this->assertXPath('//param[@name="movie"][contains(@value,"//youtube.googleapis.com/v/axb2sHpGwHQ&source=uds&autoplay=1")]');
 	}
 
 
diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
index 6605a4173632f3fa4a3bc0ccb40ebb23e5758b3a..7de06fe9f9db21ca92c149769aab2097150cc18d 100644
--- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
+++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php
@@ -386,7 +386,7 @@ class ProfilOptionsControllerTwitterLinkWithProfilAdulteTest extends ProfilOptio
 	/** @test */
 	public function facebookLinkShouldReturnJavascriptForTweet() {
 		$this->dispatch('/opac/index/share/on/facebook/titre/Profil+Adulte?url='.urlencode('/index/index'), true);
-		$this->assertContains("window.open('https://www.facebook.com/sharer/sharer.php?m2w&s=100&p%5Btitle%5D=Profil+Adulte&p%5Burl%5D=http%3A%2F%2Fis.gd%2FPkdNgD','_blank','toolbar=0,status=0,width=800, height=410');",
+		$this->assertContains("window.open('https://www.facebook.com/sharer/sharer.php','_blank','toolbar=0,status=0,width=800, height=410');",
 													$this->_response->getBody());
 	}
 }
diff --git a/tests/application/modules/opac/controllers/RechercheControllerTest.php b/tests/application/modules/opac/controllers/RechercheControllerTest.php
index 8dccbe16565e7909bb7ad5226f3f430d68817f50..4f17abbd786f45a518cf463558e06fbd9759496e 100644
--- a/tests/application/modules/opac/controllers/RechercheControllerTest.php
+++ b/tests/application/modules/opac/controllers/RechercheControllerTest.php
@@ -442,6 +442,47 @@ abstract class RechercheControllerViewNoticeTestCase extends RechercheController
 
 
 
+class RechercheControllerViewNoticeMetasTest extends AbstractControllerTestCase {
+	public function setUp() {
+		parent::setUp();
+
+		$this->fixture('Class_Notice',
+									 ['id' => 345,
+										'titre_principal' => 'Cinéma d\'animation',
+										'auteur_principal' => 'Bernard Génin',
+										'annee' => 2002,
+										'editeur' => 'Gallimard',
+										'isbn' => '1-234-56789-0',
+										'type_doc' => Class_TypeDoc::LIVRE,
+										'url_vignette' => 'http://linux.org',
+										'url_image' => 'http://linux.org',
+										'facettes' => 'A123 F2 G1 P4 Y2 B1 Lfre M1 Z3 D1',
+										'date_creation' => '2013-12-31']);
+
+		$this->dispatch('recherche/viewnotice/id/345', true);
+	}
+
+
+	/** @test */
+	public function pageShouldContainTitleMeta() {
+		$this->assertXPathContentContains('//meta[@property="og:title"]/@content', 'Cinéma d\'animation - Bernard Génin');
+	}
+
+
+	/** @test */
+	public function pageShouldContainImageMeta() {
+		$this->assertXPathContentContains('//meta[@property="og:image"]/@content', 'http://linux.org');
+	}
+
+
+	/** @test */
+	public function pageShouldContainDescriptionMeta() {
+		$this->assertXPath('//meta[@property="og:description"]/@content');
+	}
+
+}
+
+
 
 class RechercheControllerViewNoticeClefAlphaTest extends RechercheControllerViewNoticeTestCase {
 	public function setUp() {
diff --git a/tests/application/modules/opac/controllers/SocialNetworkControllerTest.php b/tests/application/modules/opac/controllers/SocialNetworkControllerTest.php
index b1ca8da4ee13eaa43ae6259dded3e0a0e8041a3c..c80a94c93d58a292cc31e5c2662010d0752e6336 100644
--- a/tests/application/modules/opac/controllers/SocialNetworkControllerTest.php
+++ b/tests/application/modules/opac/controllers/SocialNetworkControllerTest.php
@@ -16,7 +16,7 @@
  *
  * 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
  */
 require_once 'AbstractControllerTestCase.php';
 
@@ -56,23 +56,6 @@ class SocialNetworkControllerShareActionTest extends AbstractControllerTestCase
 	}
 
 
-	/** @test */
-	public function shareOnFacebookShouldInjectShortUrlTitreMessageImageUrl() {
-		$this->_expectClientOpenUrlWithLongUrlAndAnswer('http://localhost'. BASE_URL .'/recherche/viewnotice/id/2',
-																										'http://is.gd/PkdNg2');
-		$this->dispatch('/social-network/share/on/facebook/url/'
-										.urlencode('/recherche/viewnotice/id/2')
-										.'/titre/'
-										.urlencode('titre notice')
-										.'/message/'
-										.urlencode('message notice')
-										.'/img_url/'
-										.urlencode('www.uneimagedenotice.fr/notice/2'), true);
-
-		$this->assertEquals("window.open('https://www.facebook.com/sharer/sharer.php?m2w&s=100&p%5Btitle%5D=titre+notice&p%5Bsummary%5D=message+notice&p%5Burl%5D=http%3A%2F%2Fis.gd%2FPkdNg2&p%5Bimages%5D%5B0%5D=www.uneimagedenotice.fr%2Fnotice%2F2','_blank','toolbar=0,status=0,width=800, height=410');",
-												$this->_response->getBody());
-	}
-
 }
 
 
diff --git a/tests/library/Class/WebService/SIGB/ExemplaireTest.php b/tests/library/Class/WebService/SIGB/ExemplaireTest.php
index 27357a2f11974bcf5d87edaf74441030eb24733a..1894f05fff25e2bd4b7e6acfa8515173ba709554 100644
--- a/tests/library/Class/WebService/SIGB/ExemplaireTest.php
+++ b/tests/library/Class/WebService/SIGB/ExemplaireTest.php
@@ -16,27 +16,19 @@
  *
  * 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 ExemplaireSIGBTest extends Storm_Test_ModelTestCase {
 	public function setUp() {
 		parent::setUp();
-
-		$this->profil = new Class_Profil();
-		$this->profil
-			->setId(4)
-			->setCfgNotice(array("exemplaires" => array()));
-		Class_Profil::setCurrentProfil($this->profil);
+		Class_Profil::setCurrentProfil($this->fixture('Class_Profil',
+																									['id' => 4,
+																									 'libelle' => 'default profil']));
 
 		$this->ex = new Class_WebService_SIGB_Exemplaire(2);
 	}
 
-	public function tearDown() {
-		$this->profil->setCfgNotice($this->profil->getDefaultValue('cfg_notice'));
-		parent::tearDown();
-	}
-
 
 	/** @test */
 	public function dispoEnPretShouldBeEnPretByDefault() {
@@ -47,8 +39,10 @@ class ExemplaireSIGBTest extends Storm_Test_ModelTestCase {
 
 	/** @test */
 	public function dispoEnPretShouldBeEmprunteAsInProfilParams() {
-		$this->profil
-			->setCfgNotice(array("exemplaires" => array('en_pret' => 'Emprunté')));
+		$updated_cfg = array_merge(Class_Profil::getCurrentProfil()->getCfgNoticeAsArray(),
+															 ['exemplaires' => ['en_pret' => 'Emprunté']]);
+
+		Class_Profil::getCurrentProfil()->setCfgNotice($updated_cfg);
 
 		$this->ex->setDisponibiliteEnPret();
 		$this->assertEquals('Emprunté', $this->ex->getDisponibilite());
diff --git a/tests/library/Class/WebService/SIGB/KohaTest.php b/tests/library/Class/WebService/SIGB/KohaTest.php
index 1ba70fcda0e87b9d9be21d2192fbb224c5769a5c..7ba56e354542c5befe7424f73c94876861eb6d87 100644
--- a/tests/library/Class/WebService/SIGB/KohaTest.php
+++ b/tests/library/Class/WebService/SIGB/KohaTest.php
@@ -16,7 +16,7 @@
  *
  * 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
  */
 include_once('KohaFixtures.php');
 
@@ -58,8 +58,10 @@ abstract class KohaTestCase extends PHPUnit_Framework_TestCase {
 	protected $service;
 
 	public function setUp() {
-		//Pour avoir les textes de prets par defaut
-		Class_Profil::getCurrentProfil()->setCfgNotice(array('exemplaires' => array()));
+		Class_Profil::setCurrentProfil($this->fixture('Class_Profil',
+																									['id' => 1,
+																									 'libelle' => 'Actu']));
+
 		Class_AdminVar::newInstanceWithId('KOHA_MULTI_SITES', ['valeur' => '' ]);
 		$this->mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
 
@@ -371,18 +373,18 @@ class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
 	}
 
 
-	/** 
-	 * @test 
+	/**
+	 * @test
 	 * @depends firstReservationShouldExists
 	 */
 	public function reservationTitleShouldBeHarryPotter($hold) {
-		$this->assertEquals("Harry Potter et la chambre des secrets", 
+		$this->assertEquals("Harry Potter et la chambre des secrets",
 												$hold->getTitre());
 	}
 
 
-	/** 
-	 * @test 
+	/**
+	 * @test
 	 * @depends firstReservationShouldExists
 	 */
 	public function reservationAuteurShouldBeJKRowling($hold) {
@@ -403,7 +405,7 @@ class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
 
 	/** @test */
 	public function firstReservationPickupLocationLabelShouldBeBiblioMeuse() {
-		$this->assertEquals('Biblio Meuse', 
+		$this->assertEquals('Biblio Meuse',
 												$this->laurent->getReservationAt(0)->getPickupLocationLabel());
 	}
 
@@ -440,14 +442,14 @@ class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
 
 	/** @test */
 	public function secondReservationPickupLocationLabelShouldBeMontmedy() {
-		$this->assertEquals('Montmedy', 
+		$this->assertEquals('Montmedy',
 												$this->laurent->getReservationAt(1)->getPickupLocationLabel());
 	}
 
 
 	/** @test */
 	public function secondReservationGetEtatShouldBeEnAttente() {
-		$this->assertEquals('En attente', 
+		$this->assertEquals('En attente',
 												$this->laurent->getReservationAt(1)->getEtat());
 	}
 
@@ -466,7 +468,7 @@ class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
 
 	/** @test */
 	function thirdReservationEtatShouldBeExemplaireMisDeCote() {
-		$this->assertEquals('Exemplaire mis de côté', 
+		$this->assertEquals('Exemplaire mis de côté',
 												$this->laurent->getReservationAt(2)->getEtat());
 	}
 }
@@ -492,7 +494,7 @@ class KohaGetEmprunteurJeanAndreWithIdSIGBTest extends KohaTestCase {
 			->will($this->returnValue(KohaFixtures::xmlGetPatronInfoJeanAndre()));
 
 		$this->jean = $this->service->getEmprunteur(
-			$this->fixture('Class_Users', ['id' => 43, 
+			$this->fixture('Class_Users', ['id' => 43,
 																		 'login' => 'JEAN',
 																		 'password' => 'zork',
 																		 'id_sigb' => '01234']));
@@ -532,7 +534,7 @@ class KohaGetEmprunteurJeanAndreWithIdSIGBTest extends KohaTestCase {
 
 	/** @test */
 	public function firstEmpruntTitreShouldBeLaGuitareEn10Lecons() {
-		$this->assertEquals('La guitare en 10 leçons', 
+		$this->assertEquals('La guitare en 10 leçons',
 												$this->jean->getEmpruntAt(0)->getTitre());
 	}
 
@@ -551,7 +553,7 @@ class KohaGetEmprunteurJeanAndreWithIdSIGBTest extends KohaTestCase {
 
 	/** @test */
 	public function firstEmpruntLibraryShouldBeTestingBranch() {
-		$this->assertEquals('Testing branch', 
+		$this->assertEquals('Testing branch',
 												$this->jean->getEmpruntAt(0)->getBibliotheque());
 	}
 
@@ -576,7 +578,7 @@ class KohaGetEmprunteurJeanAndreWithIdSIGBTest extends KohaTestCase {
 
 	/** @test */
 	public function secondEmpruntAuteurShouldBeRobertLouisStevenson() {
-		$this->assertEquals('Robert Louis Stevenson', 
+		$this->assertEquals('Robert Louis Stevenson',
 												$this->jean->getEmpruntAt(1)->getAuteur());
 	}
 
diff --git a/tests/library/Class/WebService/SIGB/NanookTest.php b/tests/library/Class/WebService/SIGB/NanookTest.php
index 15e2e1cfc17891c6eb68a8d14ac671a516ec5cbd..dbe120805e5812bc3993e18c83f72e4af141c843 100644
--- a/tests/library/Class/WebService/SIGB/NanookTest.php
+++ b/tests/library/Class/WebService/SIGB/NanookTest.php
@@ -16,7 +16,7 @@
  *
  * 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
  */
 
 include_once 'NanookFixtures.php';
@@ -171,24 +171,24 @@ class NanookHtmlResponseErrorTest extends NanookServiceErrorTestCase {
 
 	/** @test */
 	public function reservationsShouldBeEmpty() {
-		$this->assertEmpty($this->_emprunteur->getReservations());		
+		$this->assertEmpty($this->_emprunteur->getReservations());
 	}
 
 
 	/** @test */
 	public function pretsRetardShouldBeEmpty() {
-		$this->assertEmpty($this->_emprunteur->getPretsEnRetard());		
+		$this->assertEmpty($this->_emprunteur->getPretsEnRetard());
 	}
 
 
 	/** @test */
 	public function empruntsShouldBeEmpty() {
-		$this->assertEmpty($this->_emprunteur->getEmprunts());		
+		$this->assertEmpty($this->_emprunteur->getEmprunts());
 	}
 
 	/** @test */
 	public function validShouldBeFalse() {
-		$this->assertFalse($this->_emprunteur->isValid());		
+		$this->assertFalse($this->_emprunteur->isValid());
 	}
 }
 
@@ -203,7 +203,9 @@ class NanookGetNoticeLiliGrisbiAndCoTest extends NanookTestCase {
 	public function setUp() {
 		parent::setUp();
 		//Pour avoir les textes de prets par defaut
-		Class_Profil::getCurrentProfil()->setCfgNotice(array('exemplaires' => array()));
+		Class_Profil::setCurrentProfil($this->fixture('Class_Profil',
+																									['id' => 1,
+																									 'libelle' => 'default profil']));
 
 		$this->_mock_web_client
 			->whenCalled('open_url')
@@ -408,13 +410,13 @@ class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookTestCase {
 
 	/** @test */
 	public function emprunteurShouldBeValid() {
-		$this->assertTrue($this->_emprunteur->isValid());		
+		$this->assertTrue($this->_emprunteur->isValid());
 	}
 
 
 	/** @test */
 	public function emprunteurPasswordShouldBe2002() {
-		$this->assertEquals('2002', $this->_emprunteur->getPassword());		
+		$this->assertEquals('2002', $this->_emprunteur->getPassword());
 	}
 
 
@@ -459,7 +461,7 @@ class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookTestCase {
 		$this->assertEquals('1 rue des fleurs', $this->_emprunteur->getAdresse());
 	}
 
-	
+
 	/** @test */
 	public function codePostalShouldBe74000() {
 		$this->assertEquals('74000', $this->_emprunteur->getCodePostal());
@@ -488,7 +490,7 @@ class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookTestCase {
 		$this->assertEquals('01 23 45 67 89', $this->_chrystel->getTelephone());
 		$this->assertEquals('1978-11-10', $this->_chrystel->getNaissance());
 	}
-		
+
 
 	/** @test */
 	public function nbEmpruntsShouldBeThree() {
@@ -631,7 +633,7 @@ class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookTestCase {
 
 	/** @test */
 	public function firstReservationEtatShouldBePasDisponibleAvantLe15Juin2012() {
-		$this->assertEquals('Pas disponible avant le 15/06/2012', 
+		$this->assertEquals('Pas disponible avant le 15/06/2012',
 												$this->_emprunteur->getReservationAt(0)->getEtat());
 	}
 
@@ -744,7 +746,7 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
 			->whenCalled('open_url')
 			->with('http://localhost:8080/afi_Nanook/ilsdi/service/GetPatronInfo/patronId/1')
 			->answers(NanookFixtures::xmlGetPatronError());
-				
+
 		$emprunteur = $this->_service->getEmprunteur($user = Class_Users::newInstance()
 																								 ->setLogin('90175000410218')
 																								 ->setPassword('1989'));
@@ -755,7 +757,7 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
 	}
 
 
-    
+
 	/** @test */
 	public function withWrongPasswordEmprunteurShouldNotBeValid() {
 		$this->_mock_web_client
@@ -766,7 +768,7 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
 			->whenCalled('open_url')
 			->with('http://localhost:8080/afi_Nanook/ilsdi/service/GetPatronInfo/patronId/1')
 			->answers(NanookFixtures::xmlGetPatronChristelDelpeyroux());
-				
+
 		$emprunteur = $this->_service->getEmprunteur($user = Class_Users::newInstance()
 																								 ->setLogin('90175000410218')
 																								 ->setPassword('1989')
@@ -777,7 +779,7 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
 		$this->assertFalse($emprunteur->isValid());
 		$this->assertEmpty($emprunteur->getPassword());
 	}
-    
+
 }
 
 
@@ -947,13 +949,13 @@ class NanookSaveEmprunteurPostTest extends NanookTestCase {
 		parent::setup();
 		$this->_mock_web_client
 			->whenCalled('postData')
-			->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1', 
+			->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1',
 						 ['password' => '987654@afi-sa.fr',
 							'mail' => 'gloas@afi-sa.fr',
 							'phoneNumber' => '0123456789'])
 			->answers(NanookFixtures::xmlGetPatronChristelDelpeyrouxAfterPost())
 			->beStrict();
-		
+
 		$this->_crystel = Class_WebService_SIGB_Emprunteur::newInstance(1)
 			->setPassword('987654@afi-sa.fr')
 			->setEmail('gloas@afi-sa.fr')
@@ -966,7 +968,7 @@ class NanookSaveEmprunteurPostTest extends NanookTestCase {
 	public function christelDelPeyrouxShoudlHaveGloasAsEmail() {
 		$this->assertEquals('gloas@afi-sa.fr', $this->_emprunteur->getEmail());
 	}
-	
+
 	 /** @test **/
 	public function christelDelPeyrouxShoudlHave0123456789AsTelpehone() {
 		$this->assertEquals('0123456789', $this->_emprunteur->getTelephone());
@@ -992,13 +994,13 @@ class NanookSaveEmprunteurRecordNotFoundTest extends NanookTestCase {
 		parent::setup();
 		$this->_mock_web_client
 			->whenCalled('postData')
-			->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1', 
+			->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1',
 						 ['password' => '987654@afi-sa.fr',
 							'mail' => 'gloas@afi-sa.fr',
 							'phoneNumber' => '0123456789'])
 			->answers(NanookFixtures::xmlRecordNotFound())
 			->beStrict();
-		
+
 		$this->_crystel = Class_WebService_SIGB_Emprunteur::newInstance(1)
 			->setPassword('987654@afi-sa.fr')
 			->setEmail('gloas@afi-sa.fr')
@@ -1012,7 +1014,7 @@ class NanookSaveEmprunteurRecordNotFoundTest extends NanookTestCase {
 	public function christelDelPeyrouxShoudlNotBeValidWithRecordNotFoundError() {
 		$this->assertFalse($this->_emprunteur->isValid());
 	}
-	
+
 }
 
 
@@ -1023,13 +1025,13 @@ class NanookSaveEmprunteurUpdatePatronErrorTest extends NanookTestCase {
 		parent::setup();
 		$this->_mock_web_client
 			->whenCalled('postData')
-			->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1', 
+			->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1',
 						 ['password' => '987654@afi-sa.fr',
 							'mail' => 'gloas@afi-sa.fr',
 							'phoneNumber' => '0123456789'])
 			->answers(NanookFixtures::xmlUpdatePatronError())
 			->beStrict();
-		
+
 		$this->_crystel = Class_WebService_SIGB_Emprunteur::newInstance(1)
 			->setPassword('987654@afi-sa.fr')
 			->setEmail('gloas@afi-sa.fr')
@@ -1042,7 +1044,5 @@ class NanookSaveEmprunteurUpdatePatronErrorTest extends NanookTestCase {
 	public function christelDelPeyrouxShoudlNotBeValidWithUpdatePatron() {
 		$this->assertFalse($this->_emprunteur->isValid());
 	}
-	
-}
 
-?>
+}
diff --git a/tests/library/Class/WebService/SIGB/PergameTest.php b/tests/library/Class/WebService/SIGB/PergameTest.php
index 4f217a8d1e58826311b18d32542c78d6e2aa9054..bf02aaf64610899a66f1b5cfc739cfd11eadaed6 100644
--- a/tests/library/Class/WebService/SIGB/PergameTest.php
+++ b/tests/library/Class/WebService/SIGB/PergameTest.php
@@ -16,131 +16,137 @@
  *
  * 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
  */
 
 abstract class PergameServiceTestCase extends Storm_Test_ModelTestCase {
 	public function setUp() {
 		parent::setUp();
 
-		$this->notice_potter = Class_Notice::getLoader()
-			->newInstanceWithId(1)
-			->setTitrePrincipal('Harry Potter')
-			->setAuteurPrincipal('JK Rowling');
-	
-		$this->potter_annecy = Class_Exemplaire::getLoader()
-			->newInstanceWithId(23)
-			->setIdNotice(1)
-			->setCodeBarres('A-23')
-			->setIdOrigine('1HP')
-			->setActivite('En rayon - Discotheque')
-			->setIdBib(1);
-
-		$this->potter_cran_prete = Class_Exemplaire::getLoader()
-			->newInstanceWithId(24)
-			->setIdNotice(1)
-			->setCodeBarres('C-24')
-			->setIdOrigine('1HP')
-			->setActivite('En rayon')
-			->setIdBib(2);
-
-		$this->potter_cran_reserve = Class_Exemplaire::getLoader()
-			->newInstanceWithId(25)
-			->setIdNotice(1)
-			->setCodeBarres('C-25')
-			->setIdOrigine('1HP')
-			->setActivite('En rayon')
-			->setIdBib(2);
-
-		$this->potter_cran_dispo = Class_Exemplaire::getLoader()
-			->newInstanceWithId(26)
-			->setIdNotice(1)
-			->setCodeBarres('C-26')
-			->setIdOrigine('1HP')
-			->setActivite('En rayon')
-			->setIdBib(2);
-
-
-		Class_IntBib::getLoader()
-			->newInstanceWithId(1)
-			->setCommParams(serialize(array("Autoriser_docs_disponibles" => 1)));
-
-		Class_IntBib::getLoader()
-			->newInstanceWithId(2)
-			->setCommParams(serialize(array("Autoriser_docs_disponibles" => 0)));
-
-		Class_Bib::getLoader()
-			->newInstanceWithId(2)
-			->setLibelle('Cran-Gevrier');
-
-
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Exemplaire')
-			->whenCalled('findFirstBy')
-			->with(array('id_bib' => 2, 'code_barres' => 'C-24'))
-			->answers($this->potter_cran_prete)
-
-			->whenCalled('findFirstBy')
-			->with(array('id_origine' => '1HP'))
-			->answers($this->potter_annecy);
-
+		Class_Profil::setCurrentProfil($this->fixture('Class_Profil',
+																									['id' => 1,
+																									 'libelle' => 'Pergame FTW']));
+
+
+		$this->fixture('Class_Notice',
+									 ['id' => 5,
+										'titre_principal' => 'Trouble maker',
+										'auteur_princiapl' => 'pergame']);
+
+		$this->notice_potter = $this->fixture('Class_Notice',
+																					['id' => 1,
+																					 'titre_principal' => 'Harry Potter',
+																					 'auteur_principal' => 'JK Rowling']);
+
+		$this->potter_annecy = $this->fixture('Class_Exemplaire',
+																					['id' => 23,
+																					 'id_notice' => 1,
+																					 'code_barres' => 'A-23',
+																					 'id_origine' => '1HP',
+																					 'activite' => 'En rayon - Discotheque',
+																					 'id_bib' => 1]);
+
+		$this->potter_cran_prete = $this->fixture('Class_Exemplaire',
+																							['id' => 24,
+																							 'id_notice' => 1,
+																							 'code_barres' => 'C-24',
+																							 'id_origine' => '1HP',
+																							 'activite' => 'En prêt',
+																							 'id_bib' => 2]);
+
+		$this->potter_cran_reserve = $this->fixture('Class_Exemplaire',
+																								['id' => 25,
+																								 'id_notice' => 1,
+																								 'code_barres' => 'C-25',
+																								 'id_origine' => '1HP',
+																								 'activite' => 'En rayon',
+																								 'zone995' => 'I\' from sigb',
+																								 'id_bib' => 2]);
+
+		$this->potter_cran_dispo = $this->fixture('Class_Exemplaire',
+																							['id' => 26,
+																							 'id_notice' => 1,
+																							 'code_barres' => 'C-26',
+																							 'id_origine' => '1HP',
+																							 'activite' => 'En rayon',
+																							 'id_bib' => 2]);
+
+		$this->fixture('Class_Exemplaire',
+									 ['id' => 27,
+										'id_notice' => 5,
+										'code_barres' => 'C-24',
+										'id_origine' => '1HP',
+										'activite' => 'En rayon',
+										'id_bib' => 2]);
+
+
+		$this->fixture('Class_IntBib',
+									 ['id' => 1])
+				 ->setCommParams(serialize(["Autoriser_docs_disponibles" => 1]))
+				 ->save();
+
+		$this->fixture('Class_IntBib',
+									 ['id' => 2])
+				 ->setCommParams(serialize(['Autoriser_docs_disponibles' => 0]))
+				 ->save();
+
+		$this->fixture('Class_Bib',
+									 ['id' => 2,
+										'libelle' => 'Cran-Gevrier']);
 
 		$this->_service_cran = Class_WebService_SIGB_Pergame_Service::getService(2);
 	}
 }
 
 
+
 class PergameServiceGetEmprunteurTest extends PergameServiceTestCase {
 	public function setUp() {
 		parent::setUp();
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Pret')
-			->whenCalled('findAllBy')
-			->with(array('IDABON' => 23, 'ORDREABON' => 2, 'EN_COURS' => 1))
-			->answers(array(Class_Pret::getLoader()
-											->newInstanceWithId(59)
-											->setCodeBarres('C-24')
-											->setIdNoticeOrigine(1)
-											->setIdPergame('1HP')
-											->setEnCours(1)
-											->setDateRetour('2010-09-07')
-											->setIdSite(2)
-											->setIdabon(23)
-											->setOrdreabon(2)))
-
-			->whenCalled('countBy')
-			->with(array('ID_NOTICE_ORIGINE' => 1, 
-									 'EN_COURS' => 1))
-			->answers(2);
+		Class_Notice::beVolatile();
+
+		$this->fixture('Class_Pret',
+									 ['id' => 59,
+										'code_barres' => 'C-24',
+										'id_notice_origine' => 1,
+										'id_pergame' => '1HP',
+										'en_cours' => 1,
+										'date_retour' => '2010-09-07',
+										'id_site' => 2,
+										'idabon' => 23,
+										'ordreabon' => 2]);
+
+		$this->fixture('Class_Reservation',
+									 ['id' => 76,
+										'id_notice_origine' => '1HP',
+										'id_pergame' => '1HP',
+										'date_resa' => '2011-12-25',
+										'id_site' => 2,
+										'idabon' => 23,
+										'ordreabon' => 2]);
+
+		$this->fixture('Class_Reservation',
+									 ['id' => 77,
+										'id_notice_origine' => '3HP',
+										'id_pergame' => '3HP',
+										'date_resa' => '2011-12-25',
+										'id_site' => 0,
+										'idabon' => 23,
+										'ordreabon' => 2]);
 
 		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Reservation')
-			->whenCalled('findAllBy')
-			->with(['IDABON' => 23, 'ORDREABON' => 2])
-			->answers([
-									Class_Reservation::newInstanceWithId(76,
-																											 ['id_notice_origine' => '1HP',
-																												'id_pergame' => '1HP',
-																												'date_resa' => '2011-12-25',
-																												'id_site' => 2,
-																												'idabon' => 23,
-																												'ordreabon' => 2]),
-
-									Class_Reservation::newInstanceWithId(77,
-																											 ['id_notice_origine' => '3HP',
-																												'id_pergame' => '3HP',
-																												'date_resa' => '2011-12-25',
-																												'id_site' => 0,
-																												'idabon' => 23,
-																												'ordreabon' => 2]),
-									])
 			->whenCalled('countBy')
-			->with(['ID_NOTICE_ORIGINE' => 1, 
+			->with(['ID_NOTICE_ORIGINE' => 1,
 							'where' => sprintf('DATE_RESA<"%s"', '2011-12-25')])
 			->answers(2);
 
-		$jc = Class_Users::newInstanceWithId(23, 
-																				 ['login' => 'jc',
-																					'idabon' => 23,
-																					'ordreabon' => 2]);
+		$jc = $this->fixture('Class_Users',
+												 ['id' => 23,
+													'login' => 'jc',
+													'password' => 'jc',
+													'idabon' => 23,
+													'ordreabon' => 2]);
 
 		$this->emprunteur_jc = $this->_service_cran->getEmprunteur($jc);
 		$this->_first_emprunt = array_first($this->emprunteur_jc->getEmprunts());
@@ -199,7 +205,7 @@ class PergameServiceGetEmprunteurTest extends PergameServiceTestCase {
 	/** @test */
 	public function firstReservationIdShouldBe76() {
 		$this->assertEquals(76, $this->_first_reservation->getId());
-	}	
+	}
 
 
 	/** @test */
@@ -231,11 +237,18 @@ class PergameServiceGetEmprunteurTest extends PergameServiceTestCase {
 		$this->assertEquals('Cran-Gevrier', $this->_first_reservation->getBibliotheque());
 	}
 
+
 	/** @test */
 	public function secondeReservationBibliothequeShouldBeEmpty() {
 		$resa = $this->emprunteur_jc->getReservations()[1];
 		$this->assertEmpty($resa->getBibliotheque());
 	}
+
+
+	/** @test */
+	public function firstReservationRecordShouldBeHarryPotter() {
+		$this->assertEquals('Harry Potter', $this->_first_reservation->getNoticeOPAC()->getTitrePrincipal());
+	}
 }
 
 
@@ -245,57 +258,28 @@ class PergameServiceGetExemplairePotterTest extends PergameServiceTestCase {
 	public function setUp() {
 		parent::setUp();
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Exemplaire')
-			->whenCalled('findAllBy')
-			->with(array('role' => 'notice', 
-									 'model' => $this->notice_potter))
-			->answers(array($this->potter_annecy, 
-											$this->potter_cran_prete, 
-											$this->potter_cran_reserve, $this->potter_cran_dispo))
-
-			->whenCalled('findFirstBy')
-			->with(array('id_origine' => '1HP', 
-									 'id_bib' => 1))
-			->answers($this->potter_annecy)
-
-			->whenCalled('findFirstBy')
-			->with(array('id_origine' => '1HP', 
-									 'id_bib' => 2))
-			->answers($this->potter_cran_prete);
-
-
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Pret')
-			->whenCalled('findFirstBy')
-			->answers(null)
-
-			->whenCalled('findFirstBy')
-			->with(array('id_site' => 2, 
-									 'id_notice_origine' => '1HP', 
-									 'code_barres' => 'C-24', 
-									 'EN_COURS' => 1))
-			->answers(Class_Pret::getLoader()
-								->newInstanceWithId(59)
-								->setCodeBarres('C-24')
-								->setIdNoticeOrigine(1)
-								->setIdPergame('1HP')
-								->setEnCours(1)
-								->setDateRetour('2010-09-07')
-								->setIdSite(2));
+		$this->fixture('Class_Pret',
+									 ['id' => 59,
+										'code_barres' => 'C-24',
+										'id_notice_origine' => 1,
+										'id_pergame' => '1HP',
+										'en_cours' => 1,
+										'date_retour' => '2010-09-07',
+										'id_site' => 2]);
 
+		$this->fixture('Class_Reservation',
+									 ['id' => 34,
+										'id_site' => 2,
+										'id_notice_origine' => 1]);
+
+		$this->_exemplaire_annecy =
+			Class_WebService_SIGB_Pergame::getService(['id_bib' => 1])
+			->getExemplaire('1HP', 'A-23');
+
+		$this->_exemplaire_cran_prete =
+			Class_WebService_SIGB_Pergame::getService(['id_bib' => 2])
+			->getExemplaire('1HP', 'C-24');
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Reservation')
-			->whenCalled('findAllBy')
-			->answers(array())
-
-			->whenCalled('findAllBy')
-			->with(array('id_site' => 2, 'id_notice_origine' => '1HP'))
-			->answers(array(Class_Reservation::getLoader()
-											->newInstanceWithId(34)
-											->setIdSite(2)
-											->setIdNoticeOrigine(1)));
-
-		$this->_exemplaire_annecy = Class_WebService_SIGB_Pergame::getService(array('id_bib' => 1))->getExemplaire('1HP', 'A-23');
-		$this->_exemplaire_cran_prete = Class_WebService_SIGB_Pergame::getService(array('id_bib' => 2))->getExemplaire('1HP', 'C-24');
 		$this->_exemplaire_cran_reserve = $this->_service_cran->getExemplaire('1HP', 'C-25');
 		$this->_exemplaire_cran_dispo = $this->_service_cran->getExemplaire('1HP', 'C-26');
 	}
@@ -414,8 +398,8 @@ class PergameServiceDelegateLegacyTest extends PergameServiceTestCase {
 			->answers(['statut' => 0, 'erreur' => ''])
 			->beStrict();
 
-		$result = $this->_service_cran->reserverExemplaire(Class_Users::getIdentity(), 
-																											 $this->potter_cran_prete, 
+		$result = $this->_service_cran->reserverExemplaire(Class_Users::getIdentity(),
+																											 $this->potter_cran_prete,
 																											 'CRAN');
 		$this->assertEquals(['statut' => 0, 'erreur' => ''], $result);
 	}
diff --git a/tests/library/ZendAfi/View/Helper/ShareUrlTest.php b/tests/library/ZendAfi/View/Helper/ShareUrlTest.php
index ef96d061b5eab50673c3a03864c34ca0a684a9a4..0aa0844ef59c7cba5412f03419033e8a5c8ead11 100644
--- a/tests/library/ZendAfi/View/Helper/ShareUrlTest.php
+++ b/tests/library/ZendAfi/View/Helper/ShareUrlTest.php
@@ -16,7 +16,7 @@
  *
  * 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
  */
 require_once 'ViewHelperTestCase.php';
 
@@ -64,40 +64,23 @@ class ZendAfi_View_Helper_ShareUrlTest extends ViewHelperTestCase {
 	}
 
 
-	/** @test */
-	public function getFacebookUrlViewNoticeShouldReturnShortenUrlWithServerHost() {
-		$_SERVER["HTTP_HOST"] = 'localhost';
-		$this->_expectClientOpenUrlForShortenViewNotice2();
-		$this->assertEquals("https://www.facebook.com/sharer/sharer.php?m2w&s=100&p%5Btitle%5D=&p%5Bsummary%5D=&p%5Burl%5D=http%3A%2F%2Fis.gd%2FPkdNg2&p%5Bimages%5D%5B0%5D=",
-												$this->_helper->shareUrl("facebook", '/recherche/viewnotice/id/2'));
-	}
-
-	
-	/** @test **/
-	public function facebookUrlShouldContainsImgUrlTitleAndComment() {
-		$_SERVER["HTTP_HOST"] = 'localhost';
-		$this->_expectClientOpenUrlForShortenViewNotice2();
-		$this->assertEquals("%5Btitle%5D=&p%5Bsummary%5D=&p%5Burl%5D=%2Frecherche%2Fviewnotice%2Fid%2F2&p%5Bimages%5D%5B0%5D=",$this->_helper->getFacebookUrl('/recherche/viewnotice/id/2','','',''));
-	}
-	
-
 	/** @test */
 	public function shortenUrlWithErrorShouldReturnOriginalUrl() {
-		$this->_expectClientOpenUrlWithLongUrlAndAnswer('http://www.institut-francais.com', 
+		$this->_expectClientOpenUrlWithLongUrlAndAnswer('http://www.institut-francais.com',
 																										'Error');
 
 		$this->assertEquals('http://www.institut-francais.com',
-												$this->_helper->shortenUrl('http://www.institut-francais.com'));	
+												$this->_helper->shortenUrl('http://www.institut-francais.com'));
 	}
 
 
 	/** @test */
 	public function shortenUrlWithNullShouldReturnOriginalUrl() {
-		$this->_expectClientOpenUrlWithLongUrlAndAnswer('http://www.institut-francais.com', 
+		$this->_expectClientOpenUrlWithLongUrlAndAnswer('http://www.institut-francais.com',
 																										null);
 
 		$this->assertEquals('http://www.institut-francais.com',
-												$this->_helper->shortenUrl('http://www.institut-francais.com'));	
+												$this->_helper->shortenUrl('http://www.institut-francais.com'));
 	}