From 5accfa08f52a31da74715c38a1d7a12793fa33c7 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Thu, 15 Dec 2005 16:02:50 +0000
Subject: [PATCH] - Patch #41133 by DriesK: as of PHP 5.1.0, strtotime()
 returns FALSE on failure instead of -1.   Changed code to be compatible with
 all versions.

---
 includes/bootstrap.inc               |  2 +-
 modules/aggregator.module            | 10 +++++-----
 modules/aggregator/aggregator.module | 10 +++++-----
 modules/comment.module               |  3 ++-
 modules/comment/comment.module       |  3 ++-
 modules/node.module                  |  4 ++--
 modules/node/node.module             |  4 ++--
 7 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 34398c72781a..28681452a349 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -599,7 +599,7 @@ function drupal_page_header() {
 
       // Check http headers:
       $modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $date : NULL;
-      if (!empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) && ($timestamp = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) != -1) {
+      if (!empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) && ($timestamp = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) > 0) {
         $modified_since = $cache->created <= $timestamp;
       }
       else {
diff --git a/modules/aggregator.module b/modules/aggregator.module
index 8ac5ca70513b..8c1007ae6c54 100644
--- a/modules/aggregator.module
+++ b/modules/aggregator.module
@@ -484,7 +484,7 @@ function aggregator_parse_w3cdtf($date_str) {
     return $epoch;
   }
   else {
-    return -1;
+    return FALSE;
   }
 }
 
@@ -580,10 +580,10 @@ function aggregator_parse_feed(&$data, $feed) {
     else if ($item['MODIFIED']) $date = $item['MODIFIED'];                 // Atom XML
     else $date = 'now';
 
-    $timestamp = strtotime($date); // strtotime() returns -1 on failure
-    if ($timestamp < 0) {
-      $timestamp = aggregator_parse_w3cdtf($date); // also returns -1 on failure
-      if ($timestamp < 0) {
+    $timestamp = strtotime($date); // As of PHP 5.1.0, strtotime returns FALSE on failure instead of -1.
+    if ($timestamp <= 0) {
+      $timestamp = aggregator_parse_w3cdtf($date); // Returns FALSE on failure
+      if (!$timestamp) {
         $timestamp = time(); // better than nothing
       }
     }
diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module
index 8ac5ca70513b..8c1007ae6c54 100644
--- a/modules/aggregator/aggregator.module
+++ b/modules/aggregator/aggregator.module
@@ -484,7 +484,7 @@ function aggregator_parse_w3cdtf($date_str) {
     return $epoch;
   }
   else {
-    return -1;
+    return FALSE;
   }
 }
 
@@ -580,10 +580,10 @@ function aggregator_parse_feed(&$data, $feed) {
     else if ($item['MODIFIED']) $date = $item['MODIFIED'];                 // Atom XML
     else $date = 'now';
 
-    $timestamp = strtotime($date); // strtotime() returns -1 on failure
-    if ($timestamp < 0) {
-      $timestamp = aggregator_parse_w3cdtf($date); // also returns -1 on failure
-      if ($timestamp < 0) {
+    $timestamp = strtotime($date); // As of PHP 5.1.0, strtotime returns FALSE on failure instead of -1.
+    if ($timestamp <= 0) {
+      $timestamp = aggregator_parse_w3cdtf($date); // Returns FALSE on failure
+      if (!$timestamp) {
         $timestamp = time(); // better than nothing
       }
     }
diff --git a/modules/comment.module b/modules/comment.module
index c4dac7d36dfb..b4a5cdbd40bc 100644
--- a/modules/comment.module
+++ b/modules/comment.module
@@ -517,7 +517,8 @@ function comment_validate(&$edit) {
   }
   else {
     $date = isset($edit['date']) ? $edit['date'] : 'now';
-    if (strtotime($date) != -1) {
+    // As of PHP 5.1.0, strtotime returns FALSE upon failure instead of -1.
+    if (strtotime($date) > 0) {
       $edit['timestamp'] = strtotime($date);
     }
     else {
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index c4dac7d36dfb..b4a5cdbd40bc 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -517,7 +517,8 @@ function comment_validate(&$edit) {
   }
   else {
     $date = isset($edit['date']) ? $edit['date'] : 'now';
-    if (strtotime($date) != -1) {
+    // As of PHP 5.1.0, strtotime returns FALSE upon failure instead of -1.
+    if (strtotime($date) > 0) {
       $edit['timestamp'] = strtotime($date);
     }
     else {
diff --git a/modules/node.module b/modules/node.module
index 4da1629f0eeb..37317c522230 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -1544,8 +1544,8 @@ function node_validate($node) {
       form_set_error('name', t('The username %name does not exist.', array ('%name' => theme('placeholder', $node->name))));
     }
 
-    // Validate the "authored on" field.
-    if (strtotime($node->date) == -1) {
+    // Validate the "authored on" field. As of PHP 5.1.O, strtotime returns FALSE instead of -1 upon failure.
+    if (strtotime($node->date) <= 0) {
       form_set_error('date', t('You have to specify a valid date.'));
     }
   }
diff --git a/modules/node/node.module b/modules/node/node.module
index 4da1629f0eeb..37317c522230 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1544,8 +1544,8 @@ function node_validate($node) {
       form_set_error('name', t('The username %name does not exist.', array ('%name' => theme('placeholder', $node->name))));
     }
 
-    // Validate the "authored on" field.
-    if (strtotime($node->date) == -1) {
+    // Validate the "authored on" field. As of PHP 5.1.O, strtotime returns FALSE instead of -1 upon failure.
+    if (strtotime($node->date) <= 0) {
       form_set_error('date', t('You have to specify a valid date.'));
     }
   }
-- 
GitLab