From e25431a25d508edec7a08c1e88bc67e4cbe77ca0 Mon Sep 17 00:00:00 2001 From: Keith Solomon Date: Sun, 9 Aug 2026 23:23:57 -0500 Subject: [PATCH] Route REST API responses through provider interface --- admin/rest-api.php | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/admin/rest-api.php b/admin/rest-api.php index 29d73f7..694de1c 100644 --- a/admin/rest-api.php +++ b/admin/rest-api.php @@ -27,9 +27,12 @@ function projects_portfolio_get_projects_data( $request ) { while ( $query->have_posts() ) { $query->the_post(); - $project_id = get_the_ID(); - $github_url = get_post_meta( $project_id, '_projects_portfolio_github_url', true ); - $github_data = projects_portfolio_get_github_data( $github_url ); + $project_id = get_the_ID(); + $repo_url = get_post_meta( $project_id, '_projects_portfolio_repo_url', true ); + if ( '' === $repo_url ) { + $repo_url = get_post_meta( $project_id, '_projects_portfolio_github_url', true ); + } + $repo_data = projects_portfolio_get_repo_data( $project_id ); // Fetch project-type taxonomy terms (names). $project_types = wp_get_post_terms( $project_id, 'project-type', [ @@ -44,23 +47,24 @@ function projects_portfolio_get_projects_data( $request ) { 'thumbnail' => get_the_post_thumbnail_url( $project_id, 'large' ), 'download_count' => (int) get_post_meta( $project_id, '_projects_portfolio_download_count', true ), 'download_url' => esc_url( site_url( '/download/' . $project_id ) ), - 'github_url' => $github_url, + 'github_url' => $repo_url, + 'provider' => get_post_meta( $project_id, '_projects_portfolio_provider', true ) ?: 'github', 'github_data' => [ 'owner' => [ - 'avatar_url' => $github_data['owner']['avatar_url'] ?? '', - 'name' => $github_data['owner']['login'] ?? '', - 'profile' => $github_data['owner']['html_url'] ?? '', + 'avatar_url' => $repo_data['owner']['avatar_url'] ?? '', + 'name' => $repo_data['owner']['login'] ?? '', + 'profile' => $repo_data['owner']['html_url'] ?? '', ], - 'last_updated' => ! empty( $github_data['updated_at'] ) - ? date_i18n( get_option( 'date_format' ), strtotime( $github_data['updated_at'] ) ) + 'last_updated' => ! empty( $repo_data['updated_at'] ) + ? date_i18n( get_option( 'date_format' ), strtotime( $repo_data['updated_at'] ) ) : '', - 'language' => $github_data['language'] ?? '', - 'license' => $github_data['license']['name'] ?? 'None', - 'stars' => $github_data['stargazers_count'] ?? 0, - 'forks' => $github_data['forks_count'] ?? 0, - 'issues' => $github_data['open_issues_count'] ?? 0, + 'language' => $repo_data['language'] ?? '', + 'license' => $repo_data['license']['name'] ?? 'None', + 'stars' => $repo_data['stargazers_count'] ?? 0, + 'forks' => $repo_data['forks_count'] ?? 0, + 'issues' => $repo_data['open_issues_count'] ?? 0, ], - 'version' => projects_portfolio_get_version_from_github( $github_url ), + 'version' => projects_portfolio_get_version( $project_id ), 'project_types' => $project_types, 'content' => get_the_content(), ]; @@ -121,7 +125,7 @@ function projects_portfolio_get_popular_projects( $data ) { 'title' => get_the_title(), 'download_count' => (int) get_post_meta( get_the_ID(), '_projects_portfolio_download_count', true ), 'download_url' => esc_url( site_url( '/download/' . get_the_ID() ) ), - 'github_url' => get_post_meta( get_the_ID(), '_projects_portfolio_github_url', true ), + 'github_url' => ( $url = get_post_meta( get_the_ID(), '_projects_portfolio_repo_url', true ) ?: get_post_meta( get_the_ID(), '_projects_portfolio_github_url', true ) ), 'permalink' => get_permalink(), ]; }