Fix null dates returning as December 31, 1969
@laryn @mattwire MR !44 (merged) didn't work for me, so I traced the problem down a bit further. !44 (merged) fixes one of two code paths that call CRM_Core_Payment_StripeIPN::retrieve()
on receive_date
.
The actual problem is that the statements in retrieve()
(or, in master, in CRM_Stripe_Api::getObjectParams()
) mostly attempt to retrieve a property of an object, and if the property doesn't exist, the default is NULL
.
However, those methods handle dates differently, converting them to a formatted string with date()
. Calling date()
on NULL results in the string "December 31, 1969".
This MR fixes it. I know I shouldn't have also mixed in the whitespace cleanup, but it's extraordinarily minimal so my apologies!
I could submit a patch against 5.3.2 if 5.3.3 will be released before 5.4. If not, here's the diff for others who need it:
+++ b/sites/all/civicrm-custom/extensions/com.drastikbydesign.stripe/CRM/Core/Payment/StripeIPN.php
@@ -189,7 +189,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
break;
case 'receive_date':
- $value = date("Y-m-d H:i:s", $this->_inputParameters->data->object->date);
+ $value = $this->_inputParameters->data->object->date ? date("Y-m-d H:i:s", $this->_inputParameters->data->object->date) : NULL;
break;
case 'subscription_id':
@@ -221,7 +221,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
break;
case 'plan_start':
- $value = date("Y-m-d H:i:s", $this->_inputParameters->data->object->start);
+ $value = $this->_inputParameters->data->object->start ? date("Y-m-d H:i:s", $this->_inputParameters->data->object->start) : NULL;
break;
case 'subscription_id':