From 8ab365ff19eeee4f1ff0edae6586c7463876ca18 Mon Sep 17 00:00:00 2001
From: Yousef Bajawi <jose@josebcdev.com>
Date: Wed, 2 Aug 2017 10:43:31 +0300
Subject: [PATCH] Issue #2899042 by josebc: Replace hardcoded paths to profile.

---
 configbit/default.components.varbase.bit.yml |  2 +-
 configbit/extra.components.varbase.bit.yml   |  2 +-
 configbit/language.action.varbase.bit.yml    | 20 ++++++++++----------
 configbit/varbase_landing.info.bit.yml       |  2 +-
 configbit/varbase_media.info.bit.yml         |  2 +-
 configbit/varbase_page.info.bit.yml          |  2 +-
 src/Config/ConfigBit.php                     | 16 ++++++++++++----
 src/Form/AssemblerForm.php                   |  2 +-
 varbase.profile                              |  4 ++--
 9 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/configbit/default.components.varbase.bit.yml b/configbit/default.components.varbase.bit.yml
index 4478437..63c1146 100644
--- a/configbit/default.components.varbase.bit.yml
+++ b/configbit/default.components.varbase.bit.yml
@@ -4,7 +4,7 @@
 # ==============================================================================
 config_bit:
   type: list
-  for: /profiles/varbase/varbase.info.yml
+  for: varbase.info.yml
   when:
     install_default_components: true
     list:
diff --git a/configbit/extra.components.varbase.bit.yml b/configbit/extra.components.varbase.bit.yml
index 9012ad3..c5b3922 100644
--- a/configbit/extra.components.varbase.bit.yml
+++ b/configbit/extra.components.varbase.bit.yml
@@ -4,7 +4,7 @@
 # ==============================================================================
 config_bit:
   type: list
-  for: /profiles/varbase/varbase.info.yml
+  for: varbase.info.yml
   when:
     show_extra_components: true
     list:
diff --git a/configbit/language.action.varbase.bit.yml b/configbit/language.action.varbase.bit.yml
index bfb5974..20ffa36 100644
--- a/configbit/language.action.varbase.bit.yml
+++ b/configbit/language.action.varbase.bit.yml
@@ -9,18 +9,18 @@ config_bit:
       when:
         enable_multilingual: false
       files:
-        - /profiles/varbase/modules/varbase_features/varbase_page/config/install/language.content_settings.node.page.yml
-        - /profiles/varbase/modules/varbase_features/varbase_landing/config/install/language.content_settings.node.landing_page.yml
-        - /profiles/varbase/modules/varbase_features/varbase_media/config/install/language.content_settings.media.document.yml
-        - /profiles/varbase/modules/varbase_features/varbase_media/config/install/language.content_settings.media.image.yml
-        - /profiles/varbase/modules/varbase_features/varbase_media/config/install/language.content_settings.media.video.yml
+        - modules/varbase_features/varbase_page/config/install/language.content_settings.node.page.yml
+        - modules/varbase_features/varbase_landing/config/install/language.content_settings.node.landing_page.yml
+        - modules/varbase_features/varbase_media/config/install/language.content_settings.media.document.yml
+        - modules/varbase_features/varbase_media/config/install/language.content_settings.media.image.yml
+        - modules/varbase_features/varbase_media/config/install/language.content_settings.media.video.yml
     unarchive_files:
       archive_extensiton: '.archive'
       when:
         enable_multilingual: true
       files:
-        - /profiles/varbase/modules/varbase_features/varbase_page/config/install/language.content_settings.node.page.yml
-        - /profiles/varbase/modules/varbase_features/varbase_landing/config/install/language.content_settings.node.landing_page.yml
-        - /profiles/varbase/modules/varbase_features/varbase_media/config/install/language.content_settings.media.document.yml
-        - /profiles/varbase/modules/varbase_features/varbase_media/config/install/language.content_settings.media.image.yml
-        - /profiles/varbase/modules/varbase_features/varbase_media/config/install/language.content_settings.media.video.yml
+        - modules/varbase_features/varbase_page/config/install/language.content_settings.node.page.yml
+        - modules/varbase_features/varbase_landing/config/install/language.content_settings.node.landing_page.yml
+        - modules/varbase_features/varbase_media/config/install/language.content_settings.media.document.yml
+        - modules/varbase_features/varbase_media/config/install/language.content_settings.media.image.yml
+        - modules/varbase_features/varbase_media/config/install/language.content_settings.media.video.yml
diff --git a/configbit/varbase_landing.info.bit.yml b/configbit/varbase_landing.info.bit.yml
index 78a6bdf..915aa31 100644
--- a/configbit/varbase_landing.info.bit.yml
+++ b/configbit/varbase_landing.info.bit.yml
@@ -3,7 +3,7 @@
 # ==============================================================================
 config_bit:
   type: action
