Add a option to load the changesets.
The default is, not to load the changesets.
This commit is contained in:
parent
29ebda487a
commit
0b248d7dec
4 changed files with 29 additions and 17 deletions
|
@ -55,12 +55,12 @@ class DokuWikiIterator
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct($loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
$basedir = $conf['datadir'];
|
$basedir = $conf['datadir'];
|
||||||
|
|
||||||
$this->root = new DokuWikiNameSpace($basedir);
|
$this->root = new DokuWikiNameSpace($basedir, null, $loadChangesets, $maxChangeSetAge);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,9 +19,9 @@ class DokuWikiNameSpace extends DokuWikiNode
|
||||||
* @param $path
|
* @param $path
|
||||||
* @param null $parent
|
* @param null $parent
|
||||||
*/
|
*/
|
||||||
function __construct($path, $parent = null)
|
function __construct($path, $parent = null,$loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||||
{
|
{
|
||||||
parent::__construct($path, $parent);
|
parent::__construct($path, $parent, $loadChangesets, $maxChangeSetAge);
|
||||||
$files = dir($path);
|
$files = dir($path);
|
||||||
|
|
||||||
$this->nodes = new \ArrayObject();
|
$this->nodes = new \ArrayObject();
|
||||||
|
@ -31,10 +31,10 @@ class DokuWikiNameSpace extends DokuWikiNode
|
||||||
$file = $path . DIRECTORY_SEPARATOR . $realfile;
|
$file = $path . DIRECTORY_SEPARATOR . $realfile;
|
||||||
if (is_dir($file)) {
|
if (is_dir($file)) {
|
||||||
if (!(($realfile == '.') or ($realfile == '..'))) {
|
if (!(($realfile == '.') or ($realfile == '..'))) {
|
||||||
$node = new DokuWikiNameSpace($file, $this);
|
$node = new DokuWikiNameSpace($file, $this, $loadChangesets, $maxChangeSetAge);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$node = new DokuWikiPage($file, $this);
|
$node = new DokuWikiPage($file, $this, $loadChangesets, $maxChangeSetAge);
|
||||||
}
|
}
|
||||||
if ($node) {
|
if ($node) {
|
||||||
$this->nodes->append($node);
|
$this->nodes->append($node);
|
||||||
|
|
|
@ -32,6 +32,12 @@ abstract class DokuWikiNode
|
||||||
/** @var DokuWikiNameSpace */
|
/** @var DokuWikiNameSpace */
|
||||||
protected $parent = null;
|
protected $parent = null;
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
protected $loadChangesets = false;
|
||||||
|
|
||||||
|
/** @var \DateTime */
|
||||||
|
protected $maxChangeSetAge = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -81,11 +87,13 @@ abstract class DokuWikiNode
|
||||||
* @param $filename
|
* @param $filename
|
||||||
* @param null $parent
|
* @param null $parent
|
||||||
*/
|
*/
|
||||||
function __construct($filename, $parent = null)
|
function __construct($filename, $parent = null, $loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||||
{
|
{
|
||||||
$this->filename = $filename;
|
$this->filename = $filename;
|
||||||
$this->parent = $parent;
|
$this->parent = $parent;
|
||||||
$this->metadata = new \ArrayObject();
|
$this->metadata = new \ArrayObject();
|
||||||
|
$this->loadChangesets = $loadChangesets;
|
||||||
|
$this->maxChangeSetAge = $maxChangeSetAge;
|
||||||
if (is_null($parent) && is_dir($filename)) {
|
if (is_null($parent) && is_dir($filename)) {
|
||||||
$this->name = 'root';
|
$this->name = 'root';
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -17,9 +17,9 @@ class DokuWikiPage extends DokuWikiNode
|
||||||
* @param $filename
|
* @param $filename
|
||||||
* @param null $parent
|
* @param null $parent
|
||||||
*/
|
*/
|
||||||
public function __construct($filename, $parent = null)
|
public function __construct($filename, $parent = null,$loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||||
{
|
{
|
||||||
parent::__construct($filename, $parent);
|
parent::__construct($filename, $parent,$loadChangesets,$maxChangeSetAge);
|
||||||
$this->content = file_get_contents($this->filename);
|
$this->content = file_get_contents($this->filename);
|
||||||
if (($this->name == 'start') && ($this->parent->name != 'root')) {
|
if (($this->name == 'start') && ($this->parent->name != 'root')) {
|
||||||
$this->parent->content = $this->content;
|
$this->parent->content = $this->content;
|
||||||
|
@ -28,15 +28,19 @@ class DokuWikiPage extends DokuWikiNode
|
||||||
foreach ($metadata as $key => $value) {
|
foreach ($metadata as $key => $value) {
|
||||||
$this->setMetaData($key, $value);
|
$this->setMetaData($key, $value);
|
||||||
}
|
}
|
||||||
// extract changelog
|
|
||||||
$this->ChangeLog = new \ArrayObject();
|
$this->ChangeLog = new \ArrayObject();
|
||||||
$file = metaFN($this->getFullID(), '.changes');
|
if ($this->loadChangesets) {
|
||||||
if (file_exists($file)) {
|
// extract changelog
|
||||||
$changelog_entries = explode("\n", file_get_contents($file));
|
$file = metaFN($this->getFullID(), '.changes');
|
||||||
foreach ($changelog_entries as $raw_entry) {
|
if (file_exists($file)) {
|
||||||
$entry = parseChangelogLine($raw_entry);
|
$changelog_entries = explode("\n", file_get_contents($file));
|
||||||
$changelog = new DokuWikiChangeset($entry['date'], $entry['extra'], $entry['id'], $entry['ip'], $entry['sum'], $entry['type'], $entry['user']);
|
foreach ($changelog_entries as $raw_entry) {
|
||||||
$this->ChangeLog->append($changelog);
|
$entry = parseChangelogLine($raw_entry);
|
||||||
|
if ((!is_null($this->maxChangeSetAge)) && ($this->maxChangeSetAge->format('U') > $entry['date']))
|
||||||
|
continue;
|
||||||
|
$changelog = new DokuWikiChangeset($entry['date'], $entry['extra'], $entry['id'], $entry['ip'], $entry['sum'], $entry['type'], $entry['user']);
|
||||||
|
$this->ChangeLog->append($changelog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue