1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- declare(strict_types=1);
- /**
- * @package Grav\Common\Flex
- *
- * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
- * @license MIT License; see LICENSE file for details.
- */
- namespace Grav\Common\Flex;
- use Grav\Common\Flex\Traits\FlexGravTrait;
- use Grav\Common\Flex\Traits\FlexObjectTrait;
- use Grav\Common\Media\Interfaces\MediaInterface;
- use Grav\Framework\Flex\Traits\FlexMediaTrait;
- use function is_array;
- /**
- * Class FlexObject
- *
- * @package Grav\Common\Flex
- */
- abstract class FlexObject extends \Grav\Framework\Flex\FlexObject implements MediaInterface
- {
- use FlexGravTrait;
- use FlexObjectTrait;
- use FlexMediaTrait;
- /**
- * {@inheritdoc}
- * @see FlexObjectInterface::getFormValue()
- */
- public function getFormValue(string $name, $default = null, string $separator = null)
- {
- $value = $this->getNestedProperty($name, null, $separator);
- // Handle media order field.
- if (null === $value && $name === 'media_order') {
- return implode(',', $this->getMediaOrder());
- }
- // Handle media fields.
- $settings = $this->getFieldSettings($name);
- if (($settings['media_field'] ?? false) === true) {
- return $this->parseFileProperty($value, $settings);
- }
- return $value ?? $default;
- }
- /**
- * {@inheritdoc}
- * @see FlexObjectInterface::prepareStorage()
- */
- public function prepareStorage(): array
- {
- // Remove extra content from media fields.
- $fields = $this->getMediaFields();
- foreach ($fields as $field) {
- $data = $this->getNestedProperty($field);
- if (is_array($data)) {
- foreach ($data as $name => &$image) {
- unset($image['image_url'], $image['thumb_url']);
- }
- unset($image);
- $this->setNestedProperty($field, $data);
- }
- }
- return parent::prepareStorage();
- }
- }
|