*/
class FakeData
{
- public const DEFAULT_NB_MEMBERS = 20;
- public const DEFAULT_NB_CONTRIB = 5;
- public const DEFAULT_NB_GROUPS = 5;
- public const DEFAULT_NB_TRANSACTIONS = 2;
- public const DEFAULT_PHOTOS = false;
-
- protected $preferences;
- protected $member_fields;
- protected $history;
- protected $login;
-
- protected $zdb;
- protected $i18n;
- protected $faker;
private $report = [
'success' => [],
'errors' => [],
'warnings' => []
];
- protected $groups = [];
- protected $mids = [];
- protected $transactions = [];
- protected $titles = [];
- protected $status;
- protected $contrib_types;
-
- /**
- * @var integer
- * Number of members to generate
- */
- protected $nbmembers = self::DEFAULT_NB_MEMBERS;
-
- /**
- * @var boolean
- * With members photos
- */
- protected $with_photos = self::DEFAULT_PHOTOS;
-
- /**
- * @var integer
- * Number of groups to generate
- */
- protected $nbgroups = self::DEFAULT_NB_GROUPS;
-
- /**
- * @var integer
- * Max number of contributions to generate
- * for each member
- */
- protected $maxcontribs = self::DEFAULT_NB_CONTRIB;
-
- /**
- * @var integer
- * Number of transactions to generate
- */
- protected $nbtransactions = self::DEFAULT_NB_TRANSACTIONS;
-
- /**
- * @var integer
- * Seed to use for data generation (to get same data accross runs)
- */
- protected $seed;
-
- /**
- * Default constructor
- *
- * @param Db $zdb Db instance
- * @param I18n $i18n Current language
- * @param boolean $generate Process data generation; defaults to false
- *
- * @return void
- */
- public function __construct(Db $zdb, I18n $i18n, $generate = false)
- {
- $this->zdb = $zdb;
- $this->i18n = $i18n;
- if ($generate) {
- $this->generate();
- }
- }
-
- /**
- * Set seed
- *
- * @param integer $seed Seed
- *
- * @return FakeData
- */
- public function setSeed($seed)
- {
- $this->seed = $seed;
- return $this;
- }
-
- /**
- * Set number of members to generate
- *
- * @param integer $nb Number of members
- *
- * @return FakeData
- */
- public function setNbMembers($nb)
- {
- $this->nbmembers = (int)$nb;
- return $this;
- }
-
- /**
- * Set maximum number of contribution per member to generate
- *
- * @param integer $nb Number of contributions
- *
- * @return FakeData
- */
- public function setMaxContribs($nb)
- {
- $this->maxcontribs = (int)$nb;
- return $this;
- }
-
- /**
- * Set number of groups to generate
- *
- * @param integer $nb Number of groups
- *
- * @return FakeData
- */
- public function setNbGroups($nb)
- {
- $this->nbgroups = (int)$nb;
- return $this;
- }
-
- /**
- * Set number of transactions to generate
- *
- * @param integer $nb Number of transactions
- *
- * @return FakeData
- */
- public function setNbTransactions($nb)
- {
- $this->nbtransactions = (int)$nb;
- return $this;
- }
-
- /**
- * Set with members photos or not
- *
- * @param boolean $with With photos
- *
- * @return FakeData
- */
- public function setWithPhotos($with)
- {
- $this->with_photos = $with;
- return $this;
- }
-
- /**
- * Get (and create if needed) Faker instance
- *
- * @return \Faker\Factory
- */
- public function getFaker()
- {
- if ($this->faker === null) {
- $this->faker = \Faker\Factory::create($this->i18n->getID());
- }
- return $this->faker;
- }
-
- /**
- * Do data generation
- *
- * @return void
- */
- public function generate()
- {
- $this->getFaker();
- if ($this->seed !== null) {
- $this->faker->seed($this->seed);
- }
-
- $this->generateGroups($this->nbgroups);
- $this->generateMembers($this->nbmembers);
- $this->generateTransactions($this->nbtransactions);
- $this->generateContributions();
- }
-
- /**
- * Generate groups
- *
- * @param integer $count Number of groups to generate
- *
- * @return void
- */
- public function generateGroups($count = null)
- {
- $faker = $this->getFaker();
-
- $done = 0;
- $parent_group = null;
-
- if ($count === null) {
- $count = $this->nbgroups;
- }
-
- for ($i = 0; $i < $count; $i++) {
- $group = new Group();
- $group->setName($faker->unique()->lastName());
- if (count($this->groups) > 0 && $faker->boolean($chanceOfGettingTrue = 10)) {
- if ($parent_group === null) {
- $parent_group = $faker->randomElement($this->groups);
- }
- $group->setParentGroup($parent_group->getId());
- }
-
- if ($group->store()) {
- $this->groups[] = $group;
- ++$done;
- }
- }
-
- if ($count != 0 && $done != 0) {
- if ($done === $count) {
- $this->addSuccess(
- str_replace('%count', $count, _T("%count groups created"))
- );
- } else {
- $this->addWarning(
- str_replace(
- ['%count', '%done'],
- [$count, $done],
- _T("%count groups requested, and %done created")
- )
- );
- }
- }
- }
-
- /**
- * Generate members
- *
- * @param integer $count Number of members to generate
- *
- * @return void
- */
- public function generateMembers($count = null)
- {
- $faker = $this->getFaker();
- $done = 0;
- $photos_done = 0;
-
- if ($count === null) {
- $count = $this->nbmembers;
- }
-
- for ($i = 0; $i < $count; $i++) {
- $data = $this->fakeMember();
-
- $member = new Adherent($this->zdb);
- $member->setDependencies(
- $this->preferences,
- $this->member_fields,
- $this->history
- );
- if ($member->check($data, [], [])) {
- if ($member->store()) {
- $this->mids[] = $member->id;
- ++$done;
- if ($this->with_photos && $faker->boolean($chanceOfGettingTrue = 70)) {
- if ($this->addPhoto($member)) {
- ++$photos_done;
- }
- }
- }
-
- //add to a group?
- if (count($this->groups) > 0 && $faker->boolean($chanceOfGettingTrue = 60)) {
- $groups = $faker->randomElements($this->groups);
- foreach ($groups as $group) {
- $manager = $faker->boolean($chanceOfGettingTrue = 10);
- if ($manager) {
- $managers = $group->getManagers();
- $managers[] = $member;
- $group->setManagers($managers);
- } else {
- $members = $group->getMembers();
- $members[] = $member;
- $group->setMembers($members);
- }
- }
- }
- }
- }
-
- if ($count != 0 && $done != 0) {
- if ($done === $count) {
- $this->addSuccess(
- str_replace('%count', $count, _T("%count members created"))
- );
- } else {
- $this->addWarning(
- str_replace(
- ['%count', '%done'],
- [$count, $done],
- _T("%count members requested, and %done created")
- )
- );
- }
- }
- if ($this->with_photos === true) {
- if ($photos_done > 0) {
- $this->addSuccess(
- str_replace('%count', $count, _T("%count photos created"))
- );
- } else {
- $this->addWarning(
- _T("No photo has been created")
- );
- }
- }
- }
-
- /**
- * Get faked member data
- *
- * @return array
- */
- public function fakeMember()
- {
- $faker = $this->getFaker();
- if ($this->seed !== null) {
- $this->faker->seed($this->seed);
- }
- $creation_date = $faker->dateTimeBetween($startDate = '-3 years', $endDate = 'now');
- $mdp_adh = $faker->password();
-
- if ($this->status === null) {
- $status = new Status($this->zdb);
- $this->status = array_keys($status->getList());
- }
-
- $data = [
- 'nom_adh' => $faker->lastName(),
- 'prenom_adh' => $faker->firstName(),
- 'ville_adh' => $faker->city(),
- 'cp_adh' => $faker->postcode(),
- 'adresse_adh' => $faker->streetAddress(),
- 'ville_adh' => $faker->city(),
- 'email_adh' => $faker->unique()->email(),
- 'login_adh' => $faker->unique()->userName(),
- 'mdp_adh' => $mdp_adh,
- 'mdp_adh2' => $mdp_adh,
- 'bool_admin_adh' => $faker->boolean($chanceOfGettingTrue = 5),
- 'bool_exempt_adh' => $faker->boolean($chanceOfGettingTrue = 5),
- 'bool_display_info' => $faker->boolean($chanceOfGettingTrue = 70),
- 'sexe_adh' => $faker->randomElement([Adherent::NC, Adherent::MAN, Adherent::WOMAN]),
- 'prof_adh' => $faker->jobTitle(),
- 'titre_adh' => $faker->randomElement(array_keys($this->titles)),
- 'ddn_adh' => $faker->dateTimeBetween(
- $startDate = '-110 years',
- $endDate = date('Y-m-d')
- )->format(_T("Y-m-d")),
- 'lieu_naissance' => $faker->city(),
- 'pseudo_adh' => $faker->userName(),
- 'adresse_adh' => $faker->streetAddress(),
- 'cp_adh' => $faker->postcode(),
- 'ville_adh' => $faker->city(),
- 'pays_adh' => $faker->optional()->country(),
- 'tel_adh' => $faker->phoneNumber(),
- 'url_adh' => $faker->optional()->url(),
- 'activite_adh' => $faker->boolean($chanceOfGettingTrue = 90),
- 'id_statut' => $faker->optional($weight = 0.3, $default = Status::DEFAULT_STATUS)
- ->randomElement($this->status),
- 'date_crea_adh' => $creation_date->format(_T("Y-m-d")),
- 'pref_lang' => $faker->randomElement(array_keys($this->i18n->getArrayList())),
- 'fingerprint' => 'FAKER' . ($this->seed !== null ? $this->seed : '')
- ];
-
- if ($faker->boolean($chanceOfGettingTrue = 20)) {
- $data['societe_adh'] = $faker->company();
- $data['is_company'] = true;
- }
-
- return $data;
- }
-
/**
* Add photo to a member
*
return false;
}
- /**
- * Generate transactions
- *
- * @param integer $count Number of transactions to generate
- * @param array $mids Members ids. Defaults to null (will work with previously generated ids)
- *
- * @return void
- */
- public function generateTransactions($count = null, $mids = null)
- {
- $faker = $this->getFaker();
-
- $done = 0;
-
- if ($count === null) {
- $count = $this->nbtransactions;
- }
-
- if ($mids === null) {
- $mids = $this->mids;
- }
-
- for ($i = 0; $i < $count; $i++) {
- $data = [
- 'trans_date' => $faker->dateTimeBetween($startDate = '-1 years', $endDate = 'now')->format(_T("Y-m-d")),
- Adherent::PK => $faker->randomElement($mids),
- 'trans_amount' => $faker->numberBetween($min = 50, $max = 2000),
- 'trans_desc' => $faker->realText($maxNbChars = 150)
- ];
-
- $transaction = new Transaction($this->zdb, $this->login);
- if ($transaction->check($data, [], [])) {
- if ($transaction->store($this->history)) {
- $this->transactions[] = $transaction;
- ++$done;
- }
- }
- }
-
- if ($count != 0 && $done != 0) {
- if ($done === $count) {
- $this->addSuccess(
- str_replace('%count', $count, _T("%count transactions created"))
- );
- } else {
- $this->addWarning(
- str_replace(
- ['%count', '%done'],
- [$count, $done],
- _T("%count transactions requested, and %done created")
- )
- );
- }
- }
- }
-
- /**
- * Generate members contributions
- *
- * @param array $mids Members ids. Defaults to null (will work with previously generated ids)
- *
- * @return void
- */
- public function generateContributions($mids = null)
- {
- $faker = $this->getFaker();
-
- if ($this->maxcontribs == 0) {
- return;
- }
-
- if ($mids === null) {
- $mids = $this->mids;
- }
-
- $done = 0;
-
- foreach ($mids as $mid) {
- $nbcontribs = $faker->numberBetween(0, $this->maxcontribs);
- for ($i = 0; $i < $nbcontribs; $i++) {
- $data = $this->fakeContrib($mid);
- $contrib = new Contribution($this->zdb, $this->login);
- if ($contrib->check($data, [], []) === true) {
- if ($contrib->store()) {
- $pk = Contribution::PK;
- $this->cids[] = $contrib->$pk;
- ++$done;
- }
-
- if (count($this->transactions) > 0) {
- if ($faker->boolean($chanceOfGettingTrue = 90)) {
- $transaction = $faker->randomElement($this->transactions);
- $contrib::setTransactionPart(
- $this->zdb,
- $transaction->id,
- $contrib->id
- );
- }
- }
- }
- }
- }
-
- if ($done > 0) {
- $this->addSuccess(
- str_replace('%count', $done, _T("%count contributions created"))
- );
- } else {
- $this->addError(
- _T("No contribution created!")
- );
- }
- }
-
- /**
- * Get faked contribution data
- *
- * @param integer $mid Member id.
- *
- * @return array
- */
- public function fakeContrib($mid)
- {
- $faker = $this->getFaker();
- if ($this->seed !== null) {
- $this->faker->seed($this->seed);
- }
-
- if ($this->contrib_types === null) {
- $ct = new ContributionsTypes($this->zdb);
- $this->contrib_types = $ct->getCompleteList();
- }
- $types = $this->contrib_types;
-
- $begin_date = $faker->dateTimeBetween($startDate = '-3 years', $endDate = 'now');
- $end_date = clone $begin_date;
- $end_date->modify('+1 year');
- if (!$begin_date) {
- $begin_date = new \DateTime();
- }
-
- $data = [
- Adherent::PK => $mid,
- ContributionsTypes::PK => $faker->randomElement(array_keys($types)),
- 'montant_cotis' => $faker->numberBetween($min = 5, $max = 200),
- 'type_paiement_cotis' => $faker->randomElement(
- [
- PaymentType::OTHER,
- PaymentType::CASH,
- PaymentType::CREDITCARD,
- PaymentType::CHECK,
- PaymentType::TRANSFER,
- PaymentType::PAYPAL
- ]
- ),
- 'info_cotis' => ($this->seed !== null ?
- 'FAKER' . $this->seed : $faker->optional($weight = 0.1)->realText($maxNbChars = 500)),
- 'date_enreg' => $faker->dateTimeBetween($startDate = '-1 years', $endDate = 'now')->format(_T("Y-m-d")),
- 'date_debut_cotis' => $begin_date->format(_T("Y-m-d")),
- 'date_fin_cotis' => $end_date->format(_T("Y-m-d"))
- ];
-
- if (count($this->transactions) > 0) {
- if ($faker->boolean($chanceOfGettingTrue = 90)) {
- $transaction = $faker->randomElement($this->transactions);
- $missing = $transaction->getMissingAmount();
- if ($data['montant_cotis'] > $missing) {
- $data['montant_cotis'] = $missing;
- }
- }
- }
-
- return $data;
- }
-
/**
* Add success message
*
{
return $this->report;
}
-
- /**
- * Set dependencies
- *
- * @param Preferences $preferences Preferences instance
- * @param array $fields Members fields configuration
- * @param History $history History instance
- * @param Login $login Login instance
- *
- * @return FakeData
- */
- public function setDependencies(
- Preferences $preferences,
- array $fields,
- History $history,
- Login $login
- ) {
- $this->preferences = $preferences;
- $this->member_fields = $fields;
- $this->history = $history;
- $this->login = $login;
-
- return $this;
- }
-
- /**
- * Get generated members ids
- *
- * @return array
- */
- public function getMembersIds()
- {
- return $this->mids;
- }
}
$this->string($csvfile_model)
->isIdenticalTo("\"" . implode("\";\"", $fields) . "\"\r\n");
- $fakedata = new \Galette\Util\FakeData($this->zdb, $this->i18n);
$contents = $csvfile_model;
foreach ($members_list as $member) {
$amember = [];
*/
public function testImport()
{
- $fakedata = new \Galette\Util\FakeData($this->zdb, $this->i18n);
-
$fields = ['nom_adh', 'ville_adh', 'bool_exempt_adh', 'fingerprint'];
$file_name = 'test-import-atoum.csv';
$flash_messages = [
'success_detected' => ["File '$file_name' has been successfully imported :)"]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- $data['nom_adh'] = str_replace('"', '""', $data['nom_adh']);
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
- $members_list[$data['fingerprint']] = $data;
- }
+ $members_list = $this->getMemberData1();
$count_before = 0;
$count_after = 10;
]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- //two lines without name.
- $data['nom_adh'] = (($i == 2 || $i == 5) ? '' : str_replace('"', '""', $data['nom_adh']));
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
- $members_list[$data['fingerprint']] = $data;
- }
+ $members_list = $this->getMemberData2NoName();
$count_before = 10;
$count_after = 10;
$result = $this->zdb->execute($select)->current();
$this->integer((int)$result->num)->isIdenticalTo(1);
- $fakedata = new \Galette\Util\FakeData($this->zdb, $this->i18n);
-
$fields = ['nom_adh', 'ville_adh', 'dynfield_' . $df->getId(), 'fingerprint'];
$file_name = 'test-import-atoum-dyn.csv';
$flash_messages = [
'success_detected' => ["File '$file_name' has been successfully imported :)"]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- $data['nom_adh'] = str_replace('"', '""', $data['nom_adh']);
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
+ $members_list = $this->getMemberData1();
+ foreach ($members_list as $fingerprint => &$data) {
$data['dynfield_' . $df->getId()] = 'Dynamic field value for ' . $data['fingerprint'];
- $members_list[$data['fingerprint']] = $data;
}
$count_before = 0;
$count_after = 10;
'Field nom_adh is required, but missing in row 3'
]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- //two lines without name.
- $data['nom_adh'] = (($i == 2 || $i == 5) ? '' : str_replace('"', '""', $data['nom_adh']));
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
+ $members_list = $this->getMemberData2NoName();
+ foreach ($members_list as $fingerprint => &$data) {
$data['dynfield_' . $df->getId()] = 'Dynamic field value for ' . $data['fingerprint'];
- $members_list[$data['fingerprint']] = $data;
}
+
$count_before = 10;
$count_after = 10;
'Missing required field Dynamic text field'
]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- $data['nom_adh'] = str_replace('"', '""', $data['nom_adh']);
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
+ $members_list = $this->getMemberData2();
+ $i = 0;
+ foreach ($members_list as $fingerprint => &$data) {
//two lines without required dynamic field.
$data['dynfield_' . $df->getId()] = (($i == 2 || $i == 5) ? '' :
'Dynamic field value for ' . $data['fingerprint']);
- $members_list[$data['fingerprint']] = $data;
+ ++$i;
}
+
$count_before = 10;
$count_after = 10;
$flash_messages = [
'success_detected' => ["File '$file_name' has been successfully imported :)"]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- $data['nom_adh'] = str_replace('"', '""', $data['nom_adh']);
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
- $faker = $fakedata->getFaker();
- $data['dynfield_' . $cdf->getId()] = $faker->numberBetween(0, 2);
- $members_list[$data['fingerprint']] = $data;
+ $members_list = $this->getMemberData1();
+ foreach ($members_list as $fingerprint => &$data) {
+ //two lines without required dynamic field.
+ $data['dynfield_' . $cdf->getId()] = rand(0, 2);
}
+
$count_before = 0;
$count_after = 10;
$flash_messages = [
'success_detected' => ["File '$file_name' has been successfully imported :)"]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- $data['nom_adh'] = str_replace('"', '""', $data['nom_adh']);
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
+ $members_list = $this->getMemberData1();
+ foreach ($members_list as $fingerprint => &$data) {
+ //two lines without required dynamic field.
$data['dynfield_' . $cdf->getId()] = $data['date_crea_adh'];
- $members_list[$data['fingerprint']] = $data;
}
+
$count_before = 0;
$count_after = 10;
'- Wrong date format (Y-m-d) for Dynamic date field!'
]
];
- $members_list = [];
- for ($i = 0; $i < 10; ++$i) {
- $data = $fakedata->fakeMember();
- $data['nom_adh'] = str_replace('"', '""', $data['nom_adh']);
- $data['ville_adh'] = str_replace('"', '""', $data['ville_adh']);
- $data['fingerprint'] = 'FAKER_' . $i;
+ $members_list = $this->getMemberData2();
+ $i = 0;
+ foreach ($members_list as $fingerprint => &$data) {
+ //two lines without required dynamic field.
$data['dynfield_' . $cdf->getId()] = (($i == 2 || $i == 5) ? '20200513' : $data['date_crea_adh']);
- $members_list[$data['fingerprint']] = $data;
+ ++$i;
}
+
$count_before = 10;
$count_after = 10;
$this->doImportFileTest($fields, $file_name, $flash_messages, $members_list, $count_before, $count_after);
}
+
+ /**
+ * Get first set of member data
+ *
+ * @return array
+ */
+ private function getMemberData1()
+ {
+ return array(
+ 'FAKER_0' => array (
+ 'nom_adh' => 'Boucher',
+ 'prenom_adh' => 'Roland',
+ 'ville_adh' => 'Dumas',
+ 'cp_adh' => '61276',
+ 'adresse_adh' => '5, chemin de Meunier',
+ 'email_adh' => 'remy44@lopez.net',
+ 'login_adh' => 'jean36',
+ 'mdp_adh' => 'HM~OCSl[]UkZp%Y',
+ 'mdp_adh2' => 'HM~OCSl[]UkZp%Y',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => true,
+ 'bool_display_info' => false,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Technicien géomètre',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1914-03-22',
+ 'lieu_naissance' => 'Laurent-sur-Guyot',
+ 'pseudo_adh' => 'tgonzalez',
+ 'pays_adh' => null,
+ 'tel_adh' => '+33 8 93 53 99 52',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-03-09',
+ 'pref_lang' => 'br',
+ 'fingerprint' => 'FAKER_0',
+ ),
+ 'FAKER_1' => array (
+ 'nom_adh' => 'Lefebvre',
+ 'prenom_adh' => 'François',
+ 'ville_adh' => 'Laine',
+ 'cp_adh' => '53977',
+ 'adresse_adh' => '311, rue de Costa',
+ 'email_adh' => 'astrid64@masse.fr',
+ 'login_adh' => 'olivier.pierre',
+ 'mdp_adh' => '.4y/J>yN_QUh7Bw@NW>)',
+ 'mdp_adh2' => '.4y/J>yN_QUh7Bw@NW>)',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => false,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Conseiller relooking',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1989-10-31',
+ 'lieu_naissance' => 'Collet',
+ 'pseudo_adh' => 'agnes.evrard',
+ 'pays_adh' => null,
+ 'tel_adh' => '0288284193',
+ 'url_adh' => 'https://leroux.fr/omnis-autem-suscipit-consequuntur-possimus-sint-iste-beatae.html',
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2019-11-29',
+ 'pref_lang' => 'oc',
+ 'fingerprint' => 'FAKER_1',
+ ),
+ 'FAKER_2' => array (
+ 'nom_adh' => 'Lemaire',
+ 'prenom_adh' => 'Georges',
+ 'ville_adh' => 'Teixeira-sur-Mer',
+ 'cp_adh' => '40141',
+ 'adresse_adh' => 'place Guillaume',
+ 'email_adh' => 'lefort.vincent@club-internet.fr',
+ 'login_adh' => 'josette46',
+ 'mdp_adh' => '(IqBaAIR',
+ 'mdp_adh2' => '(IqBaAIR',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 0,
+ 'prof_adh' => 'Assistant logistique',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1935-09-07',
+ 'lieu_naissance' => 'Ponsboeuf',
+ 'pseudo_adh' => 'fgay',
+ 'pays_adh' => null,
+ 'tel_adh' => '+33 7 45 45 19 81',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 8,
+ 'date_crea_adh' => '2019-02-03',
+ 'pref_lang' => 'uk',
+ 'fingerprint' => 'FAKER_2',
+ ),
+ 'FAKER_3' => array (
+ 'nom_adh' => 'Paul',
+ 'prenom_adh' => 'Thibaut',
+ 'ville_adh' => 'Mallet-sur-Prevost',
+ 'cp_adh' => '50537',
+ 'adresse_adh' => '246, boulevard Daniel Mendes',
+ 'email_adh' => 'ihamel@pinto.fr',
+ 'login_adh' => 'josephine.fabre',
+ 'mdp_adh' => '`2LrQcb9Utgm=Y\\S$',
+ 'mdp_adh2' => '`2LrQcb9Utgm=Y\\S$',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 0,
+ 'prof_adh' => 'Aide à domicile',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1961-09-17',
+ 'lieu_naissance' => 'Gomez',
+ 'pseudo_adh' => 'chauvin.guillaume',
+ 'pays_adh' => 'Hong Kong',
+ 'tel_adh' => '+33 5 48 57 32 28',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 1,
+ 'date_crea_adh' => '2017-11-20',
+ 'pref_lang' => 'nb_NO',
+ 'fingerprint' => 'FAKER_3',
+ 'societe_adh' => 'Jacques',
+ 'is_company' => true,
+ ),
+ 'FAKER_4' => array (
+ 'nom_adh' => 'Pascal',
+ 'prenom_adh' => 'Isaac',
+ 'ville_adh' => 'Jourdanboeuf',
+ 'cp_adh' => '93966',
+ 'adresse_adh' => '5, boulevard de Boucher',
+ 'email_adh' => 'valerie.becker@gmail.com',
+ 'login_adh' => 'lucie08',
+ 'mdp_adh' => '|%+wtMW{l',
+ 'mdp_adh2' => '|%+wtMW{l',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Bruiteur',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1953-12-11',
+ 'lieu_naissance' => 'Foucher',
+ 'pseudo_adh' => 'sauvage.dorothee',
+ 'pays_adh' => 'Bangladesh',
+ 'tel_adh' => '+33 4 75 14 66 56',
+ 'url_adh' => null,
+ 'activite_adh' => false,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2018-08-16',
+ 'pref_lang' => 'en_US',
+ 'fingerprint' => 'FAKER_4',
+ ),
+ 'FAKER_5' => array (
+ 'nom_adh' => 'Morvan',
+ 'prenom_adh' => 'Joseph',
+ 'ville_adh' => 'Noel',
+ 'cp_adh' => '05069',
+ 'adresse_adh' => 'place de Barthelemy',
+ 'email_adh' => 'claunay@tele2.fr',
+ 'login_adh' => 'marthe.hoarau',
+ 'mdp_adh' => '\'C?}vJAU>:-iE',
+ 'mdp_adh2' => '\'C?}vJAU>:-iE',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Opérateur du son',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1938-05-11',
+ 'lieu_naissance' => 'Beguedan',
+ 'pseudo_adh' => 'andre.guillou',
+ 'pays_adh' => null,
+ 'tel_adh' => '09 26 70 06 55',
+ 'url_adh' => 'http://www.hoarau.fr/quis-neque-ducimus-quidem-et',
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2018-09-28',
+ 'pref_lang' => 'ca',
+ 'fingerprint' => 'FAKER_5',
+ ),
+ 'FAKER_6' => array (
+ 'nom_adh' => 'Lebreton',
+ 'prenom_adh' => 'Emmanuelle',
+ 'ville_adh' => 'Lefevre',
+ 'cp_adh' => '29888',
+ 'adresse_adh' => '98, rue Moulin',
+ 'email_adh' => 'zacharie77@ruiz.fr',
+ 'login_adh' => 'marianne.collin',
+ 'mdp_adh' => '=jG{wyE',
+ 'mdp_adh2' => '=jG{wyE',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Galeriste',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2001-02-01',
+ 'lieu_naissance' => 'Berthelot',
+ 'pseudo_adh' => 'ferreira.rene',
+ 'pays_adh' => 'Tuvalu',
+ 'tel_adh' => '+33 (0)7 47 56 89 70',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2018-01-13',
+ 'pref_lang' => 'es',
+ 'fingerprint' => 'FAKER_6',
+ ),
+ 'FAKER_7' => array (
+ 'nom_adh' => 'Maurice',
+ 'prenom_adh' => 'Capucine',
+ 'ville_adh' => 'Renaultdan',
+ 'cp_adh' => '59 348',
+ 'adresse_adh' => '56, avenue Grenier',
+ 'email_adh' => 'didier.emmanuel@tiscali.fr',
+ 'login_adh' => 'william.herve',
+ 'mdp_adh' => '#7yUz#qToZ\'',
+ 'mdp_adh2' => '#7yUz#qToZ\'',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Cintrier-machiniste',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1984-04-17',
+ 'lieu_naissance' => 'Rolland',
+ 'pseudo_adh' => 'roger27',
+ 'pays_adh' => 'Antilles néerlandaises',
+ 'tel_adh' => '0922523762',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-02-13',
+ 'pref_lang' => 'br',
+ 'fingerprint' => 'FAKER_7',
+ 'societe_adh' => 'Mace',
+ 'is_company' => true,
+ ),
+ 'FAKER_8' => array (
+ 'nom_adh' => 'Hubert',
+ 'prenom_adh' => 'Lucy',
+ 'ville_adh' => 'Lagarde',
+ 'cp_adh' => '22 829',
+ 'adresse_adh' => '3, rue Pénélope Marie',
+ 'email_adh' => 'zoe02@morvan.com',
+ 'login_adh' => 'bernard.agathe',
+ 'mdp_adh' => '@9di}eJyc"0s_d(',
+ 'mdp_adh2' => '@9di}eJyc"0s_d(',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Facteur',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2008-01-13',
+ 'lieu_naissance' => 'Ribeiro',
+ 'pseudo_adh' => 'julien.isabelle',
+ 'pays_adh' => 'Mexique',
+ 'tel_adh' => '0809527977',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2019-06-26',
+ 'pref_lang' => 'de_DE',
+ 'fingerprint' => 'FAKER_8',
+ ),
+ 'FAKER_9' => array (
+ 'nom_adh' => 'Goncalves',
+ 'prenom_adh' => 'Corinne',
+ 'ville_adh' => 'LesageVille',
+ 'cp_adh' => '15728',
+ 'adresse_adh' => '18, rue de Pinto',
+ 'email_adh' => 'julien.clement@dbmail.com',
+ 'login_adh' => 'xavier.nicolas',
+ 'mdp_adh' => '<W0XdOj2Gp|@;W}gWh]',
+ 'mdp_adh2' => '<W0XdOj2Gp|@;W}gWh]',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Eleveur de volailles',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2013-09-12',
+ 'lieu_naissance' => 'Breton',
+ 'pseudo_adh' => 'louis.pruvost',
+ 'pays_adh' => null,
+ 'tel_adh' => '+33 (0)6 80 24 46 58',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-08-09',
+ 'pref_lang' => 'br',
+ 'fingerprint' => 'FAKER_9',
+ )
+ );
+ }
+
+ /**
+ * Get second set of member data
+ * two lines without name.
+ *
+ * @return array
+ */
+ private function getMemberData2()
+ {
+ return array (
+ 'FAKER_0' => array (
+ 'nom_adh' => 'Goncalves',
+ 'prenom_adh' => 'Margot',
+ 'ville_adh' => 'Alves',
+ 'cp_adh' => '76254',
+ 'adresse_adh' => '43, impasse Maurice Imbert',
+ 'email_adh' => 'guillou.richard@yahoo.fr',
+ 'login_adh' => 'suzanne.mathieu',
+ 'mdp_adh' => 'Thihk2z0',
+ 'mdp_adh2' => 'Thihk2z0',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Cueilleur de cerises',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2020-04-24',
+ 'lieu_naissance' => 'Poulain-les-Bains',
+ 'pseudo_adh' => 'olivier.roux',
+ 'pays_adh' => 'République Dominicaine',
+ 'tel_adh' => '08 95 04 73 14',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-07-31',
+ 'pref_lang' => 'ca',
+ 'fingerprint' => 'FAKER_0',
+ ),
+ 'FAKER_1' => array (
+ 'nom_adh' => 'Da Silva',
+ 'prenom_adh' => 'Augustin',
+ 'ville_adh' => 'Perrin-sur-Masson',
+ 'cp_adh' => '31519',
+ 'adresse_adh' => '154, place Boulay',
+ 'email_adh' => 'marc60@moreno.fr',
+ 'login_adh' => 'hoarau.maryse',
+ 'mdp_adh' => '\\9Si%r/FAmz.HE4!{Q\\',
+ 'mdp_adh2' => '\\9Si%r/FAmz.HE4!{Q\\',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Séismologue',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1988-06-26',
+ 'lieu_naissance' => 'Martel',
+ 'pseudo_adh' => 'hchevalier',
+ 'pays_adh' => 'Kiribati',
+ 'tel_adh' => '04 55 49 80 92',
+ 'url_adh' => 'http://www.leblanc.com/nemo-non-rerum-commodi-sequi-ut',
+ 'activite_adh' => true,
+ 'id_statut' => 1,
+ 'date_crea_adh' => '2020-06-02',
+ 'pref_lang' => 'fr_FR',
+ 'fingerprint' => 'FAKER_1',
+ ),
+ 'FAKER_2' => array (
+ 'nom_adh' => 'Doe',
+ 'prenom_adh' => 'Laetitia',
+ 'ville_adh' => 'SimonBourg',
+ 'cp_adh' => '90351',
+ 'adresse_adh' => '147, chemin de Chauvet',
+ 'email_adh' => 'jean.joseph@pinto.fr',
+ 'login_adh' => 'marianne.bourgeois',
+ 'mdp_adh' => '[oT:"ExE',
+ 'mdp_adh2' => '[oT:"ExE',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 0,
+ 'prof_adh' => 'Porteur de hottes',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2010-03-13',
+ 'lieu_naissance' => 'Gallet',
+ 'pseudo_adh' => 'abarre',
+ 'pays_adh' => 'Kirghizistan',
+ 'tel_adh' => '07 47 63 11 31',
+ 'url_adh' => 'https://www.jacques.com/fuga-voluptatem-tenetur-rem-possimus',
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-10-28',
+ 'pref_lang' => 'ar',
+ 'fingerprint' => 'FAKER_2',
+ ),
+ 'FAKER_3' => array (
+ 'nom_adh' => 'Cordier',
+ 'prenom_adh' => 'Olivier',
+ 'ville_adh' => 'Lacroixboeuf',
+ 'cp_adh' => '58 787',
+ 'adresse_adh' => '77, place Gilbert Perrier',
+ 'email_adh' => 'adelaide07@yahoo.fr',
+ 'login_adh' => 'riou.sebastien',
+ 'mdp_adh' => '%"OC/UniE46',
+ 'mdp_adh2' => '%"OC/UniE46',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => false,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Oenologue',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2010-10-08',
+ 'lieu_naissance' => 'Leger',
+ 'pseudo_adh' => 'frederique.bernier',
+ 'pays_adh' => null,
+ 'tel_adh' => '+33 2 50 03 01 12',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-08-14',
+ 'pref_lang' => 'ar',
+ 'fingerprint' => 'FAKER_3',
+ ),
+ 'FAKER_4' => array (
+ 'nom_adh' => 'Robert',
+ 'prenom_adh' => 'Grégoire',
+ 'ville_adh' => 'Delannoy-sur-Mer',
+ 'cp_adh' => '41185',
+ 'adresse_adh' => '15, boulevard de Pierre',
+ 'email_adh' => 'normand.matthieu@orange.fr',
+ 'login_adh' => 'guilbert.louis',
+ 'mdp_adh' => 'y(,HodJF*j',
+ 'mdp_adh2' => 'y(,HodJF*j',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Mannequin détail',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1974-05-14',
+ 'lieu_naissance' => 'Barbe-sur-Laurent',
+ 'pseudo_adh' => 'stoussaint',
+ 'pays_adh' => 'Îles Mineures Éloignées des États-Unis',
+ 'tel_adh' => '+33 (0)1 30 50 01 54',
+ 'url_adh' => 'http://www.lemaitre.org/dolorum-recusandae-non-eum-non',
+ 'activite_adh' => true,
+ 'id_statut' => 3,
+ 'date_crea_adh' => '2018-12-05',
+ 'pref_lang' => 'it_IT',
+ 'fingerprint' => 'FAKER_4',
+ 'societe_adh' => 'Chretien Martineau S.A.',
+ 'is_company' => true,
+ ),
+ 'FAKER_5' => array (
+ 'nom_adh' => 'Doe',
+ 'prenom_adh' => 'Charles',
+ 'ville_adh' => 'Charpentier-sur-Lebrun',
+ 'cp_adh' => '99129',
+ 'adresse_adh' => '817, chemin de Bonnin',
+ 'email_adh' => 'guillou.augustin@live.com',
+ 'login_adh' => 'dominique80',
+ 'mdp_adh' => '~g??E0HE$A>2"e*C7+Kw',
+ 'mdp_adh2' => '~g??E0HE$A>2"e*C7+Kw',
+ 'bool_admin_adh' => true,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 0,
+ 'prof_adh' => 'Commandant de police',
+ 'titre_adh' => null,
+ 'ddn_adh' => '2007-03-26',
+ 'lieu_naissance' => 'Boutin',
+ 'pseudo_adh' => 'virginie.jacquet',
+ 'pays_adh' => null,
+ 'tel_adh' => '0393209420',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2018-02-17',
+ 'pref_lang' => 'fr_FR',
+ 'fingerprint' => 'FAKER_5',
+ ),
+ 'FAKER_6' => array (
+ 'nom_adh' => 'Thierry',
+ 'prenom_adh' => 'Louis',
+ 'ville_adh' => 'Henry',
+ 'cp_adh' => '98 144',
+ 'adresse_adh' => '383, avenue Éléonore Bouchet',
+ 'email_adh' => 'bernard.elodie@orange.fr',
+ 'login_adh' => 'ubreton',
+ 'mdp_adh' => 'lTBT@,hsE`co?C2=',
+ 'mdp_adh2' => 'lTBT@,hsE`co?C2=',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => false,
+ 'sexe_adh' => 2,
+ 'prof_adh' => 'Endocrinologue',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1994-07-19',
+ 'lieu_naissance' => 'Pagesdan',
+ 'pseudo_adh' => 'diallo.sebastien',
+ 'pays_adh' => null,
+ 'tel_adh' => '+33 5 72 28 24 81',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-03-16',
+ 'pref_lang' => 'en_US',
+ 'fingerprint' => 'FAKER_6',
+ ),
+ 'FAKER_7' => array (
+ 'nom_adh' => 'Delattre',
+ 'prenom_adh' => 'Susanne',
+ 'ville_adh' => 'Roche-les-Bains',
+ 'cp_adh' => '37 104',
+ 'adresse_adh' => '44, rue Suzanne Guilbert',
+ 'email_adh' => 'tmartel@wanadoo.fr',
+ 'login_adh' => 'lebreton.alexandre',
+ 'mdp_adh' => '{(3mCWC7[YL]n',
+ 'mdp_adh2' => '{(3mCWC7[YL]n',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 0,
+ 'prof_adh' => 'Gérant d\'hôtel',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1914-05-16',
+ 'lieu_naissance' => 'Traore',
+ 'pseudo_adh' => 'helene59',
+ 'pays_adh' => null,
+ 'tel_adh' => '0383453389',
+ 'url_adh' => 'http://www.lesage.com/et-aperiam-labore-est-libero-voluptatem.html',
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-02-03',
+ 'pref_lang' => 'oc',
+ 'fingerprint' => 'FAKER_7',
+ ),
+ 'FAKER_8' => array (
+ 'nom_adh' => 'Peltier',
+ 'prenom_adh' => 'Inès',
+ 'ville_adh' => 'Thierry-sur-Carre',
+ 'cp_adh' => '80690',
+ 'adresse_adh' => '43, impasse Texier',
+ 'email_adh' => 'qdubois@mendes.fr',
+ 'login_adh' => 'julie.carlier',
+ 'mdp_adh' => '.ATai-E6%LIxE{',
+ 'mdp_adh2' => '.ATai-E6%LIxE{',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Gynécologue',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1988-05-29',
+ 'lieu_naissance' => 'Dijoux-sur-Michaud',
+ 'pseudo_adh' => 'wpierre',
+ 'pays_adh' => null,
+ 'tel_adh' => '01 32 14 47 74',
+ 'url_adh' => null,
+ 'activite_adh' => true,
+ 'id_statut' => 9,
+ 'date_crea_adh' => '2020-03-28',
+ 'pref_lang' => 'ar',
+ 'fingerprint' => 'FAKER_8',
+ ),
+ 'FAKER_9' => array (
+ 'nom_adh' => 'Marchand',
+ 'prenom_adh' => 'Audrey',
+ 'ville_adh' => 'Lenoirdan',
+ 'cp_adh' => '06494',
+ 'adresse_adh' => '438, place de Carre',
+ 'email_adh' => 'luc42@yahoo.fr',
+ 'login_adh' => 'margot.bousquet',
+ 'mdp_adh' => 'FH,q5udclwM(',
+ 'mdp_adh2' => 'FH,q5udclwM(',
+ 'bool_admin_adh' => false,
+ 'bool_exempt_adh' => false,
+ 'bool_display_info' => true,
+ 'sexe_adh' => 1,
+ 'prof_adh' => 'Convoyeur garde',
+ 'titre_adh' => null,
+ 'ddn_adh' => '1977-09-02',
+ 'lieu_naissance' => 'Arnaud-sur-Antoine',
+ 'pseudo_adh' => 'gerard66',
+ 'pays_adh' => null,
+ 'tel_adh' => '+33 1 46 04 81 87',
+ 'url_adh' => 'http://www.thierry.com/',
+ 'activite_adh' => true,
+ 'id_statut' => 5,
+ 'date_crea_adh' => '2019-05-16',
+ 'pref_lang' => 'fr_FR',
+ 'fingerprint' => 'FAKER_9',
+ )
+ );
+ }
+
+ /**
+ * Get second set of member data but two lines without name.
+ *
+ * @return array
+ */
+ private function getMemberData2NoName()
+ {
+ $data = $this->getMemberData2();
+ $data['FAKER_2']['nom_adh'] = '';
+ $data['FAKER_5']['nom_adh'] = '';
+ return $data;
+ }
}