Skip to content

Commit 63869cb

Browse files
Merge pull request #13 from integer-net/make-entity-models-configurable-in-xml
Make entity models configurable in xml
2 parents e4c525e + 00367f6 commit 63869cb

3 files changed

Lines changed: 70 additions & 13 deletions

File tree

src/app/code/community/IntegerNet/Anonymizer/Model/Anonymizer.php

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,32 @@ public function __construct()
2222
}
2323
protected function _getEntityModels()
2424
{
25-
$models = array(
26-
'integernet_anonymizer/bridge_entity_customer',
27-
'integernet_anonymizer/bridge_entity_address_customerAddress',
28-
'integernet_anonymizer/bridge_entity_address_quoteAddress',
29-
'integernet_anonymizer/bridge_entity_address_orderAddress',
30-
'integernet_anonymizer/bridge_entity_newsletterSubscriber',
31-
// Models with grid table must come last!
32-
'integernet_anonymizer/bridge_entity_order',
33-
);
34-
if (Mage::getEdition() == MAGE::EDITION_ENTERPRISE) {
35-
$models[] = 'integernet_anonymizer/bridge_entity_enterprise_giftregistry';
36-
$models[] = 'integernet_anonymizer/bridge_entity_enterprise_giftregistryPerson';
25+
$entityModelsConfigXml = Mage::getConfig()->getNode('global/integernet_anonymizer/entity_models');
26+
27+
$entityModelsConfigArray = $entityModelsConfigXml->asArray();
28+
$entityModelsConfigArray = $this->_sortEntityModelsConfig($entityModelsConfigArray);
29+
30+
$entityModels = [];
31+
32+
foreach ($entityModelsConfigArray as $entityModelsConfig) {
33+
$entityModel = Mage::getModel($entityModelsConfig['class']);
34+
if ($entityModel instanceof IntegerNet_Anonymizer_Model_Bridge_Entity_Abstract
35+
&& $entityModel->entityExists()) {
36+
$entityModels[] = $entityModelsConfig['class'];
37+
}
3738
}
38-
return $models;
39+
40+
return $entityModels;
41+
}
42+
protected function _sortEntityModelsConfig($entityModelsConfig)
43+
{
44+
usort(
45+
$entityModelsConfig,
46+
function ($entityModel1, $entityModel2) {
47+
return strcmp($entityModel1['sort'], $entityModel2['sort']);
48+
}
49+
);
50+
return $entityModelsConfig;
3951
}
4052
/**
4153
* @param resource $stream stream resource used for output (for example opened file pointer or STDOUT)

src/app/code/community/IntegerNet/Anonymizer/Model/Bridge/Entity/Abstract.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,4 +174,12 @@ public function getCollectionIterator()
174174
return $iterator;
175175
}
176176

177+
/**
178+
* Check if the entity exists
179+
* @return bool
180+
*/
181+
public function entityExists()
182+
{
183+
return (bool)$this->_entity;
184+
}
177185
}

src/app/code/community/IntegerNet/Anonymizer/etc/config.xml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,43 @@
1515
<IntegerNet />
1616
<Faker />
1717
</psr0_namespaces>
18+
<integernet_anonymizer>
19+
<entity_models>
20+
<customer>
21+
<class>integernet_anonymizer/bridge_entity_customer</class>
22+
<sort>100</sort>
23+
</customer>
24+
<customer_address>
25+
<class>integernet_anonymizer/bridge_entity_address_customerAddress</class>
26+
<sort>200</sort>
27+
</customer_address>
28+
<quote_address>
29+
<class>integernet_anonymizer/bridge_entity_address_quoteAddress</class>
30+
<sort>300</sort>
31+
</quote_address>
32+
<order_address>
33+
<class>integernet_anonymizer/bridge_entity_address_orderAddress</class>
34+
<sort>400</sort>
35+
</order_address>
36+
<newsletter_subscriber>
37+
<class>integernet_anonymizer/bridge_entity_newsletterSubscriber</class>
38+
<sort>500</sort>
39+
</newsletter_subscriber>
40+
<enterprise_giftregistry>
41+
<class>integernet_anonymizer/bridge_entity_enterprise_giftregistry</class>
42+
<sort>600</sort>
43+
</enterprise_giftregistry>
44+
<enterprise_giftregistry_person>
45+
<class>integernet_anonymizer/bridge_entity_enterprise_giftregistryPerson</class>
46+
<sort>700</sort>
47+
</enterprise_giftregistry_person>
48+
<!-- Models with grid table must come last! -->
49+
<order>
50+
<class>integernet_anonymizer/bridge_entity_order</class>
51+
<sort>800</sort>
52+
</order>
53+
</entity_models>
54+
</integernet_anonymizer>
1855
</global>
1956
<phpunit>
2057
<suite>

0 commit comments

Comments
 (0)