cs: Fix code style (safe rules only).

This commit is contained in:
Pol Dellaiera
2021-11-23 14:06:38 +01:00
parent 149d7ce991
commit 8f96a1121d
1223 changed files with 65199 additions and 64625 deletions

View File

@@ -1,56 +1,48 @@
<?php
/*
/**
* Chill is a software for social workers
* Copyright (C) 2014 Champs-Libres Coopérative <info@champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\CustomFieldsBundle\Command;
use Chill\CustomFieldsBundle\Entity\CustomField;
use Chill\CustomFieldsBundle\Entity\CustomFieldsGroup;
use Chill\CustomFieldsBundle\Service\CustomFieldProvider;
use Doctrine\ORM\EntityManager;
use RuntimeException;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Chill\CustomFieldsBundle\Entity\CustomFieldsGroup;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\Yaml\Parser;
use Symfony\Component\Yaml\Exception\ParseException;
use Chill\CustomFieldsBundle\Entity\CustomField;
use Symfony\Component\Yaml\Parser;
/**
* Class for the command 'chill:custom_fields:populate_group' that
* Create custom fields from a yml file
*
* @author Julien Fastré <julien.fastre@champs-libres.coop>
* @author Marc Ducobu <marc.ducobu@champs-libres.coop>
* Create custom fields from a yml file.
*/
class CreateFieldsOnGroupCommand extends Command
{
const ARG_PATH = 'path';
const ARG_DELETE = 'delete';
public const ARG_DELETE = 'delete';
public const ARG_PATH = 'path';
private $availableLanguages;
/**
* @var CustomFieldProvider
*/
private $customFieldProvider;
private $customizablesEntities;
/**
* @var EntityManager
*/
@@ -61,15 +53,9 @@ class CreateFieldsOnGroupCommand extends Command
*/
private $validator;
private $availableLanguages;
private $customizablesEntities;
/**
* CreateFieldsOnGroupCommand constructor.
*
* @param CustomFieldProvider $customFieldProvider
* @param EntityManager $entityManager
* @param ValidatorInterface $validator
* @param $availableLanguages
* @param $customizablesEntities
*/
@@ -92,14 +78,21 @@ class CreateFieldsOnGroupCommand extends Command
{
$this->setName('chill:custom_fields:populate_group')
->setDescription('Create custom fields from a yml file')
->addArgument(self::ARG_PATH, InputOption::VALUE_REQUIRED,
'Path to description file')
->addOption(self::ARG_DELETE, null, InputOption::VALUE_NONE,
'If set, delete existing fields');
->addArgument(
self::ARG_PATH,
InputOption::VALUE_REQUIRED,
'Path to description file'
)
->addOption(
self::ARG_DELETE,
null,
InputOption::VALUE_NONE,
'If set, delete existing fields'
);
}
/**
* Delete the existing custom fields for a given customFieldGroup
* Delete the existing custom fields for a given customFieldGroup.
*
* @param CustomFieldsGroup $customFieldsGroup : The custom field group
*/
@@ -113,9 +106,7 @@ class CreateFieldsOnGroupCommand extends Command
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return int|null|void
* @return int|void|null
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
@@ -139,108 +130,62 @@ class CreateFieldsOnGroupCommand extends Command
$this->availableLanguages
))
->setRows($this->_prepareRows($customFieldsGroups))
->render()
;
->render();
$question = new Question(
"Enter the customfieldGroup's id on which the custom fields should be added: ");
"Enter the customfieldGroup's id on which the custom fields should be added: "
);
$question->setNormalizer(
function($answer) use ($customFieldsGroups) {
function ($answer) use ($customFieldsGroups) {
foreach ($customFieldsGroups as $customFieldsGroup) {
if ($answer == $customFieldsGroup->getId()) {
if ($customFieldsGroup->getId() == $answer) {
return $customFieldsGroup;
}
}
throw new \RuntimeException('The id does not match an existing CustomFieldsGroup');
throw new RuntimeException('The id does not match an existing CustomFieldsGroup');
}
);
$customFieldsGroup = $helper->ask($input, $output, $question);
if ($input->getOption(self::ARG_DELETE)) {
$this->deleteFieldsForCFGroup($customFieldsGroup);
}
$fieldsInput = $this->_parse($input->getArgument(self::ARG_PATH),
$output);
$fieldsInput = $this->_parse(
$input->getArgument(self::ARG_PATH),
$output
);
$fields = $this->_addFields($customFieldsGroup, $fieldsInput, $output);
}
private function _prepareRows ($customFieldsGroups)
{
$rows = array();
$languages = $this->availableLanguages;
//gather entitites and create an array to access them easily
$customizableEntities = array();
foreach ($this->customizablesEntities as $entry) {
$customizableEntities[$entry['class']] = $entry['name'];
}
array_walk($customFieldsGroups,
function(CustomFieldsGroup $customFieldGroup, $key)
use ($languages, &$rows, $customizableEntities) {
//set id and entity
$row = array(
$customFieldGroup->getId(),
$customizableEntities[$customFieldGroup->getEntity()]
);
foreach ($languages as $lang) {
//todo replace with service to find lang when available
$row[] = (isset($customFieldGroup->getName()[$lang])) ?
$customFieldGroup->getName()[$lang] :
'Not available in this language';
}
$rows[] = $row;
}
);
return $rows;
}
private function _parse($path, OutputInterface $output)
{
$parser = new Parser();
if (!file_exists($path)) {
throw new \RuntimeException("file does not exist");
}
try {
$values = $parser->parse(file_get_contents($path));
} catch (ParseException $ex) {
throw new \RuntimeException("The yaml file is not valid", 0, $ex);
}
return $values;
}
private function _addFields(CustomFieldsGroup $group, $values, OutputInterface $output)
{
$em = $this->entityManager;
$languages = $this->availableLanguages;
foreach($values['fields'] as $slug => $field) {
foreach ($values['fields'] as $slug => $field) {
//check the cf type exists
$cfType = $this->customFieldProvider->getCustomFieldByType($field['type']);
if ($cfType === NULL) {
throw new \RuntimeException('the type '.$field['type'].' '
if (null === $cfType) {
throw new RuntimeException('the type ' . $field['type'] . ' '
. 'does not exists');
}
$cf = new CustomField();
$cf->setSlug($slug)
->setName($field['name'])
->setOptions(isset($field['options']) ? $field['options'] : array() )
->setOptions($field['options'] ?? [])
->setOrdering($field['ordering'])
->setType($field['type'])
->setCustomFieldsGroup($group);
//add to table
$names = array();
$names = [];
foreach ($languages as $lang) {
//todo replace with service to find lang when available
$names[] = (isset($cf->getName()[$lang])) ?
@@ -250,14 +195,64 @@ class CreateFieldsOnGroupCommand extends Command
if ($this->validator->validate($cf)) {
$em->persist($cf);
$output->writeln("<info>Adding Custom Field of type "
.$cf->getType()."\t with slug ".$cf->getSlug().
"\t and names : ".implode($names, ', ')."</info>");
$output->writeln('<info>Adding Custom Field of type '
. $cf->getType() . "\t with slug " . $cf->getSlug() .
"\t and names : " . implode($names, ', ') . '</info>');
} else {
throw new \RuntimeException("Error in field ".$slug);
throw new RuntimeException('Error in field ' . $slug);
}
}
$em->flush();
}
private function _parse($path, OutputInterface $output)
{
$parser = new Parser();
if (!file_exists($path)) {
throw new RuntimeException('file does not exist');
}
try {
$values = $parser->parse(file_get_contents($path));
} catch (ParseException $ex) {
throw new RuntimeException('The yaml file is not valid', 0, $ex);
}
return $values;
}
private function _prepareRows($customFieldsGroups)
{
$rows = [];
$languages = $this->availableLanguages;
//gather entitites and create an array to access them easily
$customizableEntities = [];
foreach ($this->customizablesEntities as $entry) {
$customizableEntities[$entry['class']] = $entry['name'];
}
array_walk(
$customFieldsGroups,
function (CustomFieldsGroup $customFieldGroup, $key) use ($languages, &$rows, $customizableEntities) {
//set id and entity
$row = [
$customFieldGroup->getId(),
$customizableEntities[$customFieldGroup->getEntity()],
];
foreach ($languages as $lang) {
//todo replace with service to find lang when available
$row[] = (isset($customFieldGroup->getName()[$lang])) ?
$customFieldGroup->getName()[$lang] :
'Not available in this language';
}
$rows[] = $row;
}
);
return $rows;
}
}