Subversion Repositories Applications.referentiel

Rev

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

Rev 252 Rev 254
Line 645... Line 645...
645
	/**
645
	/**
646
	 * Test #22
646
	 * Test #22
647
	 */
647
	 */
648
	private function testerNomCompletInfraSpecifique() {
648
	private function testerNomCompletInfraSpecifique() {
649
		$noms_erreur = array();
649
		$noms_erreur = array();
-
 
650
		$erreur = null;
650
		foreach ($this->noms as &$nom) {
651
		foreach ($this->noms as &$nom) {
651
			if ($nom['rang'] > $this->manuel['rang_sp']) {
652
			if ($nom['rang'] > $this->manuel['rang_sp']) {
652
				$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
653
				$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
653
					utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '.
654
					utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '.
654
					utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' ';
655
					utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' ';
Line 835... Line 836...
835
	 */
836
	 */
836
	private function testerEpitheteSpSyntaxe() {
837
	private function testerEpitheteSpSyntaxe() {
837
		$noms_erreur = array();
838
		$noms_erreur = array();
838
		foreach ($this->noms as &$nom) {
839
		foreach ($this->noms as &$nom) {
839
			if ($nom['epithete_sp'] != '') {
840
			if ($nom['epithete_sp'] != '') {
840
				$formule_hybridite = (strpos($nom, ' x ') !== false);
841
				$formule_hybridite = (strpos($nom['epithete_sp'], ' x ') !== false);
841
				$mots = explode(' ', $nom['epithete_sp']);
842
				$mots = explode(' ', $nom['epithete_sp']);
842
				foreach ($mots as $mot) {
843
				foreach ($mots as $mot) {
843
					// TODO: créer un test qui vérifie la formule d'hybridité en la reconstruisant à partir des parents
844
					// TODO: créer un test qui vérifie la formule d'hybridité en la reconstruisant à partir des parents
844
					// afin que seuls des formules valides parviennent à la fonction
845
					// afin que seuls des formules valides parviennent à la fonction
845
					// TODO: verifier que l'épithete n'est pas subsp. var. etc... (faire une liste)
846
					if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteSp($mot) ||
846
					if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteSp($mot) || ($formule_hybridite && verifierEpitheteGenre($mot)))) {
847
						($formule_hybridite && $this->verifierEpitheteGenre($mot) && !$this->verifierEstAbbreviationInfraSp($mot)))) {
847
						$epithete_traite = $this->repererEspace($nom['epithete_sp']);
848
						$epithete_traite = $this->repererEspace($nom['epithete_sp']);
848
						$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
849
						$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
849
						break;
850
						break;
850
					}
851
					}
851
				}
852
				}
Line 1628... Line 1629...
1628
			$ok = true;
1629
			$ok = true;
1629
		}
1630
		}
1630
		return $ok;
1631
		return $ok;
1631
	}
1632
	}
Line -... Line 1633...
-
 
1633
	
-
 
1634
	private function verifierEstAbbreviationInfraSp($mot) {
-
 
1635
		$ok = false;
-
 
1636
		if(preg_match($this->manuel['abbr_rangs_infra_specifique'], $mot)) {
-
 
1637
			$ok = true;
-
 
1638
		}
-
 
1639
		return $ok;
-
 
1640
	}
1632
	
1641
	
1633
	private function formaterStyleNomGenre(&$genre) {
1642
	private function formaterStyleNomGenre(&$genre) {
1634
		$genre_fmt = '';
1643
		$genre_fmt = '';
1635
		if (preg_match('/^\s*([x+])\s+(.+)$/i', $genre, $match)) {
1644
		if (preg_match('/^\s*([x+])\s+(.+)$/i', $genre, $match)) {
1636
			$genre_fmt = utf8_encode(strtolower(utf8_decode($match[1]))).' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[2]))));
1645
			$genre_fmt = utf8_encode(strtolower(utf8_decode($match[1]))).' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[2]))));