Skip to content

Commit

Permalink
scrutinizer code quality fix #4
Browse files Browse the repository at this point in the history
  • Loading branch information
sadikoff committed Dec 22, 2017
1 parent 876e5c6 commit fac271e
Showing 1 changed file with 23 additions and 21 deletions.
44 changes: 23 additions & 21 deletions src/Form/Manipulator/DefaultManipulator.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
use Doctrine\Common\Util\ClassUtils;
use Symfony\Component\Form\FormInterface;

/**
* Class DefaultManipulator
*
* @author David ALLIX
* @author Sadicov Vladimir <sadikoff@gmail.com>
*/
class DefaultManipulator implements FormManipulatorInterface
{
/** @var ObjectInfoInterface */
Expand Down Expand Up @@ -34,20 +40,15 @@ public function getFieldsConfig(FormInterface $form)
$formFields = $formOptions['fields'];

$objectFields = $this->objectInfo->getFieldsConfig($class);
$objectFields = $this->filteringUsuableFields($objectFields, $formOptions['excluded_fields']);
$objectFields = $this->filterObjectFields($objectFields, $formOptions['excluded_fields']);

if (empty($formFields)) {
if (!empty($formFields)) {
return $objectFields;
}

$this->checkUnknownFields(array_keys($formFields), array_keys($objectFields), $class);
$this->checkUnknownFields($formFields, $objectFields, $class);

$fieldsConfig = array_filter(
$formFields,
function ($v) {
return !(null === $v || (array_key_exists('display', $v) && !$v['display']));
}
);
$fieldsConfig = $this->filterFields($formFields);

array_walk(
$fieldsConfig,
Expand All @@ -69,7 +70,7 @@ function (&$v, $k, $d) {
*/
private function checkUnknownFields($formFields, $objectFields, $class)
{
$unknowsFields = array_diff($formFields, $objectFields);
$unknowsFields = array_diff_key($formFields, $objectFields);
if (!empty($unknowsFields)) {
throw new \RuntimeException(
sprintf("Field(s) '%s' doesn't exist in %s", implode(', ', $unknowsFields), $class)
Expand Down Expand Up @@ -106,19 +107,20 @@ private function getDataClass(FormInterface $form)
*
* @return array
*/
private function filteringUsuableFields(array $objectFieldsConfig, array $formExcludedFields)
private function filterObjectFields(array $objectFieldsConfig, array $formExcludedFields)
{
$excludedFields = array_merge($this->globalExcludedFields, $formExcludedFields);

$usualableFields = [];
foreach ($objectFieldsConfig as $fieldName => $fieldConfig) {
if (in_array($fieldName, $excludedFields, true)) {
continue;
}
$excludedFields = array_fill_keys(array_merge($this->globalExcludedFields, $formExcludedFields), []);

$usualableFields[$fieldName] = $fieldConfig;
}
return array_diff_key($objectFieldsConfig, $excludedFields);
}

return $usualableFields;
private function filterFields($fields)
{
return array_filter(
$fields,
function ($v) {
return !(null === $v || (array_key_exists('display', $v) && !$v['display']));
}
);
}
}

0 comments on commit fac271e

Please sign in to comment.