From d7a7ca69c5709fa80a2f60578d7431cbf50f2255 Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@afi-sa.fr>
Date: Fri, 28 Aug 2015 16:37:29 +0200
Subject: [PATCH] When cosmogramme index albums, does not delete records if
 only update is needed

---
 .../php/integration/pseudo_notices.php        | 84 ++++++++-----------
 1 file changed, 37 insertions(+), 47 deletions(-)

diff --git a/cosmogramme/php/integration/pseudo_notices.php b/cosmogramme/php/integration/pseudo_notices.php
index e5374f45006..ff84745ea0e 100644
--- a/cosmogramme/php/integration/pseudo_notices.php
+++ b/cosmogramme/php/integration/pseudo_notices.php
@@ -209,61 +209,51 @@ if ($phase == 0.5)
 // ----------------------------------------------------------------
 
 
-if ($phase < 0.7)
-{
-	// init variables
-	if ($phase == 0.6)
-	{
-		unset($phase_data);
-		$phase_data["nombre"] = 0;
-		$phase_data["timeStart"] = time();
-		$phase_data["pointeur_reprise"] = 0;
-		setVariable("traitement_phase", "Pseudo-notices : RESSOURCES NUMERIQUES :");
-		$log->ecrire('<span class="violet">Notices RESSOURCES NUMERIQUES :</span>' . BR);
-	}
-	else print('<span class="violet">Notices RESSOURCES NUMERIQUES : suppressions</span>' . BR);
+if ($phase < 0.7) {
+  unset($phase_data);
+  $phase_data["nombre"] = 0;
+  $phase_data["timeStart"] = time();
+  $phase_data["pointeur_reprise"] = 0;
+  setVariable("traitement_phase", "Pseudo-notices : RESSOURCES NUMERIQUES :");
+  $log->ecrire('<span class="violet">Notices RESSOURCES NUMERIQUES :</span>' . BR);
 
-	// suppression des notices et des exemplaires
-	$phase = 0.61;
-	$items = fetchAll("select id_notice from notices where type_doc>99");
-	if ($items)
-	{
-		foreach ($items as $item)
-		{
-			if (!$mode_cron and $chrono->tempsPasse() > 10) sauveContexte();
-			$id_notice = $item["id_notice"];
-			deletePseudoNotice($id_notice);
-		}
-	}
-	$phase = 0.7;
+  $phase = 0.7;
 }
 
-if ($phase == 0.7)
-{
+
+if ($phase == 0.7) {
 	if ($phase_data["nombre"] and !$mode_cron)
-		print('<span class="violet">Notices RESSOURCES NUMERIQUES : ajouts</span>' . BR);
+		print('<span class="violet">Notices RESSOURCES NUMERIQUES : mise à jour</span>' . BR);
+
 	if (!$mode_cron and $chrono->tempsPasse() > 10)
 		sauveContexte();
+
 	$chrono->start();
-	$result = $sql->prepareListe("select * from album where id >" . $phase_data["pointeur_reprise"] . " and visible=true order by id");
-	if ($result)
-	{
-		while ($enreg = $sql->fetchNext($result))
-		{
-			if (!$mode_cron and $chrono->tempsPasse() > 10) sauveContexte();
-			$enreg["id_bib"] = $sql->fetchOne("select site_id from album_categorie where id=" . $enreg["cat_id"]);
-			$phase_data["nombre"]++;
-			if(!$enreg["type_doc_id"]) $enreg["type_doc_id"]=100;
-			$ret = $notice->traitePseudoNotice($enreg["type_doc_id"], $enreg);
-			tracePseudoNotice($ret, $enreg);
-			$phase_data["pointeur_reprise"] = $enreg["id"];
 
-      Class_Album::clearCache();
-      Class_AlbumRessource::clearCache();
-      Class_Notice::clearCache();
-      Class_Exemplaire::clearCache();
-		}
-	}
+  while ( $albums = Class_Album::findAllBy(['where' => 'id > ' . $phase_data["pointeur_reprise"],
+                                            'visible' => true,
+                                            'order' => 'id',
+                                            'limit' => 100]) ) {
+    foreach($albums as $album) {
+      if (!$mode_cron and $chrono->tempsPasse() > 10) sauveContexte();
+
+      $phase_data["nombre"]++;
+
+      $album->index();
+      $notice = $album->getNotice();
+      $statut = $notice
+        ? ['statut' => 0, 'id_notice' => 0]
+        : ['statut' => 1,
+           'id_notice' => $notice->getId(),
+           'unimarc' => $notice->getUnimarc(),
+           'code_barres' => $notice->getCodeBarres(),
+           'facettes' => $notice->getFacettes()];
+
+    tracePseudoNotice($ret, $statut);
+    $phase_data["pointeur_reprise"] = $album->getId();
+    }
+  }
+
 	traceRecapPseudoNotices($phase_data);
 	$phase = 1;
 }
-- 
GitLab