diff options
author | Mario Vavti <mario@mariovavti.com> | 2016-06-21 10:08:49 +0200 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2016-06-21 10:08:49 +0200 |
commit | ecae0b3d97d759603bb2bf9bc51187a2842964c8 (patch) | |
tree | f91d7d8efdd3c0ba1b7eeb59ac4555d0bff8aafe /include/wiki.php | |
parent | da2c0a22f9763621e44a6614627034c9789d7639 (diff) | |
parent | 63423c8ee1f750d855c75ed67205076d21eda4f1 (diff) | |
download | volse-hubzilla-ecae0b3d97d759603bb2bf9bc51187a2842964c8.tar.gz volse-hubzilla-ecae0b3d97d759603bb2bf9bc51187a2842964c8.tar.bz2 volse-hubzilla-ecae0b3d97d759603bb2bf9bc51187a2842964c8.zip |
Merge branch 'dev' into sabre32
Diffstat (limited to 'include/wiki.php')
-rw-r--r-- | include/wiki.php | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/include/wiki.php b/include/wiki.php index d60f4a3a7..a89db3358 100644 --- a/include/wiki.php +++ b/include/wiki.php @@ -347,7 +347,7 @@ function wiki_revert_page($arr) { $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : ''); $commitHash = ((array_key_exists('commitHash',$arr)) ? $arr['commitHash'] : null); if (! $commitHash) { - return array('content' => $content, 'message' => 'No commit has provided', 'success' => false); + return array('content' => $content, 'message' => 'No commit was provided', 'success' => false); } $w = wiki_get_wiki($resource_id); if (!$w['path']) { @@ -378,6 +378,48 @@ function wiki_revert_page($arr) { } } +function wiki_compare_page($arr) { + $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : ''); + $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : ''); + $currentCommit = ((array_key_exists('currentCommit',$arr)) ? $arr['currentCommit'] : 'HEAD'); + $compareCommit = ((array_key_exists('compareCommit',$arr)) ? $arr['compareCommit'] : null); + if (! $compareCommit) { + return array('message' => 'No compare commit was provided', 'success' => false); + } + $w = wiki_get_wiki($resource_id); + if (!$w['path']) { + return array('message' => 'Error reading wiki', 'success' => false); + } + $page_path = $w['path'].'/'.$pageUrlName.'.md'; + if (is_readable($page_path) === true) { + $reponame = ((array_key_exists('title', $w['wiki'])) ? urlencode($w['wiki']['title']) : 'repo'); + if($reponame === '') { + $reponame = 'repo'; + } + $git = new GitRepo('', null, false, $w['wiki']['title'], $w['path']); + $compareContent = $currentContent = ''; + try { + foreach ($git->git->tree($currentCommit) as $object) { + if ($object['type'] == 'blob' && $object['file'] === $pageUrlName.'.md' ) { + $currentContent = $git->git->cat->blob($object['hash']); + } + } + foreach ($git->git->tree($compareCommit) as $object) { + if ($object['type'] == 'blob' && $object['file'] === $pageUrlName.'.md' ) { + $compareContent = $git->git->cat->blob($object['hash']); + } + } + require_once('library/class.Diff.php'); + $diff = Diff::toTable(Diff::compare($currentContent, $compareContent)); + } catch (\PHPGit\Exception\GitException $e) { + return array('message' => 'GitRepo error thrown', 'success' => false); + } + return array('diff' => $diff, 'message' => '', 'success' => true); + } else { + return array('message' => 'Page file not writable', 'success' => false); + } +} + function wiki_git_commit($arr) { $files = ((array_key_exists('files', $arr)) ? $arr['files'] : null); $all = ((array_key_exists('all', $arr)) ? $arr['all'] : false); |