mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-15 05:53:13 +00:00
WIP RecordTransformer
This commit is contained in:
@@ -61,6 +61,7 @@ use Alchemy\Phrasea\Search\SearchResultView;
|
|||||||
use Alchemy\Phrasea\Search\StoryTransformer;
|
use Alchemy\Phrasea\Search\StoryTransformer;
|
||||||
use Alchemy\Phrasea\Search\StoryView;
|
use Alchemy\Phrasea\Search\StoryView;
|
||||||
use Alchemy\Phrasea\Search\SubdefTransformer;
|
use Alchemy\Phrasea\Search\SubdefTransformer;
|
||||||
|
use Alchemy\Phrasea\Search\TechnicalDataTransformer;
|
||||||
use Alchemy\Phrasea\Search\V1SearchCompositeResultTransformer;
|
use Alchemy\Phrasea\Search\V1SearchCompositeResultTransformer;
|
||||||
use Alchemy\Phrasea\Search\V1SearchRecordsResultTransformer;
|
use Alchemy\Phrasea\Search\V1SearchRecordsResultTransformer;
|
||||||
use Alchemy\Phrasea\Search\V1SearchResultTransformer;
|
use Alchemy\Phrasea\Search\V1SearchResultTransformer;
|
||||||
@@ -1051,8 +1052,9 @@ class V1Controller extends Controller
|
|||||||
|
|
||||||
$searchView = $this->buildSearchView($this->doSearch($request));
|
$searchView = $this->buildSearchView($this->doSearch($request));
|
||||||
|
|
||||||
$recordTransformer = new RecordTransformer();
|
$subdefTransformer = new SubdefTransformer();
|
||||||
$storyTransformer = new StoryTransformer(new SubdefTransformer(), $recordTransformer);
|
$recordTransformer = new RecordTransformer($subdefTransformer, new TechnicalDataTransformer());
|
||||||
|
$storyTransformer = new StoryTransformer($subdefTransformer, $recordTransformer);
|
||||||
$compositeTransformer = new V1SearchCompositeResultTransformer($recordTransformer, $storyTransformer);
|
$compositeTransformer = new V1SearchCompositeResultTransformer($recordTransformer, $storyTransformer);
|
||||||
$searchTransformer = new V1SearchResultTransformer($compositeTransformer);
|
$searchTransformer = new V1SearchResultTransformer($compositeTransformer);
|
||||||
|
|
||||||
@@ -1078,7 +1080,8 @@ class V1Controller extends Controller
|
|||||||
|
|
||||||
$searchView = $this->buildSearchRecordsView($this->doSearch($request));
|
$searchView = $this->buildSearchRecordsView($this->doSearch($request));
|
||||||
|
|
||||||
$searchTransformer = new V1SearchRecordsResultTransformer(new RecordTransformer());
|
$recordTransformer = new RecordTransformer(new SubdefTransformer(), new TechnicalDataTransformer());
|
||||||
|
$searchTransformer = new V1SearchRecordsResultTransformer($recordTransformer);
|
||||||
|
|
||||||
$ret = $fractal->createData(new Item($searchView, $searchTransformer))->toArray();
|
$ret = $fractal->createData(new Item($searchView, $searchTransformer))->toArray();
|
||||||
|
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
namespace Alchemy\Phrasea\Search;
|
namespace Alchemy\Phrasea\Search;
|
||||||
|
|
||||||
|
use Assert\Assertion;
|
||||||
|
|
||||||
class CaptionView
|
class CaptionView
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -17,6 +19,11 @@ class CaptionView
|
|||||||
*/
|
*/
|
||||||
private $caption;
|
private $caption;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var \caption_field[]
|
||||||
|
*/
|
||||||
|
private $fields = [];
|
||||||
|
|
||||||
public function __construct(\caption_record $caption)
|
public function __construct(\caption_record $caption)
|
||||||
{
|
{
|
||||||
$this->caption = $caption;
|
$this->caption = $caption;
|
||||||
@@ -29,4 +36,26 @@ class CaptionView
|
|||||||
{
|
{
|
||||||
return $this->caption;
|
return $this->caption;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \caption_field[] $fields
|
||||||
|
*/
|
||||||
|
public function setFields($fields)
|
||||||
|
{
|
||||||
|
Assertion::allIsInstanceOf($fields, \caption_field::class);
|
||||||
|
|
||||||
|
$this->fields = [];
|
||||||
|
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$this->fields[$field->get_name()] = $field;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \caption_field[]
|
||||||
|
*/
|
||||||
|
public function getFields()
|
||||||
|
{
|
||||||
|
return $this->fields;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -55,7 +55,9 @@ class RecordTransformer extends TransformerAbstract
|
|||||||
|
|
||||||
public function includeThumbnail(RecordView $recordView)
|
public function includeThumbnail(RecordView $recordView)
|
||||||
{
|
{
|
||||||
return $this->item($recordView->getSubdef('thumbnail'), $this->subdefTransformer);
|
$thumbnailView = $recordView->getSubdef('thumbnail');
|
||||||
|
|
||||||
|
return $thumbnailView ? $this->item($thumbnailView, $this->subdefTransformer) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function includeTechnicalInformations(RecordView $recordView)
|
public function includeTechnicalInformations(RecordView $recordView)
|
||||||
@@ -70,12 +72,13 @@ class RecordTransformer extends TransformerAbstract
|
|||||||
|
|
||||||
public function includeMetadata(RecordView $recordView)
|
public function includeMetadata(RecordView $recordView)
|
||||||
{
|
{
|
||||||
$ret = [];
|
$fieldData = [];
|
||||||
|
$values = [];
|
||||||
|
|
||||||
foreach ($recordView->getCaption()->getCaption()->get_fields() as $field) {
|
foreach ($recordView->getCaption()->getFields() as $field) {
|
||||||
$databox_field = $field->get_databox_field();
|
$databox_field = $field->get_databox_field();
|
||||||
|
|
||||||
$fieldData = [
|
$fieldData[$field->get_meta_struct_id()] = [
|
||||||
'meta_structure_id' => $field->get_meta_struct_id(),
|
'meta_structure_id' => $field->get_meta_struct_id(),
|
||||||
'name' => $field->get_name(),
|
'name' => $field->get_name(),
|
||||||
'labels' => [
|
'labels' => [
|
||||||
@@ -86,24 +89,52 @@ class RecordTransformer extends TransformerAbstract
|
|||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($field->get_values() as $value) {
|
$values[] = $field->get_values();
|
||||||
$data = [
|
|
||||||
'meta_id' => $value->getId(),
|
|
||||||
'value' => $value->getValue(),
|
|
||||||
];
|
|
||||||
|
|
||||||
$ret[] = array_replace($fieldData, $data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->collection($recordView->getCaption(), )
|
if ($values) {
|
||||||
|
$values = call_user_func_array('array_merge', $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->collection($values, function (\caption_Field_Value $value) use ($fieldData) {
|
||||||
|
$data = $fieldData[$value->getDatabox_field()->get_id()];
|
||||||
|
|
||||||
|
$data['meta_id'] = $value->getId();
|
||||||
|
$data['value'] = $value->getValue();
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function includeStatus(RecordView $recordView)
|
public function includeStatus(RecordView $recordView)
|
||||||
{
|
{
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
$bitMask = $recordView->getRecord()->getStatusBitField();
|
||||||
|
|
||||||
|
foreach ($recordView->getRecord()->getDatabox()->getStatusStructure() as $bit => $status) {
|
||||||
|
$data[] = [
|
||||||
|
'bit' => $bit,
|
||||||
|
'mask' => $bitMask,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->collection($data, function (array $bitData) {
|
||||||
|
return [
|
||||||
|
'bit' => $bitData['bit'],
|
||||||
|
'state' => \databox_status::bitIsSet($bitData['mask'], $bitData['bit']),
|
||||||
|
];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function includeCaption(RecordView $recordView)
|
public function includeCaption(RecordView $recordView)
|
||||||
{
|
{
|
||||||
|
return $this->collection($recordView->getCaption()->getFields(), function (\caption_field $field) {
|
||||||
|
return [
|
||||||
|
'meta_structure_id' => $field->get_meta_struct_id(),
|
||||||
|
'name' => $field->get_name(),
|
||||||
|
'value' => $field->get_serialized_values(';'),
|
||||||
|
];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user