Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F391054
smarty_cacheresource_custom.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Subscribers
None
smarty_cacheresource_custom.php
View Options
<?php
/**
* Smarty Internal Plugin
*
* @package Smarty
* @subpackage Cacher
*/
/**
* Cache Handler API
*
* @package Smarty
* @subpackage Cacher
* @author Rodney Rehm
*/
abstract
class
Smarty_CacheResource_Custom
extends
Smarty_CacheResource
{
/**
* fetch cached content and its modification time from data source
*
* @param string $id unique cache content identifier
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param string $content cached content
* @param integer $mtime cache modification timestamp (epoch)
* @return void
*/
protected
abstract
function
fetch
(
$id
,
$name
,
$cache_id
,
$compile_id
,
&
$content
,
&
$mtime
);
/**
* Fetch cached content's modification timestamp from data source
*
* {@internal implementing this method is optional.
* Only implement it if modification times can be accessed faster than loading the complete cached content.}}
*
* @param string $id unique cache content identifier
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/
protected
function
fetchTimestamp
(
$id
,
$name
,
$cache_id
,
$compile_id
)
{
return
null
;
}
/**
* Save content to cache
*
* @param string $id unique cache content identifier
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration or null
* @param string $content content to cache
* @return boolean success
*/
protected
abstract
function
save
(
$id
,
$name
,
$cache_id
,
$compile_id
,
$exp_time
,
$content
);
/**
* Delete content from cache
*
* @param string $name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration time in seconds or null
* @return integer number of deleted caches
*/
protected
abstract
function
delete
(
$name
,
$cache_id
,
$compile_id
,
$exp_time
);
/**
* 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
)
{
$_cache_id
=
isset
(
$cached
->
cache_id
)
?
preg_replace
(
'![^
\w\|
]+!'
,
'_'
,
$cached
->
cache_id
)
:
null
;
$_compile_id
=
isset
(
$cached
->
compile_id
)
?
preg_replace
(
'![^
\w\|
]+!'
,
'_'
,
$cached
->
compile_id
)
:
null
;
$cached
->
filepath
=
sha1
(
$cached
->
source
->
filepath
.
$_cache_id
.
$_compile_id
);
$this
->
populateTimestamp
(
$cached
);
}
/**
* populate Cached Object with timestamp and exists from Resource
*
* @param Smarty_Template_Cached $source cached object
* @return void
*/
public
function
populateTimestamp
(
Smarty_Template_Cached
$cached
)
{
$mtime
=
$this
->
fetchTimestamp
(
$cached
->
filepath
,
$cached
->
source
->
name
,
$cached
->
cache_id
,
$cached
->
compile_id
);
if
(
$mtime
!==
null
)
{
$cached
->
timestamp
=
$mtime
;
$cached
->
exists
=
!!
$cached
->
timestamp
;
return
;
}
$timestamp
=
null
;
$this
->
fetch
(
$cached
->
filepath
,
$cached
->
source
->
name
,
$cached
->
cache_id
,
$cached
->
compile_id
,
$cached
->
content
,
$timestamp
);
$cached
->
timestamp
=
isset
(
$timestamp
)
?
$timestamp
:
false
;
$cached
->
exists
=
!!
$cached
->
timestamp
;
}
/**
* Read the cached template and process the 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
*/
public
function
process
(
Smarty_Internal_Template
$_template
,
Smarty_Template_Cached
$cached
=
null
)
{
if
(!
$cached
)
{
$cached
=
$_template
->
cached
;
}
$content
=
$cached
->
content
?
$cached
->
content
:
null
;
$timestamp
=
$cached
->
timestamp
?
$cached
->
timestamp
:
null
;
if
(
$content
===
null
||
!
$timestamp
)
{
$this
->
fetch
(
$_template
->
cached
->
filepath
,
$_template
->
source
->
name
,
$_template
->
cache_id
,
$_template
->
compile_id
,
$content
,
$timestamp
);
}
if
(
isset
(
$content
))
{
$_smarty_tpl
=
$_template
;
eval
(
"?>"
.
$content
);
return
true
;
}
return
false
;
}
/**
* Write the rendered template output to cache
*
* @param Smarty_Internal_Template $_template template object
* @param string $content content to cache
* @return boolean success
*/
public
function
writeCachedContent
(
Smarty_Internal_Template
$_template
,
$content
)
{
return
$this
->
save
(
$_template
->
cached
->
filepath
,
$_template
->
source
->
name
,
$_template
->
cache_id
,
$_template
->
compile_id
,
$_template
->
properties
[
'cache_lifetime'
],
$content
);
}
/**
* Empty cache
*
* @param Smarty $smarty Smarty object
* @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
)
{
$this
->
cache
=
array
();
return
$this
->
delete
(
null
,
null
,
null
,
$exp_time
);
}
/**
* Empty cache for a specific template
*
* @param Smarty $smarty Smarty object
* @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
)
{
$this
->
cache
=
array
();
return
$this
->
delete
(
$resource_name
,
$cache_id
,
$compile_id
,
$exp_time
);
}
/**
* Check is cache is locked for this template
*
* @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if cache is locked
*/
public
function
hasLock
(
Smarty
$smarty
,
Smarty_Template_Cached
$cached
)
{
$id
=
$cached
->
filepath
;
$name
=
$cached
->
source
->
name
.
'.lock'
;
$mtime
=
$this
->
fetchTimestamp
(
$id
,
$name
,
null
,
null
);
if
(
$mtime
===
null
)
{
$this
->
fetch
(
$id
,
$name
,
null
,
null
,
$content
,
$mtime
);
}
return
$mtime
&&
time
()
-
$mtime
<
$smarty
->
locking_timeout
;
}
/**
* Lock cache for this template
*
* @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
*/
public
function
acquireLock
(
Smarty
$smarty
,
Smarty_Template_Cached
$cached
)
{
$cached
->
is_locked
=
true
;
$id
=
$cached
->
filepath
;
$name
=
$cached
->
source
->
name
.
'.lock'
;
$this
->
save
(
$id
,
$name
,
null
,
null
,
$smarty
->
locking_timeout
,
''
);
}
/**
* Unlock cache for this template
*
* @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
*/
public
function
releaseLock
(
Smarty
$smarty
,
Smarty_Template_Cached
$cached
)
{
$cached
->
is_locked
=
false
;
$name
=
$cached
->
source
->
name
.
'.lock'
;
$this
->
delete
(
$name
,
null
,
null
,
null
);
}
}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Feb 22, 20:21 (15 h, 47 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25095
Default Alt Text
smarty_cacheresource_custom.php (7 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment