Completed
Push — EZP-29891 ( 916cf6...0402ff )
by
unknown
16:53
created

RelationConverter::toStorageFieldDefinition()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * File containing the Relation converter.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter;
10
11
use eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter;
12
use eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldValue;
13
use eZ\Publish\SPI\Persistence\Content\FieldValue;
14
use eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition;
15
use eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldDefinition;
16
17
class RelationConverter implements Converter
18
{
19
    /**
20
     * Factory for current class.
21
     *
22
     * Note: Class should instead be configured as service if it gains dependencies.
23
     *
24
     * @return Url
25
     */
26
    public static function create()
27
    {
28
        return new self();
29
    }
30
31
    /**
32
     * Converts data from $value to $storageFieldValue.
33
     *
34
     * @param \eZ\Publish\SPI\Persistence\Content\FieldValue $value
35
     * @param \eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldValue $storageFieldValue
36
     */
37
    public function toStorageValue(FieldValue $value, StorageFieldValue $storageFieldValue)
38
    {
39
        $storageFieldValue->dataInt = !empty($value->data['destinationContentId'])
40
            ? $value->data['destinationContentId']
41
            : null;
42
        $storageFieldValue->sortKeyInt = (int)$value->sortKey;
43
    }
44
45
    /**
46
     * Converts data from $value to $fieldValue.
47
     *
48
     * @param \eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldValue $value
49
     * @param \eZ\Publish\SPI\Persistence\Content\FieldValue $fieldValue
50
     */
51
    public function toFieldValue(StorageFieldValue $value, FieldValue $fieldValue)
52
    {
53
        $fieldValue->data = array(
54
            'destinationContentId' => $value->dataInt ?: null,
55
        );
56
        $fieldValue->sortKey = (int)$value->sortKeyInt;
57
    }
58
59
    /**
60
     * Converts field definition data in $fieldDef into $storageFieldDef.
61
     *
62
     * @param \eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition $fieldDef
63
     * @param \eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldDefinition $storageDef
64
     */
65
    public function toStorageFieldDefinition(FieldDefinition $fieldDef, StorageFieldDefinition $storageDef)
66
    {
67
        // Selection method, 0 = browse, 1 = dropdown
68
        $storageDef->dataInt1 = (int)$fieldDef->fieldTypeConstraints->fieldSettings['selectionMethod'];
69
70
        // Selection root, location ID
71
        $storageDef->dataInt2 = (int)$fieldDef->fieldTypeConstraints->fieldSettings['selectionRoot'];
72
    }
73
74
    /**
75
     * Converts field definition data in $storageDef into $fieldDef.
76
     *
77
     * @param \eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldDefinition $storageDef
78
     * @param \eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition $fieldDef
79
     */
80
    public function toFieldDefinition(StorageFieldDefinition $storageDef, FieldDefinition $fieldDef)
81
    {
82
        // Selection method, 0 = browse, 1 = dropdown
83
        $fieldDef->fieldTypeConstraints->fieldSettings['selectionMethod'] = $storageDef->dataInt1;
84
85
        // Selection root, location ID
86
87
        $fieldDef->fieldTypeConstraints->fieldSettings['selectionRoot'] =
88
            $storageDef->dataInt2 === 0
89
            ? ''
90
            : $storageDef->dataInt2;
91
    }
92
93
    /**
94
     * Returns the name of the index column in the attribute table.
95
     *
96
     * Returns the name of the index column the datatype uses, which is either
97
     * "sort_key_int" or "sort_key_string". This column is then used for
98
     * filtering and sorting for this type.
99
     *
100
     * @return false
101
     */
102
    public function getIndexColumn()
103
    {
104
        return 'sort_key_int';
105
    }
106
}
107