Refactored all classes into single files.
This commit is contained in:
parent
948aba4436
commit
d0cdfe2e69
6 changed files with 351 additions and 280 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;
|
|
||||||
}
|
|
||||||
}
|
|
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
|
||||||
|
*/
|
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()
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
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)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
137
lib/enko/dokuwiki/objectrepresentation/DokuWikiNode.php
Executable file
137
lib/enko/dokuwiki/objectrepresentation/DokuWikiNode.php
Executable file
|
@ -0,0 +1,137 @@
|
||||||
|
<?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;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
31
lib/enko/dokuwiki/objectrepresentation/DokuWikiPage.php
Executable file
31
lib/enko/dokuwiki/objectrepresentation/DokuWikiPage.php
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: tim
|
||||||
|
* Date: 12.06.14
|
||||||
|
* Time: 21:55
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace enko\dokuwiki\objectrepresentation;
|
||||||
|
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue