diff --git a/API.md b/API.md index 4b794b5..9bdb3c2 100644 --- a/API.md +++ b/API.md @@ -133,6 +133,7 @@ Get a list of categories (needed for filtering assets) and potentially a login U &support=(official|community|testing) &filter=(search text) &user=(submitter username) +&cost=(license) &godot_version=(major).(minor).(patch) &max_results=(number 1…500) &page=(number, pages to skip) OR &offset=(number, rows to skip) diff --git a/src/constants.php b/src/constants.php index 95192b0..2af59f8 100644 --- a/src/constants.php +++ b/src/constants.php @@ -71,5 +71,25 @@ return $constants = [ '4.0', 'unknown', 'custom_build', + ], + 'licenses' => [ + 'MIT' => 'MIT', + 'MPL-2.0' => 'MPL-2.0', + 'GPLv3' => 'GPL v3', + 'GPLv2' => 'GPL v2', + 'LGPLv3' => 'LGPL v3', + 'LGPLv2.1' => 'LGPL v2.1', + 'LGPLv2' => 'LGPL v2', + 'AGPLv3' => 'AGPL v3', + 'Apache-2.0' => 'Apache 2.0', + 'CC0' => 'CC0 1.0 Universal', + 'CC-BY-4.0' => 'CC BY 4.0 International', + 'CC-BY-3.0' => 'CC BY 3.0 Unported', + 'CC-BY-SA-4.0' => 'CC BY-SA 4.0 International', + 'CC-BY-SA-3.0' => 'CC BY-SA 3.0 Unported', + 'BSD-2-Clause' => 'BSD 2-clause License', + 'BSD-3-Clause' => 'BSD 3-clause License', + 'BSL-1.0' => 'Boost Software License', + 'Unlicense' => 'The Unlicense License' ] ]; diff --git a/src/queries.php b/src/queries.php index 06086e0..cbfe766 100644 --- a/src/queries.php +++ b/src/queries.php @@ -29,7 +29,7 @@ return [ LEFT JOIN `as_categories` USING (category_id) WHERE searchable = TRUE AND category_id LIKE :category AND category_type LIKE :category_type - AND support_level RLIKE :support_levels_regex AND username LIKE :username + AND support_level RLIKE :support_levels_regex AND username LIKE :username AND cost LIKE :cost AND godot_version <= :max_godot_version AND godot_version >= :min_godot_version AND ( title LIKE :filter @@ -63,7 +63,7 @@ return [ LEFT JOIN `as_users` USING (user_id) LEFT JOIN `as_categories` USING (category_id) WHERE searchable = TRUE AND category_id LIKE :category AND category_type LIKE :category_type - AND support_level RLIKE :support_levels_regex AND username LIKE :username + AND support_level RLIKE :support_levels_regex AND username LIKE :username AND cost LIKE :cost AND godot_version <= :max_godot_version AND godot_version >= :min_godot_version AND ( title LIKE :filter diff --git a/src/routes/asset.php b/src/routes/asset.php index adfe7bb..4f87c21 100644 --- a/src/routes/asset.php +++ b/src/routes/asset.php @@ -8,6 +8,7 @@ $app->get('/asset', function ($request, $response, $args) { $category = '%'; $filter = '%'; $username = '%'; + $cost = '%'; $order_column = 'modify_date'; $support_levels = []; $page_size = 40; @@ -50,6 +51,9 @@ $app->get('/asset', function ($request, $response, $args) { if (isset($params['user'])) { $username = $params['user']; } + if (isset($params['cost']) && $params['cost'] != "") { + $cost = $params['cost']; + } if (isset($params['max_results'])) { $page_size = min(abs((int) $params['max_results']), $max_page_size); } @@ -107,6 +111,7 @@ $app->get('/asset', function ($request, $response, $args) { $query->bindValue(':support_levels_regex', $support_levels); $query->bindValue(':filter', $filter); $query->bindValue(':username', $username); + $query->bindValue(':cost', $cost); $query->bindValue(':order', $order_column); $query->bindValue(':order_direction', $order_direction); $query->bindValue(':page_size', $page_size, PDO::PARAM_INT); @@ -126,6 +131,7 @@ $app->get('/asset', function ($request, $response, $args) { $query_count->bindValue(':support_levels_regex', $support_levels); $query_count->bindValue(':filter', $filter); $query_count->bindValue(':username', $username); + $query_count->bindValue(':cost', $cost); $query_count->execute(); $error = $this->utils->errorResponseIfQueryBad(false, $response, $query_count); diff --git a/templates/_asset_fields.phtml b/templates/_asset_fields.phtml index 3fbafd4..c415573 100644 --- a/templates/_asset_fields.phtml +++ b/templates/_asset_fields.phtml @@ -60,32 +60,12 @@ $_asset_values = array_merge([
+
+ + +