Exemplo n.º 1
0
 /**
  * Search all frames containing the type of the resource updated and verify that frame properties contain the resource properties updated
  * @param $frame
  * @param $resourceType
  * @param $propertiesUpdated
  * @param null $parentProperty
  * @return array
  */
 protected function getResourceTypesIndexingPropertiesOfRootResourceType($frame, $resourceType, $propertiesUpdated, $parentProperty = null)
 {
     $pathToResourceType = array();
     foreach ($frame as $key => $value) {
         if ($key === "@type" && $value === $resourceType) {
             foreach ($this->serializerHelper->getProperties($frame) as $property) {
                 if (in_array($property, $propertiesUpdated)) {
                     $pathToResourceType[$parentProperty]['type'] = $value;
                     $pathToResourceType[$parentProperty]['properties'][] = $property;
                 }
             }
         } else {
             if (is_array($value)) {
                 $subTypes = $this->getResourceTypesIndexingPropertiesOfRootResourceType($value, $resourceType, $propertiesUpdated, $key);
                 if (!empty($subTypes)) {
                     // no parentProperty for first passage in the function
                     if ($parentProperty) {
                         $pathToResourceType[$parentProperty]['resources'] = $subTypes;
                     } else {
                         $pathToResourceType['resources'] = $subTypes;
                     }
                 }
             }
         }
     }
     return $pathToResourceType;
 }