Subversion Repositories Applications.referentiel

Rev

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

Rev 225 Rev 250
Line 596... Line 596...
596
		foreach ($this->noms as &$nom) {
596
		foreach ($this->noms as &$nom) {
597
			if ($nom['rang'] > $this->manuel['rang_genre'] && $nom['rang'] < $this->manuel['rang_sp']) {
597
			if ($nom['rang'] > $this->manuel['rang_genre'] && $nom['rang'] < $this->manuel['rang_sp']) {
598
				$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
598
				$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
599
				$nom_sci_ideal = '';
599
				$nom_sci_ideal = '';
600
				if ($nom['type_epithete'] == 'agg.') {
600
				if ($nom['type_epithete'] == 'agg.') {
601
					$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
601
					$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
602
					$nom_sci_ideal .= ' '.$this->formaterStyleNomGenre($nom['epithete_infra_generique']);
602
						$this->formaterStyleNomGenre($nom['epithete_infra_generique']).' '.
603
					$nom_sci_ideal .= ' '.$nom['type_epithete'];
603
						$nom['type_epithete'];
604
				} else {
604
				} else {
605
					$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
605
					$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
606
					$nom_sci_ideal .= ' '.$nom['type_epithete'];
606
						$nom['type_epithete'].' '.
607
					$nom_sci_ideal .= ' '.$this->formaterStyleNomGenre($nom['epithete_infra_generique']);
607
						$this->formaterStyleNomGenre($nom['epithete_infra_generique']);
608
				}
608
				}
609
				$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
609
				$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
610
				if ($nom['nom_sci'] != $nom_sci_ideal) {
610
				if ($nom['nom_sci'] != $nom_sci_ideal) {
611
					$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
611
					$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
612
					$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
612
					$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
Line 619... Line 619...
619
	/**
619
	/**
620
	 * Test #21
620
	 * Test #21
621
	 */
621
	 */
622
	private function testerNomCompletEspece() {
622
	private function testerNomCompletEspece() {
623
		$noms_erreur = array();
623
		$noms_erreur = array();
-
 
624
		$erreur = '';
624
		foreach ($this->noms as &$nom) {
625
		foreach ($this->noms as &$nom) {
625
			if ($nom['rang'] == $this->manuel['rang_sp']) {
626
			if ($nom['rang'] == $this->manuel['rang_sp']) {
626
				$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
627
				$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
627
				$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
628
				$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' ';
628
				$nom_sci_ideal .= (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $nom['epithete_sp'], $match) != '' ? 
629
				if (strstr($nom['nom_sci'] , ' x ') != false) {
629
					' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.utf8_encode(strtolower(utf8_decode($match[2]))).
630
					list($nom_sci_ideal, $erreur) = $this->formaterStyleEpitheteSpHybride($nom_sci_ideal, $nom['epithete_sp']);
630
					' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))) : 
631
				} else {
631
					' '.utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))));
632
					$nom_sci_ideal .= utf8_encode(strtolower(utf8_decode($nom['epithete_sp'])));
-
 
633
				}
632
				$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
634
				$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
633
				$nom_sci_ideal = trim($nom_sci_ideal);
635
				$nom_sci_ideal = trim($nom_sci_ideal);
634
				if ($nom['nom_sci'] != $nom_sci_ideal) {
636
				if ($nom['nom_sci'] != $nom_sci_ideal) {
635
					$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
637
					$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
636
					$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
638
					$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']);
637
				}
639
				}
638
			}
640
			}
639
		}
641
		}
640
		return $noms_erreur;
642
		return $noms_erreur;
641
	}
643
	}
Line 645... Line 647...
645
	 */
647
	 */
646
	private function testerNomCompletInfraSpecifique() {
648
	private function testerNomCompletInfraSpecifique() {
647
		$noms_erreur = array();
649
		$noms_erreur = array();
648
		foreach ($this->noms as &$nom) {
650
		foreach ($this->noms as &$nom) {
649
			if ($nom['rang'] > $this->manuel['rang_sp']) {
651
			if ($nom['rang'] > $this->manuel['rang_sp']) {
-
 
652
				$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
-
 
653
					utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '.
-
 
654
					utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' ';
650
				$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
655
				$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
651
				$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
656
				if (strstr($nom['nom_sci'] , ' x ') != false) {
652
				$nom_sci_ideal .= ' '.utf8_encode(strtolower(utf8_decode($nom['epithete_sp'])));
-
 
653
				$nom_sci_ideal .= ' '.utf8_encode(strtolower(utf8_decode($nom['type_epithete'])));
-
 
654
				$nom_sci_ideal .= (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $nom['epithete_infra_sp'], $match) != '' ? 
657
					list($nom_sci_ideal, $erreur) = $this->formaterStyleEpitheteInfraSpHybride($nom_sci_ideal, $nom['epithete_infra_sp'], $nom['genre']);
655
					' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.utf8_encode(strtolower(utf8_decode($match[2]))).
-
 
656
					' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))) : 
658
				} else {
657
					' '.utf8_encode(strtolower(utf8_decode($nom['epithete_infra_sp']))));
659
					$nom_sci_ideal .= utf8_encode(strtolower(utf8_decode($nom['epithete_infra_sp'])));
658
				$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
-
 
-
 
660
				}
659
				$nom_sci_ideal = trim($nom_sci_ideal);
661
				$nom_sci_ideal = trim($nom_sci_ideal);
-
 
662
				$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
660
				if ($nom['nom_sci'] != $nom_sci_ideal) {
663
				if ($nom['nom_sci'] != $nom_sci_ideal) {
661
					$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
664
					$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
662
					$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
665
					$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']);
663
				}
666
				}
664
			}
667
			}
665
		}
668
		}
666
		return $noms_erreur;
669
		return $noms_erreur;
667
	}
670
	}
Line 1634... Line 1637...
1634
			$genre_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($genre))));
1637
			$genre_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($genre))));
1635
		}
1638
		}
1636
		return $genre_fmt;
1639
		return $genre_fmt;
1637
	}
1640
	}
Line -... Line 1641...
-
 
1641
	
-
 
1642
	private function formaterStyleEpitheteSpHybride(&$genre, &$epithete) {
-
 
1643
		$nom_fmt = '';
-
 
1644
		$erreur = '';
-
 
1645
		if (trim($genre) == '') {
-
 
1646
			if ($epithete != '') {
-
 
1647
				$nom_fmt = $this->formaterFormuleHybridite($epithete);
-
 
1648
			} else {
-
 
1649
				$erreur = "Formule d'hybridité sans épithéte spécifique";
-
 
1650
			}
-
 
1651
		} else {
-
 
1652
			$nom_fmt = $this->formaterNomHybride($genre, $epithete);
-
 
1653
		}
-
 
1654
		return array($nom_fmt, $erreur);
-
 
1655
	}
-
 
1656
	
-
 
1657
	private function formaterStyleEpitheteInfraSpHybride(&$nom_sci, &$infra, &$genre = null) {		
-
 
1658
		$nom_fmt = '';
-
 
1659
		$erreur = '';
-
 
1660
		if (trim($genre) == '') {
-
 
1661
			if (trim($nom_sci) == '') {
-
 
1662
				if (trim($infra) != '') {
-
 
1663
					$nom_fmt = $this->formaterFormuleHybridite($infra);
-
 
1664
				} else {
-
 
1665
					$erreur = "Formule d'hybridité sans épithéte infraspécifique";
-
 
1666
				}
-
 
1667
			} else {
-
 
1668
				$erreur = "Formule d'hybridité avec épithéte spécifique";
-
 
1669
			}
-
 
1670
		} else {
-
 
1671
			$nom_fmt = $this->formaterNomHybride($nom_sci, $infra);
-
 
1672
		}
-
 
1673
		return array($nom_fmt, $erreur);
-
 
1674
	}
-
 
1675
	
-
 
1676
	private function formaterNomHybride(&$nom_sci, &$epithete) {
-
 
1677
		if (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $epithete, $match) != '') {
-
 
1678
			$nom_fmt = $nom_sci.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.
-
 
1679
				utf8_encode(strtolower(utf8_decode($match[2]))).' '.
-
 
1680
				utf8_encode(ucfirst(strtolower(utf8_decode($match[3]))));
-
 
1681
		} elseif (preg_match('/^([x+])\s+(.+)$/i', $epithete, $match) != '') {
-
 
1682
			$nom_fmt = $nom_sci.utf8_encode(strtolower(utf8_decode($match[1]))).' '.
-
 
1683
				utf8_encode(strtolower(utf8_decode($match[2])));
-
 
1684
		} else {
-
 
1685
			$nom_fmt = $nom_sci.utf8_encode(strtolower(utf8_decode($epithete)));
-
 
1686
		}
-
 
1687
		return $nom_fmt;
-
 
1688
	}
-
 
1689
	
-
 
1690
	private function formaterFormuleHybridite(&$epithete) {
-
 
1691
		$liste_parents = explode(' x ', $epithete);
-
 
1692
		if (count($liste_parents) == 2) {
-
 
1693
			$nom_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[0])))).' x '.
-
 
1694
			utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[1]))));
-
 
1695
		} else {
-
 
1696
			for ($i=0; $i<count($liste_parents); $i++) {
-
 
1697
				if (strstr(trim($liste_parents[$i]), ' ') == false) {
-
 
1698
					$nom[] = utf8_encode(ucfirst(strtolower(utf8_decode(trim($liste_parents[$i]))))).' x '.
-
 
1699
					utf8_encode(strtolower(utf8_decode(trim($liste_parents[$i+1]))));
-
 
1700
					$i++;
-
 
1701
				} else {
-
 
1702
					$nom[] = utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[$i]))));
-
 
1703
				}
-
 
1704
			}
-
 
1705
			$nom_fmt = implode(' x ', $nom);
-
 
1706
		}
-
 
1707
		return $nom_fmt;
-
 
1708
	}
1638
	
1709
	
1639
	private function repererEspace($nom_sci) {
1710
	private function repererEspace($nom_sci) {
1640
		$nom_sci = str_replace(' ', '<span class="espace">&nbsp;</span>', $nom_sci);
1711
		$nom_sci = str_replace(' ', '<span class="espace">&nbsp;</span>', $nom_sci);
1641
		return $nom_sci;
1712
		return $nom_sci;