getPrettySteps() public method

For example if there are 1000 commits, 25 per page and you are on page 10, it returns 0,7,8,9,10,11,12,13,20,29,39. The algorithm is from VisualPaginator component for Nette Framework.
public getPrettySteps ( $currentPage ) : array
$currentPage
return array
Beispiel #1
0
    }
    $isEnabled = $isChildOfInitialCommit || $canRollbackToThisCommit || $commit->getHash() === $initialCommitHash;
    $message = $changeInfo->getChangeDescription();
    echo "\n        <tr class=\"post-1 type-post status-publish format-standard hentry category-uncategorized\n                    alternate level-0" . ($isEnabled ? "" : " disabled") . "\">\n            <td title=\"{$commitDate}\">{$commit->getRelativeDate()}</td>\n            <td>{$message}</td>\n            <td style=\"text-align: right\">\n                {$versioningSnippet}\n            </td>\n        </tr>";
    if ($commit->getHash() === $initialCommitHash && $key < count($commits) - 1) {
        echo $disabledCommitsMessage;
    }
    $isFirstCommit = false;
}
?>
    </tbody>
    <tfoot>
    <tr>
        <td colspan="3">
            <?php 
$pageNumbers = $gitLogPaginator->getPrettySteps($page);
$i = 0;
$links = "";
$lastNumber = 0;
foreach ($pageNumbers as $pageNumber) {
    $divider = "";
    if ($i > 0 && $lastNumber != $pageNumber - 1) {
        $divider = "&hellip;";
    } elseif ($i > 0) {
        $divider = "|";
    }
    $links .= " " . $divider . " ";
    $pageUrl = add_query_arg('vp-page', $pageNumber, menu_page_url('versionpress', false));
    if ($pageNumber == $page) {
        $links .= $pageNumber + 1;
    } else {
 /**
  * @param WP_REST_Request $request
  * @return WP_REST_Response|WP_Error
  */
 public function getCommits(WP_REST_Request $request)
 {
     $gitLogPaginator = new GitLogPaginator($this->gitRepository);
     $query = urldecode(stripslashes($request['query']));
     $rules = QueryLanguageUtils::createRulesFromQueries([$query]);
     $gitLogQuery = !empty($rules) ? QueryLanguageUtils::createGitLogQueryFromRule($rules[0]) : '';
     $gitLogPaginator->setQuery($gitLogQuery);
     $gitLogPaginator->setCommitsPerPage(25);
     $page = intval($request['page']);
     $commits = $gitLogPaginator->getPage($page);
     if (empty($commits)) {
         return new WP_Error('notice', 'No more commits to show.', ['status' => 404]);
     }
     $initialCommitHash = $this->getInitialCommitHash();
     $isChildOfInitialCommit = $this->gitRepository->wasCreatedAfter($commits[0]->getHash(), $initialCommitHash);
     $isFirstCommit = $page === 0;
     $result = [];
     foreach ($commits as $commit) {
         $isChildOfInitialCommit = $isChildOfInitialCommit && $this->gitRepository->wasCreatedAfter($commit->getHash(), $initialCommitHash);
         $canUndoCommit = $isChildOfInitialCommit && !$commit->isMerge();
         $canRollbackToThisCommit = !$isFirstCommit && ($isChildOfInitialCommit || $commit->getHash() === $initialCommitHash);
         $changeInfo = $this->commitMessageParser->parse($commit->getMessage());
         $isEnabled = $isChildOfInitialCommit || $commit->getHash() === $initialCommitHash;
         $skipVpdbFiles = $changeInfo->getChangeInfoList()[0] instanceof TrackedChangeInfo;
         $fileChanges = $this->getFileChanges($commit, $skipVpdbFiles);
         $environment = $changeInfo instanceof ChangeInfoEnvelope ? $changeInfo->getEnvironment() : '?';
         $changeInfoList = $changeInfo instanceof ChangeInfoEnvelope ? $changeInfo->getChangeInfoList() : [];
         $result[] = ["hash" => $commit->getHash(), "date" => $commit->getDate()->format('c'), "message" => $changeInfo->getChangeDescription(), "parentHashes" => $commit->getParentHashes(), "canUndo" => $canUndoCommit, "canRollback" => $canRollbackToThisCommit, "isEnabled" => $isEnabled, "isInitial" => $commit->getHash() === $initialCommitHash, "isMerge" => $commit->isMerge(), "environment" => $environment, "changes" => array_values(array_filter(array_merge($this->convertChangeInfoList($changeInfoList), $fileChanges))), "author" => ["name" => $commit->getAuthorName(), "email" => $commit->getAuthorEmail(), "avatar" => get_avatar_url($commit->getAuthorEmail())]];
         $isFirstCommit = false;
     }
     return new WP_REST_Response(['pages' => $gitLogPaginator->getPrettySteps($page), 'commits' => $result]);
 }
 /**
  * @param WP_REST_Request $request
  * @return WP_REST_Response|\WP_Error
  */
 public function getCommits(WP_REST_Request $request)
 {
     $gitLogPaginator = new GitLogPaginator($this->gitRepository);
     $gitLogPaginator->setCommitsPerPage(25);
     $page = intval($request['page']);
     $commits = $gitLogPaginator->getPage($page);
     if (empty($commits)) {
         return new \WP_Error('notice', 'No more commits to show.', array('status' => 403));
     }
     $preActivationHash = trim(file_get_contents(VERSIONPRESS_ACTIVATION_FILE));
     if (empty($preActivationHash)) {
         $initialCommitHash = $this->gitRepository->getInitialCommit()->getHash();
     } else {
         $initialCommitHash = $this->gitRepository->getChildCommit($preActivationHash);
     }
     $isChildOfInitialCommit = $this->gitRepository->wasCreatedAfter($commits[0]->getHash(), $initialCommitHash);
     $isFirstCommit = $page === 0;
     $result = array();
     foreach ($commits as $commit) {
         $isChildOfInitialCommit = $isChildOfInitialCommit && $commit->getHash() !== $initialCommitHash;
         $canUndoCommit = $isChildOfInitialCommit && !$commit->isMerge();
         $canRollbackToThisCommit = !$isFirstCommit && ($isChildOfInitialCommit || $commit->getHash() === $initialCommitHash);
         $changeInfo = ChangeInfoMatcher::buildChangeInfo($commit->getMessage());
         $isEnabled = $isChildOfInitialCommit || $canRollbackToThisCommit || $commit->getHash() === $initialCommitHash;
         $fileChanges = $this->getFileChanges($commit);
         $changeInfoList = $changeInfo instanceof ChangeInfoEnvelope ? $changeInfo->getChangeInfoList() : array();
         $result[] = array("hash" => $commit->getHash(), "date" => $commit->getDate()->format('c'), "message" => $changeInfo->getChangeDescription(), "canUndo" => $canUndoCommit, "canRollback" => $canRollbackToThisCommit, "isEnabled" => $isEnabled, "isInitial" => $commit->getHash() === $initialCommitHash, "isMerge" => $commit->isMerge(), "changes" => array_merge($this->convertChangeInfoList($changeInfoList), $fileChanges));
         $isFirstCommit = false;
     }
     return new WP_REST_Response(array('pages' => $gitLogPaginator->getPrettySteps($page), 'commits' => $result));
 }