(dev/cloud-native#3) CRM_Core_IDS - Change CIVICRM_TEMPLATE_COMPILEDIR to 'civicrm...
authorTim Otten <totten@civicrm.org>
Wed, 10 Jul 2019 04:53:04 +0000 (21:53 -0700)
committerTim Otten <totten@civicrm.org>
Tue, 16 Jul 2019 01:58:12 +0000 (18:58 -0700)
The broader PR seeks to make path computation more intuitive, which requires computing the
path to `templates_c` using a function. This PR replaces the reference to `CIVICRM_TEMPLATE_COMPILEDIR`
with a function-call to `Civi::paths()->getVariable()`.

Is it safe change to make this change in `CRM_Core_IDS`?  Will the
`Civi::paths()` be callable?  Yes, here's why I believe so:

* (Big picture) Civi completes the bootstrap process
  (`CRM_Core_Config::singleton()`) and brings critical services online
  *before* the invoker does any routing or page-processing.  The invoker
  (`CRM_Core_Invoke::runItem()`) is the only thing which uses
  `CRM_Core_IDS`.

* (Little picture) In the changed function
  `CRM_Core_IDS::createBaseConfig()`, observe that it calls
  `CRM_Core_Config::singleton()` before running this modified code.  That's
  a tell-tale sign of code that already relies on having a booted system.

CRM/Core/IDS.php

index 4d0d513e2c01548b8b5bd55b6edf06a06e36c27b..3af51e5833c7a1f57865c80cd9f4c5e4dbab88b7 100644 (file)
@@ -118,7 +118,7 @@ class CRM_Core_IDS {
    */
   public static function createBaseConfig() {
     $config = \CRM_Core_Config::singleton();
-    $tmpDir = empty($config->uploadDir) ? CIVICRM_TEMPLATE_COMPILEDIR : $config->uploadDir;
+    $tmpDir = empty($config->uploadDir) ? Civi::paths()->getVariable('civicrm.compile', 'path') : $config->uploadDir;
     global $civicrm_root;
 
     return [