chregu          Thu Mar  8 03:57:16 2001 EDT

  Modified files:              
    /php4/pear/Cache    Container.php Output.php 
    /php4/pear/Cache/Container  db.php file.php phplib.php 
  Log:
  Introduced getExpiresAbsolute($expire) function, which translates 
  relative/human readable/unixtime expire-times in unixtime-format.
  
  
Index: php4/pear/Cache/Container.php
diff -u php4/pear/Cache/Container.php:1.6 php4/pear/Cache/Container.php:1.7
--- php4/pear/Cache/Container.php:1.6   Tue Mar  6 07:27:30 2001
+++ php4/pear/Cache/Container.php       Thu Mar  8 03:57:15 2001
@@ -14,9 +14,10 @@
 // +----------------------------------------------------------------------+
 // | Authors: Ulf Wendel <[EMAIL PROTECTED]>                           |
 // |          Sebastian Bergmann <[EMAIL PROTECTED]>               |
+// |          Christian Stocker <[EMAIL PROTECTED]>                         |
 // +----------------------------------------------------------------------+
 //
-// $Id: Container.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
+// $Id: Container.php,v 1.7 2001/03/08 11:57:15 chregu Exp $
 
 /**
 * Common base class of all cache storage container.
@@ -36,7 +37,7 @@
 * not recommended!
 * 
 * @author   Ulf Wendel <[EMAIL PROTECTED]>
-* @version  $Id: Container.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
+* @version  $Id: Container.php,v 1.7 2001/03/08 11:57:15 chregu Exp $
 * @package  Cache
 * @access   public
 * @abstract
@@ -372,5 +373,47 @@
         else
             return unserialize($data);
     } // end func decode
+
+    /**
+    * Translates human readable/relative times in unixtime
+    *
+    * @var  mixed   can be in the following formats:
+    *               human readable          : yyyymmddhhmm[ss]] eg: 20010308095100
+    *               relative in seconds (1) : +xx              eg: +10
+    *               relative in seconds (2) : x <  946681200   eg: 10
+    *               absolute unixtime       : x < 2147483648   eg: 2147483648
+    *               see comments in code for details
+    */
+
+    function getExpiresAbsolute($expires)
+
+    {
+        if (!$expires)
+            return 0;
+        //for api-compatibility, one has not to provide a "+",
+        // if integer is < 946681200 (= Jan 01 2000 00:00:00)
+        if ('+' == $expires[0] || $expires < 946681200)
+        {
+            return(time() + $expires);
+        }
+        //if integer is < 100000000000 (= in 3140 years),
+        // it must be an absolut unixtime
+        // (since the "human readable" definition asks for a higher number)
+        elseif ($expires < 100000000000)
+        {
+            return $expires;
+        }
+        // else it's "human readable";
+        else
+        {
+            $year = substr($expires, 0, 4);
+            $month = substr($expires, 4, 2);
+            $day = substr($expires, 6, 2);
+            $hour = substr($expires, 8, 2);
+            $minute = substr($expires, 10, 2);
+            $second = substr($expires, 12, 2);
+            return mktime($hour, $minute, $second, $month, $day, $year);
+        }
+    }
 }
 ?>
Index: php4/pear/Cache/Output.php
diff -u php4/pear/Cache/Output.php:1.9 php4/pear/Cache/Output.php:1.10
--- php4/pear/Cache/Output.php:1.9      Tue Mar  6 07:27:30 2001
+++ php4/pear/Cache/Output.php  Thu Mar  8 03:57:15 2001
@@ -17,7 +17,7 @@
 // |          Vinai Kopp <[EMAIL PROTECTED]>                           |
 // +----------------------------------------------------------------------+
 //
-// $Id: Output.php,v 1.9 2001/03/06 15:27:30 sbergmann Exp $
+// $Id: Output.php,v 1.10 2001/03/08 11:57:15 chregu Exp $
 
 require_once 'Cache.php';
 
