Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var Context $context */
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $filters = $context->getFilters();
     if ($filters->has(self::FILTER_KEY)) {
         // filters have been already set
         return;
     }
     $fieldFilter = new FieldsFilter(DataType::STRING, self::FILTER_KEY_DESCRIPTION);
     $fieldFilter->setArrayAllowed(true);
     $filters->add(sprintf(self::FILTER_KEY_TEMPLATE, $this->entityClassTransformer->transform($entityClass)), $fieldFilter);
     $associations = $this->doctrineHelper->getEntityMetadata($entityClass)->getAssociationMappings();
     if (!$associations) {
         // no associations - no sense to add associations fields filters
         return;
     }
     $associationKeys = array_keys($associations);
     foreach ($associationKeys as $association) {
         $filters->add(sprintf(self::FILTER_KEY_TEMPLATE, $association), $fieldFilter);
     }
 }
Пример #2
0
 /**
  * @param string $entityClass
  * @param array  $fieldsDefinition
  * @param array  $filterFieldsConfig
  */
 protected function filterFields($entityClass, &$fieldsDefinition, &$filterFieldsConfig)
 {
     $entityAlias = $this->entityClassTransformer->transform($entityClass);
     $rootEntityIdentifiers = $this->doctrineHelper->getEntityIdentifierFieldNamesForClass($entityClass);
     if (array_key_exists($entityAlias, $filterFieldsConfig)) {
         $allowedFields = $filterFieldsConfig[$entityAlias];
         foreach ($fieldsDefinition as $name => &$def) {
             if (isset($def[ConfigUtil::DEFINITION][ConfigUtil::FIELDS]) && array_key_exists($name, $filterFieldsConfig)) {
                 continue;
             }
             if (!in_array($name, $allowedFields, true) && !in_array($name, $rootEntityIdentifiers, true) && !ConfigUtil::isMetadataProperty($name)) {
                 $def[ConfigUtil::DEFINITION][ConfigUtil::EXCLUDE] = true;
             }
         }
         unset($filterFieldsConfig[$entityAlias]);
     }
 }
 /**
  * @param string      $entityClass
  * @param string|null $fallbackEntityClass
  *
  * @return string
  */
 protected function getEntityType($entityClass, $fallbackEntityClass = null)
 {
     if (null === $fallbackEntityClass) {
         $entityType = $this->entityClassTransformer->transform($entityClass);
     } else {
         $entityType = $this->entityClassTransformer->transform($entityClass, false);
         if (!$entityType) {
             $entityType = $this->entityClassTransformer->transform($fallbackEntityClass);
         }
     }
     return $entityType;
 }