From 08d6c1f8f6cbbf23fc83d970d72a22d57daad5bb Mon Sep 17 00:00:00 2001 From: Bryce Gilhome Date: Fri, 24 Nov 2017 08:37:49 -0800 Subject: [PATCH 1/6] Change package name. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index b24ddc5..c86c713 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "pattern-lab/plugin-data-inheritance", + "name": "bgilhome/plugin-data-inheritance", "description": "Data inheritance based on pattern lineage for Pattern Lab.", "keywords": ["data", "inheritance", "lineage", "pattern lab"], "homepage": "http://patternlab.io", From fbf3e15db4329b7342098cbae98d8b8f3766d5ba Mon Sep 17 00:00:00 2001 From: Bryce Gilhome Date: Fri, 24 Nov 2017 08:41:54 -0800 Subject: [PATCH 2/6] Fix "Invalid argument supplied for foreach()" notice - check is_array() for lineages. --- src/PatternLab/DataInheritance/PatternLabListener.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/PatternLab/DataInheritance/PatternLabListener.php b/src/PatternLab/DataInheritance/PatternLabListener.php index 366ce29..296075a 100644 --- a/src/PatternLab/DataInheritance/PatternLabListener.php +++ b/src/PatternLab/DataInheritance/PatternLabListener.php @@ -40,7 +40,10 @@ public function inherit() { foreach ($storePatternData as $patternStoreKey => $patternData) { - if (isset($patternData["lineages"]) && (count($patternData["lineages"]) > 0)) { + if (isset($patternData["lineages"]) + && is_array($patternData["lineages"]) + && (count($patternData["lineages"]) > 0) + ) { $dataLineage = array(); From 01f0a092ee6f593357688420ecf5b5a67b7f7182 Mon Sep 17 00:00:00 2001 From: Bryce Gilhome Date: Fri, 24 Nov 2017 08:56:03 -0800 Subject: [PATCH 3/6] Add "default" config option to describe whether plugin is active by default (if enabled), and a "data-inheritance" key that can be set in pattern data to override that default setting. --- composer.json | 3 +- .../DataInheritance/PatternLabListener.php | 36 +++++++++++-------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index c86c713..7375572 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,8 @@ "config": { "plugins": { "dataInheritance": { - "enabled": true + "enabled": true, + "default": true } } } diff --git a/src/PatternLab/DataInheritance/PatternLabListener.php b/src/PatternLab/DataInheritance/PatternLabListener.php index 296075a..67645ba 100644 --- a/src/PatternLab/DataInheritance/PatternLabListener.php +++ b/src/PatternLab/DataInheritance/PatternLabListener.php @@ -32,44 +32,52 @@ public function __construct() { * Look up data in lineages, update pattern store data, replace store */ public function inherit() { - + if ((bool)Config::getOption("plugins.dataInheritance.enabled")) { - + + $pluginDefault = (bool)Config::getOption("plugins.dataInheritance.default"); $storeData = Data::get(); $storePatternData = PatternData::get(); - + foreach ($storePatternData as $patternStoreKey => $patternData) { - + if (isset($patternData["lineages"]) && is_array($patternData["lineages"]) && (count($patternData["lineages"]) > 0) ) { - + $dataLineage = array(); - + foreach($patternData["lineages"] as $lineage) { - + // merge the lineage data with the lineage store. newer/higher-level data is more important. $lineageKey = $lineage["lineagePattern"]; - $lineageData = isset($storeData["patternSpecific"][$lineageKey]) && isset($storeData["patternSpecific"][$lineageKey]["data"]) ? $storeData["patternSpecific"][$lineageKey]["data"] : array(); + $lineageDataInheritance = isset($storeData["patternSpecific"][$lineageKey]["data"]["data-inheritance"]) + ? (bool)$storeData["patternSpecific"][$lineageKey]["data"]["data-inheritance"] + : $pluginDefault; + $lineageData = $lineageDataInheritance + && isset($storeData["patternSpecific"][$lineageKey]) + && isset($storeData["patternSpecific"][$lineageKey]["data"]) + ? $storeData["patternSpecific"][$lineageKey]["data"] + : array(); if (!empty($lineageData)) { $dataLineage = array_replace_recursive($dataLineage, $lineageData); } - + } - + // merge the lineage data with the pattern data. pattern data is more important. $dataPattern = isset($storeData["patternSpecific"][$patternStoreKey]) && isset($storeData["patternSpecific"][$patternStoreKey]["data"]) ? $storeData["patternSpecific"][$patternStoreKey]["data"] : array(); $dataPattern = array_replace_recursive($dataLineage, $dataPattern); - + if (!empty($dataPattern)) { $storeData["patternSpecific"][$patternStoreKey]["data"] = $dataPattern; } - + } - + } - + Data::replaceStore($storeData); } From 9a6fd640aaf7b2ffd19919d2fb6b45603589071b Mon Sep 17 00:00:00 2001 From: Bryce Gilhome Date: Fri, 24 Nov 2017 09:10:08 -0800 Subject: [PATCH 4/6] Revert whitespace changes from last commit. --- .../DataInheritance/PatternLabListener.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/PatternLab/DataInheritance/PatternLabListener.php b/src/PatternLab/DataInheritance/PatternLabListener.php index 67645ba..5fbba63 100644 --- a/src/PatternLab/DataInheritance/PatternLabListener.php +++ b/src/PatternLab/DataInheritance/PatternLabListener.php @@ -32,24 +32,24 @@ public function __construct() { * Look up data in lineages, update pattern store data, replace store */ public function inherit() { - + if ((bool)Config::getOption("plugins.dataInheritance.enabled")) { $pluginDefault = (bool)Config::getOption("plugins.dataInheritance.default"); $storeData = Data::get(); $storePatternData = PatternData::get(); - + foreach ($storePatternData as $patternStoreKey => $patternData) { if (isset($patternData["lineages"]) && is_array($patternData["lineages"]) && (count($patternData["lineages"]) > 0) ) { - + $dataLineage = array(); foreach($patternData["lineages"] as $lineage) { - + // merge the lineage data with the lineage store. newer/higher-level data is more important. $lineageKey = $lineage["lineagePattern"]; $lineageDataInheritance = isset($storeData["patternSpecific"][$lineageKey]["data"]["data-inheritance"]) @@ -63,21 +63,21 @@ public function inherit() { if (!empty($lineageData)) { $dataLineage = array_replace_recursive($dataLineage, $lineageData); } - + } // merge the lineage data with the pattern data. pattern data is more important. $dataPattern = isset($storeData["patternSpecific"][$patternStoreKey]) && isset($storeData["patternSpecific"][$patternStoreKey]["data"]) ? $storeData["patternSpecific"][$patternStoreKey]["data"] : array(); $dataPattern = array_replace_recursive($dataLineage, $dataPattern); - + if (!empty($dataPattern)) { $storeData["patternSpecific"][$patternStoreKey]["data"] = $dataPattern; } - + } } - + Data::replaceStore($storeData); } From 2c5019646b586ee7e42eb489637d742aa14694a7 Mon Sep 17 00:00:00 2001 From: Bryce Gilhome Date: Fri, 24 Nov 2017 09:12:43 -0800 Subject: [PATCH 5/6] Couple more whitespace reverts. --- src/PatternLab/DataInheritance/PatternLabListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PatternLab/DataInheritance/PatternLabListener.php b/src/PatternLab/DataInheritance/PatternLabListener.php index 5fbba63..27b98f6 100644 --- a/src/PatternLab/DataInheritance/PatternLabListener.php +++ b/src/PatternLab/DataInheritance/PatternLabListener.php @@ -40,7 +40,7 @@ public function inherit() { $storePatternData = PatternData::get(); foreach ($storePatternData as $patternStoreKey => $patternData) { - + if (isset($patternData["lineages"]) && is_array($patternData["lineages"]) && (count($patternData["lineages"]) > 0) From 449be2441ea67daa11b685efca812390148faae8 Mon Sep 17 00:00:00 2001 From: Bryce Gilhome Date: Fri, 24 Nov 2017 09:14:09 -0800 Subject: [PATCH 6/6] Restore package name for PR --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 7375572..e796a5e 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "bgilhome/plugin-data-inheritance", + "name": "pattern-lab/plugin-data-inheritance", "description": "Data inheritance based on pattern lineage for Pattern Lab.", "keywords": ["data", "inheritance", "lineage", "pattern lab"], "homepage": "http://patternlab.io",