From 79b5cab8f9bdfb25acd6985fd1bd9ae211591ce0 Mon Sep 17 00:00:00 2001 From: Ghislain Loas <ghislo@sandbox.pergame.net> Date: Wed, 2 Sep 2015 17:21:47 +0200 Subject: [PATCH] #26993 refacto --- .../php/classes/classe_notice_integration.php | 93 ++++++++++--------- 1 file changed, 51 insertions(+), 42 deletions(-) diff --git a/cosmogramme/php/classes/classe_notice_integration.php b/cosmogramme/php/classes/classe_notice_integration.php index 2eab845fcc8..50630811d48 100644 --- a/cosmogramme/php/classes/classe_notice_integration.php +++ b/cosmogramme/php/classes/classe_notice_integration.php @@ -27,10 +27,16 @@ require_once("classe_codif_langue.php"); require_once("classe_profil_donnees.php"); class notice_integration { - const RECORD_RENEW = 5; - const RECORD_UPDATE = 4; - - const STATUS_NOTFOUND = 'non trouvée'; + const + RECORD_REJECT = 0, + RECORD_INSERT = 1, + RECORD_DELETE = 2, + RECORD_FULLUPDATE = 3, + RECORD_UPDATE = 4, + RECORD_RENEW = 5, + RECORD_UPGRADE = 6, + RECORD_SUCCINCT = 7, + STATUS_NOTFOUND = 'non trouvée'; private $id_profil; // Id du profil de données initialisé private $format; // Format de fichier 0=unimarc @@ -45,7 +51,16 @@ class notice_integration { private $qualite_bib; // Code qualite de la bib private $sigb; // Sigb de la bib private $statut; // Statut de la notice traitee - public $libStatut=array("Rejetées","Créée","Supprimée","Mise à jour notice et exemplaires","Mise à jour exemplaires","Remplacées","Homogénéisées","Mises en notices succintes"); + + public $libStatut = [self::RECORD_REJECT => "Rejetées", + self::RECORD_INSERT => "Créée", + self::RECORD_DELETE => "Supprimée", + self::RECORD_FULLUPDATE => "Mise à jour notice et exemplaires", + self::RECORD_UPDATE => "Mise à jour exemplaires", + self::RECORD_RENEW => "Remplacées", + self::RECORD_UPGRADE => "Homogénéisées", + self::RECORD_SUCCINCT =>"Mises en notices succintes"]; + private $erreur; // Message d'erreur notice traitee private $filtrer_fulltext; // Vient de la variable filtrer_fulltext. private $identification; // Mode d'identification de la notice @@ -922,52 +937,34 @@ class notice_integration { // -------------------------------------------------------------------------------- // Ecrit une notice : article de périodique // -------------------------------------------------------------------------------- - private function ecrireArticlePeriodique() - { + private function ecrireArticlePeriodique() { global $sql; - // identifiants - $clef_chapeau=$this->notice["clef_chapeau"]; - $clef_numero=$this->notice["clef_numero"]; - $clef_article=$this->notice["clef_article"]; - $clef_unimarc=$this->notice["clef_unimarc"]; + if( 1 == $this->notice["statut"]) + return $this->deleteRecordArticles(); - // suppression - if($this->notice["statut"]==1) - { - $this->statut=2; - if($clef_unimarc) - $controle=$sql->execute("delete from notices_articles where clef_unimarc='$clef_unimarc'"); - else - $controle=$sql->execute("delete from notices_articles where clef_chapeau='$clef_chapeau' and clef_numero='$clef_numero' and clef_article='$clef_article'" ); - if(!$controle) - { - $this->statut=0; - $this->erreur="notice à supprimer non reconnue"; - } - return; - } + $clef_chapeau = $this->notice["clef_chapeau"]; + $clef_numero = $this->notice["clef_numero"]; + $clef_article = $this->notice["clef_article"]; + $clef_unimarc = $this->notice["clef_unimarc"]; $titre_principal = $this->notice['titre_princ']; $clef_titre = hash('crc32b', $titre_principal); - // constitution enregistrement - $enreg["clef_chapeau"]=$clef_chapeau; - $enreg["clef_numero"]=$clef_numero; + $enreg["clef_chapeau"] = $clef_chapeau; + $enreg["clef_numero"] = $clef_numero; $enreg["clef_unimarc"] = $clef_unimarc ? $clef_unimarc : $clef_titre; - $enreg["unimarc"]=$this->notice["unimarc"]; - $enreg["date_maj"]=dateDuJour(0); - $enreg["qualite"]=$this->qualite_bib; + $enreg["unimarc"] = $this->notice["unimarc"]; + $enreg["date_maj"] = dateDuJour(0); + $enreg["qualite"] = $this->qualite_bib; $enreg["clef_article"] = $clef_article; - // cherche la notice if($clef_unimarc) { if ($article = Class_Notice_SerialArticles::findFirstBy(['clef_unimarc' => $clef_unimarc])) { $enreg["clef_chapeau"] = $article->getClefChapeau(); $enreg["clef_numero"] = $article->getClefNumero(); } - } - else { + } else { if(!$article = Class_Notice_SerialArticles::findFirstBy(['clef_chapeau' => $clef_chapeau, 'clef_numero' => $clef_numero, 'clef_unimarc' => $clef_titre])) @@ -977,23 +974,35 @@ class notice_integration { 'clef_unimarc' => '']); } - // ecrire - if($article) - { + if($article) { // remplacer si qualite superieure ou egale if($enreg["qualite"] >= $article->getQualite()) { $article->updateAttributes($enreg)->save(); $this->statut=5; } - } - else - { + } else { Class_Notice_SerialArticles::newInstance($enreg)->save(); Class_Notice_SerialArticles::clearCache(); $this->statut=1; } } + + protected function deleteRecordArticles() { + $this->statut = self::RECORD_DELETE; + + if($this->notice["clef_unimarc"]) + $controle = $sql->execute("delete from notices_articles where clef_unimarc='$clef_unimarc'"); + else + $controle = $sql->execute("delete from notices_articles where clef_chapeau='$clef_chapeau' and clef_numero='$clef_numero' and clef_article='$clef_article'" ); + + if(!$controle) { + $this->statut = 0; + $this->erreur = "notice à supprimer non reconnue"; + } + } + + // -------------------------------------------------------------------------------- // Recupere titre, auteurs, matieres pour 1 article de périodique // -------------------------------------------------------------------------------- -- GitLab