Compare commits
11 commits
Author | SHA1 | Date | |
---|---|---|---|
|
174d217f11 | ||
|
56ce743994 | ||
|
040a3fbd8a | ||
|
8cbac44f77 | ||
|
8bda3d90f6 | ||
|
0b248d7dec | ||
|
29ebda487a | ||
|
e9576d0d58 | ||
|
5be961ccab | ||
|
d8fa89156e | ||
|
d0cdfe2e69 |
8 changed files with 522 additions and 296 deletions
|
@ -1,280 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: hana
|
||||
* Date: 12.11.13
|
||||
* Time: 22:09
|
||||
*/
|
||||
|
||||
abstract class DokuWikiNode {
|
||||
/** @var String */
|
||||
protected $filename;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $content;
|
||||
|
||||
/** @var ArrayObject */
|
||||
protected $metadata;
|
||||
|
||||
/** @var ArrayObject */
|
||||
public $metadata_extractor;
|
||||
|
||||
/** @var DokuWikiNameSpace */
|
||||
protected $parent = null;
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getContent() {
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $content
|
||||
* @return $this
|
||||
*/
|
||||
public function setContent($content = '') {
|
||||
$this->content = $content;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
public function setMetaData($key,$value) {
|
||||
$this->metadata[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMetaData($key) {
|
||||
return $this->metadata[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getName() {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $filename
|
||||
* @param null $parent
|
||||
*/
|
||||
function __construct ($filename, $parent = null) {
|
||||
$this->filename = $filename;
|
||||
$this->parent = $parent;
|
||||
$this->metadata = new ArrayObject();
|
||||
if (is_null ($parent) && is_dir ($filename)) {
|
||||
$this->name = 'root';
|
||||
} else {
|
||||
$parts = pathinfo($filename);
|
||||
if (is_dir($filename)) {
|
||||
$this->name = $parts['basename'];
|
||||
} else {
|
||||
$this->name = $parts['filename'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return String
|
||||
*/
|
||||
public function getFilename () {
|
||||
return $this->filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function toString () {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFullID() {
|
||||
$path = array();
|
||||
$node = $this;
|
||||
while ($parent = $node->parent) {
|
||||
if ($parent->name != 'root') {
|
||||
$path[] = $parent->name;
|
||||
}
|
||||
$node = $parent;
|
||||
}
|
||||
$path = array_reverse($path);
|
||||
if ($this->name != 'root') {
|
||||
$path[] = $this->name;
|
||||
}
|
||||
return implode(':',$path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Class DokuWikiNameSpace
|
||||
*/
|
||||
class DokuWikiNameSpace extends DokuWikiNode {
|
||||
|
||||
/** @var \ArrayObject */
|
||||
public $nodes;
|
||||
|
||||
/**
|
||||
* @param $path
|
||||
* @param null $parent
|
||||
*/
|
||||
function __construct ($path, $parent = null) {
|
||||
parent::__construct ($path, $parent);
|
||||
$files = dir ($path);
|
||||
|
||||
$this->nodes = new ArrayObject();
|
||||
|
||||
while (($realfile = $files->read ())) {
|
||||
$node = null;
|
||||
$file = $path . DIRECTORY_SEPARATOR . $realfile;
|
||||
if (is_dir ($file)) {
|
||||
if (!(($realfile == '.') or ($realfile == '..'))) {
|
||||
$node = new DokuWikiNameSpace($file, $this);
|
||||
}
|
||||
} else {
|
||||
$node = new DokuWikiPage($file, $this);
|
||||
}
|
||||
if ($node) {
|
||||
$this->nodes->append ($node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function toString () {
|
||||
$retval = '';
|
||||
foreach ($this->nodes as $node) {
|
||||
/** @var $node DokuWikiNode */
|
||||
if ($this->name == 'root') {
|
||||
$retval .= $node->toString() . "\n";
|
||||
} else {
|
||||
$retval .= $this->name . ":" . $node->toString() . "\n";
|
||||
}
|
||||
}
|
||||
return $retval;
|
||||
}
|
||||
|
||||
public function getNodes() {
|
||||
return $this->nodes;
|
||||
}
|
||||
|
||||
public function hasChild($nodeName) {
|
||||
if ($this->nodes->count() > 0) {
|
||||
foreach($this->nodes as $node) {
|
||||
/** @var DokuWikiNode $node */
|
||||
if (($node instanceof DokuWikiPage) && ($node->getName() == $nodeName)) {
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Class DokuWikiPage
|
||||
*/
|
||||
class DokuWikiPage extends DokuWikiNode {
|
||||
/**
|
||||
* @param $filename
|
||||
* @param null $parent
|
||||
*/
|
||||
public function __construct($filename, $parent = null) {
|
||||
parent::__construct($filename,$parent);
|
||||
$this->content = file_get_contents($this->filename);
|
||||
if (($this->name == 'start') && ($this->parent->name != 'root')) {
|
||||
$this->parent->content = $this->content;
|
||||
}
|
||||
$metadata = p_get_metadata($this->getFullID());
|
||||
foreach($metadata as $key => $value) {
|
||||
$this->setMetaData($key,$value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Class DokuWikiIterator
|
||||
*/
|
||||
class DokuWikiIterator {
|
||||
|
||||
/**
|
||||
* @var DokuWikiNameSpace
|
||||
*/
|
||||
private $root;
|
||||
|
||||
/**
|
||||
* @param callable $callback
|
||||
*/
|
||||
public function runMetadataExtractor(Callable $callback) {
|
||||
$this->all($callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DokuWikiNameSpace $ns
|
||||
* @param callable $callback
|
||||
*/
|
||||
private function _all(DokuWikiNameSpace $ns, Callable $callback) {
|
||||
$callback($ns);
|
||||
foreach($ns->nodes as $node) {
|
||||
/** $node DokuWikiNode */
|
||||
if ($node instanceof DokuWikiPage) {
|
||||
$callback($node);
|
||||
}
|
||||
if ($node instanceof DokuWikiNameSpace) {
|
||||
$this->_all($node,$callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable $callback
|
||||
* @return $this
|
||||
*/
|
||||
public function all(Callable $callback) {
|
||||
$this->_all($this->root,$callback);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct () {
|
||||
global $conf;
|
||||
$basedir = $conf['datadir'];
|
||||
|
||||
$this->root = new DokuWikiNameSpace($basedir);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function toString () {
|
||||
return $this->root->toString();
|
||||
}
|
||||
|
||||
public function getRoot() {
|
||||
return $this->root;
|
||||
}
|
||||
}
|
37
composer.json
Normal file → Executable file
37
composer.json
Normal file → Executable file
|
@ -1,18 +1,23 @@
|
|||
{
|
||||
"name": "enko/dokuwikiobjectrepresentation",
|
||||
"type": "library",
|
||||
"description": "DokuWiki data abstraction from the future",
|
||||
"keywords": ["dokuwiki","abstraction"],
|
||||
"homepage": "https://bk-dev.hacked.jp/project/view/1/",
|
||||
"license": "GPL2",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tim Schumacher",
|
||||
"email": "tim@bandenkrieg.hacked.jp",
|
||||
"role": "Developer"
|
||||
"name": "enko/dokuwikiobjectrepresentation",
|
||||
"type": "library",
|
||||
"description": "DokuWiki data abstraction from the future",
|
||||
"keywords": ["dokuwiki", "abstraction"],
|
||||
"homepage": "https://phablab.krautspace.de/project/view/1/",
|
||||
"license": "GPL2",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tim Schumacher",
|
||||
"email": "tim@bandenkrieg.hacked.jp",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"enko\\dokuwiki\\objectrepresentation\\": "lib/enko/dokuwiki/objectrepresentation"
|
||||
}
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
25
lib/enko/DokuWikiObjectRepresentation.class.php
Executable file
25
lib/enko/DokuWikiObjectRepresentation.class.php
Executable file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: hana
|
||||
* Date: 12.11.13
|
||||
* Time: 22:09
|
||||
*/
|
||||
|
||||
namespace enko\dokuwiki\objectrepresentation;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Class DokuWikiNameSpace
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class DokuWikiPage
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class DokuWikiIterator
|
||||
*/
|
106
lib/enko/dokuwiki/objectrepresentation/DokuWikiChangeset.php
Executable file
106
lib/enko/dokuwiki/objectrepresentation/DokuWikiChangeset.php
Executable file
|
@ -0,0 +1,106 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: tim
|
||||
* Date: 12.06.14
|
||||
* Time: 22:49
|
||||
*/
|
||||
|
||||
namespace enko\dokuwiki\objectrepresentation;
|
||||
|
||||
|
||||
class DokuWikiChangeset {
|
||||
private $date;
|
||||
private $ip;
|
||||
private $type;
|
||||
private $id;
|
||||
private $user;
|
||||
private $sum;
|
||||
private $extra;
|
||||
private $content;
|
||||
private $page;
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getContent()
|
||||
{
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime
|
||||
*/
|
||||
public function getDate()
|
||||
{
|
||||
return $this->date;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getExtra()
|
||||
{
|
||||
return $this->extra;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getIp()
|
||||
{
|
||||
return $this->ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getSum()
|
||||
{
|
||||
return $this->sum;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
public function getPage() {
|
||||
return $this->page;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
function __construct($date,$extra, $id, $ip, $sum, $type, $user, DokuWikiPage $page)
|
||||
{
|
||||
$this->date = new \DateTime();
|
||||
$this->date->setTimestamp($date);
|
||||
$this->extra = $extra;
|
||||
$this->id = $id;
|
||||
$this->ip = $ip;
|
||||
$this->sum = $sum;
|
||||
$this->type = $type;
|
||||
$this->user = $user;
|
||||
$this->content = rawWiki($id,$this->date->format('U'));
|
||||
$this->page = $page;
|
||||
}
|
||||
|
||||
|
||||
}
|
78
lib/enko/dokuwiki/objectrepresentation/DokuWikiIterator.php
Executable file
78
lib/enko/dokuwiki/objectrepresentation/DokuWikiIterator.php
Executable file
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: tim
|
||||
* Date: 12.06.14
|
||||
* Time: 21:56
|
||||
*/
|
||||
|
||||
namespace enko\dokuwiki\objectrepresentation;
|
||||
|
||||
|
||||
class DokuWikiIterator
|
||||
{
|
||||
/**
|
||||
* @var DokuWikiNameSpace
|
||||
*/
|
||||
private $root;
|
||||
|
||||
/**
|
||||
* @param callable $callback
|
||||
*/
|
||||
public function runMetadataExtractor(Callable $callback)
|
||||
{
|
||||
$this->all($callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DokuWikiNameSpace $ns
|
||||
* @param callable $callback
|
||||
*/
|
||||
private function _all(DokuWikiNameSpace $ns, Callable $callback)
|
||||
{
|
||||
$callback($ns);
|
||||
foreach ($ns->nodes as $node) {
|
||||
/** $node DokuWikiNode */
|
||||
if ($node instanceof DokuWikiPage) {
|
||||
$callback($node);
|
||||
}
|
||||
if ($node instanceof DokuWikiNameSpace) {
|
||||
$this->_all($node, $callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable $callback
|
||||
* @return $this
|
||||
*/
|
||||
public function all(Callable $callback)
|
||||
{
|
||||
$this->_all($this->root, $callback);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __construct($loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||
{
|
||||
global $conf;
|
||||
$basedir = $conf['datadir'];
|
||||
|
||||
$this->root = new DokuWikiNameSpace($basedir, null, $loadChangesets, $maxChangeSetAge);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function toString()
|
||||
{
|
||||
return $this->root->toString();
|
||||
}
|
||||
|
||||
public function getRoot()
|
||||
{
|
||||
return $this->root;
|
||||
}
|
||||
}
|
80
lib/enko/dokuwiki/objectrepresentation/DokuWikiNameSpace.php
Executable file
80
lib/enko/dokuwiki/objectrepresentation/DokuWikiNameSpace.php
Executable file
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: tim
|
||||
* Date: 12.06.14
|
||||
* Time: 21:54
|
||||
*/
|
||||
|
||||
namespace enko\dokuwiki\objectrepresentation;
|
||||
|
||||
|
||||
class DokuWikiNameSpace extends DokuWikiNode
|
||||
{
|
||||
|
||||
/** @var \ArrayObject */
|
||||
public $nodes;
|
||||
|
||||
/**
|
||||
* @param $path
|
||||
* @param null $parent
|
||||
*/
|
||||
function __construct($path, $parent = null,$loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||
{
|
||||
parent::__construct($path, $parent, $loadChangesets, $maxChangeSetAge);
|
||||
$files = dir($path);
|
||||
|
||||
$this->nodes = new \ArrayObject();
|
||||
|
||||
while (($realfile = $files->read())) {
|
||||
$node = null;
|
||||
$file = $path . DIRECTORY_SEPARATOR . $realfile;
|
||||
if (is_dir($file)) {
|
||||
if (!(($realfile == '.') or ($realfile == '..'))) {
|
||||
$node = new DokuWikiNameSpace($file, $this, $loadChangesets, $maxChangeSetAge);
|
||||
}
|
||||
} else {
|
||||
$node = new DokuWikiPage($file, $this, $loadChangesets, $maxChangeSetAge);
|
||||
}
|
||||
if ($node) {
|
||||
$this->nodes->append($node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function toString()
|
||||
{
|
||||
$retval = '';
|
||||
foreach ($this->nodes as $node) {
|
||||
/** @var $node DokuWikiNode */
|
||||
if ($this->name == 'root') {
|
||||
$retval .= $node->toString() . "\n";
|
||||
} else {
|
||||
$retval .= $this->name . ":" . $node->toString() . "\n";
|
||||
}
|
||||
}
|
||||
return $retval;
|
||||
}
|
||||
|
||||
public function getNodes()
|
||||
{
|
||||
return $this->nodes;
|
||||
}
|
||||
|
||||
public function hasChild($nodeName)
|
||||
{
|
||||
if ($this->nodes->count() > 0) {
|
||||
foreach ($this->nodes as $node) {
|
||||
/** @var DokuWikiNode $node */
|
||||
if (($node instanceof DokuWikiPage) && ($node->getName() == $nodeName)) {
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
152
lib/enko/dokuwiki/objectrepresentation/DokuWikiNode.php
Executable file
152
lib/enko/dokuwiki/objectrepresentation/DokuWikiNode.php
Executable file
|
@ -0,0 +1,152 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: tim
|
||||
* Date: 12.06.14
|
||||
* Time: 21:53
|
||||
*/
|
||||
|
||||
namespace enko\dokuwiki\objectrepresentation;
|
||||
|
||||
abstract class DokuWikiNode
|
||||
{
|
||||
/** @var String */
|
||||
protected $filename;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $content;
|
||||
|
||||
/** @var \ArrayObject */
|
||||
protected $metadata;
|
||||
|
||||
/** @var \ArrayObject */
|
||||
public $metadata_extractor;
|
||||
|
||||
/** @var DokuWikiNameSpace */
|
||||
protected $parent = null;
|
||||
|
||||
/** @var bool */
|
||||
protected $loadChangesets = false;
|
||||
|
||||
/** @var \DateTime */
|
||||
protected $maxChangeSetAge = null;
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getContent()
|
||||
{
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $content
|
||||
* @return $this
|
||||
*/
|
||||
public function setContent($content = '')
|
||||
{
|
||||
$this->content = $content;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
public function setMetaData($key, $value)
|
||||
{
|
||||
$this->metadata[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMetaData($key)
|
||||
{
|
||||
return $this->metadata[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DokuWikiNameSpace
|
||||
*/
|
||||
public function getParent() {
|
||||
return $this->parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $filename
|
||||
* @param null $parent
|
||||
*/
|
||||
function __construct($filename, $parent = null, $loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||
{
|
||||
$this->filename = $filename;
|
||||
$this->parent = $parent;
|
||||
$this->metadata = new \ArrayObject();
|
||||
$this->loadChangesets = $loadChangesets;
|
||||
$this->maxChangeSetAge = $maxChangeSetAge;
|
||||
if (is_null($parent) && is_dir($filename)) {
|
||||
$this->name = 'root';
|
||||
} else {
|
||||
$parts = pathinfo($filename);
|
||||
if (is_dir($filename)) {
|
||||
$this->name = $parts['basename'];
|
||||
} else {
|
||||
$this->name = $parts['filename'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return String
|
||||
*/
|
||||
public function getFilename()
|
||||
{
|
||||
return $this->filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function toString()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFullID()
|
||||
{
|
||||
$path = array();
|
||||
$node = $this;
|
||||
while ($parent = $node->parent) {
|
||||
if ($parent->name != 'root') {
|
||||
$path[] = $parent->name;
|
||||
}
|
||||
$node = $parent;
|
||||
}
|
||||
$path = array_reverse($path);
|
||||
if ($this->name != 'root') {
|
||||
$path[] = $this->name;
|
||||
}
|
||||
return implode(':', $path);
|
||||
}
|
||||
|
||||
}
|
60
lib/enko/dokuwiki/objectrepresentation/DokuWikiPage.php
Executable file
60
lib/enko/dokuwiki/objectrepresentation/DokuWikiPage.php
Executable file
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: tim
|
||||
* Date: 12.06.14
|
||||
* Time: 21:55
|
||||
*/
|
||||
|
||||
namespace enko\dokuwiki\objectrepresentation;
|
||||
|
||||
|
||||
class DokuWikiPage extends DokuWikiNode
|
||||
{
|
||||
public $ChangeLog;
|
||||
|
||||
/**
|
||||
* @param $filename
|
||||
* @param null $parent
|
||||
*/
|
||||
public function __construct($filename, $parent = null,$loadChangesets = false, \DateTime $maxChangeSetAge = null)
|
||||
{
|
||||
parent::__construct($filename, $parent,$loadChangesets,$maxChangeSetAge);
|
||||
$this->content = file_get_contents($this->filename);
|
||||
if (($this->name == 'start') && ($this->parent->name != 'root')) {
|
||||
$this->parent->content = $this->content;
|
||||
}
|
||||
$metadata = p_get_metadata($this->getFullID());
|
||||
foreach ($metadata as $key => $value) {
|
||||
$this->setMetaData($key, $value);
|
||||
}
|
||||
$this->ChangeLog = new \ArrayObject();
|
||||
if ($this->loadChangesets) {
|
||||
// extract changelog
|
||||
$file = metaFN($this->getFullID(), '.changes');
|
||||
if (file_exists($file)) {
|
||||
$changelog_entries = explode("\n", file_get_contents($file));
|
||||
foreach ($changelog_entries as $raw_entry) {
|
||||
$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);
|
||||
$this->ChangeLog->append($changelog);
|
||||
}
|
||||
}
|
||||
if ($this->ChangeLog->count() > 0) {
|
||||
$this->ChangeLog->uasort(function(DokuWikiChangeset $a, DokuWikiChangeset $b){
|
||||
if ($a->getDate() == $b->getDate()) {
|
||||
return 0;
|
||||
}
|
||||
return ($a->getDate() > $b->getDate()) ? -1 : 1;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getTitle() {
|
||||
return strlen($this->getMetaData('title')) > 0 ? $this->getMetaData('title') : $this->getName();
|
||||
}
|
||||
}
|
Reference in a new issue