Subversion Repositories Applications.referentiel

Rev

Rev 219 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 219 Rev 225
Line 17... Line 17...
17
// +-------------------------------------------------------------------------------------------------------------------+
17
// +-------------------------------------------------------------------------------------------------------------------+
18
// TODO : lors de la génération de la version 2 de la BDTFX tester les diff! Il se peut que la mémoire soit dépassée.
18
// TODO : lors de la génération de la version 2 de la BDTFX tester les diff! Il se peut que la mémoire soit dépassée.
19
class Versionnage extends ScriptCommande {
19
class Versionnage extends ScriptCommande {
Line 20... Line 20...
20
	
20
	
21
	const SCRIPT_NOM = 'versionnage';
21
	const SCRIPT_NOM = 'versionnage';
Line 22... Line 22...
22
	const MANUEL_VERSION = '4.2';
22
	const MANUEL_VERSION = '4.3';
23
	
23
	
24
	private $projet = null;
24
	private $projet = null;
25
	private $traitement = null;
25
	private $traitement = null;
Line 448... Line 448...
448
		
448
		
449
		$this->verifierNomsSupprimes();
449
		$this->verifierNomsSupprimes();
450
		$this->champs_courants = $this->champs_nom; 
450
		$this->champs_courants = $this->champs_nom; 
451
		$diff = array();
451
		$diff = array();
452
		foreach ($this->noms as $id => $nom) {
452
		foreach ($this->noms as $id => $nom) {
453
			if ($this->noms[$id]['exclure_taxref'] == '1') {
-
 
454
				unset($this->noms[$id]);
-
 
455
			} else {
-
 
456
				foreach ($this->noms[$id] as $champ => $valeur) {
-
 
457
					if (! in_array($champ, $this->champs_nom_partiel)) {
-
 
458
						unset($this->noms[$id][$champ]);
-
 
459
					}
-
 
460
				}
-
 
461
			}
453
			$this->supprimerNomAExclurePartiel($this->noms, $id);
-
 
454
			$infos = array();
-
 
455
			if ($this->etreSupprime($id)) {
462
			$infos = array();
456
				$infos = $this->traiterDiffSuppression($nom);
463
			if (!isset($this->noms_precedents[$id])) {
457
			} else if ($this->etreAjoute($id)) {
464
				$infos = $this->traiterDiffAjout($nom);
458
				$infos = $this->traiterDiffAjout($nom);
465
			} else {
459
			} else {
466
				$nom_precedent = $this->noms_precedents[$id];
-
 
467
				if ($this->noms_precedents[$id]['exclure_taxref'] == '1') {
460
				$nom_precedent = $this->noms_precedents[$id];
468
					unset($this->noms_precedents[$id]);
-
 
469
				} else {
-
 
470
					foreach ($this->noms_precedents[$id] as $champ => $valeur) {
-
 
471
						if (! in_array($champ, $this->champs_nom_partiel)) {
-
 
472
							unset($this->noms_precedents[$id][$champ]);
-
 
473
						}
-
 
474
					}
-
 
475
				}
461
				$this->supprimerNomAExclurePartiel($this->noms_precedents, $id);
476
				array_walk($nom_precedent, create_function('&$val', '$val = trim($val);')); 
462
				$nom_precedent = $this->nettoyerEspacesTableau($nom_precedent);
477
				$infos = $this->traiterDiffModif($nom, $nom_precedent);
463
				$infos = $this->traiterDiffModif($nom, $nom_precedent);
Line 478... Line 464...
478
			}
464
			}
479
			
465
			
Line 492... Line 478...
492
		$this->noms_supprimes = array_diff_key($this->noms_precedents, $this->noms);
478
		$this->noms_supprimes = array_diff_key($this->noms_precedents, $this->noms);
493
		$e = count($this->noms_supprimes)." lignes ont été supprimées vis à vis de la version ".
479
		$e = count($this->noms_supprimes)." lignes ont été supprimées vis à vis de la version ".
494
			"précédentes pour l'édition $edition. Cela concerne les noms : ".implode(', ', array_keys($this->noms_supprimes));
480
			"précédentes pour l'édition $edition. Cela concerne les noms : ".implode(', ', array_keys($this->noms_supprimes));
495
		Debug::printr($e);
481
		Debug::printr($e);
496
		$this->ajouterMessage($e);
482
		$this->ajouterMessage($e);
497
	} 
483
	}
-
 
484
	
-
 
485
	private function supprimerNomAExclurePartiel(&$tableau, $id) {
-
 
486
		if ($tableau[$id]['exclure_taxref'] == '1') {
-
 
487
			unset($tableau[$id]);
-
 
488
		}
-
 
489
	}
-
 
490
	
-
 
491
	private function nettoyerNomAExclurePartiel($nom) {
-
 
492
		foreach ($nom as $champ => $valeur) {
-
 
493
			if (! in_array($champ, $this->champs_nom_partiel)) {
-
 
494
				unset($nom[$champ]);
-
 
495
			}
-
 
496
		}
-
 
497
		return $nom;
-
 
498
	}
-
 
499
	
-
 
500
	private function etreSupprime($id) {
-
 
501
		$supprime = false;
-
 
502
		if (array_key_exists($id, $this->noms_supprimes)) {
-
 
503
			$supprime = true;
-
 
504
		}
-
 
505
		return $supprime;
-
 
506
	}
Line 498... Line 507...
498
	
507
	
499
	private function traiterDiffSuppression(&$nom) {
508
	private function traiterDiffSuppression(&$nom) {
500
		$infos = $nom;
509
		$infos = $nom;
501
		$infos['modification_type'] = 'S';
510
		$infos['modification_type'] = 'S';
502
		$infos['modification_type_1'] = '0';
511
		$infos['modification_type_1'] = '0';
503
		$infos['modification_type_2'] = '0';
512
		$infos['modification_type_2'] = '0';
504
		$infos['modification_type_3'] = '0';
513
		$infos['modification_type_3'] = '0';
505
		return $infos;
514
		return $infos;
Line -... Line 515...
-
 
515
	}
-
 
516
	
-
 
517
	private function etreAjoute($id) {
-
 
518
		$ajoute = false;
-
 
519
		if (! array_key_exists($id, $this->noms_precedents)) {
-
 
520
			$ajoute = true;
-
 
521
		}
-
 
522
		return $ajoute;
-
 
523
	}
-
 
524
		
-
 
525
	private function nettoyerEspacesTableau($tableau) {
-
 
526
		array_walk($tableau, create_function('&$val', '$val = trim($val);'));
-
 
527
		return $tableau;
506
	}
528
	}
507
	
529
	
508
	private function traiterDiffAjout(&$nom) {
530
	private function traiterDiffAjout(&$nom) {
509
		$infos = $nom;
531
		$infos = $nom;
510
		$infos['modification_type'] = 'A';
532
		$infos['modification_type'] = 'A';
Line 591... Line 613...
591
			unset($this->noms[$id]);
613
			unset($this->noms[$id]);
Line 592... Line 614...
592
			
614
			
593
			// Ajout de champs spécifique à Taxref généré depuis les données BDNT
615
			// Ajout de champs spécifique à Taxref généré depuis les données BDNT
594
			$nom['taxref_rang'] = $this->attribuerRangTaxref($nom['rang']);
616
			$nom['taxref_rang'] = $this->attribuerRangTaxref($nom['rang']);
595
			$nom['taxref_statut'] = $this->attribuerStatutTaxref($nom);
-
 
-
 
617
			$nom['taxref_statut'] = $this->attribuerStatutTaxref($nom);
596
			
618
			$nom = $this->nettoyerNomAExclurePartiel($nom);
-
 
619
			$infos = array();
-
 
620
			if ($this->etreSupprime($id)) {
597
			$infos = array();
621
				$infos = $this->traiterDiffSuppression($nom);
598
			if (!isset($this->noms_precedents[$id])) {
622
			} elseif ($this->etreAjoute($id)) {
599
				$infos = $this->traiterDiffAjout($nom);
623
				$infos = $this->traiterDiffAjout($nom);
600
			} else {
624
			} else {
601
				$nom_precedent = $this->noms_precedents[$id];
625
				$nom_precedent = $this->noms_precedents[$id];
Line 602... Line 626...
602
				unset($this->noms_precedents[$id]);
626
				unset($this->noms_precedents[$id]);
603
				
627
				
604
				// Ajout de champs spécifique à Taxref généré depuis les données BDNT
628
				// Ajout de champs spécifique à Taxref généré depuis les données BDNT
605
				$nom_precedent['taxref_rang'] = $this->attribuerRangTaxref($nom_precedent['rang']);
-
 
-
 
629
				$nom_precedent['taxref_rang'] = $this->attribuerRangTaxref($nom_precedent['rang']);
606
				$nom_precedent['taxref_statut'] = $this->attribuerStatutTaxref($nom_precedent);
630
				$nom_precedent['taxref_statut'] = $this->attribuerStatutTaxref($nom_precedent);
607
				
631
				$nom_precedent = $this->nettoyerNomAExclurePartiel($nom_precedent);
608
				array_walk($nom_precedent, create_function('&$val', '$val = trim($val);')); 
632
				$nom_precedent = $this->nettoyerEspacesTableau($nom_precedent); 
Line 609... Line 633...
609
				$infos = $this->traiterDiffModif($nom, $nom_precedent);
633
				$infos = $this->traiterDiffModif($nom, $nom_precedent);
610
			}
634
			}