<commit_before><?php

class DRDouaneCsvFile extends DouaneImportCsvFile {

    public function convert($type = null) {
    	if (!$this->filePath) {
    		throw new sfException("La cible du fichier n'est pas spécifiée.");
    	}
        $handler = fopen($this->filePath, 'r');

        $csv = array();

        while (($data = fgetcsv($handler)) !== FALSE) {
            $csv[] = self::clean($data);
        }
		$etablissement = ($this->doc)? $this->doc->getEtablissementObject() : null;
		if ($etablissement && !$etablissement->isActif()) {
			return;
		}
		$ppm = ($etablissement)? $etablissement->ppm : null;
        $dr = array();
        $baillage = array();
        $produits = array();
        $exploitant = array();
        $bailleur = array();
        $libelleLigne = null;
        foreach ($csv as $key => $values) {
        	if (is_array($values) && count($values) > 0) {
        		if (preg_match('/dnr/i', $values[0])) {
        			$dr[] = DRCsvFile::CSV_TYPE_DR;
        			$dr[] = $this->campagne;
        			$dr[] = ($etablissement)? $etablissement->identifiant : null;
        			$dr[] = ($etablissement)? $etablissement->cvi : (isset($values[1]))? $values[1] : null;
        			$dr[] = ($etablissement)? $etablissement->raison_sociale : (isset($values[2]))? "\"".html_entity_decode(trim(preg_replace('/^(.+)\(.+\)$/', '\1', $values[2])))."\"" : null;
        			$dr[] = null;
        			$dr[] = ($etablissement)? $etablissement->siege->commune : (isset($values[2]))? trim(preg_replace('/^.+\((.+)\)$/', '\1', $values[2])) : null;
        			continue;
        		}
        		if ($values[0] == 1) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$produit = $this->configuration->findProductByCodeDouane($values[$i]);
        					if (!$produit) {
        						$produits[$i] = array(null, null, null, null, null, null, null);
        					} else {
        						$produits[$i] = array($produit->getCertification()->getKey(), $produit->getGenre()->getKey(), $produit->getAppellation()->getKey(), $produit->getMention()->getKey(), $produit->getLieu()->getKey(), $produit->getCouleur()->getKey(), $produit->getCepage()->getKey());
        					}
        					$produits[$i][] = $values[$i];
        				}
        			}
        			continue;
        		}
        		if (!$values[0] && preg_match('/libelle produit/i', $values[1])) {
        			for ($i = 2; $i < count($values); $i++) {
        				if (isset($produits[$i])) {
        					$produits[$i][] = ($values[$i])? $values[$i] : null;
        				}
        			}
        			continue;
        		}
        		if ($values[0] == 2) {
        			for ($i = 2; $i < count($values); $i++) {
        				if (isset($produits[$i])) {
                            $produits[$i][] = ($values[$i])? str_replace(";", "", $values[$i]) : null;
        				}
        			}
        			continue;
        		}
        		if ($values[0] == 4) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$exploitant[$i][] = array(sprintf('%02d', $values[0]), preg_replace('/ \(ha\)/i', '', self::cleanStr($values[1])), self::numerizeVal($values[$i], 4), null, null, null, null);
        				}
        			}
        			continue;
        		}
        		if ($values[0] == 5) {
        			for ($i = 2; $i < count($csv[$key+1]); $i++) {
        				if ($i%2) {
        					if ($csv[$key+1][$i]) {
        						$exploitant[$i][] = array(sprintf('%02d', $values[0]), self::cleanStr($values[1]), self::numerizeVal($csv[$key+1][$i]), null, null, null, null);
        					}
        					if ($csv[$key+1][$i+1]) {
        						$bailleur[$i][] = array(sprintf('%02d', $values[0]), self::cleanStr($values[1]), self::numerizeVal($csv[$key+1][$i+1]), null, null, null, null);
        					}
        				}
        			}
        			continue;
        		}
        		if(preg_match("/[6-8]{1}-0/", $values[0])) {
        			$libelleLigne = self::cleanStr($values[1]);
        			continue;
        		}
        		if (preg_match("/[6-8]{1}-[1-9]+/", $values[0])) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$trt = array(sprintf('%02d', preg_replace("/^([0-9]{1})-[1-9]+$/i", '\1', $values[0])), $libelleLigne, self::numerizeVal($values[$i]), preg_replace(array("/^Acheteur n.+(FR[0-9a-zA-Z]{11}) -.*$/i", "/^Acheteur n.+([0-9a-zA-Z]{10}) -.*$/i"), '\1', $values[1]), "\"".trim(preg_replace(array("/^Acheteur n.+FR[0-9a-zA-Z]{11} -(.*)$/i", "/^Acheteur n.+[0-9a-zA-Z]{10} -(.*)$/i"), '\1', $values[1]))."\"", null, null);
        					if ($i%2) {
        						$exploitant[$i][] = $trt;
        					} else {
        						$bailleur[$i-1][] = $trt;
        					}
        				}
        			}
        			continue;
        		}
        		if (is_numeric($values[0]) && $values[0] > 8 && $values[0] < 20) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$trt = array(sprintf('%02d', $values[0]), self::cleanStr($values[1]), self::numerizeVal($values[$i]), null, null, null, null);
        					if ($i%2) {
        						$exploitant[$i][] = $trt;
        					} else {
        						$bailleur[$i-1][] = $trt;
        					}
        				}
        			}
        			continue;
        		}

        		if ($values[0] == 20 || $values[0] == 21) {
        			for ($i = 2; $i < count($values); $i++) {<commit_msg>correction regexp tiers export dr<commit_after><?php

class DRDouaneCsvFile extends DouaneImportCsvFile {

    public function convert($type = null) {
    	if (!$this->filePath) {
    		throw new sfException("La cible du fichier n'est pas spécifiée.");
    	}
        $handler = fopen($this->filePath, 'r');

        $csv = array();

        while (($data = fgetcsv($handler)) !== FALSE) {
            $csv[] = self::clean($data);
        }
		$etablissement = ($this->doc)? $this->doc->getEtablissementObject() : null;
		if ($etablissement && !$etablissement->isActif()) {
			return;
		}
		$ppm = ($etablissement)? $etablissement->ppm : null;
        $dr = array();
        $baillage = array();
        $produits = array();
        $exploitant = array();
        $bailleur = array();
        $libelleLigne = null;
        foreach ($csv as $key => $values) {
        	if (is_array($values) && count($values) > 0) {
        		if (preg_match('/dnr/i', $values[0])) {
        			$dr[] = DRCsvFile::CSV_TYPE_DR;
        			$dr[] = $this->campagne;
        			$dr[] = ($etablissement)? $etablissement->identifiant : null;
        			$dr[] = ($etablissement)? $etablissement->cvi : (isset($values[1]))? $values[1] : null;
        			$dr[] = ($etablissement)? $etablissement->raison_sociale : (isset($values[2]))? "\"".html_entity_decode(trim(preg_replace('/^(.+)\(.+\)$/', '\1', $values[2])))."\"" : null;
        			$dr[] = null;
        			$dr[] = ($etablissement)? $etablissement->siege->commune : (isset($values[2]))? trim(preg_replace('/^.+\((.+)\)$/', '\1', $values[2])) : null;
        			continue;
        		}
        		if ($values[0] == 1) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$produit = $this->configuration->findProductByCodeDouane($values[$i]);
        					if (!$produit) {
        						$produits[$i] = array(null, null, null, null, null, null, null);
        					} else {
        						$produits[$i] = array($produit->getCertification()->getKey(), $produit->getGenre()->getKey(), $produit->getAppellation()->getKey(), $produit->getMention()->getKey(), $produit->getLieu()->getKey(), $produit->getCouleur()->getKey(), $produit->getCepage()->getKey());
        					}
        					$produits[$i][] = $values[$i];
        				}
        			}
        			continue;
        		}
        		if (!$values[0] && preg_match('/libelle produit/i', $values[1])) {
        			for ($i = 2; $i < count($values); $i++) {
        				if (isset($produits[$i])) {
        					$produits[$i][] = ($values[$i])? $values[$i] : null;
        				}
        			}
        			continue;
        		}
        		if ($values[0] == 2) {
        			for ($i = 2; $i < count($values); $i++) {
        				if (isset($produits[$i])) {
                            $produits[$i][] = ($values[$i])? str_replace(";", "", $values[$i]) : null;
        				}
        			}
        			continue;
        		}
        		if ($values[0] == 4) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$exploitant[$i][] = array(sprintf('%02d', $values[0]), preg_replace('/ \(ha\)/i', '', self::cleanStr($values[1])), self::numerizeVal($values[$i], 4), null, null, null, null);
        				}
        			}
        			continue;
        		}
        		if ($values[0] == 5) {
        			for ($i = 2; $i < count($csv[$key+1]); $i++) {
        				if ($i%2) {
        					if ($csv[$key+1][$i]) {
        						$exploitant[$i][] = array(sprintf('%02d', $values[0]), self::cleanStr($values[1]), self::numerizeVal($csv[$key+1][$i]), null, null, null, null);
        					}
        					if ($csv[$key+1][$i+1]) {
        						$bailleur[$i][] = array(sprintf('%02d', $values[0]), self::cleanStr($values[1]), self::numerizeVal($csv[$key+1][$i+1]), null, null, null, null);
        					}
        				}
        			}
        			continue;
        		}
        		if(preg_match("/[6-8]{1}-0/", $values[0])) {
        			$libelleLigne = self::cleanStr($values[1]);
        			continue;
        		}
        		if (preg_match("/[6-8]{1}-[1-9]+/", $values[0])) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$trt = array(sprintf('%02d', preg_replace("/^([0-9]{1})-[1-9]+$/i", '\1', $values[0])), $libelleLigne, self::numerizeVal($values[$i]), preg_replace(array("/^Acheteur n.{1,2}(FR[0-9a-zA-Z]{11}) -.*$/i", "/^Acheteur n.{1,2}([0-9a-zA-Z]{10}) -.*$/i"), '\1', $values[1]), "\"".trim(preg_replace(array("/^Acheteur n.{1,2}FR[0-9a-zA-Z]{11} -(.*)$/i", "/^Acheteur n.{1,2}[0-9a-zA-Z]{10} -(.*)$/i"), '\1', $values[1]))."\"", null, null);
        					if ($i%2) {
        						$exploitant[$i][] = $trt;
        					} else {
        						$bailleur[$i-1][] = $trt;
        					}
        				}
        			}
        			continue;
        		}
        		if (is_numeric($values[0]) && $values[0] > 8 && $values[0] < 20) {
        			for ($i = 2; $i < count($values); $i++) {
        				if ($values[$i]) {
        					$trt = array(sprintf('%02d', $values[0]), self::cleanStr($values[1]), self::numerizeVal($values[$i]), null, null, null, null);
        					if ($i%2) {
        						$exploitant[$i][] = $trt;
        					} else {
        						$bailleur[$i-1][] = $trt;
        					}
        				}
        			}
        			continue;
        		}

        		if ($values[0] == 20 || $values[0] == 21) {
        			for ($i = 2; $i < count($values); $i++) {
{'fraction_non_alphanumeric': 0.23896583564173593, 'fraction_numerical': 0.021052631578947368, 'mean_word_length': 1.9600983875375786, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 67, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1450133', 'n_tokens_mistral': 4489, 'n_tokens_neox': 4121, 'n_words': 642}