diff --git a/library/Class/Import/Typo3.php b/library/Class/Import/Typo3.php
deleted file mode 100644
index b8ff9d80566f17a08882d75119ab7dd5fb01ecfb..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3.php
+++ /dev/null
@@ -1,940 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-class Class_Import_Typo3 {
-  use Trait_TimeSource;
-  use Trait_StaticFileWriter;
-  const DEFAULT_CAT_ID = 30000;
-
-  const FOLDER_IMGS = "pics/"; //directory to get external images
-  const BOKEH_IMG_URL = "http://www.mediathequeouestprovence.fr/uploads/";  //url to get files
-  const BOKEH_ATTACHMENT_URL = "http://www.mediathequeouestprovence.fr/fileadmin/fichiers/"; // path to admin files (specific miop)
-  const BOKEH_FILEADMIN_URL = "http://www.mediathequeouestprovence.fr/fileadmin/";
-
-
-
-  const UID_TYPO3_CF = 'uid_typo3';
-
-  protected
-    $FOREIGN_UID_DATETIME = [867,36],
-    $user_mapper,
-    $unknown_koha_urls = [];
-
-  public function __construct() {
-    $this->t3db = new Class_Import_Typo3_Db();
-    $this->report = ['categories_created' => 0,
-                     'domaine_created' => 0,
-                     'categories_sites_created' => 0,
-                     'articles_created' => 0,
-                     'articles_errors' => 0,
-                     'pages_created' => 0,
-                     'pages_errors' => 0,
-                     'calendar_created' => 0,
-                     'calendar_errors' => 0,
-                     'articles_pages_errors' => 0,
-                     'articles_pages_created' => 0,
-                     'sitotheque_created' => 0,
-                     'sitotheque_errors' => 0];
-
-    $this->errors = [];
-    $this->domaine_map = new Class_Import_Typo3_DomaineMap();
-    $this->userMap = new Class_Import_Typo3_UserMap();
-    $this->createCustomField();
-  }
-
-
-  public function createCustomField() {
-    $to_customize = ['Article', 'ArticleCategorie',
-                     'Catalogue', 'Sitotheque', 'SitothequeCategorie'];
-
-    Class_CustomField_Model::registerAll(array_map([$this, 'getCustomFieldConfigFor'],
-                                                   $to_customize));
-
-    foreach($to_customize as $class_name)
-      call_user_func_array([Class_CustomField_Model::CLASS_PREFIX . $class_name,
-                            'addCustomField'],
-                           [self::UID_TYPO3_CF, Class_CustomField_Meta::TEXT_INPUT]);
-  }
-
-
-  protected function getCustomFieldConfigFor($name) {
-    $name = 'Class_CustomField_ModelConfiguration_' . $name;
-    return new $name();
-  }
-
-
-  public function setTypo3DB($t3db) {
-    $this->t3db = $t3db;
-    return $this;
-  }
-
-
-  public function run($what='all', $last_update=null) {
-    $_SERVER['HTTP_HOST']='localhost';
-    $logger = Class_Import_Typo3_Logs::getInstance();
-
-    if ('postprocess' == $what) {
-      $logger->addLogRow("\n\n ******** Post-Process effacement des articles pid=-1");
-      $this->postProcess();
-      return $logger->report();
-    }
-
-    if ('update' == $what && !$last_update) {
-      $logger->addErrorRow("Mode mise à jour demandé sans date de référence");
-      return $logger->report();
-    }
-
-    if ($what == 'update') {
-      list($day, $month, $year, $hour, $minute) = split('[/ : -]', $last_update);
-
-      $last_update_timestamp = mktime($hour, $minute, 0, $month, $day, $year);
-
-      $logger->addLogRow("\n\n ******** Mise a jour uniquement");
-      $this->importCategories($last_update_timestamp);
-
-      $logger->addLogRow("\n\n ******** Mise a jour Articles");
-      $this->updateArticles($last_update_timestamp);
-
-      $logger->addLogRow("\n\n ******** Mise a jour Sitothèque");
-      $this->updateSites($last_update_timestamp);
-
-      $logger->addLogRow("\n\n ******** Mise a jour Articles Pages");
-      $this->updateArticlePages($last_update_timestamp);
-
-      $logger->addLogRow("\n\n ******** Détection des dossiers documentaires");
-      $this->updateCategoriesForDossiersDocumentaires();
-    }
-
-    if ($what == 'all' || $what == 'users') {
-      $logger->addLogRow("\n\n ******** Importing users");
-      $this->import_user();
-    }
-
-    if ($what == 'docu') {
-      $logger->addLogRow("\n\n ******** Détection des dossiers documentaires");
-      $this->updateCategoriesForDossiersDocumentaires();
-    }
-    if ($what == 'sito_reimport') {
-      $logger->addLogRow("\n\n ******** Reimport des sitothèques");
-      $this->importSites();
-      $logger->addLogRow("\n\n ******** Récupération des images pour les sitothèques");
-      $this->updateSitesThumbnails();
-      $logger->addLogRow("\n\ Attention : Relancer une intégration cosmogramme pour que l'import soit pris en compte");
-    }
-
-    if ($what == 'sito') {
-      $logger->addLogRow("\n\n ******** Récupération des images pour les sitothèques");
-      $this->updateSitesThumbnails();
-      $logger->addLogRow("\n\ Attention : Relancer une intégration cosmogramme pour que l'import soit pris en compte");
-    }
-
-
-    if ($what == 'advices') {
-      $logger->addLogRow("\n\n ******** Attribution des avis de notices");
-      $this->importAdvices();
-    }
-
-    if ($what == 'all' || $what == 'articles') {
-      $logger->addLogRow("\n\n ******** Importing categories");
-      $this->importCategories();
-
-      $logger->addLogRow("\n\n ******** Importing articles pages");
-      $this->importArticlesPages();
-
-      $logger->addLogRow("\n\n ******** Importing articles");
-      $this->importArticles();
-
-      $logger->addLogRow("\n\n ******** Importing events");
-      $this->importCalendar();
-
-      $logger->addLogRow("\n\n ******** Importing sites");
-      $this->importSites();
-
-      $logger->addLogRow("\n\n ******** Détection des dossiers documentaires");
-      $this->updateCategoriesForDossiersDocumentaires();
-    }
-
-    return $logger->report();
-  }
-
-
-  public function import_user() {
-    $this->userMap->init();
-    $t3users = $this->t3db->findAllUsers();
-    foreach($t3users as $t3user) {
-      $this->userMap->newUser($t3user);
-    }
-
-    Class_Import_Typo3_Logs::getInstance()->setUsersLog();
-  }
-
-
-  public function importCategories($update_date = null) {
-    if (!$update_date) {
-      Class_Article::deleteBy([]);
-      Class_ArticleCategorie::deleteBy([]);
-      Class_Catalogue::deleteBy([]);
-      Class_CodifThesaurus::deleteBy([]);
-      Class_Sitotheque::deleteBy([]);
-      Class_SitothequeCategorie::deleteBy([]);
-      $this->reset_auto_increment();
-    }
-
-    $this->cal_categories_map= new Class_Import_Typo3_CalendarCategoriesMap('Agenda', $this->domaine_map);
-    $this->news_categories_map = new Class_Import_Typo3_ArticleCategoriesMap('Non classé', $this->domaine_map);
-    $this->sites_categories_map = new Class_Import_Typo3_SiteCategoriesMap('Non classé', $this->domaine_map);
-
-    $t3categories = $this->t3db->findCategories($update_date);
-    $this->news_categories_map->build($t3categories);
-    $this->sites_categories_map->build($t3categories);
-
-    // Categories d'évènements.
-    $cal_categories = $this->t3db->findEventCategories($update_date);
-    $this->cal_categories_map->build($cal_categories);
-
-    Class_Import_Typo3_Logs::getInstance()->setCategoriesLog(count($t3categories));
-  }
-
-
-  public function updateSite($site, $new) {
-    $site->updateAttributes($this->_prepareSite($new))->save();
-  }
-
-
-  public function updateSites($update_date) {
-    $this->sites_categories_map = new Class_Import_Typo3_SiteCategoriesMap('Non classé', $this->domaine_map);
-    $t3news = $this->t3db->findAllSitesSince($update_date);
-
-    foreach($t3news as $new) {
-      if ($site = $this->_getSite($new['uid'])) {
-        $this->updateSite($site, $new);
-        continue;
-      }
-
-      $element = $this->traceUnknownKohaUrls(function() use ($new) {
-                                               return $this->createSito($new);
-                                             }, $new['uid']);
-    }
-  }
-
-
-  protected function _getSite($uid) {
-    return Class_Sitotheque::findFirstByCustomFieldValue(self::UID_TYPO3_CF, $uid);
-  }
-
-
-  public function importSites() {
-    Class_Sitotheque::deleteBy([]);
-
-    $t3news = $this->t3db->findAllSites();
-    foreach($t3news as $new)
-      $element = $this->traceUnknownKohaUrls(
-                                             function() use ($new) {
-                                               return $this->createSito($new);
-                                             },
-                                             $new['uid']);
-  }
-
-
-
-  public function updateSitesThumbnails() {
-
-    $t3sites=$this->t3db->findAllExternalSites();
-    foreach ($t3sites as $t3site) {
-      $link_array = explode(' ', $t3site['ext_url']);
-      $image=explode(',',$t3site['image']);
-      $this->createImageForExternalWebsite($link_array[0],$image[0]);
-    }
-
-  }
-
-
-
-  public function createImageForExternalWebsite($url,$image) {
-    if (!$image)
-      return;
-    $image_contents=$this->getFileWriter()->getContents(self::BOKEH_IMG_URL.self::FOLDER_IMGS.$image);
-    if (!$image_contents)
-      return;
-    $website_thumbnail= new Class_WebService_WebSiteThumbnail();
-    $this->getFileWriter()->putContents($website_thumbnail->getFilePath($url), $image_contents);
-  }
-
-
-  public function createSito($new) {
-    $attributes = $this->_prepareSite($new);
-    $attributes['url'] = $this->convertKohaToBokehUrl($this->format_url($new['ext_url']));
-
-    $element = Class_Sitotheque::newInstance($attributes);
-
-    $element->setCustomField(self::UID_TYPO3_CF, $new['uid']);
-    if (!$element->saveWithCustomFields()) {
-      $this->report['sitotheque_errors']++;
-      Class_Import_Typo3_Logs::getInstance()
-        ->addErrorRow("site with uid : " . $new['uid'] . ' (' . $new['title'] . ') - ' . implode(', ', $element->getErrors()));
-      return $element;
-    }
-
-    $foreign_uids = $this->t3db->findAllForeignUidForNewsCat($new['uid']);
-    $this->sites_categories_map->setDomainsFor($element, $foreign_uids);
-
-    if ($this->isInTop5($foreign_uids))
-      $this->putSiteInTop5($element, $new);
-
-    return $element;
-  }
-
-
-  protected function isInTop5($foreign_uids) {
-    return in_array(43, array_map(function($item) { return $item['uid_foreign']; },
-                                  $foreign_uids));
-  }
-
-
-  public function putSiteInTop5($element, $t3record) {
-    $parts = $element->getCategorie()->getPathParts();
-    $parts[0] = 'NOS TOPS 5';
-    $path = '/' . implode('/', $parts);
-
-    if ($title = $this->t3db->findPageTitle($t3record['pid'])) {
-      $path .= ('/' . $title);
-    }
-
-    $site_top5_cat = $this->sites_categories_map->findOrCreateByPath($path);
-    $element->setCategorie($site_top5_cat)->save();
-  }
-
-
-  public function manipulate_body($body, $image='') {
-    $body = $this->wrapWithHtml($body);
-    $body = $this->addImage($image).$body;
-    $body = $this->translateLinksToAnchor($body);
-    $body = $this->fixImageLinks($body);
-    $body = $this->fixAttachmentsLinks($body);
-    $body = $this->fixFileAdminLinks($body);
-    return str_replace(["\r\n", "\n\r", "\n","\r"], "<br />", $body);
-  }
-
-
-  protected function addImage($image) {
-    if (!$image)
-      return '';
-    return '<img src="'.self::BOKEH_IMG_URL.self::FOLDER_IMGS.$image.'" alt=""/>';
-
-  }
-
-
-  protected function fixImageLinks($body) {
-    return $this->replaceUserfilesLinkPath($body, 'uploads\/',self::BOKEH_IMG_URL);
-  }
-
-
-  protected function fixAttachmentsLinks($body) {
-    return $this->replaceUserfilesLinkPath($body, 'fileadmin\/fichiers\/',self::BOKEH_ATTACHMENT_URL);
-  }
-
-
-  protected function fixFileAdminLinks($body) {
-    return $this->replaceUserfilesLinkPath($body,'fileadmin\/user_upload\/',self::BOKEH_FILEADMIN_URL);
-  }
-
-
-  protected function replaceUserfilesLinkPath($body,$source, $dest) {
-    $regs= '/(< *(a|img)[^>]*(href|src) *= *["\'])(http:\/\/[^"\']*\/)?'.$source.'([^"\']*)/i';
-    return preg_replace($regs, '$1'.$dest.'$5', $body);
-  }
-
-
-  protected function translateLinksToAnchor($content) {
-    while((false !== ($start = strpos($content, '<link ')))
-          && (false !== ($end = strpos($content, '</link>')))) {
-      if(false === ($link = substr($content, $start, $end - $start + 7)))
-        return $content;
-
-      $content = str_replace($link, $this->linkToAnchor($link), $content);
-    }
-
-    return $content;
-  }
-
-
-  protected function linkToAnchor($link) {
-    $link_array = explode(' ', $link);
-    $target = '';
-
-    if(in_array('_blank', $link_array))
-       $target = ' target="_blank"';
-
-    if(!isset($link_array[1]))
-      return;
-
-    $url = $link_array[1];
-
-    if(false !== ($end = strpos($link_array[1], '>')))
-      $url = substr($url, 0, $end);
-
-    $url = $this->convertKohaToBokehUrl($url);
-
-    return '<a href="' . $url . '">' . $this->getContentFromLink($link) . '</a>';
-  }
-
-
-  protected function convertKohaToBokehUrl($url) {
-    if (false === strpos($url, 'http://koha.mediathequeouestprovence.fr/'))
-      return $url;
-
-    if (preg_match('/biblionumber=(\d+)$/', $url, $matches))
-      return $this->urlViewNotice($url, $matches[1]);
-
-    if (preg_match('/opac-search.pl\?q=au:(.+)$/', $url, $matches))
-      return $this->urlSearchAuthors($url, $matches[1]);
-
-    if (preg_match('/opac-search.pl\?q=([^=&]+)$/', $url, $matches))
-      return $this->urlSimpleSearch($url, $matches[1]);
-
-    $this->unknown_koha_urls[] = $url;
-
-    return $url;
-  }
-
-
-  protected function urlSearchAuthors($url, $search_expression) {
-    return '/miop-test.net/recherche/simple/rech_auteurs/'.$search_expression;
-  }
-
-
-  protected function urlSimpleSearch($url, $search_expression) {
-    return '/miop-test.net/recherche/simple/expressionRecherche/'.$search_expression;
-  }
-
-
-  protected function urlViewNotice($url, $id_origine) {
-    if (!$exemplaire = Class_Exemplaire::findFirstBy(['id_origine' => $id_origine]))
-      return $url;
-
-    $clef_alpha = $exemplaire->getNotice()->getClefAlpha();
-    return '/miop-test.net/recherche/viewnotice/clef/'.$clef_alpha;
-  }
-
-
-  protected function getContentFromLink($link) {
-    $content_start = strpos($link, '>') + 1;
-    return  substr($link, $content_start, strpos($link, '</link>') - $content_start);
-  }
-
-
-  protected function wrapWithHtml($content) {
-    return ('<' === substr($content,0,1)) ?
-      $content : '<p>' . $content . '</p>';
-  }
-
-
-  public function getCatDossierDoc() {
-    return $this->createCategory("Nos dossiers documentaires");
-  }
-
-
-  public function updateCategoriesForDossiersDocumentaires() {
-    $dossiers_doc_id = $this->getCatDossierDoc()->getId();
-    foreach ($this->t3db->findAllPagesWithPid(309) as $page)
-      $this->_addPageInDossiersDocumentaires($page, $dossiers_doc_id);
-  }
-
-
-  protected function _addPageInDossiersDocumentaires($page, $dossiers_doc_id) {
-    if (!$category = $this->createCategory($page['title'], $dossiers_doc_id))
-      return;
-
-    foreach ($this->t3db->findAllContents($page['uid']) as $content)
-      $this->_addContentInDossiersDocumentaires($content, $category);
-  }
-
-
-  protected function _addContentInDossiersDocumentaires($content, $category) {
-    if (!$article = $this->_getArticle($content['uid'])) {
-      Class_Import_Typo3_Logs::getInstance()
-        ->addErrorRow('Article with uid: ' . $content['uid'] . ' missing');
-      return;
-    }
-
-    $article->setCategorie($category)
-            ->save();
-  }
-
-
-  protected function _getArticle($value) {
-    return Class_Article::findFirstByCustomFieldValue(self::UID_TYPO3_CF, $value);
-  }
-
-
-  public function updateArticles($last_import_date) {
-    foreach($this->t3db->findAllArticlesSince($last_import_date) as $new)
-      $this->_updateArticle($new);
-
-    Class_Import_Typo3_Logs::getInstance()->setArticlesLog();
-    return $this;
-  }
-
-
-  protected function _updateArticle($new) {
-    if ($new['deleted']) {
-      if ($article = $this->_getArticle($new['uid']))
-        $article->deleteWithCustomFields();
-      return;
-    }
-
-    $id_cat = 0;
-    $t3catIds = $this->t3db->findAllForeignUidForNewsCat($new['uid']);
-
-    foreach ($t3catIds as $t3catId) {
-      $id_cat = Class_Import_Typo3_ArticleCategoriesMap::getCategoryOrDefaultCategory($t3catId['uid_foreign'])->getId();
-    }
-
-    $block = function() use ($new, $id_cat){
-      if ($article = $this->_getArticle($new['uid']))
-        return $this->updateArticle($article, $new, $id_cat);
-      return $this->createArticle($new, $id_cat);
-    };
-
-    $this->traceUnknownKohaUrls($block, $new['uid']);
-  }
-
-
-  public function importArticles() {
-    foreach($this->t3db->findAllArticles() as $new)
-      $this->_importArticle($new);
-
-    Class_Import_Typo3_Logs::getInstance()->setArticlesLog();
-    return $this;
-  }
-
-
-  protected function _importArticle($new) {
-    $id_cat = $this->news_categories_map->find($new['category'])->getId();
-    $element = $this->traceUnknownKohaUrls(
-                                           function() use ($new, $id_cat){
-                                             return $this->createArticle($new, $id_cat);
-                                           },
-                                           $new['uid']);
-
-
-    $this->news_categories_map->setDomainsFor($element,
-                                              $this->t3db->findAllForeignUidForNewsCat($new['uid']));
-  }
-
-
-  public function setMiopDateEvent($article, $data) {
-    if ($this->existCategoriesAsForeign($data, $this->FOREIGN_UID_DATETIME)) {
-      $converted_date = $this->formatDate($data['datetime']);
-      $article->setEventsDebut($converted_date)->setEventsFin($converted_date);
-    }
-
-    $this->changeCategory($article, $data, $this->getCatDossierDoc()->getId());
-    return $article;
-  }
-
-
-  public function existCategoriesAsForeign($data, $array_catid) {
-    foreach ($this->t3db->findAllForeignUidForNewsCat($data['uid']) as $domain)
-      if (in_array($domain['uid_foreign'], $array_catid))
-        return true;
-
-    return false;
-  }
-
-
-  public function changeCategory($article,$data,$id_cat) {
-    if ($this->existCategoriesAsForeign($data, [$id_cat]))
-      $article->setIdCat($this->news_categories_map->find($id_cat)->getId());
-  }
-
-
-  public function formatDate($date_str) {
-    return $date_str ? date("Y-m-d H:i", $date_str) : '';
-  }
-
-
-  public function updateArticle($article,$new,$id_cat) {
-    $date_creation = date("Y-m-d H:i:s", $new['crdate']);
-    $date_maj = date("Y-m-d H:i:s", $new['datetime']);
-    $debut = $this->formatDate($new['starttime']);
-    $fin = $this->formatDate($new['endtime']);
-    $description = $new['short'] ?
-      $this->manipulate_body($new['short'], $new['image']) :
-      $this->addImage($new['image']);
-
-    $contenu = $new['bodytext'] ?
-      $this->manipulate_body($new['bodytext'], $new['image']) :
-      '&nbsp;';
-
-    $tags = str_replace(', ', ';', $new['tx_danpextendnews_tags']);
-
-    $article->updateAttributes(['date_creation' => $date_creation,
-                                'date_maj' => $date_maj,
-                                'debut' => $debut,
-                                'fin' => $new['hidden'] ? null : $fin,
-                                'id_user' => $this->userMap->find($new['cruser_id']),
-                                'description' => $description,
-                                'contenu' => $contenu,
-                                'id_cat' => $id_cat,
-                                'status' => Class_Article::STATUS_VALIDATED,
-                                'tags' => $tags,
-                                'titre' => $new['title']]);
-
-    $article = $this->setMiopDateEvent($article,$new);
-    $article->setCustomField('uid_typo3',$new['uid']);
-    if (!$article->saveWithCustomFields()) {
-      Class_Import_Typo3_Logs::getInstance()
-        ->incrementArticleRejected($article, [$new['uid'], $new['title']]);
-      return $article;
-    }
-
-    Class_Import_Typo3_Logs::getInstance()->incrementArticlesSaved();
-    return $article;
-  }
-
-
-  public function createArticle($new,$id_cat) {
-    return $this->updateArticle(new Class_Article(), $new, $id_cat);
-  }
-
-
-  private function typo_event_to_date($date, $time) {
-    $year = substr($date, 0, 4);
-    $month = substr($date, 4, 2);
-    $day = substr($date, 6, 4);
-
-    $seconds_left = $time % 3600;
-    $hour = (int)(($time - $seconds_left) / 3600);
-    $minutes = (int)($seconds_left / 60);
-
-    if (0 == $hour + $minutes) {
-      $hour = 23;
-      $minutes = 59;
-    }
-
-    return sprintf('%s/%s/%s %s:%s:%s', $year, $month, $day, $hour, $minutes, '00');
-  }
-
-
-  public function importCalendar() {
-    foreach($this->t3db->findAllCalendarEvents() as $new)
-      $this->traceUnknownKohaUrls(
-                                  function() use ($new) {
-                                    return $this->createCalendar($new);
-                                  },
-                                  $new['uid']);
-    return $this;
-  }
-
-
-  public function createCalendar($new) {
-      $date_creation = date("Y-m-d H:i:s", $new['crdate']);
-      $debut = $this->formatDate($new['starttime']);
-      $fin = $this->formatDate($new['endtime']);
-
-      $event_debut = $this->typo_event_to_date($new['start_date'], $new['start_time']);
-      $event_fin = $this->typo_event_to_date($new['end_date'], $new['end_time']);
-      $contenu = $this->manipulate_body($new['description'] ?
-                                        $new['description'] : $new['title'],
-                                        $new['image']);
-
-      $id_cat = $this->cal_categories_map->find($new['category_id'])->getId();
-
-      $element = Class_Article::newInstance(['date_creation' => $date_creation,
-                                             'debut' => $debut,
-                                             'fin' => $new['hidden'] ? null : $fin,
-                                             'events_debut' => $event_debut,
-                                             'events_fin' => $event_fin,
-                                             'id_user' => $this->userMap->find($new['cruser_id']),
-                                             'all_day' => $new['allday'],
-                                             'description' => '',
-                                             'contenu' => $contenu,
-                                             'id_cat' => $id_cat,
-                                             'status' => Class_Article::STATUS_VALIDATED,
-                                             'tags' => '',
-                                             'titre' => $new['title']]);
-
-      $element->setCustomField(self::UID_TYPO3_CF,$new['uid']);
-      if (!$element->saveWithCustomFields()) {
-        $this->report['calendar_errors']++;
-        Class_Import_Typo3_Logs::getInstance()
-          ->addErrorRow('calendar with uid: ' . $new['uid']
-                        . '(' . $new['title'] . ') - '
-                        . implode(', ', $element->getErrors()));
-        return $element;
-      }
-
-      $element->setDateCreation($date_creation)->save();
-      $this->report['calendar_created']++;
-      $this->cal_categories_map
-        ->setDomainsFor($element,
-                        $this->t3db->findAllForeignUidForCalendarEventCategory($new['uid']));
-      return $element;
-  }
-
-
-  public function createCategory($category_name, $id_cat_mere=0) {
-    if ($category = Class_ArticleCategorie::findFirstBy(['libelle' => $category_name]))
-      return $category;
-
-    $category = Class_ArticleCategorie::newInstance(['libelle' => $category_name,'id_cat_mere' =>$id_cat_mere]);
-
-    if ($category->save())
-      return $category;
-
-    return null;
-  }
-
-
-  public function updateArticlePages($update_date) {
-    $pages_cat = Class_ArticleCategorie::findFirstBy(['libelle' => 'Pages fixes']);
-    foreach($this->t3db->findAllContentsSince($update_date) as $new) {
-      $this->traceUnknownKohaUrls(
-                                  function() use ($new, $pages_cat){
-                                    if ($article = $this->_getArticle($new['uid']))
-                                      return $this->updateArticlePage($article,$new,$pages_cat);
-                                    return $this->createArticlePage($new, $pages_cat);
-                                  },
-        $new['uid']);
-      $this->report['pages_created']++;
-    }
-
-    return $this;
-  }
-
-
-  public function importArticlesPages() {
-    $rows = $this->t3db->findAllContents();
-
-    $pages_cat = Class_ArticleCategorie::newInstance(['libelle' => 'Pages fixes']);
-    $pages_cat->save();
-    foreach($rows as $new) {
-      $this->traceUnknownKohaUrls(
-        function() use ($new, $pages_cat){
-          return $this->createArticlePage($new, $pages_cat);
-        },
-        $new['uid']);
-
-      $this->report['pages_created']++;
-    }
-    return $this;
-  }
-
-  public function updateArticlePage($article,$new,$pages_cat) {
-    $date_creation = date("Y-m-d H:i:s", $new['crdate']);
-    $debut = $this->formatDate($new['starttime']);
-    $fin = $this->formatDate($new['endtime']);
-    $contenu = $new['bodytext'] ?
-      $this->manipulate_body($new['bodytext'], $new['image'])
-      :'';
-
-    $element = $article->updateAttributes(['date_creation' => $date_creation,
-                                           'debut' => $debut,
-                                           'fin' => $new['hidden'] ? null : $fin,
-                                           'id_user' => $this->userMap->find($new['cruser_id']),
-                                           'description' => '',
-                                           'contenu' => $contenu,
-                                           'id_cat' => $pages_cat->getId(),
-                                           'status' => Class_Article::STATUS_VALIDATED,
-                                           'tags' => '',
-                                           'titre' => $new['header']]);
-
-    $element->setCustomField(self::UID_TYPO3_CF,$new['uid']);
-    if (!$element->saveWithCustomFields()) {
-      $this->report['pages_errors']++;
-      Class_Import_Typo3_Logs::getInstance()
-        ->addErrorRow('pages with uid: ' . $new['uid']
-                      . ' (' . $new['title'] . ') - '
-                      . implode(', ', $element->getErrors()));
-    }
-
-    return $element;
-  }
-
-
-  public function createArticlePage($new, $pages_cat) {
-    return $this->updateArticlePage(new Class_Article(), $new, $pages_cat);
-  }
-
-
-  public function traceUnknownKohaUrls($closure, $uid) {
-    $this->unknown_koha_urls = [];
-    $element = $closure();
-    foreach($this->unknown_koha_urls as $url)
-      Class_Import_Typo3_Logs::getInstance()->addUnknownUrl($element, $url, $uid);
-
-    return $element;
-  }
-
-
-
-  public function format_url($url) {
-    if (!$url = explode(' ', $url)[0])
-      return '';
-
-    $url = preg_replace(['/^http:\/\//', '/^\/\//'], '', trim(strtolower($url)));
-    return (0 !== strpos('http', $url)) ? 'http://'.$url : $url;
-  }
-
-
-  public function reset_auto_increment() {
-    Zend_Registry::get('sql')->execute('alter table cms_article AUTO_INCREMENT=1');
-    Zend_Registry::get('sql')->execute('alter table cms_categorie AUTO_INCREMENT=1');
-    Zend_Registry::get('sql')->execute('alter table sito_url AUTO_INCREMENT=1');
-    Zend_Registry::get('sql')->execute('alter table sito_categorie AUTO_INCREMENT=1');
-    Zend_Registry::get('sql')->execute('alter table catalogue AUTO_INCREMENT=1');
-  }
-
-
-  public function importAdvices() {
-    $logger = Class_Import_Typo3_Logs::getInstance();
-    if (!$advices_root = Class_ArticleCategorie::findFirstBy(['libelle' => 'THÈME',
-                                                              'id_cat_mere' => 0])) {
-      $logger->addErrorRow('Catégorie "THÈME" non trouvée');
-      return;
-    }
-
-    $all_children = $advices_root->getRecursiveSousCategories();
-    $all_children_ids = array_map(function($item) { return $item->getId(); },
-                                  $all_children);
-    Class_ArticleCategorie::clearCache();
-
-    if (!$total = Class_Article::countBy(['id_cat' => $all_children_ids])) {
-      $logger
-        ->addErrorRow('Aucun article sous la Catégorie "THÈME" ou ses sous-catégories');
-      return;
-    }
-
-
-    $logger->addLogRow($total . ' avis potentiel(s)');
-
-    $page = 1;
-    $page_size = 1000;
-    $ok = $errors = 0;
-    while ($articles = Class_Article::findAllBy(['id_cat' => $all_children_ids,
-                                                 'order' => 'id_article',
-                                                 'limitPage' => [$page, $page_size]])) {
-      $logger->addLogRow('Page ' . $page . ', ' . count($articles) . ' article(s)');
-
-      foreach($articles as $article)
-        $this->_importAdvice($article, $logger) ? $ok++: $errors++;
-
-      Class_Article::clearCache();
-      Class_AvisNotice::clearCache();
-      $page++;
-    }
-
-    $logger->addLogRow($ok . ' avis importé(s), ' . $errors . ' avis rejeté(s)');
-  }
-
-
-  protected function _importAdvice($article, $logger) {
-    if (!$work_key = $this->_firstWorkKeyIn($article->getContenu())) {
-      $logger->addErrorRow("\tAucun lien de notice détecté dans l'article id " . $article->getId());
-      return false;
-    }
-
-    $author = $article->getAuteur();
-    $attribs = ['clef_oeuvre' => $work_key,
-                'id_user' => $author->getId(),
-                'abon_ou_bib' => 1];
-
-    if (!$advice = Class_AvisNotice::findFirstBy($attribs))
-      $advice = Class_AvisNotice::newInstance($attribs);
-
-    if (!$advice
-        ->setNote(5)
-        ->setDateAvis($article->getDateCreation())
-        ->setEntete(strip_tags($article->getDescription()))
-        ->setAvis($article->getContenu())
-        ->setStatut(1)
-        ->save()) {
-      $logger->addErrorRow("\tErreur à l'enregistrement article "
-                           . $article->getId() . implode(', ', $advice->getErrors()));
-      return false;
-    }
-
-    $logger
-      ->addLogRow(sprintf('Article %s transformé en avis %s sur la notice %s',
-                          $article->getId(), $advice->getId(), $work_key));
-    return true;
-  }
-
-
-  protected function _firstWorkKeyIn($content) {
-    if (!preg_match('|href="[^"]+/viewnotice/clef/([A-Z0-9-]+)"|ui', $content, $matches))
-      return;
-
-    $parts = array_slice(explode('-', $matches[1]), 0, 4);
-    return implode('-', $parts);
-  }
-
-
-  protected function _prepareSite($new) {
-    $id_cat = $this->sites_categories_map->find($new['category'])->getId();
-    $date_maj = date("Y-m-d H:i:s", $new['crdate']);
-    $tags = str_replace(', ', ';', $new['tx_danpextendnews_tags']);
-
-    return ['id_cat' => $id_cat,
-            'date_maj' => $date_maj,
-            'titre' => $new['title'],
-            'url' => $new['ext_url'],
-            'tags' => $tags,
-            'description' => $new['short']];
-  }
-
-
-  public function postProcess() {
-    $this
-      ->_cleanArticles()
-      ->_cleanSites();
-  }
-
-
-  protected function _cleanSites() {
-    $this->_cleanModelsBy('findRemovableArticles', '_getSite');
-    return $this;
-  }
-
-
-  protected function _cleanArticles() {
-    foreach(['findRemovableArticles',
-             'findRemovableContents',
-             'findRemovableEvents'] as $method)
-      $this->_cleanModelsBy($method, '_getArticle');
-
-    return $this;
-  }
-
-
-  protected function _cleanModelsBy($db_method, $model_getter) {
-    foreach($this->t3db->$db_method() as $item)
-      if ($model = $this->$model_getter($item['uid']))
-        $this->_cleanModel($model);
-  }
-
-
-  /** @param $model use Trait_Indexable, Trait_CustomFields */
-  protected function _cleanModel($model) {
-    $model->unindex();
-    $model->deleteWithCustomFields();
-  }
-}
\ No newline at end of file
diff --git a/library/Class/Import/Typo3/ArticleCategoriesMap.php b/library/Class/Import/Typo3/ArticleCategoriesMap.php
deleted file mode 100644
index aa2322a049e0440c67c9c11ee5cb1750871f80a0..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/ArticleCategoriesMap.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-
-class Class_Import_Typo3_ArticleCategoriesMap extends Class_Import_Typo3_CategoriesMap {
-  protected function _buildNewCategory($libelle, $parent_id=0) {
-    return Class_ArticleCategorie::newInstance(['libelle' => $libelle,
-                                                'id_cat_mere' => $parent_id]);
-  }
-
-
-  public static function getCategory($uid) {
-    return Class_ArticleCategorie::findFirstByCustomFieldValue(Class_Import_Typo3::UID_TYPO3_CF, $uid);
-  }
-
-
-  protected function addError($category, $title, $t3uid, $t3pid) {
-    return Class_Import_Typo3_Logs::getInstance()
-      ->incrementArticleCategoriesRejected($category, $title, $t3uid, $t3pid);
-  }
-
-
-  protected function incrementSaved() {
-    Class_Import_Typo3_Logs::getInstance()->incrementArticleCategoriesSaved();
-  }
-
-
-  protected function findByUidTypo3 ($t3id) {
-    return Class_ArticleCategorie::findFirstByCustomFieldValue(self::UID_TYPO3_CF, $t3id);
-  }
-}
-?>
diff --git a/library/Class/Import/Typo3/CalendarCategoriesMap.php b/library/Class/Import/Typo3/CalendarCategoriesMap.php
deleted file mode 100644
index c6b59f191070caf05f0a2f4c0f22f291b91f352a..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/CalendarCategoriesMap.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-class Class_Import_Typo3_CalendarCategoriesMap  extends Class_Import_Typo3_ArticleCategoriesMap {
-  public function getParentCatId($t3id) {
-    return $this->find($t3id)->getId();
-  }
-}
-?>
diff --git a/library/Class/Import/Typo3/CategoriesMap.php b/library/Class/Import/Typo3/CategoriesMap.php
deleted file mode 100644
index b3bbdb29cb634053279e4ade855ce9953faf1e5d..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/CategoriesMap.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-abstract class Class_Import_Typo3_CategoriesMap {
-
-  const UID_TYPO3_CF = 'uid_typo3';
-
-  protected
-    $map = [],
-    $default_cat,
-    $domaine_map;
-
-  public function __construct($default_cat_title, $domaine_map) {
-    $this->domaine_map = $domaine_map;
-    $this->default_cat = $this->_buildNewCategory($default_cat_title);
-    $this->default_cat->assertSave();
-  }
-
-
-  public function build($t3categories) {
-    foreach($t3categories as $t3cat) {
-      if ($category = $this->getCategory($t3cat['uid'])) {
-        $this->updateCategory($t3cat, $category);
-        continue;
-      }
-
-      $this->newCategory($t3cat['title'], $t3cat['uid'], $t3cat['parent_category']);
-    }
-
-    foreach ($t3categories as $t3cat)
-      $this->fixParent($t3cat['uid'], $t3cat['parent_category']);
-
-
-    $this->createDomainMap();
-  }
-
-
-  public function getParentCatId($t3id) {
-    if (isset($this->map[$t3id])) {
-      $cat = $this->map[$t3id];
-      return $cat->getId();
-    }
-
-    if ($category = $this->findByUidTypo3($t3id)) {
-      $this->map[$t3id] = $category;
-      return $category->getId();
-    }
-
-    return  0;
-  }
-
-
-  public function newCategory($title, $t3uid, $t3pid) {
-    $category = $this->_buildNewCategory($title, $this->getParentCatId($t3pid));
-    $category->setCustomField(Class_Import_Typo3::UID_TYPO3_CF,$t3uid);
-    if(!$category->saveWithCustomFields())
-      return $this->addError($category, $title, $t3uid, $t3pid);
-
-    $this->incrementSaved();
-    return $this->map[$t3uid] = $category;
-  }
-
-
-  public function updateCategory($t3cat, $category) {
-    $category->updateAttributes(['libelle' => $t3cat['title'],
-                                 'id_cat_mere' => $this->getParentCatId($t3cat['parent_category'])]);
-
-    if(!$category->save())
-      return $this->addError($category, $title, $t3cat['uid'], $t3cat['parent_category']);
-
-    return $this->map[$t3cat['uid']] = $category;
-  }
-
-
-  public function fixParent($t3uid, $t3pid) {
-    $category = $this->find($t3uid);
-    if (!$category->hasParentCategorie() &&
-        $category->getId() !== $this->default_cat->getId() &&
-        isset($this->map[$t3pid])) {
-      $category->setParentCategorie($this->find($t3pid))
-               ->save();
-    }
-  }
-
-
-  public static function getOrCreateDefaultCategory() {
-    if ($category = Class_ArticleCategorie::findFirstBy(['libelle' => 'Non classé']))
-      return $category;
-
-    $cat = Class_ArticleCategorie::newInstance(['libelle' => 'Non classé',
-                                                'id_cat_mere' => 0]);
-    $cat->save();
-    return $cat;
-
-  }
-
-
-  public static function getCategoryOrDefaultCategory($uid) {
-    return ($category = static::getCategory($uid)) ?
-      $category : static::getOrCreateDefaultCategory();
-  }
-
-
-  public function fixParentCategory($t3uid, $t3pid) {
-    if(!$category = static::getCategory($t3uid))
-      return;
-
-    if ($category->getId() == $this->default_cat->getId())
-      return;
-
-    $category->setParentCategorie(static::getCategory($t3pid))
-             ->save();
-  }
-
-
-  public function createDomainMap() {
-    foreach($this->map as $category)
-      $this->domaine_map->findOrCreateDomaine($category);
-  }
-
-
-  abstract protected function addError($category, $title, $t3uid, $t3pid);
-
-  abstract protected function incrementSaved();
-
-  protected function findByUidTypo3($t3id) {
-    return null;
-  }
-
-  public function find($t3id) {
-    if (isset($this->map[$t3id]))
-      return $this->map[$t3id];
-
-    if ($category = $this->findByUidTypo3($t3id)) {
-      $this->map[$t3id] = $category;
-      return $category;
-    }
-
-    return $this->default_cat;
-  }
-
-
-  public function setDomainsFor($model, $t3_domain_ids) {
-    $domains = [];
-    foreach ($t3_domain_ids as $t3_domain) {
-      $category = $this->find($t3_domain['uid_foreign']);
-      $domains[] = $this->domaine_map
-        ->findOrCreateDomaine($category,$t3_domain['uid_foreign']);
-    }
-
-    if (isset($category))
-      $model->setCategorie($category);
-
-    $model->setDomaines($domains)->save();
-  }
-}
-?>
diff --git a/library/Class/Import/Typo3/Db.php b/library/Class/Import/Typo3/Db.php
deleted file mode 100644
index d3d757cae8ada241534cc8dc9d5d82aadedcf2b5..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/Db.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-class Class_Import_Typo3_Db {
-  protected
-    $t3db,
-    $pages_titles;
-
-  public function __construct() {
-    $this->t3db = new Class_Systeme_Sql('','','','');
-    $this
-      ->t3db
-      ->setAdapter(Zend_Db::factory(
-                                    'mysqli',
-                                    ['host' => 'localhost',
-                                     'username' => 'root',
-                                     'password' => 'root',
-                                     'dbname' =>  'miop_typo3']));
-  }
-
-
-  public function findPageTitle($uid) {
-    if (isset($this->pages_titles[$uid]))
-      return $this->pages_titles[$uid];
-
-    $title = ($row = $this->t3db->fetchEnreg('select title from pages where uid=' . $uid)) ?
-      $row['title'] : '';
-
-    return $this->pages_titles[$uid] = $title;
-  }
-
-
-  public function findAllPagesWithPid($pid) {
-    return $this->t3db->fetchAll('select * from pages where pid='.$pid);
-  }
-
-
-  public function findAllUsers() {
-    return $this->t3db->fetchAll('select * from be_users where uid > 1');
-  }
-
-
-  public function findCategories($update_date = null) {
-    $query = 'select * from tt_news_cat where deleted=0';
-
-    if ($update_date)
-      $query .=  ' and tstamp >= ' . $update_date;
-
-    return $this->t3db->fetchAll($query . ' order by uid ASC');
-  }
-
-
-  public function findEventCategories($update_date = null) {
-    $query = 'select * from tx_cal_category where deleted=0';
-
-    if ($update_date)
-      $query .=  ' and tstamp >= ' . $update_date;
-
-    return $this->t3db->fetchAll($query . ' order by uid ASC');
-  }
-
-
-  public function findAllSitesSince($update_date) {
-    return $this->t3db->fetchAll("select * from tt_news where deleted=0 and t3ver_label  not like 'DELETED!' and hidden=0 and ext_url not like '%koha.mediathequeouestprovence.fr%'  and ext_url>'' and tstamp >= ".$update_date." order by uid ASC");
-  }
-
-
-  public function findAllSites() {
-    return $this->t3db->fetchAll("select * from tt_news where deleted=0 and t3ver_label  not like 'DELETED!' and hidden=0 and ext_url not like '%koha.mediathequeouestprovence.fr%'  and ext_url>'' order by uid ASC");
-  }
-
-
-  public function findAllExternalSites() {
-    return $this->t3db->fetchAll("select * from tt_news where deleted=0 and t3ver_label  not like 'DELETED!' and hidden=0 and image>'' and ext_url not like '%koha.mediathequeouestprovence.fr%' and  ext_url>'' order by uid ASC");
-  }
-
-
-  public function findAllArticlesSince($last_import_date) {
-    return $this->t3db->fetchAll("select * from tt_news where hidden=0 and ext_url='' and tstamp >= ".$last_import_date."  order by uid ASC");
-  }
-
-
-  public function findAllArticles() {
-    return $this->t3db->fetchAll("select * from tt_news where deleted=0 and hidden=0 and ext_url='' order by uid ASC");
-  }
-
-
-  public function findAllForeignUidForNewsCat($uid) {
-    return $this->t3db->fetchAll("select distinct uid_foreign from tt_news_cat_mm where uid_local=". $uid ." order by sorting");
-  }
-
-
-  public function findRemovableArticles() {
-    return $this->t3db->fetchAll("select uid from tt_news where pid=-1");
-  }
-
-
-  public function findAllForeignUidForCalendarEventCategory($uid) {
-    return $this->t3db->fetchAll("select distinct uid_foreign from tx_cal_event_category_mm where uid_local=" . $uid . " order by sorting");
-  }
-
-
-  public function findAllCalendarEvents() {
-    return $this->t3db->fetchAll("select * from tx_cal_event where deleted=0 and hidden=0 order by uid ASC");
-  }
-
-
-  public function findRemovableEvents() {
-    return $this->t3db->fetchAll('select uid from tx_cal_event where pid=-1');
-  }
-
-
-  public function findAllContents($page_id=false) {
-    $pid_sql='';
-    if ($page_id)
-      $pid_sql='and pid='.$page_id;
-
-    return $this->t3db->fetchAll("select * from tt_content where deleted=0 and hidden=0 and header>'' and bodytext>'' and  (ctype='text' or ctype='textpic') ".$pid_sql." order by uid ASC");
-  }
-
-
-  public function findAllContentsSince($update_date) {
-    return $this->t3db->fetchAll("select * from tt_content where deleted=0 and tstamp>=".$update_date." and hidden=0 and header>'' and bodytext>'' and  (ctype='text' or ctype='textpic') order by uid ASC");
-  }
-
-
-  public function findRemovableContents() {
-    return $this->t3db->fetchAll("select uid from tt_content where pid=-1");
-  }
-}
diff --git a/library/Class/Import/Typo3/DomaineMap.php b/library/Class/Import/Typo3/DomaineMap.php
deleted file mode 100644
index 3914484c7f81bd73658148281e8778327df35174..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/DomaineMap.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-class Class_Import_Typo3_DomaineMap {
-  protected $map = [];
-
-  public function findOrCreateDomaine($category, $uid=0) {
-    if (!$category)
-      return null;
-
-    $path = $category->getPath();
-
-    if (isset($this->map[$path]))
-      return $this->map[$path];
-
-    $parent_domaine = $this->findOrCreateDomaine($category->getParentCategorie());
-
-    $catalogue = Class_Catalogue::newInstance(['libelle' => $category->getLibelle(),
-                                               'parent_id' => $parent_domaine ? $parent_domaine->getId() : 0]);
-
-    if (!$uid)
-      $catalogue->setCustomField(Class_Import_Typo3::UID_TYPO3_CF, $uid);
-
-    if (!$catalogue->saveWithCustomFields()) {
-      Class_Import_Typo3_Logs::getInstance()->incrementDomainsRejected($catalogue);
-      return;
-    }
-
-    Class_Import_Typo3_Logs::getInstance()->incrementDomainsSaved();
-    return $this->map[$path] = $catalogue;
-  }
-}
-?>
diff --git a/library/Class/Import/Typo3/Logs.php b/library/Class/Import/Typo3/Logs.php
deleted file mode 100644
index 3e7afd84908709e6c7b865fa0b1af20e025c3a9d..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/Logs.php
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-
-
-class Class_Import_Typo3_logs {
-  protected static $_instance;
-  protected
-    $_logs = '',
-    $_errors = '',
-    $_rejected_users = 0,
-    $_t3_users = 0,
-    $_saved_users = 0,
-    $_updated_users = 0,
-    $_rejected_categories_sito = 0,
-    $_rejected_categories_article = 0,
-    $_saved_articles = 0,
-    $_saved_domains = 0,
-    $_rejected_articles,
-    $_saved_categories_article = 0,
-    $_saved_categories_sito = 0,
-    $_output_activated = false;
-
-
-  public static function getInstance() {
-        if (null === self::$_instance)
-      self::$_instance = new self();
-
-    return self::$_instance;
-  }
-
-
-  public function activateOutput() {
-    $this->_output_activated = true;
-    return $this;
-  }
-
-
-  public function getLogs() {
-    return $this->_logs;
-  }
-
-  public function addUnknownUrl($element, $url, $uid) {
-    $this->addLogRow(get_class($element).' id:'.$element->getId().' , typo3 uid: '.$uid.', unknown URL: '.$url);
-  }
-
-
-  public function addLogRow($log) {
-    $this->_logs .= $log . "\n";
-    if ($this->_output_activated) {
-      echo $log."\n";
-    }
-    return $this;
-  }
-
-  public function cleans() {
-    $this->_logs = '';
-    $this->_rejected_users = 0;
-    $this->_t3_users = 0;
-    $this->_saved_users = 0;
-    $this->_updated_users = 0;
-    $this->_saved_categories_sito = 0;
-    $this->_saved_categories_article = 0;
-    $this->_rejected_categories_sito = 0;
-    $this->_rejected_categories_article = 0;
-    $this->_saved_articles = 0;
-    $this->_saved_domains = 0;
-    $this->_rejected_articles = 0;
-    return $this;
-  }
-
-
-  public function addLogs($logs) {
-    foreach($logs as $log)
-      self::getInstance()->addLogRow($log);
-    return $this;
-  }
-
-
-  public function getErrors() {
-    return $this->_errors;
-  }
-
-
-  public function addErrorRow($error) {
-    $this->_errors .= $error . '\n';
-
-    if ($this->_output_activated) {
-      echo "[ERROR]  $error\n";
-    }
-
-    return $this;
-  }
-
-
-  public function incrementRejected($user, $data) {
-    $this->_rejected_users++;
-    return $this->addErrorRow('user with uid ' . $data['uid'] . ', (' . $data['username'] . ' ' . $data['realName'] . ' ) ' . 'can\'t be saved: ' . implode(', ', $user->getErrors()));
-  }
-
-
-  public function incrementUpdated() {
-    $this->_updated_users++;
-    return $this;
-  }
-
-
-  public function incrementSaved() {
-    $this->_saved_users++;
-    return $this;
-  }
-
-
-  public function incrementT3Users() {
-    $this->_t3_users++;
-    return $this;
-  }
-
-
-  public function report() {
-    return $this->getLogs() .
-      $this->getErrors();
-  }
-
-
-  public function setUsersLog() {
-    return $this->addLogRow('User(s) found: ' . $this->_t3_users)
-                ->addLogRow('User(s) rejected: ' . $this->_rejected_users)
-                ->addLogRow('User(s) added: ' . $this->_saved_users)
-                ->addLogRow('User(s) updated: ' . $this->_updated_users);
-  }
-
-
-  public function setCategoriesLog($number) {
-    return $this->addLogRow('Typo3 categories found: ' . $number)
-                ->addLogRow('Typo3 Sito categories rejected: ' . $this->_rejected_categories_sito)
-                ->addLogRow('Typo3 Article categories rejected: ' . $this->_rejected_categories_article)
-                ->addLogRow('Typo3 Article categories saved: ' . $this->_saved_categories_article)
-                ->addLogRow('Typo3 Sito categories saved: ' . $this->_saved_categories_sito)
-                ->addLogRow('Typo3 Domains saved: ' . $this->_saved_domains);
-  }
-
-
-  public function setArticlesLog() {
-    return $this->addLogRow('Typo3 Articles saved: ' . $this->_saved_articles)
-                ->addLogRow('Typo3 Articles rejected: ' . $this->_rejected_articles);
-  }
-
-
-  public function incrementSitoCategoriesSaved() {
-     $this->_saved_categories_sito++;
-     return $this;
-  }
-
-
-  public function incrementArticleCategoriesSaved() {
-     $this->_saved_categories_article++;
-     return $this;
-  }
-
-
-  public function incrementSitoCategoriesRejected($category, $title, $t3uid, $t3pid) {
-    $this->_rejected_categories_sito++;
-    return $this->addErrorRow('Category Sito' . $this->incrementDefaultRejectedMessage($category, [$title, $t3uid, $t3pid]));
-  }
-
-
-  public function incrementArticleCategoriesRejected($category, $title, $t3uid, $t3pid) {
-    $this->_rejected_categories_article++;
-    return $this->addErrorRow('Category Article' . $this->incrementDefaultRejectedMessage($category, [$title, $t3uid, $t3pid]));
-  }
-
-
-  protected function incrementDefaultRejectedMessage($model, $options = []) {
-    return implode(' ', $options) . ' can not be saved: ' . implode(', ', $model->getErrors());
-  }
-
-
-  public function incrementDomainsRejected($catalogue) {
-    $this->_rejected_domains++;
-    return $this->addErrorRow('Domain' . $this->incrementDefaultRejectedMessage($catalogue, [$catalogue->getLibelle]));
-  }
-
-
-  public function incrementDomainsSaved() {
-     $this->_saved_domains++;
-     return $this;
-  }
-
-
-  public function incrementArticlesSaved() {
-     $this->_saved_articles++;
-     return $this;
-  }
-
-
-  public function incrementArticleRejected($article, $options) {
-    $this->_rejected_articles++;
-    return $this->addErrorRow('Article ' . $this->incrementDefaultRejectedMessage($article, $options));
-  }
-
-}
-?>
\ No newline at end of file
diff --git a/library/Class/Import/Typo3/SiteCategoriesMap.php b/library/Class/Import/Typo3/SiteCategoriesMap.php
deleted file mode 100644
index 863f2cc93b66966442b66ec4bcf7ca1fcce0cdcb..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/SiteCategoriesMap.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-class Class_Import_Typo3_SiteCategoriesMap extends Class_Import_Typo3_CategoriesMap {
-  protected function _buildNewCategory($libelle, $parent_id=0) {
-    return Class_SitothequeCategorie::newInstance(['libelle' => $libelle,
-                                                   'id_cat_mere' => $parent_id]);
-  }
-
-
-  public static function getCategory($uid) {
-    return Class_SitothequeCategorie::findFirstByCustomFieldValue(Class_Import_Typo3::UID_TYPO3_CF, $uid);
-  }
-
-
-
-
-  protected function addError($category, $title, $t3uid, $t3pid) {
-    return Class_Import_Typo3_Logs::getInstance()
-      ->incrementSitoCategoriesRejected($category, $title, $t3uid, $t3pid);
-  }
-
-
-  protected function incrementSaved() {
-    Class_Import_Typo3_Logs::getInstance()->incrementSitoCategoriesSaved();
-  }
-
-
-  public function findOrCreateByPath($path) {
-    if ($path == Trait_TreeNode::$PATH_SEPARATOR)
-      return null;
-
-    $parts = array_values(array_filter(explode(Trait_TreeNode::$PATH_SEPARATOR, $path)));
-
-    $category = null;
-    foreach($parts as $part)
-      $category = $this->_findOrCreateUnder($part, $category);
-
-    return $category;
-  }
-
-
-  protected function _findOrCreateUnder($label, $parent) {
-    $attribs = ['libelle' => $label,
-                'id_cat_mere' => $parent ? $parent->getId() : 0];
-
-    if (!$category = Class_SitothequeCategorie::findFirstBy($attribs)) {
-      $category = Class_SitothequeCategorie::newInstance($attribs);
-      $category->save();
-    }
-
-    return $category;
-  }
-
-
-  protected function findByUidTypo3($t3id) {
-    return Class_SitothequeCategorie::findFirstByCustomFieldValue(self::UID_TYPO3_CF, $t3id);
-  }
-}
-?>
diff --git a/library/Class/Import/Typo3/UserMap.php b/library/Class/Import/Typo3/UserMap.php
deleted file mode 100644
index caffeca28b3af970d07127191c5eb56c30f45449..0000000000000000000000000000000000000000
--- a/library/Class/Import/Typo3/UserMap.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-class Class_Import_Typo3_UserMap {
-  protected $map = [];
-
-  public function init() {
-    $where = 'ROLE_LEVEL < ' . ZendAfi_Acl_AdminControllerRoles::ADMIN_PORTAIL; // exclude ADMIN.
-    $where .= ' AND ROLE_LEVEL <> ' . ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB; // exclude SIGB members.
-    Class_Users::deleteBy(['where' => $where]);
-  }
-
-
-  public function updateUser($data, $user) {
-    $user->setNom($data['realName'])
-         ->setMail($data['email'])
-         ->setPassword('achanger');
-  }
-
-
-  public function newUser($data) {
-    $logs = Class_Import_Typo3_Logs::getInstance();
-    $logs->incrementT3Users();
-
-    $user = $this->_findOrCreate($data['username']);
-    $updated = !$user->isNew();
-    $this->updateUser($data, $user);
-
-    ($data['admin'] == '1') ?
-      $user->beAdminPortail() :
-      $user->changeRoleTo(ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL);
-
-    if (!$user->save()) {
-      $logs->incrementRejected($user, $data);
-      return;
-    }
-
-    $updated
-      ? $logs->incrementUpdated()
-      : $logs->incrementSaved();
-
-    $this->map[$data['uid']] = $user->getId();
-  }
-
-
-  protected function _findOrCreate($login) {
-    return ($user = Class_Users::findFirstBy(['login' => $login])) ?
-      $user : Class_Users::newInstance(['login' => $login]);
-  }
-
-
-  public function find($uid) {
-    return isset($this->map[$uid]) ? $this->map[$uid] : 0;
-  }
-}
-?>
diff --git a/tests/library/Class/Import/Typo3Fixture.php b/tests/library/Class/Import/Typo3Fixture.php
deleted file mode 100644
index 8b901c0601501893c279d8d3e042e892ac99e4d0..0000000000000000000000000000000000000000
--- a/tests/library/Class/Import/Typo3Fixture.php
+++ /dev/null
@@ -1,590 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-
-class MockFileWriter {
-  protected $contents="image";
-  protected $path;
-  protected $image;
-  public function fileExists() {
-    return false;
-  }
-  public function dirExists() {
-    return true;
-  }
-  public function getContents($image) {
-    $this->image=$image;
-    return $this->contents;
-  }
-
-  public function getPath() {
-    return $this->path;
-  }
-  public function getImage() {
-    return $this->image;
-  }
-  public function putContents($path, $contents) {
-    $this->contents=$contents;
-    $this->path= $path;
-  }
-
-}
-
-
-class MockTypo3DB {
-
-  public function findAllUsers() {
-    return [['uid' => 20,
-             'username' => 'toto',
-             'realName' => 'toto',
-             'email' => 'toto@null.com',
-             'admin' => 1],
-
-            ['uid' => 21,
-             'username' => 'jean',
-             'realName' => 'Jean Jean',
-             'email' => 'jean-jeantoto@null.com',
-             'admin' => 0],
-
-            ['uid' => 43,
-             'username' => 'sserge',
-             'realName' => 'Serge Serge',
-             'email' => 'serge@null.com',
-             'admin' => 0],
-
-            ['uid' => 123456789,
-             'username' => null,
-             'realName' => 'Tom',
-             'email' => null,
-             'admin' => 0]];
-  }
-
-
-  public function findCategories($update_date = null) {
-    if ($update_date)
-      return [['title' => 'Jeux',
-               'uid' => 777,
-               'parent_category' => 99],
-              ['title' => 'd\'hiver',
-               'uid' => 81,
-               'parent_category' => 99],
-              ['title' => '',
-               'uid' => 617,
-               'parent_category' => 99]];
-
-    return [
-            ['title' => 'My category',
-             'uid' => 1,
-             'parent_category' => 0
-            ],
-            ['title' => 'Société & Civilisation',
-             'uid' => 10,
-             'parent_category' => 0
-            ],
-            ['title' => 'Musique & Cinéma',
-             'uid' => 80,
-             'parent_category' => 99
-            ],
-            ['title' => 'Divers',
-             'uid' => 81,
-             'parent_category' => 99
-            ],
-            ['title' => 'Autres',
-             'uid' => 82,
-             'parent_category' => 99
-            ],
-            ['title' => null,
-             'uid' => 85,
-             'parent_category' => 99
-            ],
-            ['title' => 'Art',
-             'uid' => 99,
-             'parent_category' => 0
-            ],
-            ['title' => 'NOS TOPS 5',
-             'uid' => 43,
-             'parent_category' => 0
-            ],
-            ['title' => 'Action Culturelle',
-             'uid' => 867,
-             'parent_category' => 0
-            ],
-            ['title' => 'Nos dossiers documentaires',
-             'uid' => 36,
-             'parent_category' => 0
-            ]];
-  }
-
-
-  public function findEventCategories($update_date = null) {
-    if ($update_date)
-      return [['uid' => 30,
-               'title' => 'New Event Category',
-               'parent_category' => 0]];
-
-    return [
-            ['uid' => 6,
-             'title' => 'Atelier',
-             'parent_category' => 0
-            ],
-            ['uid' => 24,
-             'title' => 'Lecture',
-             'parent_category' => 6
-            ],
-            ['uid' => 26,
-             'title' => 'Pont',
-             'parent_category' => 0
-            ],
-    ];
-  }
-
-
-  public function findAllExternalSites() {
-
-    return [ ['crdate' => '1412781027',
-             'category' => 1,
-             'image' => 'Federation_francaise_de_Go.JPG,fede_go.jpg',
-             'title' => 'MuséoParc Alésia',
-             'ext_url' => 'http://www.alesia.com/:Profil _blank',
-             'tx_danpextendnews_tags' => 'Alésia, Jules César, Vercingétorix, Gaule, armée, bataille',
-             'short' => null,
-             'uid' => 14478,
-              'pid' => 49]];
-
-  }
-
-
-  public function findAllSites() {
-    return [
-            ['crdate' => '1412781027',
-             'category' => 1,
-             'image' => 'Federation_francaise_de_Go.JPG',
-             'title' => 'MuséoParc Alésia',
-             'ext_url' => 'http://www.alesia.com/',
-             'tx_danpextendnews_tags' => 'Alésia, Jules César, Vercingétorix, Gaule, armée, bataille',
-             'short' => null,
-             'uid' => 14478,
-             'pid' => 49],
-
-            ['crdate' => '1412769359',
-             'category' => 1,
-             'image' => '',
-             'title' => 'L\'ouest canadien',
-             'ext_url' => 'http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=268360',
-             'tx_danpextendnews_tags' => 'Canada',
-             'short' => null,
-             'uid' => 14479,
-             'pid' => 0],
-            ['crdate' => '1412769359',
-             'category' => 1,
-             'image' => '',
-             'title' => 'Qui a dit que les pingouins ne savaient pas taper ? ',
-             'ext_url' => 'http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?foo=bar',
-             'tx_danpextendnews_tags' => 'Canada',
-             'short' => null,
-             'uid' => 144333,
-             'pid' => 0]
-
-    ];
-  }
-
-
-  public function findAllSitesSince($last_import_date) {
-    return [
-            ['crdate' => '1412781027',
-             'category' => 1,
-             'image' => '',
-             'title' => 'Sylvissima',
-             'ext_url' => 'http://www.sylvissima.com/',
-             'tx_danpextendnews_tags' => 'Sylvie Vartan, French pop',
-             'short' => 'C\'est Sylvie',
-             'uid' => 6656,
-             'pid' => 0],
-    ];
-  }
-
-
-  public function findAllArticlesSince($last_import_date) {
-    $articles = $this->findAllArticles();
-    $articles[5]['uid']=666;
-    $articles[5]['short']='Crash';
-    $articles[5]['title']='Crash Test';
-    $articles[1]['deleted']=1;
-    $articles[0]['title']='Tous à bord du bateau pirate';
-    $articles[0]['bodytext']="MODIFY".$articles[0]['bodytext'];
-    $articles[4]['bodytext']="MODIFIED".$articles[4]['bodytext'];
-
-    $new_article = ['uid' => 992,
-      'title' => 'souquez les artimuses',
-      'crdate' => 141277461,
-      'datetime' => 141277461,
-      'cruser_id' => 43,
-      'starttime' => 1415110980,
-      'endtime' => 1422973380,
-      'short' => 'fooo',
-      'category' => 1,
-      'deleted' => 0,'hidden' => 0,
-      'bodytext' => 'Fooooooooooooooo',
-      'image' =>  'bateau.jpg',
-      'tx_danpextendnews_tags' => 'Asterix',
-    ];
-    return [$articles[0],$articles[1], $articles[5], $articles[4], $new_article];
-  }
-
-
-  public function findAllArticles() {
-    return [ [
-              'uid' => 14474,
-              'crdate' => 141277461,
-              'datetime' => 141277461,
-              'cruser_id' => 43,
-              'starttime' => 1415110980,
-              'endtime' => 1422973380,
-              'deleted' => 0,'hidden' => 0,
-              'short' => 'A bord.',
-              'category' => 10,
-              'image' =>  'bateau.jpg',
-              'tx_danpextendnews_tags' => 'pirate, bateau',
-              'title' => 'A bord du bateau pirate',
-              'bodytext' => 'bodytext: <div id="Titre-Conteneur-J-Coeur"><div id="Titre-Libelle-J-Coeur"><p>Titre&nbsp;:sss</p></div>
-<div id="Titre-Content-J-Coeur"><p>A bord du bateau pirate</p></div></div>
-<div id="Auteur-Conteneur-J-Coeur"><div id="Auteur-Libelle-J-Coeur"><p>Auteur&nbsp;: </p></div>
-<div id="Auteur-Content-J-Coeur"><p>Jean-Michel Billioud</p></div></div>
-<div id="Illustrateur-Conteneur-J-Coeur"><div id="Illustrateur-Libelle-J-Coeur"><p>Illustrateur&nbsp;: </p></div>
-<div id="Illustrateur-Content-J-Coeur"><p>Olivier Latyk</p></div></div>
-<div id="Support-Conteneur-J-Coeur"><div id="Support-Libelle-J-Coeur"><p>Support : </p></div>
-<div id="Support-Content-J-Coeur"><p>Livre</p></div></div>
-<div id="Public-Conteneur-J-Coeur"><div id="Public-Libelle-J-Coeur"><p>Public concerné&nbsp;: </p></div>
-<div id="Public-Content-J-Coeur"><p>à partir de 4 ans</p></div></div>
-<div id="Resume-Conteneur-J-Coeur"><div id="Resume-Libelle-J-Coeur"><p>Résumé&nbsp;: </p></div>
-<div id="Resume-Content-J-Coeur"><p>Le bateau pirate <i>Bel Espoir</i> quitte l\'île de la Jamaïque pour sillonner la mer des Caraïbes. Les soixante marins embarqués doivent affronter les éléments. A l\'horizon la voilure du<i> Josépha</i>, un galion espagnol chargé d\'or, est en vue. Le capitaine Rogers et son équipage sont prêts à en découdre afin de s\'emparer du trésor. Mais un navire de guerre apparaît soudain...</p></div></div>
-<link fileadmin/fichiers/fichiers_joints/reglement_interieur/REGLEMENT-INTERIEUR-ANNEXE-LISEUSES.pdf _blank download>liseuses</link>
-<link fileadmin/fichiers/action_culturelle/circuit.pdf _blank download>Circuit</link>
-<div id="Avis-Conteneur-J-Coeur"><div id="Avis-Libelle-J-Coeur"><p>Notre avis : </p></div>
-<link http://www.mediathequeouestprovence.fr/fileadmin/user_upload/jeunesse/formulaire_inscription_atelier_internet_espace_J.pdf _blank external-link-new-window>
-<link http://www.mediathequeouestprovence.fr/fileadmin/fichiers/fichiers_joints/formulaires/memento_communique_sans_danger.pdf _blank external-link-new-window>mémento</link>
-<div id="Avis-Content-J-Coeur"><p>Cet ouvrage nous décrit l\'histoire et la vie des pirates. De la préparation du voyage, à la vie à bord, aux escales, à l\'abordage des navires ennemis, en passant par le partage du butin et enfin à la condamnation des pilleurs. Les volets et les tirettes permettent à ce livre animé d\'être autant ludique qu\'informatif, pour le bonheur des plus jeunes lecteurs. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Monte à bord moussaillon, bienvenue dans la cabine du capitaine Rogers et cap sur les Antilles !</p></div></div>
-<link http://www.mediathequeouestprovence.fr/rem/aerodrome.html _blank external-link-new-window>diaporama des cartes postales anciennes de Miramas</link>.</td></tr><tr><td colspan="2" rowspan="1"><link 2157 _blank external-link-new-window><img style="padding-right: 10px; padding-bottom: 10px; float: left;" src="uploads/RTEmagicC_5_37.jpg.jpg" height="76" width="133" alt="" /></link>
-<div id="OPAC-Conteneur-J-Coeur"><div id="OPAC-Link-J-Coeur"><p><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=262978 _blank - "Voir la disponibilité dans notre catalogue">Pour emprunter ou réserver le document </link></p></div></div>
-<div id="SB-Conteneur-J-Coeur"><div id="SB-Libelle-J-Coeur"><p>Sites ou blogs :</p></div>
-<ul id="SB-Content-J-Coeur"><li><link http://www.pacmusee.qc.ca/fr/expositions/pirates-ou-corsaires _blank - "Cliquer pour accéder au site ou au blog">Pirates ou corsaires ?</link></li><li><link http://www.pirates-corsaires.com/films.htm _blank - "Cliquer pour accéder au site ou au blog">Les pirates au cinéma</link></li></ul></div>
-<div id="OPAC-Conteneur-Others-J-Coeur"><div id="OPAC-Libelle-Others-J-Coeur"><p>Si vous avez aimé, vous aimerez aussi :</p></div><link typo3temp/pics/9ef98368e3.jpg _blank external-link-new-window>
-<ul id="OPAC-Content-Others-J-Coeur"><li><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=264321 _blank - "Vérifier la disponibilité dans notre catalogue">La vérité vraie sur les pirates</link> de Alan Snow</li><li><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=247203 _blank - "Vérifier la disponibilité dans notre catalogue">Des pirates et corsaires pour réfléchir</link> de Isabelle Wlodarczyk</li></ul></div>'
-      ],
-            [ 'uid' => 14476,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,
-             'hidden' => 0,
-             'crdate' => 1359562198,
-             'datetime' => 1359562198,
-             'cruser_id' => 22,
-             'short' => null,
-             'category' => 1,
-             'image' => '',
-             'tx_danpextendnews_tags' => '',
-             'title' => 'Architecture',
-             'bodytext' => '<span style="float: left; font-size: 100%"><span style="text-decoration: none"><span style="font-style: normal"><span style="text-decoration: none"><span style="font-weight: normal">L</span></span></span></span></span><span style="text-decoration: none"><span style="font-style: normal"><span style="text-decoration: none"><span style="font-weight: normal">e domaine &quot;</span></span></span></span><span style="text-decoration: none"><span style="font-style: normal">Architecture<strong>&quot;</strong></span></span><strong><span style="text-decoration: none"><span style="font-style: normal"><span style="font-weight: normal"> rassemble</span></span></span></strong><span style="text-decoration: none"><span style="font-style: normal"><span style="font-weight: normal"> la documentation relative à cet art, dans son acception plus contemporaine, soit celui de &quot;diriger la construction, de concevoir les structures, de donner une apparence au final avec des matériaux&quot;. En synthèse, l\'art de bâtir des édifices. </span></span></span>
-La collection<span style="text-decoration: none"><span style="font-style: normal"><span style="font-weight: normal"> &quot;Architecture&quot; s\'articule autour de trois grandes thèmatiques, qui structurent la politique d\'acquisition et le développement des fonds documentaires du réseau :</span></span></span>
-<ul><liz><p>  les   généralités et l\'art du paysage</p>   </li><li><p>  l\'architecture   ancienne de l\'antiquité au XIX<sup>ième</sup> siècle</p>  </li><li><p>  l\'architecture   moderne et contemporaine (constructions, architectes célèbres...).</p> </li></ul>
-<ul><p>   </p></ul>
- Les généralités et l\'art du paysage représentent un tiers de la collection, et intègrent notamment les contenus relatifs à l\'histoire générale de l\'architecture<em>.</em>
- L\'architecture ancienne de l\'antiquité au XIX siècle représente 20% de la collection et offre une vision synthétique de l\'histoire de l\'architecture à travers le monde, depuis l\'Antiquité (Egypte ancienne, Rome...), l\'architecture Romane et Gothique, la Renaissance, l\'âge Baroque et l\'architecture classique, jusqu\'à la fin du XIX° siècle.
- L\'architecture moderne et contemporaine représente près de la moitié de la collection. On y retrouve ses différents mouvements, tels que le modernisme, le post-modernisme, l\'architecture hightech, le Blob architecture, etc.
-<strong><span style="font-style: normal"><span style="font-weight: normal">Chacune des thèmatiques comprend des ouvrages généralistes ainsi que des monographies pouvant être consacrées à un architecte, à un mouvement ou à une réalisation particulière. Une attention est accordée à l\'actualité médiatique et à la question de la construction individuelle la plus contemporaine.</span></span></strong>
- Le fonds est essentiellement composé de documents de vulgarisation, hormis quelques essais ou documents à caractère techniques, pour autant non destinés aux professionnels et/ou experts de l\'architecture.
- <strong><span style="font-style: normal"><span style="font-weight: normal">Le support livre est prépondérant, même si les documents audiovisuels et multimédias la complètent avantageusement, en restituant notamment la dimension &quot;spatiale&quot; propre à cet art. Une </span></span></strong><strong><span style="font-style: normal"><span style="font-weight: normal">sélection de sites web,</span></span></strong><strong><span style="font-style: normal"><span style="font-weight: normal"> ainsi que des revues et ressources multimédias en ligne enrichissent la collection du réseau et participent de son actualisation.</span></span></strong>
- <strong><span style="font-style: normal"><span style="font-weight: normal">Il est à noter que le domaine &quot;architecture&quot;, bien que discipline à part entière, peut entrer en connexion et en résonance avec d\'autres champs disciplinaires et professionnels, tels que ceux de l\'écologie (éco-construction, environnement, jardins), de l\'urbanisme (logement, transport, amènagement urbain), de la géographie ou encore de la sociologie. Ces domaines voisins sont pour la plupart représentés dans les autres départements documentaires du réseau, que sont &quot;Société et Civilisation&quot; et &quot;Science, Sport, Vie pratique&quot;. </span></span></strong>
-<strong><span style="font-style: normal"><span style="font-weight: normal">Afin de suivre l\'actualité et la diversité de la production éditoriale, les commandes de documents sont mensuelles. </span></span></strong>
- La collection, dans son ensemble, s\'adresse à un large public, désireux de mieux comprendre cet &quot;art de bâtir&quot; qui l\'environne et façonne de plus en plus son rapport à l\'espace, tant public que privé.
-'],
-            [ 'uid' => 14477,
-             'starttime' => 1419844200,
-             'endtime' => 1420017000,
-             'deleted' => 0,'hidden' => 0,
-             'datetime' =>1419933840,
-             'crdate' => 1419933840,
-             'cruser_id' => 22,
-             'short' => null,
-             'category' => 1,
-             'image' => '',
-             'tx_danpextendnews_tags' => '',
-             'title' => 'Architecture summary',
-             'bodytext' => '<strong><span style="font-style: normal"><span style="font-weight: normal">Afin de suivre l\'actualité et la diversité de la production éditoriale, les commandes de documents sont mensuelles. </span></span></strong>
- La collection, dans son ensemble, s\'adresse à un large public, désireux de mieux comprendre cet &quot;art de bâtir&quot; qui l\'environne et façonne de plus en plus son rapport à l\'espace, tant public que privé.
-'],
-            [ 'uid' => 14478,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,'hidden' => 0,
-             'image' => 'onyx.png',
-             'crdate' => 1359562208,
-             'datetime' => 1359562208,
-             'cruser_id' => 22,
-             'short' => null,
-             'category' => 1,
-             'tx_danpextendnews_tags' => '',
-             'title' => 'Onyx tower event',
-             'bodytext' => 'Welcome to Onyx tower !
Prepare to fight !'],
-          [ 'uid' => 14488,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,'hidden' => 0,
-             'crdate' => 1357562208,
-             'datetime' => 1395409080,
-             'cruser_id' => 22,
-             'image' => '',
-             'short' => null,
-             'category' => 1,
-             'tx_danpextendnews_tags' => '',
-             'title' => 'Wiki Bokeh',
-             'bodytext' => 'Welcome to <link http://wiki.bokeh-library-portal.org _blank external-link-new-window>Wiki Bokeh</link>'],
-            [ 'uid' => 14888,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,'hidden' => 0,
-             'crdate' => 1357562208,
-             'datetime' => 1357562208,
-             'cruser_id' => 22,
-             'short' => null,
-             'category' => 1,
-             'image' => '',
-             'tx_danpextendnews_tags' => '',
-             'title' => null,
-             'bodytext' => 'Welcome it is an error'],
-            ['uid' => 84888,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,'hidden' => 0,
-             'image' => '',
-             'crdate' => 1357592208,
-             'datetime' => 1357592208,
-             'cruser_id' => 22,
-             'short' => null,
-             'category' => 1,
-             'tx_danpextendnews_tags' => '',
-             'title' => 'Realy ? you crash ?',
-             'bodytext' => '<span style="font-weight: bold;">Titre :</span> No Longer at Ease<br /><span style="font-weight: bold;">Interprètes :</span>&nbsp; NNEKA<br /><span style="font-weight: bold;">Compositeur :</span> NNEKA<br /><span style="font-weight: bold;">Label&nbsp;:</span> Yo Mamma Records<br /><span style="font-weight: bold;">Date&nbsp;:</span> 2008<br /><span style="font-weight: bold;">Genre&nbsp;:</span> Nu Soul<br /><span style="font-weight: bold;">Support :</span> CD<br /><span style="font-weight: bold;">Localisation&nbsp;:</span> Fos-sur-Mer, Miramas <br /><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=174002 _top external-link-new-window>Lien direct au catalogue</link><br /><br />
-<p style="width: 220px; height: 55px;"><object height="55" width="220"><param name="movie" value="http://www.deezer.com/embedded/small-widget-v2.swf?idSong=607896&colorBackground=0x555552&textColor1=0xFFFFFF&colorVolume=0x99FFFF&autoplay=0"></param><embed src="http://www.deezer.com/embedded/small-widget-v2.swf?idSong=607896&amp;colorBackground=0x555552&amp;textColor1=0xFFFFFF&amp;colorVolume=0x99FFFF&amp;autoplay=0" type="application/x-shockwave-flash" height="55" width="220"></embed></object><br />D&eacute;couvrez <link http://www.deezer.com/fr/nneka.html>Nneka</link>!</p>
-<br /><br /><span style="font-weight: bold;">Notre avis :</span><br /><span style="font-style: italic;">No Longer at Ease</span> est un album qui parle de vérité, de sincérité et de lucidité sur ses propres erreurs. Nneka née au Nigéria, a grandi en Allemagne sur les sons de Fela Kuti, de Bob Marley, de Nas ou encore de Lauryn Hill.<br />Entre Reggae, Soul et électro elle incorpore aussi une pincée de rock à ses productions.<br />Le détonnant <span style="font-style: italic;">Heartbeat</span> en témoigne et délivre un message sur la guerre qui laisse le libre arbitre à chacun. <br />Si vous aimez la voix cassée de Neneh Cherry, l\'énergie de Amy Winehouse et le message universaliste de Bob Marley vous aimerez Nneka !<br />&nbsp;<br /><span style="font-weight: bold;">Si vous avez aimé, vous aimerez aussi :</span><br /><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?q=au:Alicia%20Keys _blank external-link-new-window>Alicia Keys</link> - <link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?q=au:Bob%20Marley%20and%20The%20Wailers _blank external-link-new-window>Bob Marley</link> - <link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?test=test&q=au:Neneh%20Cherry _blank external-link-new-window>Neneh Cherry</link> - <link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?q=Amy%20Winehouse _blank external-link-new-window>Amy Winehouse</link>'],
-            ['uid' => 123,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,'hidden' => 0,
-             'crdate' => 1357592258,
-             'datetime' => 1357592258,
-             'cruser_id' => 22,
-             'short' => null,
-             'image' => '',
-             'category' => 1,
-             'tx_danpextendnews_tags' => '',
-             'title' => 'Deezer ?',
-             'bodytext' => '<link http://www.deezer.com/fr/nneka.html>Nneka</link>'],
-
-            ['uid' => 139735,
-             'starttime' => 0,
-             'endtime' => 0,
-             'deleted' => 0,'hidden' => 0,
-             'crdate' => 1357592258,
-             'datetime' => 1357592258,
-             'cruser_id' => 22,
-             'short' => null,
-             'image' => '',
-             'category' => 1,
-             'tx_danpextendnews_tags' => '',
-             'title' => 'L\'artothèque',
-             'bodytext' => '<p style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">L\'artothèque de la Médiathèque Intercommunale propose au public sur les sites du réseau, une collection de 1 825 œuvres d\'art contemporain constituant un large panorama de la création plastique et photographique des quarante dernières années.</p>
-<p style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?q=test&idx=kw&idx=kw&idx=kw&limit=mc-itemtype%3AOART&sort_by=relevance&do=Rechercher _blank external-link-new-window>Un catalogue iconographique</link>&nbsp;est spécialement dédié à cette collection; il est également consultable dans tous les pôles&nbsp;<span style="font-style: italic;">Art</span>,<span style="font-style: italic;">&nbsp;</span>Musique, Cinéma&nbsp;du réseau.<br /><br />Outre le prêt d\'œuvres d\'art, l\'artothèque organise aussi des expositions, réalise des animations, accueille des groupes, édite des catalogues..., favorisant ainsi la diffusion et la promotion de l\'art et des artistes d\'aujourd\'hui.</p>'],
-
-
-            ['uid' => 14418,
-             'starttime' => 1412632800,
-             'endtime' => 1412683132,
-             'datetime' => 1412805600,
-             'hidden' => 0,
-             'crdate' => 1412683132,
-             'cruser_id' => 22,
-             'short' => null,
-             'image' => '',
-             'category' => 1,
-             'tx_danpextendnews_tags' => '',
-             'title' => 'La fete de la science',
-             'bodytext' => 'on y découvre plein de choses']
-];
-  }
-
-  public function findAllForeignUidForNewsCat($uid) {
-    if (in_array($uid , [14488, 14418, 992]))
-      return [[ 'uid_foreign' => 867 ]];
-
-    if ($uid==14477)
-      return [[ 'uid_foreign' => 36 ]];
-
-    return [
-            ['uid_foreign' => 81],
-            ['uid_foreign' => 43],
-            ['uid_foreign' => 82]
-    ];
-  }
-
-  public function findAllForeignUidForCalendarEventCategory($uid) {
-    return [
-            ['uid_foreign' => 26],
-    ];
-  }
-
-
-  public function findAllCalendarEvents() {
-    return [
-            ['uid' => 21,
-             'crdate' => 1189587056,
-             'starttime' => 0,
-             'endtime' => 0,
-             'start_date' => 20071002,
-             'end_date' => 20071002,
-             'start_time' => 66600,
-             'end_time' => 72000,
-             'cruser_id' => 20,
-             'image' => '',
-             'allday' => 0,
-             'description' => 'Dans le cadre de la semaine "Découverte du Bridge", le Bridge Club de Miramas propose des initiations et démonstrations gratuites pour les jeunes.',
-             'title' => 'Découvrir le Bridge en 10 minutes',
-             'category_id' => 6,
-             'hidden' => 0],
-            ['uid' => 22,
-             'crdate' => 1189589056,
-             'starttime' => 0,
-             'endtime' => 0,
-             'image' => '',
-             'start_date' => 20071102,
-             'end_date' => 20071102,
-             'start_time' => 66600,
-             'end_time' => 72000,
-             'cruser_id' => 20,
-             'allday' => 0,
-             'description' => 'Discover museum for free every saturday.
All familly are welcome.',
-             'title' => 'Discover Museum',
-             'category_id' => 6,
-             'hidden' => 0],
-            ['uid' => 23,
-             'crdate' => 1189519056,
-             'starttime' => 0,
-             'endtime' => 0,
-             'image' => '',
-             'start_date' => 20081102,
-             'end_date' => 20081102,
-             'start_time' => 66600,
-             'end_time' => 72000,
-             'cruser_id' => 20,
-             'allday' => 0,
-             'description' => '',
-             'title' => 'Discover Space',
-             'category_id' => 6,
-             'hidden' => 0],
-            ['uid' => 34,
-             'crdate' => 1251212980,
-             'starttime' => 0,
-             'start_time' => 54000,
-             'endtime' => 0,
-             'end_time' => 57600,
-             'image' => '',
-             'start_date' => 20090916,
-             'end_date' => 20090916,
-             'cruser_id' => 20,
-             'allday' => 0,
-             'description' => '<span style="font-weight: bold;">FILM</span><br /><span style="font-weight: bold;"><span style="font-style: italic;"></span><span style="font-style: italic;"><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=153045 _top external-link-new-window>L\'île de Black Mor</link></span><span style="font-style: italic;"></span> réalisé par <link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?kw=kw&q=r%C3%A9al.%20Jean-Fran%C3%A7ois%20Laguionie _top external-link-new-window>Jean-François Laguionie</link></span><br /><span style="font-weight: bold;">Pour les enfants à partir de 5 ans</span><br /><span style="font-weight: bold;">Entrée libre</span><br /><span style="font-weight: bold;">15h - Médiathèque de Fos-sur-Mer</span><br /><br />Dans le cadre des Rendez-vous du mercredi.',
-             'title' => 'Rendez-vous Cinéma',
-             'category_id' => 6,
-             'hidden' => 0
-
-            ]
-
-    ];
-  }
-  public function findAllContentsSince($update_date) {
-      $contents=$this->findAllContents();
-      $contents[0]['bodytext']='Modification de contenu';
-      $contents[0]['header']='A haute voix... modif';
-
-      $contents[]=[
-               'uid' => 188,
-             'crdate' => 1298390490,
-             'starttime' => 1298389541,
-             'endtime' => 0,
-             'hidden' => 0,
-             'cruser_id' => 1,
-             'image' => '',
-             'title' => '',
-               'bodytext' => "<ul><li>Internet est consultable dans tous les pôles thématiques du réseau : <link typo3/fileadmin/fichiers/fichiers_joints/reglement_interieur/REGLEMENT-INTERIEUR-2013-annexe3.pdf _blank download>voir la charte d'utilisation.<br /><br /></link></li></ul>",
-               'header'=> "Internet & Wi-Fi"
-      ];
-      return $contents;
-
-  }
-  public function findAllContents($page_id=false) {
-    return [
-            [
-             'uid' => 13973,
-             'crdate' => 1298390490,
-             'starttime' => 1298389541,
-             'endtime' => 0,
-             'hidden' => 0,
-             'cruser_id' => 1,
-             'image' => '',
-             'title' => '',
-             'bodytext' => 'Initiées en 2008 par le pôle Langues et Littérature de Miramas, les lectures à voix haute ou Lectures impromptues ont évolué au fil du temps. En 2010, elles ont joué les variations, de lectures surprises solo en lectures thématiques à plusieurs voix en passant par le café-lecture où les bibliothécaires présentent <link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-shelves.pl?viewshelf=1556&sortfield=title%20%3Ccid:part1.08080603.08080008@ouestprovence.fr%3E _blank external-link-new-window>des textes</link> et en lisent parfois des extraits.<br /><br />Autant d\'autres façons de lire, de donner envie de lire, d\'échanger sur ses lectures...que nous poursuivons en 2011.<br /><br />Les bibliothécaires lisent pour vous, adhérents ou non adhérents, amateurs de littérature, jeunes et moins jeunes...Il n\'est pas nécessaire d\'avoir lu les textes, d\'avoir des connaissances particulières...juste le goût des histoires, d\'échanger, l\'envie de partager ses propres lectures et même, pourquoi pas, de lire soi-même...<br /><br />Les bibliothécaires lisent surtout des extraits de romans ou des nouvelles complètes, parfois un conte ou des poèmes, à une ou plusieurs voix. En fin de séance, chacun peut échanger et les textes peuvent être empruntés.<br />Les rendez-vous sont mensuels : un signet aux couleurs des lectures est distribué pour vousaider à mémoriser les dates et lieux de ces instants littéraires.<br /><br />Il n\'est pas besoin de s\'inscrire ; n\'hésitez pas à prendre un moment pour venir écouter, découvrir des auteurs, des histoires variées ; le montage vidéo qui accompagne ce billet est une modeste invitation à ce partage.',
-             'header' => 'A haute voix... le roman se fait entendre...'
-            ]
-    ];
-  }
-
-
-  public function findAllPagesWithPid($pid) {
-
-    if ($pid==309){
-      return [ [ 'uid' => 13973,
-                'title' => 'BLOGS AND SITES' ]];}
-    return [];
-  }
-  public function findPageTitle($uid) {
-    if ($uid == 49)
-      return '2014';
-    return '';
-  }
-
-}
-
-
-class MockTypo3DBForUpdate extends MockTypo3DB {
-
-  public function findAllForeignUidForNewsCat($uid) {
-    if (in_array($uid , [14488, 14418, 992]))
-      return [[ 'uid_foreign' => 867 ]];
-
-    if ($uid==14477)
-      return [[ 'uid_foreign' => 36 ]];
-
-    return [
-            ['uid_foreign' => 81],
-            ['uid_foreign' => 43],
-            ['uid_foreign' => 777]
-    ];
-  }
-}
diff --git a/tests/library/Class/Import/Typo3Test.php b/tests/library/Class/Import/Typo3Test.php
deleted file mode 100644
index 7ff9cf15502edc525d1d006c9582837ca80d79c4..0000000000000000000000000000000000000000
--- a/tests/library/Class/Import/Typo3Test.php
+++ /dev/null
@@ -1,1219 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * 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
- */
-
-include_once("Typo3Fixture.php");
-
-
-
-abstract class Import_Typo3TestCase extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
-  protected $migration;
-
-  public function setUp() {
-    parent::setUp();
-    Class_Import_Typo3_Logs::getInstance()->cleans();
-
-    $this->mock_sql = Storm_Test_ObjectWrapper::mock();
-    $this->old_sql = Zend_Registry::get('sql');
-    Zend_Registry::set('sql', $this->mock_sql);
-
-    $this->mock_sql->whenCalled('execute')
-                   ->answers(true);
-
-    $this->fixture('Class_CustomField_Meta',
-                   ['id' => 1,
-                    'label' => 'uid_typo3',
-                    'field_type' => Class_CustomField_Meta::TEXT_INPUT,
-                    'options_list' => '']);
-
-
-    $this->fixture('Class_CustomField',
-                   ['id' => 1,
-                    'meta_id' => 1,
-                    'priority' => 1,
-                    'model' => 'Article']);
-
-    $this->migration = new Class_Import_Typo3();
-    $this->migration->setTypo3DB(new MockTypo3DB());
-  }
-
-
-  public function tearDown() {
-    Zend_Registry::set('sql', $this->old_sql);
-    parent::tearDown();
-  }
-}
-
-
-
-class Import_Typo3UsersTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->fixture('Class_Users',
-                   ['id' => 12,
-                    'login' => 'toto',
-                    'password' => 'XXzsinaded',
-                    'nom' => 'Un nom']);
-
-    $this->onLoaderOfModel('Class_Users')
-         ->whenCalled('deleteBy')
-         ->with(['where' => 'ROLE_LEVEL < 6 AND ROLE_LEVEL <> 2'])
-         ->answers(null);
-
-    $this->report = $this->migration->run('users');
-  }
-
-
-  /** @test */
-  public function shouldHave3Users() {
-    $this->assertEquals(3, Class_Users::count(), $this->report);
-  }
-
-
-  /** @test */
-  public function totoShouldBeImported() {
-    $this->_userShouldBeImported(Class_Users::findFirstBy(['login' => 'toto']),
-                                 ZendAfi_Acl_AdminControllerRoles::ADMIN_PORTAIL,
-                                 'toto@null.com', 'toto');
-  }
-
-
-  /** @test */
-  public function totoShouldHaveBeenUpdated() {
-    $this->assertEquals(12, Class_Users::findFirstBy(['login' => 'toto'])->getId());
-  }
-
-
-  /** @test */
-  public function jeanShouldBeImported() {
-    $this->_userShouldBeImported(Class_Users::findFirstBy(['login' => 'jean']),
-                                 ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL,
-                                 'jean-jeantoto@null.com', 'Jean Jean');
-  }
-
-
-  /** @test */
-  public function sergeShouldBeImported() {
-    $this->_userShouldBeImported(Class_Users::findFirstBy(['login' => 'sserge']),
-                                 ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL,
-                                 'serge@null.com', 'Serge Serge');
-  }
-
-
-  protected function _userShouldBeImported($user, $role, $mail, $name) {
-    $this->assertNotNull($user);
-    $this->assertEquals($role, $user->getRoleLevel());
-    $this->assertEquals('achanger', $user->getPassword());
-    $this->assertEquals($mail, $user->getMail());
-    $this->assertEquals($name, $user->getNom());
-  }
-}
-
-
-
-class Import_Typo3CategoryTest extends Import_Typo3TestCase {
-
-  public function setUp() {
-    parent::setUp();
-    $this->migration->importCategories();
-  }
-
-  /** @test */
-  public function categoryArtShouldBeExistInDB() {
-    $parent = Class_ArticleCategorie::findFirstBy(['libelle' => 'Art']);
-    $this->assertNotNull($parent);
-  }
-
-
-  /** @test */
-  public function sitothequeArtShouldBeExistInDB() {
-    $parent = Class_SitothequeCategorie::findFirstBy(['libelle' => 'Art']);
-    $this->assertNotNull($parent);
-  }
-
-  /** @test */
-  public function sitoCategorieShouldHaveUidTypo3() {
-    $this->assertEquals('80',Class_SitothequeCategorie::findFirstBy(['libelle' => 'Musique & Cinéma'])->getCustomField('uid_typo3'));
-  }
-
-  /** @test */
-  public function categoryShouldHaveUidTypo3() {
-    $this->assertEquals(99,Class_ArticleCategorie::findFirstBy(['libelle' => 'Musique & Cinéma'])->getParent()->getCustomField('uid_typo3'));
-
-  }
-
-  /** @test */
-  public function categoryMusiqueCinemaShouldBeChildOfArt() {
-    $this->assertEquals('Art',Class_ArticleCategorie::findFirstBy(['libelle' => 'Musique & Cinéma'])->getParent()->getLibelle());
-  }
-
-
-  /** @test */
-  public function sitothequeMusiqueCinemaShouldBeChildOfArt() {
-    $this->assertEquals('Art',Class_SitothequeCategorie::findFirstBy(['libelle' => 'Musique & Cinéma'])->getParent()->getLibelle());
-  }
-
-
-  /** @test */
-  public function domaineArtShouldBeExistInDB() {
-    $parent = Class_Catalogue::findFirstBy(['libelle' => 'Art']);
-    $this->assertNotNull($parent);
-  }
-
-
-  /** @test */
-  public function domaineMusiqueCinemaShouldBeChildOfDomaineArt() {
-    $this->assertEquals('Art',Class_Catalogue::findFirstBy(['libelle' => 'Musique & Cinéma'])->getParent()->getLibelle());
-  }
-
-
-  /** @test */
-  public function mainCategoryAgendaShouldExist() {
-    $parent = Class_ArticleCategorie::findFirstBy(['libelle' => 'Agenda']);
-    $this->assertNotNull($parent);
-  }
-
-
-  /** @test */
-  public function atelierAgendaCategoryShouldExist() {
-    $parent = Class_ArticleCategorie::findFirstBy(['libelle' => 'Atelier']);
-    $this->assertNotNull($parent);
-  }
-
-
-  /** @test */
-  public function atelierAgendaCategoryShouldBeChildOfAgenda() {
-    $this->assertEquals('Agenda',Class_ArticleCategorie::findFirstBy(['libelle' => 'Atelier'])->getParent()->getLibelle());
-  }
-
-
-  /** @test */
-  public function LectureAgendaCategoryShouldBeChildOfAtelier() {
-    $this->assertEquals('Atelier',Class_ArticleCategorie::findFirstBy(['libelle' => 'Lecture'])->getParent()->getLibelle());
-  }
-
-
-  /** @test */
-  public function mainDomaineAgendaShouldBeExistInDB() {
-    $parent = Class_Catalogue::findFirstBy(['libelle' => 'Agenda']);
-    $this->assertNotNull($parent);
-  }
-
-
-  /** @test */
-  public function atelierAgendaDomaineShouldBeChildOfAgenda() {
-    $this->assertEquals('Agenda',
-                        Class_Catalogue::findFirstBy(['libelle' => 'Atelier'])->getParent()->getLibelle());
-  }
-
-
-  /** @test */
-  public function lectureAgendaDomaineShouldBeChildOfAtelier() {
-    $this->assertEquals('Atelier',Class_Catalogue::findFirstBy(['libelle' => 'Lecture'])->getParent()->getLibelle());
-  }
-}
-
-
-
-class Import_Typo3ArticleTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->fixture('Class_ArticleCategorie', ['id' => 1,
-                                              'libelle' => 'Infos',
-                                              'sous_categories' => []]);
-
-    $this->fixture('Class_Exemplaire',
-                   ['id' => 3,
-                    'id_origine' => 174002,
-                    'notice' => $this->fixture('Class_Notice',
-                                               ['id' => 5,
-                                                'clef_alpha' => 'BOBMARLEY'])]);
-
-    $this->migration->import_user();
-    $this->migration->importCategories();
-    $this->migration->importArticles();
-
-    $this->bateau_pirate = Class_Article::findFirstBy(['titre' => 'A bord du bateau pirate']);
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldBeImported() {
-    $this->assertNotNull($this->bateau_pirate);
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldBelongToSerge() {
-    $id_user = $this->bateau_pirate->getIdUser();
-    $this->assertEquals('sserge', Class_Users::findFirstBy(['id_user' => $id_user])->getLogin());
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldBeInDomainAutres() {
-    $this->assertEquals(['Divers', 'Autres', 'NOS TOPS 5'],
-                        $this->bateau_pirate->getDomaineLibelles());
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateCategoryShouldBeAutres() {
-    $this->assertEquals('Autres',
-                        $this->bateau_pirate->getCategorieLibelle());
-  }
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldContainsImageWithBateau() {
-    $this->assertContains('<img src="'.Class_Import_Typo3::BOKEH_IMG_URL.'pics/bateau.jpg" alt=""/>',$this->bateau_pirate->getContenu());
-  }
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldContainsImageWithBateauInSummary() {
-    $this->assertContains('<img src="'.Class_Import_Typo3::BOKEH_IMG_URL.'pics/bateau.jpg" alt=""/>',$this->bateau_pirate->getDescription());
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldConvertImageWithUploads() {
-    $this->assertContains('<img style="padding-right: 10px; padding-bottom: 10px; float: left;" src="'.Class_Import_Typo3::BOKEH_IMG_URL.'RTEmagicC_5_37.jpg.jpg" height="76" width="133" alt="" />',$this->bateau_pirate->getContenu());
-  }
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldConvertFileWithAttachments() {
-    $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_ATTACHMENT_URL.'fichiers_joints/reglement_interieur/REGLEMENT-INTERIEUR-ANNEXE-LISEUSES.pdf">',$this->bateau_pirate->getContenu());
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldConvertFileWithAttachmentActionCulturelle() {
-    $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_ATTACHMENT_URL.'action_culturelle/circuit.pdf">',$this->bateau_pirate->getContenu());
-  }
-
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldConvertFileWithAttachmentsWithHttpLink() {
-    $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_ATTACHMENT_URL.'fichiers_joints/formulaires/memento_communique_sans_danger.pdf">',$this->bateau_pirate->getContenu());
-  }
-
-  /** @test */
-  public function articleABordDuBateauPirateShouldConvertUserUploadWithFileAdmin() {
-    $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_FILEADMIN_URL.'jeunesse/formulaire_inscription_atelier_internet_espace_J.pdf">',$this->bateau_pirate->getContenu());
-  }
-
-
-
-  /** @test */
-  public function bodyArticleForArchitectureShouldReplacedLFByBR() {
-    $this->assertEquals('<strong><span style="font-style: normal"><span style="font-weight: normal">Afin de suivre l\'actualité et la diversité de la production éditoriale, les commandes de documents sont mensuelles. </span></span></strong><br /> La collection, dans son ensemble, s\'adresse à un large public, désireux de mieux comprendre cet &quot;art de bâtir&quot; qui l\'environne et façonne de plus en plus son rapport à l\'espace, tant public que privé.<br />',
-                        Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getContenu());
-  }
-
-
-  /** @test */
-  public function decouvrirBridgeEventShouldNotBeImported() {
-    $this->assertNull(Class_Article::findFirstBy(['titre' => 'Découvrir le Bridge en 10 minutes']));
-  }
-
-
-  /** @test */
-  public function discoverTowerEventContentShouldBeWrappedWithAHtmlTagP() {
-    $this->assertContains('<p>Welcome to Onyx tower !<br />Prepare to fight !</p>', Class_Article::findFirstBy(['titre' => 'Onyx tower event'])->getContenu());
-  }
-
-
-  /** @test */
-  public function discoverTowerEventSummaryShouldContainsOnyxImage() {
-    $this->assertContains('<img src="http://www.mediathequeouestprovence.fr/uploads/pics/onyx.png" alt=""/>', Class_Article::findFirstBy(['titre' => 'Onyx tower event'])->getDescription());
-  }
-
-
-  /** @test */
-  public function bokehWikiContentShouldContainsAnchorWithExpectedAttributs() {
-    $this->assertEquals('<p>Welcome to <a href="http://wiki.bokeh-library-portal.org">Wiki Bokeh</a></p>', Class_Article::findFirstBy(['titre' => 'Wiki Bokeh'])->getContenu());
-
-  }
-
-
-  /** @test */
-  public function contentOfWikiBokehShouldNotContainsLink() {
-    $this->assertNotContains('<link', Class_Article::findFirstBy(['titre' => 'Wiki Bokeh'])->getContenu());
-  }
-
-
-  /** @test */
-  public function contentOfRealyYouCrashShouldReplaceSearchAuthors() {
-    $this->assertContains('<a href="/miop-test.net/recherche/simple/rech_auteurs/Bob%20Marley%20and%20The%20Wailers">Bob Marley</a>', Class_Article::findFirstBy(['titre' => 'Realy ? you crash ?'])->getContenu());
-  }
-
-
-  /** @test */
-  public function contentOfRealyYouCrashShouldReplaceSimpleSearches() {
-    $this->assertContains('<a href="/miop-test.net/recherche/simple/expressionRecherche/Amy%20Winehouse">',
-                          Class_Article::findFirstBy(['titre' => 'Realy ? you crash ?'])->getContenu());
-  }
-
-
-  /** @test */
-  public function contentOfRealyYouCrashShouldContainsLinkToNoticeBobMarley() {
-    $this->assertContains('<a href="/miop-test.net/recherche/viewnotice/clef/BOBMARLEY">Lien direct au catalogue</a>',
-                          Class_Article::findFirstBy(['titre' => 'Realy ? you crash ?'])->getContenu());
-  }
-
-
-  /** @test */
-  public function contentOfRealyyouCrashShouldNotContainsLink() {
-    $this->assertNotContains('<link', Class_Article::findFirstBy(['titre' => 'Realy ? you crash ?'])->getContenu());
-  }
-
-
-  /** @test */
-  public function deezerContentShouldBeAnAnchor() {
-    $this->assertEquals('<a href="http://www.deezer.com/fr/nneka.html">Nneka</a>', Class_Article::findFirstBy(['titre' => 'Deezer ?'])->getContenu());
-  }
-
-
-  /** @test */
-  public function lartothequeArticleShouldBeTranformed() {
-    $this->assertContains('<a href="http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?q=test&idx=kw&idx=kw&idx=kw&limit=mc-itemtype%3AOART&sort_by=relevance&do=Rechercher">Un catalogue iconographique</a>', Class_Article::findFirstBy(['titre' => 'L\'artothèque'])->getContenu());
-  }
-
-
-  /** @test */
-  public function welcomeShouldHaveStartEventDate() {
-    $this->assertEquals('2014-03-21 14:38',Class_Article::findFirstBy(['titre' => 'Wiki Bokeh'])->getEventsDebut());
-  }
-
-  /** @test */
-  public function welcomeShouldHaveEndEventDate() {
-    $this->assertEquals('2014-03-21 14:38',Class_Article::findFirstBy(['titre' => 'Wiki Bokeh'])->getEventsFin());
-  }
-
-  /** @test */
-  public function architectureShouldHaveStartEventDate() {
-    $this->assertEquals('2014-12-30 11:04',Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getEventsDebut());
-  }
-
-  /** @test */
-  public function architectureShouldHaveEndEventDate() {
-    $this->assertEquals('2014-12-30 11:04',Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getEventsFin());
-  }
-
-
-  /** @test */
-  public function architectureShouldHaveDateCreation() {
-    $this->assertEquals('2014-12-30 11:04:00',
-                        Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getDateCreation());
-  }
-
-  /** @test */
-  public function architectureShouldHaveDateDebut() {
-    $this->assertEquals('2014-12-29 10:10',
-                        Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getDebut());
-  }
-
-
-  /** @test */
-  public function architectureShouldHaveDateFin() {
-    $this->assertEquals('2014-12-31 10:10',
-                        Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getFin());
-  }
-
-
-
-  /** @test */
-  public function feteScienceShouldHaveDateFin() {
-    $this->assertEquals('2014-10-09 00:00',
-                        Class_Article::findFirstBy(['titre' => 'La fete de la science'])->getEventsFin());
-  }
-
-
-  /** @test */
-  public function architectureCategoryShouldBeNosDossiersDocumentaires() {
-    $this->assertEquals('Nos dossiers documentaires',Class_Article::findFirstBy(['titre' => 'Architecture summary'])->getCategorie()->getLibelle());
-  }
-
-
-}
-
-
-
-class Import_Typo3CalendarTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-
-    $this->migration->import_user();
-    $this->migration->importCategories();
-    $this->migration->importCalendar();
-
-    $this->event_bridge = Class_Article::findFirstBy(['titre' => 'Découvrir le Bridge en 10 minutes']);
-  }
-
-
-  /** @test */
-  public function decouvrirBridgeEventShouldBeImported() {
-    $this->assertNotNull($this->event_bridge);
-  }
-
-
-  /** @test */
-  public function decouvrirBridgeEventShouldBelongToToto() {
-    $id_user = $this->event_bridge->getIdUser();
-    $this->assertEquals('toto', Class_Users::findFirstBy(['id_user' => $id_user])->getLogin());
-  }
-
-
-  /** @test */
-  public function decouvrirBridgeCreationDateShouldBe12Septembre2007() {
-    $this->assertEquals('2007-09-12 10:50:56', $this->event_bridge->getDateCreation());
-  }
-
-
-  /** @test */
-  public function decouvrirBridgeShouldHaveCategoryAtelier() {
-    $id_cat = $this->event_bridge->getIdCat();
-    $this->assertEquals('Pont', Class_ArticleCategorie::findFirstBy(['id' => $id_cat])->getLibelle());
-  }
-
-
-  /** @test */
-  public function decouvrirBridgeShouldBeInDomainsAtelierPont() {
-    $this->assertEquals(['Pont'],
-                        $this->event_bridge->getDomaineLibelles());
-  }
-
-
-  /** @test */
-  public function discoverMuseumContentShouldContainsHtml() {
-    $this->assertEquals('<p>Discover museum for free every saturday.<br />All familly are welcome.</p>', Class_Article::findFirstBy(['titre' => 'Discover Museum'])->getContenu());
-  }
-
-
-  /** @test */
-  public function discoverMuseumEventsDebutShouldBe() {
-    $this->assertEquals('2007-11-02 18:30', Class_Article::findFirstBy(['titre' => 'Discover Museum'])->getEventsDebut());
-  }
-
-
-  /** @test */
-  public function discoverSpaceContentShouldContainsExpectedTitleWithHTML() {
-    $this->assertEquals('<p>Discover Space</p>', Class_Article::findFirstBy(['titre' => 'Discover Space'])->getContenu());
-  }
-
-
-
-  /** @test */
-  public function logsShouldContainsUrlKohaNotFoundForCalendar() {
-    $this->assertContains('Class_Article id:4 , typo3 uid: 34, unknown URL: http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?kw=kw&q=r%C3%A9al.%20Jean-Fran%C3%A7ois%20Laguionie',
-                          Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-
-}
-
-
-
-class Import_Typo3SitothequeUpdateThumbnailsTest extends Import_Typo3TestCase {
-  protected $filewriter;
-  public function setUp() {
-    parent::setUp();
-
-    $this->filewriter=new MockFileWriter();
-    Class_Import_Typo3::setFileWriter($this->filewriter);
-    Class_WebService_WebSiteThumbnail::setFileWriter($this->filewriter);
-    $this->sito = Class_Sitotheque::findFirstBy(['titre' => 'MuséoParc Alésia']);
-    $this->migration->updateSitesThumbnails();
-  }
-
-  /** @test */
-  public function imageShouldBeImported() {
-    $this->assertEquals('image', $this->filewriter->getContents('picto.jpg'));
-
-  }
-
-  /** @test */
-  public function imageShouldBeFederationFrancaiseGo() {
-    $this->assertEquals('http://www.mediathequeouestprovence.fr/uploads/pics/Federation_francaise_de_Go.JPG',$this->filewriter->getImage());
-  }
-
-  /** @test */
-  public function blankShouldBeRemovedFromUrlAndShouldLowerCasesName() {
-    $this->assertContains('www_alesia_com__profil.jpg', $this->filewriter->getPath());
-
-  }
-
-
-
-}
-
-
-
-class Import_Typo3SitothequeUpdateTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-
-    $this->migration->updateSites(888);
-  }
-
-  /** @test */
-  public function sylvissimaShouldBePresent() {
-    $this->assertNotNull(Class_SitoTheque::findFirstBy(['titre' => 'Sylvissima']));
-  }
-}
-
-
-
-class Import_Typo3SitothequeTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->fixture('Class_Exemplaire',
-                   ['id' => 3,
-                    'id_origine' => 268360,
-                    'notice' => $this->fixture('Class_Notice',
-                                               ['id' => 5,
-                                                'clef_alpha' => 'OUEST_CANADIEN'])]);
-
-
-    $this->migration->importCategories();
-    $this->migration->importArticlesPages();
-    $this->migration->importSites();
-
-    $this->sito = Class_Sitotheque::findFirstBy(['titre' => 'MuséoParc Alésia']);
-  }
-
-
-  /** @test */
-  public function MuseoParcAlesiaShouldBeImported() {
-    $this->assertNotNull($this->sito);
-  }
-
-
-  /** @test */
-  public function MuseoParcAlesiaShouldHaveCategoryMyCategory() {
-    $id_cat = $this->sito->getIdCat();
-    $this->assertEquals('2014',
-                        Class_SitothequeCategorie::findFirstBy(['id' => $id_cat])->getLibelle());
-  }
-
-
-  /** @test */
-  public function museoParcShouldBeInDomainAutres() {
-    $this->assertEquals(['Divers', 'Autres', 'NOS TOPS 5'],
-                        $this->sito->getDomaineLibelles());
-  }
-
-
-  /** @test */
-  public function museoParcAlesiaShouldBeInNosTops5_Art_Autres_2014() {
-    $this->assertEquals('/NOS TOPS 5/Autres/2014',
-                        $this->sito->getCategorie()->getPath());
-  }
-
-  /** @test */
-  public function ouestCanadienShouldContainsUrlBokehSearch() {
-    $this->assertEquals('/miop-test.net/recherche/viewnotice/clef/OUEST_CANADIEN', Class_Sitotheque::findFirstBy(['titre' => 'L\'ouest canadien'])->getUrl());
-
-  }
-
-  /** @test */
-  public function ouestCanadienShouldStoreUidTypo3() {
-    $this->assertEquals(14479, Class_Sitotheque::findFirstBy(['titre' => 'L\'ouest canadien'])->getCustomField('uid_typo3'));
-
-  }
-
-}
-
-class Import_Typo3UpdateArticleTest extends Import_Typo3TestCase {
-  protected $article_voix;
-  public function setUp() {
-    parent::setUp();
-    $this->migration->importCategories();
-    $this->migration->importArticles();
-
-    $this->migration->importArticlesPages();
-    Class_Article::setTimeSource(new TimeSourceForTest('2015-02-03 10:00:00'));
-
-    $this->article_voix = Class_Article::findFirstBy(['titre' => 'A haute voix... le roman se fait entendre...']);
-    $this->migration->importCategories(888);
-
-    Class_CustomField_Value::clearCache();
-    Class_ArticleCategorie::clearCache();
-
-    $this->migration->setTypo3DB(new MockTypo3DBForUpdate());
-
-    $this->migration->updateArticlePages(888);
-    $this->migration->updateArticles(888);
-  }
-
-  public function expectedUpdateArticle() {
-    $db = new MockTypo3DB();
-    $articles = $db->findAllArticles();
-    return [
-            [
-             'title' => 'Tous à bord du bateau pirate',
-              ['titre' =>'Tous à bord du bateau pirate',
-               'description' => '<img src="http://www.mediathequeouestprovence.fr/uploads/pics/bateau.jpg" alt=""/><p>'.$articles[0]['short'].'</p>',
-               'debut' => '2014-11-04 15:23',
-               'fin' => '2015-02-03 15:23',
-               'avis' => false,
-               'tags' => 'pirate;bateau',
-               'events_debut' => null,
-               'events_fin' => null,
-               'indexation' => 1,
-               'cacher_titre' => 0,
-               'date_maj' => '1974-06-24 04:44:21',
-               'date_creation' => '1974-06-24 04:44:21',
-               'status' => 3,
-               'id_lieu' => 0,
-               'domaine_ids' => '5;7;6',
-               'id_origine' => 0,
-               'all_day' => false,
-               'langue' => 'fr',
-               'id' => 1,
-               'id_user' => 0,
-               'id_article' => 1
-              ]],
-
-            ['title' => 'A bord du bateau pirate',
-              []], //updated
-
-            ['title' => 'Wiki Bokeh',
-             ['contenu' => '<p>MODIFIEDWelcome to <a href="http://wiki.bokeh-library-portal.org">Wiki Bokeh</a></p>']], //updated
-
-            ['title' => 'Architecture', //deleted
-             []],
-
-            ['title' => 'Internet & Wi-Fi',
-             ['contenu' => "<ul><li>Internet est consultable dans tous les pôles thématiques du réseau : <a href=\"typo3/fileadmin/fichiers/fichiers_joints/reglement_interieur/REGLEMENT-INTERIEUR-2013-annexe3.pdf\">voir la charte d'utilisation.<br /><br /></a></li></ul>"]],
-            ['title' => 'A haute voix... le roman se fait entendre...',
-             [
-             ]],
-            ['title' => 'A haute voix... modif',
-             ['contenu' =>'<p>Modification de contenu</p>',
-             ]],
-            ['title' => 'Crash Test',
-             ['description' => '<p>Crash</p>'
-             ]]
-
-
-
-    ];
-  }
-
-  /**
-   * @dataProvider expectedUpdateArticle
-   * @test
-   */
-  public function updateArticleShouldBeUpdated($title,$article) {
-    $article_class_found=Class_Article::findFirstBy(['titre' => $title]);
-    if (empty($article))
-      return $this->assertNull($article_class_found);
-
-    $article_found=$article_class_found->attributesToArray();
-    foreach ($article  as $key => $value) {
-      $this->assertEquals($value,$article_found[$key]);
-    }
-
-  }
-
-  /** @test */
-  public function categoryForBateauPirateShouldBeJeux() {
-    $article=Class_Article::findFirstBy(['titre' => 'Tous à bord du bateau pirate']);
-    $this->assertEquals(Class_ArticleCategorie::findFirstBy(['libelle' => 'Jeux'])->getId(),$article->getCategorie()->getId());
-  }
-
-  /** @test */
-  public function parentCategoryForJeuxShouldBeArt() {
-    Class_ArticleCategorie::clearCache();
-    $this->assertEquals("Art",Class_ArticleCategorie::findFirstBy(['libelle' => 'Jeux'])->getParent()->getLibelle());
-  }
-
-  /** @test */
-  public function categoryDiversShouldBeRenamedDhiver() {
-    $this->assertEquals("d'hiver",Class_ArticleCategorie::findFirstByCustomFieldValue(Class_Import_Typo3::UID_TYPO3_CF,81)->getLibelle());
-
-  }
-
-  /** @test */
-  public function updateCategoriesShouldAddSitoCategoryJeux() {
-    $this->assertNotNull(Class_SitothequeCategorie::findFirstBy(['libelle' => 'Jeux']));
-  }
-
-  /** @test */
-  public function updateCategoriesShouldAddNewEventCategory() {
-    $this->assertNotNull(Class_ArticleCategorie::findFirstBy(['libelle' => 'New Event Category']));
-  }
-
-  /** @test */
-  public function articleShouldBeModified() {
-    $this->assertEquals(14474, Class_Article::findFirstBy(['titre' => 'Tous à bord du bateau pirate'])->getCustomField('uid_typo3'));
-  }
-
-  /** @test */
-  public function AhauteVoixShouldKeepSameArticleId() {
-    $article=Class_Article::findFirstBy(['titre' => 'A haute voix... modif']);
-    $this->assertEquals(13973,$article->getCustomField('uid_typo3'));
-    $this->assertEquals($article->getId(), $this->article_voix->getId());
-  }
-
-  /** @test */
-  public function articleReallyYouCrashShouldNotBeModified() {
-    $this->assertEquals(84888,Class_Article::findFirstBy(['titre' => 'Realy ? you crash ?'])->getCustomField('uid_typo3'));
-    $this->assertEquals(666,Class_Article::findFirstBy(['titre' => 'Crash Test'])->getCustomField('uid_typo3'));
-  }
-
-
-  /** @test */
-  public function categoryForSouquezLesArtimusesShouldBeActionCulturelle() {
-    $article=Class_Article::findFirstBy(['titre' => 'souquez les artimuses']);
-    $this->assertEquals('Action Culturelle', $article->getCategorie()->getLibelle());
-  }
-}
-
-
-class Import_Typo3CustomFieldTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->migration->importCategories();
-    $this->migration->importArticles();
-
-    $this->migration->importArticlesPages();
-    Class_CustomField_Value::clearCache();
-    $this->migration->updateCategoriesForDossiersDocumentaires();
-
-
-  }
-  /** @test */
-  public function museoShouldHaveCustomField() {
-    Class_CustomField_Value::clearCache();
-    $article=Class_Article::findFirstBy(['titre' => 'A haute voix... le roman se fait entendre...']);
-    $this->custom_field_values = Class_CustomField_Value::findAllByInstance($article);
-    $this->assertEquals(13973,$this->custom_field_values[0]->getValue());
-  }
-
-
-  /** @test */
-  public function customfieldShouldbeUnique() {
-    $custom_fields=Class_CustomField::findAllBy(['meta_id' => 1,
-                                                 'model' => 'Article']);
-    foreach ($custom_fields as $custom_field) {
-      $value = Class_CustomField_Value::findFirstBy(['custom_field_id' => $custom_field->getId(),
-                                                     'value' => 13973]);
-    }
-
-  }
-
-  /** @test */
-  public function updateCategoriesShouldUpdateCategorie() {
-    Class_CustomField_Value::clearCache();
-    $article=Class_Article::findFirstBy(['titre' => 'A haute voix... le roman se fait entendre...']);
-    $this->assertEquals('BLOGS AND SITES',$article->getCategorie()->getLibelle());
-  }
-
-
-  /** @test */
-  public function updateCategorieShouldUpdateParentCategorie() {
-    Class_CustomField_Value::clearCache();
-    $article=Class_Article::findFirstBy(['titre' => 'A haute voix... le roman se fait entendre...']);
-    $this->assertEquals('Nos dossiers documentaires',$article->getCategorie()->getParent()->getLibelle());
-  }
-}
-
-
-class Import_Typo3ContentTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->migration->importCategories();
-    $this->migration->importArticlesPages();
-  }
-
-
-  /** @test */
-  public function aAhuteVoixShouldBeImported() {
-    $this->assertNotNull(Class_Article::findFirstBy(['titre' => 'A haute voix... le roman se fait entendre...']));
-  }
-
-
-  /** @test */
-  public function aAhuteVoixShouldHaveCategoryPagesFixes() {
-    $id_cat = Class_Article::findFirstBy(['titre' => 'A haute voix... le roman se fait entendre...'])->getIdCat();
-    $this->assertEquals('Pages fixes', Class_ArticleCategorie::findFirstBy(['id' => $id_cat])->getLibelle());
-  }
-}
-
-
-
-class Import_Typo3LogsTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->migration->run();
-  }
-
-
-  /** @test */
-  public function logsShouldReturn4UsersFound() {
-    $this->assertContains('User(s) found: 4', Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsUrlKohaNotFoundForArticle23() {
-    $this->assertContains('Class_Article id:1 , typo3 uid: 13973, unknown URL: http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-shelves.pl?viewshelf=1556&sortfield=title%20%3Ccid:part1.08080603.08080008@ouestprovence.fr',
-                          Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsUrlKohaNotFoundForArticle9() {
-    $this->assertContains('Class_Article id:9 , typo3 uid: 139735, unknown URL: http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-search.pl?q=test&idx=kw&idx=kw&idx=kw',
-                          Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-
-  /** @test */
-  public function logsShouldContainsUrlKohaNotFoundForSito() {
-    $this->assertContains('Class_Sitotheque id:3 , typo3 uid: 144333, unknown URL: http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?foo=bar',
-                          Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function lgosShouldReturn3UsersAdded() {
-    $this->assertContains('User(s) added: 3', Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldReturn0UserUpdated() {
-    $this->assertContains('User(s) updated: 0', Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldReturn1UserRejected() {
-    $this->assertContains('User(s) rejected: 1', Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldReturnAnErrorForSavingTom() {
-    $this->assertContains("user with uid 123456789, ( Tom ) can't be saved:", Class_Import_Typo3_Logs::getInstance()->getErrors());
-  }
-
-
-  /** @test */
-  public function reportShouldContainsLogs() {
-    $this->assertContains('User(s) rejected: 1', Class_Import_Typo3_Logs::getInstance()->report());
-  }
-
-
-  /** @test */
-  public function reportShouldContainsErrors() {
-    $this->assertContains("user with uid 123456789, ( Tom ) can't be saved:", Class_Import_Typo3_Logs::getInstance()->report());
-  }
-
-
-  /** @test */
-  public function logsShouldContains8T3Categories() {
-    $this->assertContains("Typo3 categories found: 10", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsSavedSitoCategories() {
-    $this->assertContains("Typo3 Sito categories saved: 9", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsSavedArticleCategories() {
-    $this->assertContains("Typo3 Article categories saved: 12",
-                          Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsRejected1SitoCategory() {
-    $this->assertContains("Typo3 Sito categories rejected: 1", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContains1RejectedArticleCategory() {
-    $this->assertContains("Typo3 Article categories rejected: 1", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsSavedDomains() {
-    $this->assertContains("Typo3 Domains saved: 13", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContains9SavedArticles() {
-    $this->assertContains("Typo3 Articles saved: 9", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsRejectedArticles() {
-    $this->assertContains("Typo3 Articles rejected: 1", Class_Import_Typo3_Logs::getInstance()->getLogs());
-  }
-
-
-  /** @test */
-  public function logsShouldContainsErrorForSavingArticle() {
-    $this->assertContains('Article 14888  can not be saved', Class_Import_Typo3_Logs::getInstance()->getErrors());
-  }
-}
-
-
-
-class Import_Typo3AdvicesWithoutThemeCategoryTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->migration->importAdvices();
-    $this->logs = Class_Import_Typo3_Logs::getInstance();
-  }
-
-
-  /** @test */
-  public function logShouldContainsError() {
-    $this->assertContains('Catégorie "THÈME" non trouvée', $this->logs->getErrors());
-  }
-}
-
-
-
-class Import_Typo3AdvicesTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-    $user = $this->fixture('Class_Users',
-                           ['id' => 20,
-                            'login' => 'test_user',
-                            'password' => 'test_pass']);
-    $user->beAdminPortail()->save();
-
-    $this->fixture('Class_ArticleCategorie',
-                   ['id' => 21, 'libelle' => 'THÈME']);
-    $this->fixture('Class_ArticleCategorie',
-                   ['id' => 130, 'id_cat_mere'=> 21, 'libelle' => 'ACTUALITÉS, PRESSE EN LIGNE']);
-    $this->fixture('Class_ArticleCategorie',
-                   ['id' => 70, 'id_cat_mere'=> 130, 'libelle' => 'Société']);
-
-    $this->fixture('Class_Article',
-                   ['id' => 1787,
-                    'ID_CAT' => 70,
-                    'PARENT_ID' => 0,
-                    'ID_NOTICE' => 2233042,
-                    'ID_LIEU' => 0,
-                    'titre' => 'E. MERCIER / Je suis complètement battue [Livre]',
-                    'DESCRIPTION' => '<img src="http://www.mediathequeouestprovence.fr/uploads/pics/Je_suis_completement_battue.jpg" alt=""/><p>Liste hallucinante de ces premières phrases d\'entretiens que l\'on imagine être arrivées, hélas toujours après le pire. Le livre d\'Eléonore Mercier est bouleversant, inouï. Chacune des phrases ouvre un destin, esquisse en quelques mots une situation, une douleur, une biographie. À cet égard, la forme qu\'a trouvée l\'auteur pour aborder ce sujet difficile est éminemment parlante. </p>',
-                    'CONTENU' => '<img src="http://www.mediathequeouestprovence.fr/uploads/pics/Je_suis_completement_battue.jpg" alt=""/><span style="font-weight: bold;">Titre :</span>&nbsp; Je suis complètement battue<br /><span style="font-weight: bold;">Auteur :</span> Eléonore MERCIER<br /><span style="font-weight: bold;">Éditeur :</span> P.O.L<br /><span style="font-weight: bold;">Date d’édition&nbsp;:</span> 2010 <br /><span style="font-weight: bold;">Support&nbsp;:</span> Livre<br /><span style="font-weight: bold;">Public concerné :</span> ados, adultes<br /><a href="/miop-test.net/recherche/viewnotice/clef/JESUISCOMPLETEMENTBATTUE--MERCIERE--POL-2010-1"><span style="font-weight: bold;">Lien direct au catalogue</span></a><br /><span style="font-weight: bold;">La synthèse</span>&nbsp; <br />«&nbsp;Cela fait des années que je note les toutes premières phrases entendues lors de mes entretiens avec les femmes en situation de violence conjugale. J\'ai découvert combien elles contenaient à elles seules des vies tout entières. Je vous en livre ici 1653. J\'aurais pu en retranscrire moins, ou plus... je ne sais pas&nbsp;»<br />(<span style="font-style: italic;">Extrait du 4ème de couverture, éditions POL</span>)<br /><br /><span style="font-weight: bold;">Notre avis </span><br />Liste hallucinante de ces premières phrases d\'entretiens que l\'on imagine être arrivées, hélas toujours après le pire. Le livre d\'Eléonore Mercier est bouleversant, inouï. Chacune des phrases ouvre un destin, esquisse en quelques mots une situation, une douleur, une biographie. À cet égard, la forme qu\'a trouvée l\'auteur pour aborder ce sujet difficile est éminemment parlante. Phrase après phrase, un récit se construit, celui de la «raison» interne de la violence conjugale, où apparaissent les protagonistes et les postures innombrables qui en expliquent la complexité.&nbsp; Pour autant, ce ne sont pas seulement les clichés de la violence domestique qui sont appelés à comparaître ; c\'est aussi tout le maillage des soutiens discrets, aimants, compassionnels tissés autour des victimes, lorsqu\'une mère, un frère, une amie, viennent témoigner pour elles et prendre acte de l\'irréparable qui a été commis. Un texte puissant aux confins de la réalité et de la poèsie.<br /><br /><span style="font-weight: bold;">A propos de l\'auteur et/ou du sujet : </span><br /><ul><li><a href="http://la-marche-aux-pages.blogspot.com/2010/06/les-plates-coutures-deleonore-mercier.html">Une critique fouillée sur le blog La Marche aux pages</a></li><li><a href="http://www.elle.fr/elle/Societe/La-parole-aux-femmes/Rendez-vous-avec/Eleonore-Mercier-C-est-important-que-les-gens-prennent-conscience-que-la-violence-conjugale-est-une-realite/(gid)/1171965">Un entretien sur Elle.fr </a></li></ul><br /><br /><span style="font-weight: bold;">Si vous avez aimé, vous aimerez aussi :</span><br /><ul><li><a href="/miop-test.net/recherche/viewnotice/clef/CHRONIQUESDELAVIOLENCEORDINAIRE--NICKC--FRANCETELEVISIONSDISTRIBUTIONEDDISTRIB-2005-18">Chroniques de la violence ordinaire</a></li><li><a href="/miop-test.net/recherche/viewnotice/clef/LAVIOLENCE-ESSAISURLHOMOVIOLEN-DADOUNR--HATIER-1993-1">La violence</a></li><li><a href="http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=23365">Les mots sont des fenêtres (ou bien ils sont des murs)</a></li></ul>',
-                    'DEBUT' => '2011-03-09',
-                    'FIN' => null,
-                    'AVIS' => 0,
-                    'TAGS' => 'Femmes;Violence',
-                    'DATE_CREATION' => '2011-03-01 15:53:25',
-                    'DATE_MAJ' => '2015-02-12 11:03:24',
-                    'INDEXATION' => 1,
-                    'STATUS' => 3,
-                    'DOMAINE_IDS' => '1;2;74',
-                    'ID_USER' => 20]);
-
-    $this->migration->importAdvices();
-    $this->logs = Class_Import_Typo3_Logs::getInstance();
-    $this->advice = Class_AvisNotice::findFirstBy([]);
-  }
-
-
-  /** @test */
-  public function adviceShouldBeCreated() {
-    $this->assertNotNull($this->advice);
-  }
-
-
-  /** @test */
-  public function userShouldBeTestUser() {
-    $this->assertEquals(Class_Users::find(20), $this->advice->getUser());
-  }
-
-
-  /** @test */
-  public function workKeyShouldBeAsExpected() {
-    $this->assertEquals('JESUISCOMPLETEMENTBATTUE--MERCIERE-',
-                        $this->advice->getClefOeuvre());
-  }
-
-
-  /** @test */
-  public function noteShouldBe5() {
-    $this->assertEquals(5, $this->advice->getNote());
-  }
-
-
-  /** @test */
-  public function adviceShouldContainsArticleContent() {
-    $this->assertContains('Liste hallucinante de ces premières phrases',
-                          $this->advice->getAvis());
-  }
-
-
-  /** @test */
-  public function headerShouldContainsArticleDescription() {
-    $this->assertContains('Liste hallucinante de ces premières phrases',
-                          $this->advice->getEntete());
-  }
-
-
-  /** @test */
-  public function statusShouldBeValidated() {
-    $this->assertEquals(1, $this->advice->getStatut());
-  }
-
-
-  /** @test */
-  public function dateShouldBeArticleUpdateDate() {
-    $this->assertEquals('2011-03-01 15:53:25', $this->advice->getDateAvis());
-  }
-
-
-  /** @test */
-  public function shouldBeBibliothecaire() {
-    $this->assertEquals(1, $this->advice->getAbonOuBib());
-  }
-
-
-  /** @test */
-  public function userKeyShouldBeTestUser() {
-    $this->assertEquals('--0--test_user', $this->advice->getUserKey());
-  }
-}
-
-
-
-
-class Import_Typo3PostProcessTest extends Import_Typo3TestCase {
-  public function setUp() {
-    parent::setUp();
-
-    $this->fixture('Class_Article',
-                   ['id' => 123456789,
-                    'titre' => 'Mon super titre',
-                    'contenu' => 'Mon super contenu'])
-         ->setCustomField('uid_typo3', '3455')
-         ->saveWithCustomFields();
-
-    $this->fixture('Class_Article',
-                   ['id' => 888,
-                    'titre' => 'Mon super titre 2',
-                    'contenu' => 'Mon super contenu 2'])
-         ->setCustomField('uid_typo3', '4897')
-         ->saveWithCustomFields();
-
-    $this->fixture('Class_Article',
-                   ['id' => 555,
-                    'titre' => 'Mon super event',
-                    'contenu' => 'Mon super contenu'])
-         ->setCustomField('uid_typo3', '8938')
-         ->saveWithCustomFields();
-
-    $this->fixture('Class_Article',
-                   ['id' => 999,
-                    'titre' => 'Mon super titre 3',
-                    'contenu' => 'Mon super contenu 3'])
-         ->setCustomField('uid_typo3', '777')
-         ->saveWithCustomFields();
-
-    $this->fixture('Class_Sitotheque',
-                   ['id' => 1004,
-                    'titre' => 'Testing sito',
-                    'date_maj' => '2015-11-18 10:47:37',
-                    'url' => 'http://my.server.com',
-                    'tags' => '',
-                    'description' => 'My super duper hyper cooler desc'])
-         ->setCustomField('uid_typo3', '8883')
-         ->saveWithCustomFields();
-
-    $this->fixture('Class_Sitotheque',
-                   ['id' => 1005,
-                    'titre' => 'Testing sito not removable',
-                    'date_maj' => '2015-11-18 10:12:37',
-                    'url' => 'http://your.server.com',
-                    'tags' => '',
-                    'description' => 'My desc'])
-         ->setCustomField('uid_typo3', '8882')
-         ->saveWithCustomFields();
-
-    $this->migration
-      ->setTypo3DB($this->mock()
-                   ->whenCalled('findRemovableArticles')->answers([['uid' => '3455'],
-                                                                   ['uid' => '8883']])
-                   ->whenCalled('findRemovableContents')->answers([ ['uid' => '4897'] ])
-                   ->whenCalled('findRemovableEvents')->answers([ ['uid' => '8938'] ]))
-      ->postProcess();
-  }
-
-
-  /** @test */
-  public function shouldDeleteNews() {
-    $this->assertNull(Class_Article::find(123456789));
-  }
-
-
-  /** @test */
-  public function customFieldsShouldBeDeleted() {
-    $this->assertNull(Class_CustomField_Value::findFirstBy(['value' => '3455']));
-  }
-
-
-  /** @test */
-  public function shouldDeletePages() {
-    $this->assertNull(Class_Article::find(888));
-  }
-
-
-  /** @test */
-  public function shouldDeleteEvents() {
-    $this->assertNull(Class_Article::find(555));
-  }
-
-
-  /** @test */
-  public function shouldNotDeleteAllArticles() {
-    $this->assertNotNull(Class_Article::find(999));
-  }
-
-
-  /** @test */
-  public function shouldDeleteSito() {
-    $this->assertNull(Class_Sitotheque::find(1004));
-  }
-
-
-  /** @test */
-  public function shouldNotDeleteAllSitos() {
-    $this->assertNotNull(Class_Sitotheque::find(1005));
-  }
-}
\ No newline at end of file