<?php  
/** jjsiterator.php
*
* \brief let the browser iterate over all pages by a chain of meta refresh elements 
* all request parameters will be reused on each iteration
*
* @author: Jens Schiffler
* @license http://www.gnu.org/licenses/gpl.html GNU General Public License
* @version 1.0   2006-03-16
* 
*/
define('JJSITERATOR', '1.0');
## $JJSIteratorUseSession boolean 
## if true: cache pagelist in session data 
## otherwise $WikiDir->ls() is called on each refresh
SDV($JJSIteratorUseSession, true);

if (isset($_REQUEST['jjsiterator']))
{
	global $WikiDir, $HTMLHeaderFmt, $JJSCMSPrivateSection, $JJSCMSPublicSection;

	$next = intval($_REQUEST['jjsiterator']);
	$pause = intval($_REQUEST['jjsiteratordelay']);
	$pat = $_REQUEST['jjsiteratorpat'];
	
	
	if (true == $JJSIteratorUseSession) 
	{
		session_start();
	}
	
	// try to get cached pagelist from session data
	if (true == $JJSIteratorUseSession && 0 != $next && isset($_SESSION['JJSIteratorPageList']))
	{
		$PageList =& $_SESSION['JJSIteratorPageList'];		
	}
	else
	{
		$PageList =& $WikiDir->ls($pat);
		if (true == $JJSIteratorUseSession)
		{
			$_SESSION['JJSIteratorPageList'] =& $PageList;
		}
	}
	

	if ($next < count($PageList))
	{

		$pagename = $PageList[$next];
		$next++;

		$refreshurl = FmtPageName('$PageUrl',$pagename);
		$refreshurl .= '&jjsiterator=' . $next ;

		// reuse current request parameters in the next call
		foreach($_REQUEST as $param => $value)
		{
			if ($param != 'jjsiterator' && $param != 'n' && session_name() != $param)
			{
				$refreshurl .= '&' . urlencode($param) . '=' . urlencode($value);
			}
		}
		
		$elem = '<!-- ' . $JJSCMSPrivateSection . ' --><meta http-equiv="Refresh" Content="'.$pause. '; URL=' . $refreshurl . '"  /><!-- /' . $JJSCMSPrivateSection . ' -->';
		$HTMLHeaderFmt['jjsrefresh'] = $elem;
	}
	else
	{
		if (true == $JJSIteratorUseSession)
		{
			$_SESSION['JJSIteratorPageList'] = NULL;
			unset($_SESSION['JJSIteratorPageList']);
		}
	}
}