From c2915b791714bd883ca3f06bbda0935f8ec9ef63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20=C3=85kre=20Solberg?= <andreas.solberg@uninett.no>
Date: Wed, 28 Jan 2009 07:18:15 +0000
Subject: [PATCH] Add expire with metarefresh module

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1209 44740490-163a-0410-bde0-09ae8108e29a
---
 modules/metarefresh/lib/MetaLoader.php | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/modules/metarefresh/lib/MetaLoader.php b/modules/metarefresh/lib/MetaLoader.php
index 6a189ff5b..f85732434 100644
--- a/modules/metarefresh/lib/MetaLoader.php
+++ b/modules/metarefresh/lib/MetaLoader.php
@@ -51,11 +51,13 @@ class sspmod_metarefresh_MetaLoader {
 			}
 			$template = NULL;
 			if (array_key_exists('template', $source)) $template = $source['template'];
+			
+			$expireDuration = time() + min($this->maxcache, $this->maxduration);
 	
-			$this->addMetadata($source['src'], $entity->getMetadata1xSP(), 'shib13-sp-remote', $template);
-			$this->addMetadata($source['src'], $entity->getMetadata1xIdP(), 'shib13-idp-remote', $template);
-			$this->addMetadata($source['src'], $entity->getMetadata20SP(), 'saml20-sp-remote', $template);
-			$this->addMetadata($source['src'], $entity->getMetadata20IdP(), 'saml20-idp-remote', $template);
+			$this->addMetadata($source['src'], $entity->getMetadata1xSP(), 'shib13-sp-remote', $template, $expireDuration);
+			$this->addMetadata($source['src'], $entity->getMetadata1xIdP(), 'shib13-idp-remote', $template, $expireDuration);
+			$this->addMetadata($source['src'], $entity->getMetadata20SP(), 'saml20-sp-remote', $template, $expireDuration);
+			$this->addMetadata($source['src'], $entity->getMetadata20IdP(), 'saml20-idp-remote', $template, $expireDuration);
 		}
 	}
 
@@ -98,7 +100,7 @@ class sspmod_metarefresh_MetaLoader {
 	 * @param $metadata The metadata.
 	 * @param $type The metadata type.
 	 */
-	private function addMetadata($filename, $metadata, $type, $template = NULL) {
+	private function addMetadata($filename, $metadata, $type, $template = NULL, $expireDuration) {
 	
 		if($metadata === NULL) {
 			return;
@@ -115,6 +117,13 @@ class sspmod_metarefresh_MetaLoader {
 		if(!array_key_exists($type, $this->metadata)) {
 			$this->metadata[$type] = array();
 		}
+		
+		if (!array_key_exists('expire', $metadata)) {
+			$metadata['expire'] = $expireDuration;
+		} else {
+			if ($expireDuration < $metadata['expire'])
+				$metadata['expire'] = $expireDuration;				
+		}
 	
 		$this->metadata[$type][] = array('filename' => $filename, 'metadata' => $metadata);
 	}
-- 
GitLab