@@ -129,11 +129,11 @@
     /*
     * Stores the content of the output buffer into the cache and returns the content.
     *
-    * @param    integer lifetime of the cached data in seconds - 0 for endless
+    * @param    mixed   lifetime of the cached data in seconds - 0 for endless. More 
+formats available. see Container::getExpiresAbsolute()
     * @param    string  additional userdefined data
     * @return   string  cached output
     * @access   public
-    * @see      endPrint(), endGet()
+    * @see      endPrint(), endGet(), Container::getExpiresAbsolute()
     */
     function end($expire = 0, $userdata = "") {
         $content = ob_get_contents();
Index: php4/pear/Cache/Container/db.php
diff -u php4/pear/Cache/Container/db.php:1.7 php4/pear/Cache/Container/db.php:1.8
--- php4/pear/Cache/Container/db.php:1.7        Tue Mar  6 07:27:30 2001
+++ php4/pear/Cache/Container/db.php    Thu Mar  8 03:57:16 2001
@@ -17,7 +17,7 @@
 // |          Chuck Hagenbuch <[EMAIL PROTECTED]>                           |
 // +----------------------------------------------------------------------+
 //
-// $Id: db.php,v 1.7 2001/03/06 15:27:30 sbergmann Exp $
+// $Id: db.php,v 1.8 2001/03/08 11:57:16 chregu Exp $
 
 require_once 'DB.php';
 require_once 'Cache/Container.php';
@@ -52,7 +52,7 @@
 * )
 *
 * @author   Sebastian Bergmann <[EMAIL PROTECTED]>
-* @version  $Id: db.php,v 1.7 2001/03/06 15:27:30 sbergmann Exp $
+* @version  $Id: db.php,v 1.8 2001/03/08 11:57:16 chregu Exp $
 * @package  Cache
 */
 class Cache_Container_db extends Cache_Container {
@@ -131,7 +131,7 @@
                          $this->cache_table,
                          addslashes($userdata),
                          addslashes($this->encode($data)),
-                         ($expires) ? $expires + time() : 0,
+                          $this->getExpiresAbsolute($expires) ,
                          addslashes($id),
                          addslashes($group)
                         );
Index: php4/pear/Cache/Container/file.php
diff -u php4/pear/Cache/Container/file.php:1.6 php4/pear/Cache/Container/file.php:1.7
--- php4/pear/Cache/Container/file.php:1.6      Tue Mar  6 07:27:30 2001
+++ php4/pear/Cache/Container/file.php  Thu Mar  8 03:57:16 2001
@@ -16,7 +16,7 @@
 // |          Sebastian Bergmann <[EMAIL PROTECTED]>               |
 // +----------------------------------------------------------------------+
 //
-// $Id: file.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
+// $Id: file.php,v 1.7 2001/03/08 11:57:16 chregu Exp $
 
 require_once 'Cache/Container.php';
 
@@ -24,7 +24,7 @@
 * Stores cache contents in a file.
 *
 * @author   Ulf Wendel  <[EMAIL PROTECTED]>
-* @version  $Id: file.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
+* @version  $Id: file.php,v 1.7 2001/03/08 11:57:16 chregu Exp $
 */
 class Cache_Container_file extends Cache_Container {
 
@@ -107,7 +107,7 @@
         // 1st line: expiration date
         // 2nd line: user data
         // 3rd+ lines: cache data
-        $expires = ($expires) ? $expires + time() : 0;
+        $expires = $this->getExpiresAbsolute($expires);
         fwrite($fh, $expires . "\n");
         fwrite($fh, $userdata . "\n");
         fwrite($fh, $this->encode($cachedata));
Index: php4/pear/Cache/Container/phplib.php
diff -u php4/pear/Cache/Container/phplib.php:1.8 
php4/pear/Cache/Container/phplib.php:1.9
--- php4/pear/Cache/Container/phplib.php:1.8    Tue Mar  6 07:27:30 2001
+++ php4/pear/Cache/Container/phplib.php        Thu Mar  8 03:57:16 2001
@@ -16,7 +16,7 @@
 // |          Sebastian Bergmann <[EMAIL PROTECTED]>               |
 // +----------------------------------------------------------------------+
 //
-// $Id: phplib.php,v 1.8 2001/03/06 15:27:30 sbergmann Exp $
+// $Id: phplib.php,v 1.9 2001/03/08 11:57:16 chregu Exp $
 
 require_once 'Cache/Container.php';
 
@@ -51,7 +51,7 @@
 *
 * 
 * @author   Ulf Wendel  <[EMAIL PROTECTED]>, Sebastian Bergmann 
<[EMAIL PROTECTED]>
-* @version  $Id: phplib.php,v 1.8 2001/03/06 15:27:30 sbergmann Exp $
+* @version  $Id: phplib.php,v 1.9 2001/03/08 11:57:16 chregu Exp $
 * @package  Cache
 * @see      save()
 */
@@ -161,7 +161,7 @@
         $query = sprintf("REPLACE INTO %s (cachedata, expires, id, cachegroup) VALUES 
('%s', %d, '%s', '%s')",
                             $this->cache_table,
                             addslashes($this->encode($data)),
-                            ($expires) ? $expires + time() : 0,
+                            $this->getExpiresAbsolute($expires) ,
                             $id,
                             $group
                          );



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to