8000 Merge branch 'master' into ticket/CRM-5698 · oro-subtree/EntityExtendBundle@d3c9f66 · GitHub
[go: up one dir, main page]

Skip to content

Commit d3c9f66

Browse files
committed
Merge branch 'master' into ticket/CRM-5698
2 parents a07f3de + 085c8be commit d3c9f66

File tree

11 files changed

+79
-36
lines changed

11 files changed

+79
-36
lines changed

Migration/Extension/ExtendExtension.php

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -668,15 +668,15 @@ public function addManyToManyInverseRelation(
668668
* Adds many-to-one relation
669669
*
670670
* @param Schema $schema
671-
* @param Table|string $table A Table object or table name
672-
* @param string $associationName The name of a relation field
673-
* @param Table|string $targetTable A Table object or table name
674-
* @param string $targetColumnName A column name is used to show related entity
671+
* @param Table|string $table A Table object or table name
672+
* @param string $associationName The name of a relation field
673+
* @param Table|string $targetTable A Table object or table name
674+
* @param string $targetColumnName A column name is used to show related entity
675675
* @param array $options
676-
* @param string $fieldType The field type. By default the field type is manyToOne,
677-
* but you can specify another type if it is based on manyToOne.
678-
* In this case this type should be registered
679-
* in entity_extend.yml under underlying_types section
676+
* @param string $fieldType The field type. By default the field type is manyToOne,
677+
* but you can specify another type if it is based on manyToOne.
678+
* In this case this type should be registered
679+
* in entity_extend.yml under underlying_types section
680680
*/
681681
public function addManyToOneRelation(
682682
Schema $schema,
@@ -701,12 +701,25 @@ public function addManyToOneRelation(
701701

702702
$this->checkColumnsExist($targetTable, [$targetColumnName]);
703703

704+
$relation = $options['extend'];
705+
if (array_key_exists('on_delete', $relation)) {
706+
$onDelete = $relation['on_delete'];
707+
} else {
708+
$onDelete = 'SET NULL';
709+
}
710+
711+
if (array_key_exists('nullable', $relation)) {
712+
$notnull = !$relation['nullable'];
713+
} else {
714+
$notnull = false;
715+
}
716+
704717
$this->addRelation(
705718
$selfTable,
706719
$selfColumnName,
707720
$targetTable,
708-
['notnull' => false],
709-
['onDelete' => 'SET NULL']
721+
['notnull' => $notnull],
722+
['onDelete' => $onDelete]
710723
);
711724

712725
$options[ExtendOptionsManager::TARGET_OPTION] = [

ORM/RelationMetadataBuilder.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,22 @@ protected function buildManyToOneRelation(
8888
if (!empty($relation['target_field_id'])) {
8989
$builder->inversedBy($relation['target_field_id']->getFieldName());
9090
}
91+
if (!empty($relation['on_delete'])) {
92+
$onDelete = $relation['on_delete'];
93+
} else {
94+
$onDelete = 'SET NULL';
95+
}
96+
if (array_key_exists('nullable', $relation) && null !== $relation['nullable']) {
97+
$nullable = $relation['nullable'];
98+
} else {
99+
$nullable = true;
100+
}
91101
$builder->addJoinColumn(
92102
$this->getManyToOneColumnName($fieldId, $targetIdColumn),
93103
$targetIdColumn,
94-
true,
104+
$nullable,
95105
false,
96-
'SET NULL'
106+
$onDelete
97107
);
98108
foreach ($cascade as $cascadeType) {
99109
$builder->{'cascade' . ucfirst($cascadeType)}();

Resources/config/services.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,10 +496,10 @@ services:
496496
oro_entity_extend.model.action.request_enum_entity:
497497
class: Oro\Bundle\EntityExtendBundle\Model\Action\RequestEnumEntity
498498
arguments:
499-
- '@oro_action.context_accessor'
499+
- '@oro_action.expression.context_accessor'
500500
- '@doctrine'
501501
tags:
502-
- { name: oro_workflow.action, alias: request_enum_entity }
502+
- { name: oro_action.action, alias: request_enum_entity }
503503

504504
oro_entity_extend.cache_warmer:
505505
class: 'Oro\Bundle\EntityExtendBundle\Cache\CacheWarmerAggregate'

Resources/views/ConfigFieldGrid/create.html.twig

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,16 @@
4444
'use strict';
4545
$(function() {
4646
$(document).on('change', 'form select#{{ form.type.vars.id }}', function (e) {
47-
var el = $(this),
48-
complexFieldType = el.find('option:selected').attr('value').split('||'),
49-
field_name = $('input#{{ form.fieldName.vars.id }}');
47+
var complexFieldType = $(this).find('option:selected').attr('value').split('||'),
48+
$field_name = $('input#{{ form.fieldName.vars.id }}');
5049
5150
if (complexFieldType !== 'undefined'
5251
&& complexFieldType.length > 1
5352
&& complexFieldType[0].split('|').length === 4
5453
&& complexFieldType[1]) {
55-
$(field_name).val(complexFieldType[1]).attr('readonly', 'readonly');
56-
}
57-
else if ($(field_name).attr('readonly')) {
58-
$(field_name).val('').removeAttr('readonly');
54+
$field_name.val(complexFieldType[1]).prop('readonly', true);
55+
} else if ($field_name.prop('readonly')) {
56+
$field_name.val('').prop('readonly', false);
5957
}
6058
});
6159
})

Tests/Functional/ControllersTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
/**
1212
* @dbIsolation
13+
* @group dist
1314
*/
1415
class ControllersTest extends WebTestCase
1516
{

Tests/Unit/Migration/Extension/ExtendExtensionTest.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Oro\Bundle\EntityConfigBundle\Entity\ConfigModel;
1111
use Oro\Bundle\EntityExtendBundle\EntityConfig\ExtendScope;
1212
use Oro\Bundle\EntityExtendBundle\Extend\FieldTypeHelper;
13+
use Oro\Bundle\EntityExtendBundle\Extend\RelationType;
1314
use Oro\Bundle\EntityExtendBundle\Migration\ExtendOptionsManager;
1415
use Oro\Bundle\EntityExtendBundle\Migration\ExtendOptionsParser;
1516
use Oro\Bundle\EntityExtendBundle\Migration\Extension\ExtendExtension;
@@ -1700,19 +1701,25 @@ public function testAddManyToOneRelation()
17001701
'relation_column1',
17011702
$table2,
17021703
'name',
1703-
['extend' => ['owner' => ExtendScope::OWNER_CUSTOM]]
1704+
[
1705+
'extend' => [
1706+
'owner' => ExtendScope::OWNER_CUSTOM,
1707+
'on_delete' => 'CASCADE',
1708+
'nullable' => false
1709+
]
1710+
]
17041711
);
17051712

17061713
$this->assertSchemaSql(
17071714
$schema,
17081715
[
17091716
'CREATE TABLE table1 ('
17101717
. 'id INT NOT NULL, '
1711-
. 'relation_column1_id INT DEFAULT NULL, '
1718+
. 'relation_column1_id INT NOT NULL, '
17121719
. 'INDEX idx_table1_relation_column1_id (relation_column1_id), PRIMARY KEY(id))',
17131720
'CREATE TABLE table2 (id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))',
17141721
'ALTER TABLE table1 ADD CONSTRAINT fk_table1_relation_column1_id '
1715-
. 'FOREIGN KEY (relation_column1_id) REFERENCES table2 (id) ON DELETE SET NULL'
1722+
. 'FOREIGN KEY (relation_column1_id) REFERENCES table2 (id) ON DELETE CASCADE'
17161723
]
17171724
);
17181725
$this->assertExtendOptions(
@@ -1731,6 +1738,8 @@ public function testAddManyToOneRelation()
17311738
'relation_key' =>
17321739
'manyToOne|Acme\AcmeBundle\Entity\Entity1|'
17331740
. 'Acme\AcmeBundle\Entity\Entity2|relation_column1',
1741+
'on_delete' => 'CASCADE',
1742+
'nullable' => false
17341743
]
17351744
]
17361745
]

Tests/Unit/ORM/RelationMetadataBuilderTest.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public function testBuildManyToOne()
149149
);
150150
}
151151

152-
public function testBuildManyToOneWithAdditionalCascadeOption()
152+
public function testBuildManyToOneWithAdditionalOptions()
153153
{
154154
$entityClass = 'Oro\Bundle\EntityExtendBundle\Tests\Unit\Fixtures\TestClass';
155155
$fieldName = 'srcField';
@@ -174,7 +174,9 @@ public function testBuildManyToOneWithAdditionalCascadeOption()
174174
'owner' => true,
175175
'target_entity' => $targetEntityClass,
176176
'target_field_id' => null,
177-
'cascade' => ['persist']
177+
'cascade' => ['persist'],
178+
'on_delete' => 'CASCADE',
179+
'nullable' => false
178180
]
179181
],
180182
'schema' => [
@@ -202,9 +204,9 @@ public function testBuildManyToOneWithAdditionalCascadeOption()
202204
[
203205
'name' => $fieldName . '_id',
204206
'referencedColumnName' => 'id',
205-
'nullable' => true,
207+
'nullable' => false,
206208
'unique' => false,
207-
'onDelete' => 'SET NULL',
209+
'onDelete' => 'CASCADE',
208210
'columnDefinition' => null
209211
]
210212
],

Tests/Unit/Tools/DumperExtensions/RelationEntityConfigDumperExtensionTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,9 @@ public function testManyToOneWhenRelationToBeCreated()
500500
'owner' => true,
501501
'target_entity' => 'Test\TargetEntity',
502502
'target_field_id' => $this->getFieldId('Test\TargetEntity', 'rev_rel_mto', 'oneToMany'),
503-
'cascade' => ['persist', 'remove']
503+
'cascade' => ['persist', 'remove'],
504+
'on_delete' => 'CASCADE',
505+
'nullable' => true
504506
]
505507
];
506508
$targetRelations = [
@@ -523,7 +525,9 @@ public function testManyToOneWhenRelationToBeCreated()
523525
[
524526
'target_entity' => 'Test\TargetEntity',
525527
'relation_key' => 'manyToOne|Test\SourceEntity|Test\TargetEntity|rel_mto',
526-
'cascade' => ['persist', 'remove']
528+
'cascade' => ['persist', 'remove'],
529+
'on_delete' => 'CASCADE',
530+
'nullable' => true
527531
],
528532
'manyToOne',
529533
'Test\SourceEntity',

Tests/Unit/Tools/EnumSynchronizerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
use Oro\Bundle\EntityExtendBundle\Tests\Unit\Fixtures\TestEnumValue;
1414
use Oro\Bundle\EntityExtendBundle\Tools\EnumSynchronizer;
1515
use Oro\Bundle\EntityExtendBundle\Tools\ExtendHelper;
16-
use Oro\Bundle\TranslationBundle\Entity\Translation;
16+
use Oro\Bundle\TranslationBundle\Translation\Translator;
1717

1818
class EnumSynchronizerTest extends \PHPUnit_Framework_TestCase
1919
{
@@ -385,7 +385,7 @@ public function testApplyEnumNameTransNoTransForDefaultLocale()
385385
{
386386
$enumCode = 'test_enum';
387387
$enumName = 'Test Enum New';
388-
$locale = Translation::DEFAULT_LOCALE;
388+
$locale = Translator::DEFAULT_LOCALE;
389389

390390
$this->translator->expects($this->once())
391391
->method('trans')

Tools/DumperExtensions/RelationEntityConfigDumperExtension.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,12 @@ protected function createSelfRelation(ConfigInterface $fieldConfig)
140140
if ($fieldConfig->has('cascade')) {
141141
$selfRelation['cascade'] = $fieldConfig->get('cascade');
142142
}
143+
if ($fieldConfig->has('on_delete')) {
144+
$selfRelation['on_delete'] = $fieldConfig->get('on_delete');
145+
}
146+
if ($fieldConfig->has('nullable')) {
147+
$selfRelation['nullable'] = $fieldConfig->get('nullable');
148+
}
143149
$selfRelations = $selfConfig->get('relation', false, []);
144150
$selfRelations[$relationKey] = $selfRelation;
145151
$selfConfig->set('relation', $selfRelations);

0 commit comments

Comments
 (0)
0