Fix bugs and optimized upload time

This commit is contained in:
Stéphane Goetz 2015-05-22 16:15:28 +02:00 committed by Stéphane Goetz
parent 63d6b17ec4
commit 8901634790
2 changed files with 70 additions and 19 deletions

View File

@ -80,15 +80,57 @@ class Api
* @param $rootPage * @param $rootPage
* @return mixed * @return mixed
*/ */
public function getHierarchy($rootPage) public function getList($rootPage)
{ {
$url = "content/$rootPage/child/page?expand=version";
$pages = [];
do {
try { try {
$hierarchy = $this->getClient()->get("content/$rootPage/child/page?expand=version,body.storage")->json(); $list = $this->getClient()->get($url)->json();
} catch (BadResponseException $e) { } catch (BadResponseException $e) {
throw $this->handleError($e); throw $this->handleError($e);
} }
foreach ($list['results'] as $result) {
$pages[$result['title']] = [
"id" => $result['id'],
"title" => $result['title'],
"version" => $result['version']['number'],
];
}
if (array_key_exists('next', $list['_links'])) {
$url = $list['_links']['next'];
}
} while (array_key_exists('next', $list['_links']));
return $pages;
}
/**
* /rest/api/content/{id}/child/{type}
*
* @param $rootPage
* @return mixed
*/
public function getHierarchy($rootPage)
{
//We do a limit of 15 as it appears that confluence has
//a bug when retrieving more than 20 entries with "body.storage"
$url = "content/$rootPage/child/page?expand=version,body.storage&limit=15";
$children = []; $children = [];
do {
try {
$hierarchy = $this->getClient()->get($url)->json();
} catch (BadResponseException $e) {
throw $this->handleError($e);
}
foreach ($hierarchy['results'] as $result) { foreach ($hierarchy['results'] as $result) {
$children[$result['title']] = [ $children[$result['title']] = [
"id" => $result['id'], "id" => $result['id'],
@ -99,6 +141,12 @@ class Api
]; ];
} }
if (array_key_exists('next', $hierarchy['_links'])) {
$url = $hierarchy['_links']['next'];
}
} while (array_key_exists('next', $hierarchy['_links']));
return $children; return $children;
} }

View File

@ -31,18 +31,21 @@ class Publisher
public function publish(array $tree) public function publish(array $tree)
{ {
echo "Getting already published pages...\n";
$all_published = $this->client->getHierarchy($this->confluence['ancestor_id']);
echo "Finding Root Page...\n"; echo "Finding Root Page...\n";
$published = []; $pages = $this->client->getList($this->confluence['ancestor_id']);
foreach ($all_published as $page) { $published = null;
foreach ($pages as $page) {
if ($page['title'] == $tree['title']) { if ($page['title'] == $tree['title']) {
$published = $page; $published = $page;
break; break;
} }
} }
echo "Getting already published pages...\n";
if ($published != null) {
$published['children'] = $this->client->getHierarchy($published['id']);
}
echo "Create placeholder pages...\n"; echo "Create placeholder pages...\n";
$published = $this->createRecursive($this->confluence['ancestor_id'], $tree, $published); $published = $this->createRecursive($this->confluence['ancestor_id'], $tree, $published);