Commit a9f43245 authored by Julien Fastré's avatar Julien Fastré
Browse files

Adapt countries to add country code, create command to populate or update...

Adapt countries to add country code, create command to populate or update countries and translate countries to chill_main.available languages. Fix #317 and fix #316

The LoadCountries Data fixtures are also updated. Both Command and DataFixtures/ORM/LoadCountries use the same static function.

[ci skip]
parent e9da6412
<?php
namespace Chill\MainBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Intl\Intl;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
*
* @author Julien Fastré <julien.fastre@champs-libres.coop
*
*/
class LoadCountriesCommand extends ContainerAwareCommand
{
/*
* (non-PHPdoc)
* @see \Symfony\Component\Console\Command\Command::configure()
*/
protected function configure()
{
$this->setName('chill:main:countries:populate')
->setDescription('Load or update countries in db. This command does not delete existing countries, '.
'but will update names according to available languages');
}
/*
* (non-PHPdoc)
* @see \Symfony\Component\Console\Command\Command::execute()
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$countries = static::prepareCountryList($this->getContainer()->getParameter('chill_main.available_languages'));
$em = $this->getContainer()->get('doctrine.orm.entity_manager');
foreach($countries as $country) {
$countryStored = $em->getRepository('ChillMainBundle:Country')
->findOneBy(array('countryCode' => $country->getCountryCode()));
if (NULL === $countryStored) {
$em->persist($country);
} else {
$countryStored->setName($country->getName());
}
}
$em->flush();
}
public static function prepareCountryList($languages)
{
$regionBundle = Intl::getRegionBundle();
foreach ($languages as $language) {
$countries[$language] = $regionBundle->getCountryNames($language);
}
$countryEntities = array();
foreach ($countries[$languages[0]] as $countryCode => $name) {
$names = array();
foreach ($languages as $language) {
$names[$language] = $countries[$language][$countryCode];
}
$country = new \Chill\MainBundle\Entity\Country();
$country->setName($names)->setCountryCode($countryCode);
$countryEntities[] = $country;
}
return $countryEntities;
}
}
......@@ -4,15 +4,28 @@ namespace Chill\MainBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Acme\HelloBundle\Entity\UserGroup;
use Chill\MainBundle\Command\LoadCountriesCommand;
/**
* Load countries into database
*
* @author Julien Fastré <julien arobase fastre point info>
*/
class LoadCountries extends AbstractFixture {
class LoadCountries extends AbstractFixture implements ContainerAwareInterface {
/**
*
* @var ContainerInterface
*/
private $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
public function getOrder() {
return 1001;
......@@ -22,247 +35,14 @@ class LoadCountries extends AbstractFixture {
echo "loading countries... \n";
foreach ($this->countries as $code => $name) {
$country = new \Chill\MainBundle\Entity\Country();
$country->setLabel(ucwords($name));
$languages = $this->container->getParameter('chill_main.available_languages');
foreach (LoadCountriesCommand::prepareCountryList($languages) as $country){
$manager->persist($country);
}
$manager->flush();
}
public $countries = array(
"ad" => "andorre",
"ae" => "emirats arabes unis",
"af" => "afghanistan",
"ag" => "antigua-et-barbuda",
"ai" => "anguilla",
"al" => "albanie",
"am" => "arménie",
"an" => "antilles",
"ao" => "angola",
"aq" => "antarctique",
"ar" => "argentine",
"as" => "samoa américaines",
"at" => "autriche",
"au" => "australie",
"aw" => "aruba",
"az" => "azerbaïdjan",
"ba" => "bosnie-herzégovine",
"bb" => "barbade",
"bd" => "bangladesh",
"be" => "belgique",
"bg" => "bulgarie",
"bh" => "bahreïn",
"bi" => "burundi",
"bj" => "bénin ",
"bm" => "bermudes",
"bn" => "brunei darussalam",
"bo" => "bolivie",
"br" => "brésil",
"bs" => "bahamas",
"bt" => "bhoutan",
"bw" => "botswana",
"by" => "biélorussie",
"bz" => "belize",
"kh"=>"cambodge",
"ca" => "canada",
"cc" => "iles cocos",
"cd" => "république démocratique du congo",
"cf" => "république centrafricaine",
"cg" => "congo",
"ch" => "suisse",
"ci" => "côte d'ivoire",
"ck" => "iles cook",
"cl" => "chili",
"cm" => "cameroun",
"cn" => "chine",
"co" => "colombie",
"cr" => "costa rica","cu" => "cuba",
"cv" => "cap-vert",
"cx" => "ile christmas",
"cy" => "chypre",
"cz" => "république tchèque",
"de" => "allemagne",
"dj" => "djibouti",
"dk" => "danemark",
"dm" => "dominique",
"do" => "république dominicaine",
"dz" => "algérie",
"ec" => "equateur",
"ee" => "estonie",
"eg" => "egypte",
"eh" => "sahara occidental",
"er" => "erythrée",
"es" => "espagne",
"et" => "ethiopie",
"fi" => "finlande",
"fj" => "fidji",
"fk" => "iles falklands",
"fm" => "micronésie",
"fo" => "ile feroe",
"fr" => "france",
"ga" => "gabon",
"gd" => "grenade",
"ge" => "géorgie",
"gf" => "guyane française",
"gh" => "ghana",
"gi" => "gibraltar",
"gl" => "groënland",
"gq"=>"guinée équatoriale",
"gm" => "gambie",
"gn" => "guinée",
"gp" => "guadeloupe",
"gr" => "grèce",
"gt" => "guatemala",
"gu" => "guam",
"gw" => "guinée-bissao",
"gy" => "guyane",
"hk" => "hong kong",
"hn" => "honduras",
"hr" => "croatie",
"ht" => "haïti",
"hu" => "hongrie",
"id" => "indonésie",
"ie" => "irlande",
"il" => "israël",
"in" => "inde",
"iq" => "iraq",
"ir" => "iran",
"is" => "islande",
"it" => "italie",
"jm" => "jamaïque",
"jo" => "jordanie",
"jp" => "japon",
"ke" => "kenya",
"kg" => "kirghistan",
"bf" => "burkina faso",
"ki" => "kiribati",
"km" => "république comorienne",
"kn" => "saint-christophe-et-niévès",
"kp" => "corée du nord",
"kr" => "corée du sud",
"kw" => "koweït",
"ky" => "iles caïmans",
"kz" => "kazakhstan",
"la" => "laos",
"lb" => "liban",
"lc" => "sainte-lucie",
"li" => "liechtenstein",
"lk" => "sri lanka",
"lr" => "libéria",
"ls" => "lesotho",
"lt" => "lituanie",
"lu" => "luxembourg",
"lv" => "lettonie",
"ly" => "libye",
"ma" => "maroc",
"mc" => "monaco",
"md" => "moldavie",
"mg" => "madagascar",
"ml"=>"mali",
"mh" => "marshall",
"mk" => "macédoine","mm"=>"myanmar",
"mq"=>"martinique",
"mn" => "mongolie",
"mo" => "makau",
"mp" => "ile mariana du nord",
"mr" => "mauritanie",
"ms" => "monteserrat",
"mu" => "maurice",
"mt"=>"malte",
"mv" => "maldives",
"mw" => "malawi",
"mx" => "mexique west",
"my" => "malaisie",
"mz" => "mozambique",
"na" => "namibie",
"nc" => "nouvelle-calédonie",
"ne" => "niger",
"nf" => "ile de norfolk",
"ng" => "nigeria",
"ni" => "nicaragua",
"nl" => "pays-bas",
"no" => "norvège",
"np" => "népal",
"nr" => "nauru",
"nu" => "niue",
"nz" => "nouvelle-zélande",
"om" => "oman",
"pa" => "panama",
"pe" => "pérou",
"pf" => "polynésie française",
"pg" => "papouasie - nouvelle guinée",
"ph" => "philippines",
"pk" => "pakistan",
"pl" => "pologne",
"pm" => "st. pierre and miquelon",
"pn" => "pitcairn",
"pr" => "porto rico",
"ps" => "palestine",
"pt" => "portugal",
"pw" => "palau",
"py" => "paraguay",
"qa" => "qatar",
"re" => "réunion",
"ro" => "roumanie",
"ru" => "fédération russe",
"rw" => "rwanda",
"sa" => "arabie saoudite",
"sb" => "iles salomon",
"sc" => "seychelles",
"sd" => "soudan",
"se" => "suède",
"sg" => "singapour",
"sh" => "saint hélène",
"si" => "slovénie",
"sk" => "slovaquie",
"sl" => "sierra leone",
"sm" => "saint-marin",
"sn" => "sénégal",
"so" => "somalie",
"sr" => "suriname",
"st" => "sao tomé-et-principe",
"sv" => "salvador",
"sy" => "syrie",
"sz" => "swaziland",
"tc" => "turks et caicos",
"td" => "république du tchad",
"tg" => "togo",
"th" => "thaïlande",
"tj" => "tchétchénie",
"tk" => "iles tokelau",
"tm" => "turkménistan",
"tn" => "tunisie",
"to" => "tonga",
"tp" => "timor-oriental",
"tr" => "turquie",
"tt" => "trinité-et-tobago",
"tv" => "tuvalu",
"tw" => "taiwan",
"tz" => "tanzanie",
"ua" => "ukraine",
"ug" => "ouganda",
"gb" => "royaume-uni",
"us" => "etats unis d'amérique",
"uy" => "uruguay",
"uz" => "ousbékistan",
"va" => "vatican",
"vc" => "saint-vincent-et-les grenadines",
"ve" => "vénézuela",
"vg" => "iles vierges américaines",
"vi" => "iles vierges britanniques ",
"vn" => "viêt-nam",
"vu" => "vanuatu",
"wf" => "wallis et futuna",
"ws" => "samoa occidentales",
"ye" => "yémen",
"yt" => "mayotte",
"yu" => "yougoslavie",
"za" => "afrique du sud",
"zm" => "zambie",
"zw" => "zimbabwe"
);
}
......@@ -17,7 +17,13 @@ class Country
/**
* @var string
*/
private $label;
private $name;
/**
*
* @var string
*/
private $countryCode;
/**
......@@ -31,29 +37,51 @@ class Country
}
/**
* Set label
* Set name
*
* @param string $label
* @param string $name
* @return Country
*/
public function setLabel($label)
public function setName($name)
{
$this->label = $label;
$this->name = $name;
return $this;
}
/**
* Get label
* Get name
*
* @return string
*/
public function getLabel()
public function getName()
{
return $this->label;
return $this->name;
}
public function __toString() {
return $this->getLabel();
return $this->getName();
}
/**
*
* @return the string
*/
public function getCountryCode()
{
return $this->countryCode;
}
/**
*
* @param string $countryCode
*/
public function setCountryCode($countryCode)
{
$this->countryCode = $countryCode;
return $this;
}
}
......@@ -7,7 +7,9 @@ Chill\MainBundle\Entity\Country:
id: true
generator:
strategy: AUTO
label:
name:
type: json_array
countryCode:
type: string
length: 255
length: 3
lifecycleCallbacks: { }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment