Fix isForm to be always assigned, remove checks
authorEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 5 Nov 2021 01:59:47 +0000 (14:59 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 5 Nov 2021 01:59:47 +0000 (14:59 +1300)
Note I'm not seeing any regressions on this locally with enotice turned on - but the
worst case, if tests pass, is we get some enotices back in a scenario where we
are only impacting bleeding edge devs

CRM/Core/Page.php
templates/CRM/common/CMSPrint.tpl
templates/CRM/common/joomla.tpl
templates/CRM/common/print.tpl
templates/CRM/common/printBody.tpl

index f83b170f931f309f924b69f530665899213e4355..08b614e651f67a316f5b0c89b9bb202709456436 100644 (file)
@@ -97,6 +97,16 @@ class CRM_Core_Page {
    */
   public $useLivePageJS;
 
+  /**
+   * Variables smarty expects to have set.
+   *
+   * We ensure these are assigned (value = NULL) when Smarty is instantiated in
+   * order to avoid e-notices / having to use empty or isset in the template layer.
+   *
+   * @var string[]
+   */
+  public $expectedSmartyVariables = ['breadcrumb', 'pageTitle', 'isForm', 'hookContent'];
+
   /**
    * Class constructor.
    *
@@ -116,6 +126,7 @@ class CRM_Core_Page {
     if (!isset(self::$_template)) {
       self::$_template = CRM_Core_Smarty::singleton();
       self::$_session = CRM_Core_Session::singleton();
+      self::$_template->ensureVariablesAreAssigned($this->expectedSmartyVariables);
     }
 
     // FIXME - why are we messing with 'snippet'? Why not just pass it directly into $this->_print?
index 919869faf336f04a30e028d1ec05f0a4b57152ce..482191ae23365c016c20b3fcdd6a0bd852b14d2f 100644 (file)
@@ -40,7 +40,7 @@
 <div id="crm-main-content-wrapper">
   {include file="CRM/common/status.tpl"}
   {crmRegion name='page-body'}
-    {if isset($isForm) and $isForm and isset($formTpl)}
+    {if $isForm and $formTpl}
       {include file="CRM/Form/$formTpl.tpl"}
     {else}
       {include file=$tplFile}
index ec33072425e794531ba8ee00978f748f13944afe..32e5859ecc14b426f0e25a85ea52ec1218ab1da7 100644 (file)
@@ -53,7 +53,7 @@
     <div id="crm-main-content-wrapper">
       {include file="CRM/common/status.tpl"}
       {crmRegion name='page-body'}
-        {if isset($isForm) and $isForm and isset($formTpl)}
+        {if $isForm and $formTpl}
           {include file="CRM/Form/$formTpl.tpl"}
         {else}
           {include file=$tplFile}
index e144095c464ff976ae22984ce76476089eb917a7..9ee4858ec613f1bc65c76ca23a9f34e427efe48d 100644 (file)
@@ -29,7 +29,7 @@
 {include file="CRM/common/status.tpl"}
 
 {crmRegion name='page-body' allowCmsOverride=0}
-  {if $isForm and isset($formTpl)}
+  {if $isForm and $formTpl}
     {include file="CRM/Form/$formTpl.tpl"}
   {else}
     {include file=$tplFile}
index 81ac3afef86e3cd1bc6d8cfc1255daaeb51d8756..d1c09134318dee7456c6b1855154d219ac926508 100644 (file)
@@ -9,7 +9,7 @@
 *}
 {* printBody.tpl: wrapper for Print views without HTML surrounds. *}
 
-{if $isForm and isset($formTpl)}
+{if $isForm and $formTpl}
     {include file="CRM/Form/$formTpl.tpl"}
 {else}
     {include file=$tplFile}