]> git.mxchange.org Git - friendica.git/blobdiff - library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
reverting tinymce changes, updating smarty to 3.1.19
[friendica.git] / library / Smarty / libs / sysplugins / smarty_internal_cacheresource_file.php
index e5d20bd6ee2ddefa9ad9980fadf57e2e793961ef..17c6e4bf4778f3ca76f543a64477d153311fa6d4 100644 (file)
@@ -2,27 +2,27 @@
 /**
  * Smarty Internal Plugin CacheResource File
  *
- * @package Smarty
+ * @package    Smarty
  * @subpackage Cacher
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author     Uwe Tews
+ * @author     Rodney Rehm
  */
 
 /**
  * This class does contain all necessary methods for the HTML cache on file system
- *
  * Implements the file system as resource for the HTML cache Version ussing nocache inserts.
  *
- * @package Smarty
+ * @package    Smarty
  * @subpackage Cacher
  */
-class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
-
+class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
+{
     /**
      * populate Cached Object with meta data from Resource
      *
      * @param Smarty_Template_Cached   $cached    cached object
      * @param Smarty_Internal_Template $_template template object
+     *
      * @return void
      */
     public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
@@ -58,7 +58,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
             } else {
                 $_lock_dir = $_cache_dir;
             }
-            $cached->lock_id = $_lock_dir.sha1($_cache_id.$_compile_id.$_template->source->uid).'.lock';
+            $cached->lock_id = $_lock_dir . sha1($_cache_id . $_compile_id . $_template->source->uid) . '.lock';
         }
         $cached->filepath = $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_source_file_path) . '.php';
         $cached->timestamp = @filemtime($cached->filepath);
@@ -69,6 +69,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
      * populate Cached Object with timestamp and exists from Resource
      *
      * @param Smarty_Template_Cached $cached cached object
+     *
      * @return void
      */
     public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -81,12 +82,17 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
      * Read the cached template and process its header
      *
      * @param Smarty_Internal_Template $_template template object
-     * @param Smarty_Template_Cached $cached cached object
-     * @return booelan true or false if the cached content does not exist
+     * @param Smarty_Template_Cached   $cached    cached object
+     *
+     * @return booleantrue or false if the cached content does not exist
      */
-    public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+    public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
     {
+        /** @var Smarty_Internal_Template $_smarty_tpl
+         * used in included file
+         */
         $_smarty_tpl = $_template;
+
         return @include $_template->cached->filepath;
     }
 
@@ -95,6 +101,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
      *
      * @param Smarty_Internal_Template $_template template object
      * @param string                   $content   content to cache
+     *
      * @return boolean success
      */
     public function writeCachedContent(Smarty_Internal_Template $_template, $content)
@@ -106,14 +113,16 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
                 return true;
             }
         }
+
         return false;
     }
 
     /**
      * Empty cache
      *
-     * @param Smarty_Internal_Template $_template template object
-     * @param integer                  $exp_time  expiration time (number of seconds, not timestamp)
+     * @param Smarty  $smarty
+     * @param integer $exp_time expiration time (number of seconds, not timestamp)
+     *
      * @return integer number of cache files deleted
      */
     public function clearAll(Smarty $smarty, $exp_time = null)
@@ -124,20 +133,21 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
     /**
      * Empty cache for a specific template
      *
-     * @param Smarty  $_template     template object
+     * @param Smarty  $smarty
      * @param string  $resource_name template name
      * @param string  $cache_id      cache id
      * @param string  $compile_id    compile id
      * @param integer $exp_time      expiration time (number of seconds, not timestamp)
+     *
      * @return integer number of cache files deleted
-    */
+     */
     public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
     {
         $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
         $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
         $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
         $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
-        $_dir = $smarty->getCacheDir();
+        $_dir = realpath($smarty->getCacheDir()) . '/';
         $_dir_length = strlen($_dir);
         if (isset($_cache_id)) {
             $_cache_id_parts = explode('|', $_cache_id);
@@ -178,7 +188,9 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
             $_cacheDirs = new RecursiveDirectoryIterator($_dir);
             $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
             foreach ($_cache as $_file) {
-                if (substr($_file->getBasename(),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
+                if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+                    continue;
+                }
                 // directory ?
                 if ($_file->isDir()) {
                     if (!$_cache->isDot()) {
@@ -186,16 +198,16 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
                         @rmdir($_file->getPathname());
                     }
                 } else {
-                    $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string)$_file, $_dir_length)));
+                    $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string) $_file, $_dir_length)));
                     $_parts_count = count($_parts);
                     // check name
                     if (isset($resource_name)) {
-                        if ($_parts[$_parts_count-1] != $_resourcename_parts) {
+                        if ($_parts[$_parts_count - 1] != $_resourcename_parts) {
                             continue;
                         }
                     }
                     // check compile id
-                    if (isset($_compile_id) && (!isset($_parts[$_parts_count-2 - $_compile_id_offset]) || $_parts[$_parts_count-2 - $_compile_id_offset] != $_compile_id)) {
+                    if (isset($_compile_id) && (!isset($_parts[$_parts_count - 2 - $_compile_id_offset]) || $_parts[$_parts_count - 2 - $_compile_id_offset] != $_compile_id)) {
                         continue;
                     }
                     // check cache id
@@ -205,27 +217,40 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
                         if ($_parts_count < $_cache_id_parts_count) {
                             continue;
                         }
-                        for ($i = 0; $i < $_cache_id_parts_count; $i++) {
-                            if ($_parts[$i] != $_cache_id_parts[$i]) continue 2;
+                        for ($i = 0; $i < $_cache_id_parts_count; $i ++) {
+                            if ($_parts[$i] != $_cache_id_parts[$i]) {
+                                continue 2;
+                            }
                         }
                     }
                     // expired ?
-                    if (isset($exp_time) && $_time - @filemtime($_file) < $exp_time) {
-                        continue;
+                    if (isset($exp_time)) {
+                        if ($exp_time < 0) {
+                            preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_file), $match);
+                            if ($_time < (@filemtime($_file) + $match[1])) {
+                                continue;
+                            }
+                        } else {
+                            if ($_time - @filemtime($_file) < $exp_time) {
+                                continue;
+                            }
+                        }
                     }
                     $_count += @unlink((string) $_file) ? 1 : 0;
                 }
             }
         }
+
         return $_count;
     }
 
     /**
      * Check is cache is locked for this template
      *
-     * @param Smarty $smarty Smarty object
+     * @param Smarty                 $smarty Smarty object
      * @param Smarty_Template_Cached $cached cached object
-     * @return booelan true or false if cache is locked
+     *
+     * @return boolean true or false if cache is locked
      */
     public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
     {
@@ -235,14 +260,17 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
             clearstatcache();
         }
         $t = @filemtime($cached->lock_id);
+
         return $t && (time() - $t < $smarty->locking_timeout);
     }
 
     /**
      * Lock cache for this template
      *
-     * @param Smarty $smarty Smarty object
+     * @param Smarty                 $smarty Smarty object
      * @param Smarty_Template_Cached $cached cached object
+     *
+     * @return bool|void
      */
     public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
     {
@@ -253,8 +281,10 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
     /**
      * Unlock cache for this template
      *
-     * @param Smarty $smarty Smarty object
+     * @param Smarty                 $smarty Smarty object
      * @param Smarty_Template_Cached $cached cached object
+     *
+     * @return bool|void
      */
     public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
     {
@@ -262,5 +292,3 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
         @unlink($cached->lock_id);
     }
 }
-
-?>
\ No newline at end of file