<?php if (!defined('PmWiki')) exit(); /* Copyright 2016 Petko Yotov www.pmwiki.org/petko Class based on PageStore() Copyright 2005-2015 by Patrick Michaud This file is written for PmWiki; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See pmwiki.php for full details. */ $RecipeInfo['SessionPageStore']['Version'] = '20160127'; $PageCacheDir = false; $NoHTMLCache = 1; $PageIndexFile = false; ## class SessionPageStore holds objects that store pages ## via session storage. class SessionPageStore extends PageStore { function SessionPageStore() { @session_start(); } function read($pagename, $since=0) { @session_start(); return @$_SESSION['session-page-store'][$pagename]; } function write($pagename,$page) { global $Now, $Version, $Charset; @session_start(); $page['charset'] = $Charset; $page['name'] = $pagename; $page['time'] = $Now; $page['host'] = $_SERVER['REMOTE_ADDR']; $page['agent'] = @$_SERVER['HTTP_USER_AGENT']; $page['rev'] = @$page['rev']+1; unset($page['version']); unset($page['newline']); uksort($page, 'CmpPageAttr'); $_SESSION['session-page-store'][$pagename] = $page; PCache($pagename, $page); session_write_close(); } function exists($pagename) { if (!$pagename) return false; @session_start(); return (boolean)@$_SESSION['session-page-store'][$pagename]; } function delete($pagename) { @session_start(); unset($_SESSION['session-page-store'][$pagename]); session_write_close(); } function ls($pats=NULL) { @session_start(); global $GroupPattern, $NamePattern; StopWatch("SessionPageStore::ls begin"); $pats=(array)$pats; array_push($pats, "/^$GroupPattern\.$NamePattern$/"); $out = $o = array(); if(@$_SESSION['session-page-store'] && is_array($_SESSION['session-page-store'])) foreach($_SESSION['session-page-store'] as $pn=>$page) { $o[] = $pn; } StopWatch("SessionPageStore::ls merge"); $out = array_merge($out, MatchPageNames($o, $pats)); StopWatch("SessionPageStore::ls end"); return $out; } }