* Modify page error.

This commit is contained in:
caoyanyi
2022-01-20 05:37:33 +00:00
parent 7e96eb9f68
commit f87294adf7
4 changed files with 25 additions and 18 deletions
+20 -15
View File
@@ -56,15 +56,23 @@ class gitlabModel extends model
/**
* Get gitlab api base url by gitlab id.
*
* @param int $id
* @param int $gitlabID
* @access public
* @return string
*/
public function getApiRoot($id)
public function getApiRoot($gitlabID)
{
$gitlab = $this->getByID($id);
$gitlab = $this->getByID($gitlabID);
if(!$gitlab) return '';
return rtrim($gitlab->url, '/') . '/api/v4%s' . "?private_token={$gitlab->token}";
$sudoParam = '';
if(!$this->app->user->admin)
{
$openID = $this->getUserIDByZentaoAccount($gitlabID, $this->app->user->account);
if($openID) $sudoParam = "&sudo={$openID}";
}
return rtrim($gitlab->url, '/') . '/api/v4%s' . "?private_token={$gitlab->token}" . $sudoParam;
}
/**
@@ -613,17 +621,15 @@ class gitlabModel extends model
*/
public function apiGetProjectsPager($gitlabID, $keyword = '', $orderBy = 'id_desc', $pager = null)
{
$gitlab = $this->getByID($gitlabID);
if(!$gitlab) return array();
$apiRoot = $this->getApiRoot($gitlabID);
if(!$apiRoot) return array();
$host = rtrim($gitlab->url, '/');
$host .= '/api/v4/projects';
$url = sprintf($apiRoot, "/projects");
/* Parse order string. */
$order = explode('_', $orderBy);
$keyword = urlencode($keyword);
$result = commonModel::httpWithHeader($host . "?private_token={$gitlab->token}&simple=true&&per_page={$pager->recPerPage}&order_by={$order[0]}&sort={$order[1]}&page={$pager->pageID}&search={$keyword}&search_namespaces=true");
$result = commonModel::httpWithHeader($url . "&simple=true&&per_page={$pager->recPerPage}&order_by={$order[0]}&sort={$order[1]}&page={$pager->pageID}&search={$keyword}&search_namespaces=true");
$header = $result['header'];
$recTotal = $header['X-Total'];
@@ -642,16 +648,15 @@ class gitlabModel extends model
*/
public function apiGetProjects($gitlabID)
{
$gitlab = $this->getByID($gitlabID);
if(!$gitlab) return array();
$apiRoot = $this->getApiRoot($gitlabID);
if(!$apiRoot) return array();
$host = rtrim($gitlab->url, '/');
$host .= '/api/v4/projects';
$url = sprintf($apiRoot, "/projects");
$allResults = array();
for($page = 1; true; $page++)
{
$results = json_decode(commonModel::http($host . "?private_token={$gitlab->token}&simple=true&page={$page}&per_page=100"));
$results = json_decode(commonModel::http($host . "&simple=true&page={$page}&per_page=100"));
if(!is_array($results)) break;
if(!empty($results)) $allResults = array_merge($allResults, $results);
if(count($results)<100 or $page > 10) break;