Merge pull request #282 from Piralein/license

Add a license select filter and remove the link filter
This commit is contained in:
Emi
2023-06-12 18:50:02 +02:00
committed by GitHub
7 changed files with 46 additions and 27 deletions

1
API.md
View File

@@ -133,6 +133,7 @@ Get a list of categories (needed for filtering assets) and potentially a login U
&support=(official|community|testing) &support=(official|community|testing)
&filter=(search text) &filter=(search text)
&user=(submitter username) &user=(submitter username)
&cost=(license)
&godot_version=(major).(minor).(patch) &godot_version=(major).(minor).(patch)
&max_results=(number 1…500) &max_results=(number 1…500)
&page=(number, pages to skip) OR &offset=(number, rows to skip) &page=(number, pages to skip) OR &offset=(number, rows to skip)

View File

@@ -71,5 +71,25 @@ return $constants = [
'4.0', '4.0',
'unknown', 'unknown',
'custom_build', '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'
] ]
]; ];

View File

@@ -29,7 +29,7 @@ return [
LEFT JOIN `as_categories` USING (category_id) LEFT JOIN `as_categories` USING (category_id)
WHERE searchable = TRUE AND category_id LIKE :category AND category_type LIKE :category_type 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 godot_version <= :max_godot_version AND godot_version >= :min_godot_version
AND ( AND (
title LIKE :filter title LIKE :filter
@@ -63,7 +63,7 @@ return [
LEFT JOIN `as_users` USING (user_id) LEFT JOIN `as_users` USING (user_id)
LEFT JOIN `as_categories` USING (category_id) LEFT JOIN `as_categories` USING (category_id)
WHERE searchable = TRUE AND category_id LIKE :category AND category_type LIKE :category_type 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 godot_version <= :max_godot_version AND godot_version >= :min_godot_version
AND ( AND (
title LIKE :filter title LIKE :filter

View File

@@ -8,6 +8,7 @@ $app->get('/asset', function ($request, $response, $args) {
$category = '%'; $category = '%';
$filter = '%'; $filter = '%';
$username = '%'; $username = '%';
$cost = '%';
$order_column = 'modify_date'; $order_column = 'modify_date';
$support_levels = []; $support_levels = [];
$page_size = 40; $page_size = 40;
@@ -50,6 +51,9 @@ $app->get('/asset', function ($request, $response, $args) {
if (isset($params['user'])) { if (isset($params['user'])) {
$username = $params['user']; $username = $params['user'];
} }
if (isset($params['cost']) && $params['cost'] != "") {
$cost = $params['cost'];
}
if (isset($params['max_results'])) { if (isset($params['max_results'])) {
$page_size = min(abs((int) $params['max_results']), $max_page_size); $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(':support_levels_regex', $support_levels);
$query->bindValue(':filter', $filter); $query->bindValue(':filter', $filter);
$query->bindValue(':username', $username); $query->bindValue(':username', $username);
$query->bindValue(':cost', $cost);
$query->bindValue(':order', $order_column); $query->bindValue(':order', $order_column);
$query->bindValue(':order_direction', $order_direction); $query->bindValue(':order_direction', $order_direction);
$query->bindValue(':page_size', $page_size, PDO::PARAM_INT); $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(':support_levels_regex', $support_levels);
$query_count->bindValue(':filter', $filter); $query_count->bindValue(':filter', $filter);
$query_count->bindValue(':username', $username); $query_count->bindValue(':username', $username);
$query_count->bindValue(':cost', $cost);
$query_count->execute(); $query_count->execute();
$error = $this->utils->errorResponseIfQueryBad(false, $response, $query_count); $error = $this->utils->errorResponseIfQueryBad(false, $response, $query_count);

View File

@@ -60,32 +60,12 @@ $_asset_values = array_merge([
<label class="col-md-4 control-label required_mark" for="license">License</label> <label class="col-md-4 control-label required_mark" for="license">License</label>
<div class="col-md-5"> <div class="col-md-5">
<select id="license" name="cost" class="form-control" required=""> <select id="license" name="cost" class="form-control" required="">
<?php $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'
] ?>
<?php if(!$_asset_values['cost']) { ?> <?php if(!$_asset_values['cost']) { ?>
<option value="" selected=""> <option value="" selected="">
Select... Select...
</option> </option>
<?php } ?> <?php } ?>
<?php foreach($licenses as $id => $name) { ?> <?php foreach($constants['licenses'] as $id => $name) { ?>
<option value="<?php echo raw($id) ?>" <?php if($id == $_asset_values['cost']) echo 'selected=""'; ?>> <option value="<?php echo raw($id) ?>" <?php if($id == $_asset_values['cost']) echo 'selected=""'; ?>>
<?php echo esc($name) ?> <?php echo esc($name) ?>
</option> </option>

View File

@@ -25,7 +25,7 @@
<p class="text-muted"> <p class="text-muted">
Submitted by user <a href="<?php echo raw($basepath) ?>/asset?user=<?php echo esc($data['author']) ?>" title="Search assets by '<?php echo esc($data['author']) ?>'"><?php echo esc($data['author']) ?></a>; Submitted by user <a href="<?php echo raw($basepath) ?>/asset?user=<?php echo esc($data['author']) ?>" title="Search assets by '<?php echo esc($data['author']) ?>'"><?php echo esc($data['author']) ?></a>;
<a href="<?php echo raw($basepath) ?>/asset?filter=<?php echo esc($data['cost']) ?>" title="Search assets with filter '<?php echo esc($data['cost']) ?>'"><?php echo esc($data['cost']) ?></a>; <?php echo esc($data['cost']) ?>;
<?php echo esc(explode(" ", $data['modify_date'])[0]) ?> <?php echo esc(explode(" ", $data['modify_date'])[0]) ?>
</p> </p>
<p> <p>

View File

@@ -52,6 +52,20 @@
<?php } ?> <?php } ?>
</select> </select>
</div> </div>
<div class="form-group">
<label for="license">License</label>
<select id="license" name="cost" class="form-control">
<option value="">
Any
</option>
<?php foreach($constants['licenses'] as $id => $license) { ?>
<option value="<?php echo url($id) ?>" <?php if(isset($params['cost']) && $id == $params['cost']) echo 'selected=""'; ?>>
<?php echo esc($license) ?>
</option>
<?php } ?>
</select>
</div>
<div class="form-group"> <div class="form-group">
<label for="sort">Order by</label> <label for="sort">Order by</label>
<select id="sort" name="sort" class="form-control"> <select id="sort" name="sort" class="form-control">
@@ -112,9 +126,7 @@
<p class="text-muted"> <p class="text-muted">
Submitted by user <a href="?user=<?php echo esc($asset['author']) ?>" title="Search assets by '<?php echo esc($asset['author']) ?>'"><?php echo esc($asset['author']) ?></a>; Submitted by user <a href="?user=<?php echo esc($asset['author']) ?>" title="Search assets by '<?php echo esc($asset['author']) ?>'"><?php echo esc($asset['author']) ?></a>;
<a href="?<?php echo esc(http_build_query([ <?php echo esc($asset['cost']) ?>;
'filter' => $asset['cost'] // isset($params['filter']) ? $params['filter'] . ' ' . $asset['cost'] : $asset['cost']
] + $params)) ?>" title="Search assets with filter '<?php echo esc($asset['cost']) ?>'"><?php echo esc($asset['cost']) ?></a>;
<span class="nowrap"><?php echo esc(explode(" ", $asset['modify_date'])[0]) ?></span> <span class="nowrap"><?php echo esc(explode(" ", $asset['modify_date'])[0]) ?></span>
</p> </p>
</div> </div>