-  for: /profiles/varbase/modules/varbase_features/varbase_landing/varbase_landing.info.yml
+  for: modules/varbase_features/varbase_landing/varbase_landing.info.yml
   action:
     remove:
       when:
diff --git a/configbit/varbase_media.info.bit.yml b/configbit/varbase_media.info.bit.yml
index d051963..34cd3cf 100644
--- a/configbit/varbase_media.info.bit.yml
+++ b/configbit/varbase_media.info.bit.yml
@@ -3,7 +3,7 @@
 # ==============================================================================
 config_bit:
   type: action
-  for: /profiles/varbase/modules/varbase_features/varbase_media/varbase_media.info.yml
+  for: modules/varbase_features/varbase_media/varbase_media.info.yml
   action:
     remove:
       when:
diff --git a/configbit/varbase_page.info.bit.yml b/configbit/varbase_page.info.bit.yml
index 6f77164..251df87 100644
--- a/configbit/varbase_page.info.bit.yml
+++ b/configbit/varbase_page.info.bit.yml
@@ -3,7 +3,7 @@
 # ==============================================================================
 config_bit:
   type: action
-  for: /profiles/varbase/modules/varbase_features/varbase_page/varbase_page.info.yml
+  for: modules/varbase_features/varbase_page/varbase_page.info.yml
   action:
     remove:
       when:
diff --git a/src/Config/ConfigBit.php b/src/Config/ConfigBit.php
index 5586f2b..ae966b1 100644
--- a/src/Config/ConfigBit.php
+++ b/src/Config/ConfigBit.php
@@ -14,15 +14,23 @@ class ConfigBit {
    *
    * Load config bit file as an array, with full file name and path.
    *
-   * @param string $full_config_bit_file_name
+   * @param string $config_bit_file_name
    *   Config bit file name in the root configbit folder.
+   *   
+   * @param string $type
+   *   Config bit file source type (profile / module).
+   *
+   * @param string $project
+   *   Config bit file source eg. varbase.
    *
    * @return array|int
    *   array of config bit.
    *   FALSE if we do not have the config_bit in the config bit file.
    */
-  public static function getConfigBit($full_config_bit_file_name) {
+  public static function getConfigBit($config_bit_file_name, $type = 'profile', $project = 'varbase') {
 
+    // Generate full path to config file
+    $full_config_bit_file_name = drupal_get_path($type, $project)  . '/' . $config_bit_file_name;
     if (is_file($full_config_bit_file_name)) {
       // Pars the config bit file and have it as an array if it was not.
       $config_bit_data = (array) Yaml::parse(file_get_contents($full_config_bit_file_name));
@@ -53,8 +61,8 @@ class ConfigBit {
    * @return array
    *   Get List config as an array.
    */
-  public static function getList($config_bit_file_name, $condition_name, $condition_value, $sublist = NULL) {
-    $config_bit_data = ConfigBit::getConfigBit($config_bit_file_name);
+  public static function getList($config_bit_file_name, $condition_name, $condition_value, $sublist = NULL, $type = 'profile', $project = 'varbase') {
+    $config_bit_data = ConfigBit::getConfigBit($config_bit_file_name, $type, $project);
 
     if (isset($config_bit_data['type'])
         && $config_bit_data['type'] == 'list'
diff --git a/src/Form/AssemblerForm.php b/src/Form/AssemblerForm.php
index 4431cf3..306d4a9 100644
--- a/src/Form/AssemblerForm.php
+++ b/src/Form/AssemblerForm.php
@@ -141,7 +141,7 @@ class AssemblerForm extends FormBase {
     ];
 
     // Configbit root folder for varbase profile.
-    $configbit_root = \Drupal::root() . '/profiles/varbase/configbit';
+    $configbit_root =  'configbit';
 
     foreach ($this->getExtraComponentsInfo($configbit_root) as $key => $info) {
       $form['extra_components']['#options'][$key] = $info['name'];
diff --git a/varbase.profile b/varbase.profile
index 7522dfc..cfe52a7 100644
--- a/varbase.profile
+++ b/varbase.profile
@@ -76,7 +76,7 @@ function varbase_install_tasks(&$install_state) {
  */
 function varbase_assemble_extra_components(array &$install_state) {
   // Configbit root folder for varbase profile.
-  $configbit_root = \Drupal::root() . '/profiles/varbase/configbit';
+  $configbit_root =  'configbit';
 
   // Default Varbase components, which must be installed.
   $default_components = ConfigBit::getList($configbit_root . '/default.components.varbase.bit.yml', 'install_default_components', TRUE, 'dependencies');
@@ -192,7 +192,7 @@ function varbase_fix_entity_update($entity_update) {
 function varbase_config_bit_for_multilingual($enable_multilingual) {
 
   // Configbit root folder for varbase profile.
-  $configbit_root = \Drupal::root() . '/profiles/varbase/configbit';
+  $configbit_root = 'configbit';
 
   // Change configurations to work with enable_multilingual.
   if ($enable_multilingual) {
-- 
2.7.4

