Esempio n. 1
0
 /**
  * @param object $entity
  * @param string[] $values
  * @param int $curValueIndex
  *
  * @return array|mixed|string
  */
 private static function getObject($entity, $values, $curValueIndex)
 {
     try {
         $obj = ObjectMixin::get($entity, $values[$curValueIndex]);
     } catch (MemberAccessException $ex) {
         $obj = '';
     }
     if ($curValueIndex === count($values) - 1) {
         return $curValueIndex ? [$values[$curValueIndex] => $obj] : $obj;
     } elseif ($obj instanceof PersistentCollection) {
         $items = [];
         foreach ($obj as $item) {
             if ($curValueIndex === 0) {
                 $items[] = self::getObject($item, $values, $curValueIndex + 1);
             } else {
                 $items[$values[$curValueIndex]][] = self::getObject($item, $values, $curValueIndex + 1);
             }
         }
         return $items;
     } elseif (is_object($obj)) {
         if ($curValueIndex === 0) {
             return self::getObject($obj, $values, $curValueIndex + 1);
         } else {
             return [$values[$curValueIndex] => self::getObject($obj, $values, $curValueIndex + 1)];
         }
     } else {
         if ($curValueIndex === 0) {
             return self::getObject($obj, $values, $curValueIndex + 1);
         } else {
             return [$values[$curValueIndex] => self::getObject($obj, $values, $curValueIndex + 1)];
         }
     }
 }
Esempio n. 2
0
 /**
  * @param object $entity
  * @param array $values
  * @param int $curValueIndex
  * @param BaseGrid $grid
  * @return mixed|string
  */
 private function getObject($entity, $values, $curValueIndex, BaseGrid $grid)
 {
     try {
         $obj = ObjectMixin::get($entity, $values[$curValueIndex]);
     } catch (MemberAccessException $ex) {
         $obj = '';
     }
     $currentColumnPart = implode('.', array_slice($values, 0, $curValueIndex + 1));
     $filter = $grid->getColumnFormat($currentColumnPart);
     $filteredObj = $obj;
     if (!empty($filter)) {
         $filter = $this->getFilter($filter);
         $filteredObj = $filter->process($obj, ['column' => str_replace('.', '_', $currentColumnPart), 'entity' => $entity, 'grid' => $grid]);
     }
     /** @var FilterInterface[] $filters */
     $filters = $this->getGlobalFilters();
     if ($filteredObj === $obj) {
         foreach ($filters as $filter) {
             $filteredObj = $filter->process($obj, ['column' => str_replace('.', '_', $currentColumnPart), 'entity' => $entity, 'grid' => $grid]);
         }
     }
     if ($filteredObj !== $obj) {
         return $curValueIndex ? [$values[$curValueIndex] => $filteredObj] : $filteredObj;
     } else {
         $obj = $filteredObj;
     }
     if ($curValueIndex === count($values) - 1) {
         return $curValueIndex ? [$values[$curValueIndex] => $obj] : $obj;
     } elseif ($obj instanceof PersistentCollection) {
         $items = [];
         foreach ($obj as $item) {
             if ($curValueIndex === 0) {
                 $items[] = $this->getObject($item, $values, $curValueIndex + 1, $grid);
             } else {
                 $items[$values[$curValueIndex]][] = $this->getObject($item, $values, $curValueIndex + 1, $grid);
             }
         }
         return $items;
     } elseif (is_object($obj)) {
         if ($curValueIndex === 0) {
             return $this->getObject($obj, $values, $curValueIndex + 1, $grid);
         } else {
             return [$values[$curValueIndex] => $this->getObject($obj, $values, $curValueIndex + 1, $grid)];
         }
     } else {
         if ($curValueIndex === 0) {
             return $this->getObject($obj, $values, $curValueIndex + 1, $grid);
         } else {
             return [$values[$curValueIndex] => $this->getObject($obj, $values, $curValueIndex + 1, $grid)];
         }
     }
 }