diff options
author | xue <> | 2006-06-22 00:22:53 +0000 |
---|---|---|
committer | xue <> | 2006-06-22 00:22:53 +0000 |
commit | 99ea5b7b4b90d0298f47223c0fc832b30c1903eb (patch) | |
tree | 0bdbf9f5af68018d3088a240be88a70b53c530ab | |
parent | 093b91091672ff2ae645099c8a42b528b29d8e5e (diff) |
Added TOutputCache.OnCalculateKey event.
-rw-r--r-- | framework/Web/UI/WebControls/TOutputCache.php | 66 |
1 files changed, 59 insertions, 7 deletions
diff --git a/framework/Web/UI/WebControls/TOutputCache.php b/framework/Web/UI/WebControls/TOutputCache.php index e24b978a..70b18c6a 100644 --- a/framework/Web/UI/WebControls/TOutputCache.php +++ b/framework/Web/UI/WebControls/TOutputCache.php @@ -35,7 +35,7 @@ *
* There are two ways to specify cache dependency. One may write event handlers
* to respond to the {@link onCheckDependency OnCheckDependency} event and set
- * the event parameter's {@link TOutputCacheEventParameter::getIsValid IsValid}
+ * the event parameter's {@link TOutputCacheCheckDependencyEventParameter::getIsValid IsValid}
* property to indicate whether the cached data remains valid or not.
* One can also extend TOutputCache and override its {@link getCacheDependency CacheDependency}
* function. While the former is easier to use, the latter offers more extensibility.
@@ -115,7 +115,7 @@ class TOutputCache extends TControl implements INamingContainer {
$this->_cacheAvailable=true;
$data=$this->_cache->get($this->getCacheKey());
- $param=new TOutputCacheEventParameter;
+ $param=new TOutputCacheCheckDependencyEventParameter;
$this->onCheckDependency($param);
$this->_dataCached=($data!==false && $param->getIsValid());
if($this->_dataCached)
@@ -287,6 +287,9 @@ class TOutputCache extends TControl implements INamingContainer }
$key.=serialize($params);
}
+ $param=new TOutputCacheCalculateKeyEventParameter;
+ $this->onCalculateKey($param);
+ $key.=$param->getCacheKey();
return $key;
}
@@ -404,9 +407,9 @@ class TOutputCache extends TControl implements INamingContainer /**
* This event is raised when the output cache is checking cache dependency.
* An event handler may be written to check customized dependency conditions.
- * The checking result should be saved by setting {@link TOutputCacheEventParameter::setIsValid IsValid}
+ * The checking result should be saved by setting {@link TOutputCacheCheckDependencyEventParameter::setIsValid IsValid}
* property of the event parameter (which defaults to true).
- * @param TOutputCacheEventParameter event parameter
+ * @param TOutputCacheCheckDependencyEventParameter event parameter
*/
public function onCheckDependency($param)
{
@@ -414,6 +417,19 @@ class TOutputCache extends TControl implements INamingContainer }
/**
+ * This event is raised when the output cache is calculating cache key.
+ * By varying cache keys, one can obtain different versions of cached content.
+ * An event handler may be written to add variety of the key calculation.
+ * The value set in {@link TOutputCacheCalculateKeyEventParameter::setCacheKey CacheKey} of
+ * this event parameter will be appended to the default key calculation scheme.
+ * @param TOutputCacheCalculateKeyEventParameter event parameter
+ */
+ public function onCalculateKey($param)
+ {
+ $this->raiseEvent('OnCalculateKey',$this,$param);
+ }
+
+ /**
* Renders the output cache control.
* This method overrides the parent implementation by capturing the output
* from its child controls and saving it into cache, if output cache is needed.
@@ -443,9 +459,9 @@ class TOutputCache extends TControl implements INamingContainer }
/**
- * TOutputCacheEventParameter class
+ * TOutputCacheCheckDependencyEventParameter class
*
- * TOutputCacheEventParameter encapsulates the parameter data for
+ * TOutputCacheCheckDependencyEventParameter encapsulates the parameter data for
* <b>OnCheckDependency</b> event of {@link TOutputCache} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
@@ -453,7 +469,7 @@ class TOutputCache extends TControl implements INamingContainer * @package System.Web.UI.WebControls
* @since 3.0
*/
-class TOutputCacheEventParameter extends TEventParameter
+class TOutputCacheCheckDependencyEventParameter extends TEventParameter
{
/**
* @var boolean whether the dependency remains valid
@@ -477,4 +493,40 @@ class TOutputCacheEventParameter extends TEventParameter }
}
+
+/**
+ * TOutputCacheCalculateKeyEventParameter class
+ *
+ * TOutputCacheCalculateKeyEventParameter encapsulates the parameter data for
+ * <b>OnCalculateKey</b> event of {@link TOutputCache} control.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @version $Revision: $ $Date: $
+ * @package System.Web.UI.WebControls
+ * @since 3.0
+ */
+class TOutputCacheCalculateKeyEventParameter extends TEventParameter
+{
+ /**
+ * @var string cache key to be appended to the default calculation scheme.
+ */
+ private $_cacheKey='';
+
+ /**
+ * @return string cache key to be appended to the default calculation scheme.
+ */
+ public function getCacheKey()
+ {
+ return $this->_cacheKey;
+ }
+
+ /**
+ * @param string cache key to be appended to the default calculation scheme
+ */
+ public function setCacheKey($value)
+ {
+ $this->_cacheKey=TPropertyValue::ensureString($value);
+ }
+}
+
?>
\ No newline at end of file |