From 7becddc3a457942d0fdd5d567bf496ddca9d72ca Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Mon, 30 Mar 2020 01:06:18 +0200 Subject: [PATCH] allow all characters as search term in API (#1597) --- src/API/ActivityController.php | 2 +- src/API/CustomerController.php | 2 +- src/API/ProjectController.php | 4 ++-- src/API/TimesheetController.php | 2 +- src/API/UserController.php | 2 +- src/Form/ActivityEditForm.php | 4 ++++ templates/doctor/index.html.twig | 2 +- 7 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/API/ActivityController.php b/src/API/ActivityController.php index ae36b732..b60614d4 100644 --- a/src/API/ActivityController.php +++ b/src/API/ActivityController.php @@ -75,7 +75,7 @@ class ActivityController extends BaseApiController * @Rest\QueryParam(name="globalsFirst", requirements="true|false", strict=true, nullable=true, description="Deprecated parameter, value is not used any more") * @Rest\QueryParam(name="orderBy", requirements="id|name|project", strict=true, nullable=true, description="The field by which results will be ordered. Allowed values: id, name, project (default: name)") * @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order. Allowed values: ASC, DESC (default: ASC)") - * @Rest\QueryParam(name="term", requirements="[a-zA-Z0-9 \-,:]+", strict=true, nullable=true, description="Free search term") + * @Rest\QueryParam(name="term", description="Free search term") * * @ApiSecurity(name="apiUser") * @ApiSecurity(name="apiToken") diff --git a/src/API/CustomerController.php b/src/API/CustomerController.php index d8bd21b6..39c358d1 100644 --- a/src/API/CustomerController.php +++ b/src/API/CustomerController.php @@ -72,7 +72,7 @@ class CustomerController extends BaseApiController * @Rest\QueryParam(name="visible", requirements="\d+", strict=true, nullable=true, description="Visibility status to filter activities (1=visible, 2=hidden, 3=both)") * @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order. Allowed values: ASC, DESC (default: ASC)") * @Rest\QueryParam(name="orderBy", requirements="id|name", strict=true, nullable=true, description="The field by which results will be ordered. Allowed values: id, name (default: name)") - * @Rest\QueryParam(name="term", requirements="[a-zA-Z0-9 \-,:]+", strict=true, nullable=true, description="Free search term") + * @Rest\QueryParam(name="term", description="Free search term") * * @ApiSecurity(name="apiUser") * @ApiSecurity(name="apiToken") diff --git a/src/API/ProjectController.php b/src/API/ProjectController.php index e9cc3f17..a2f10356 100644 --- a/src/API/ProjectController.php +++ b/src/API/ProjectController.php @@ -78,13 +78,13 @@ class ProjectController extends BaseApiController * ) * @Rest\QueryParam(name="customer", requirements="\d+", strict=true, nullable=true, description="Customer ID to filter projects") * @Rest\QueryParam(name="customers", requirements="[\d|,]+", strict=true, nullable=true, description="Comma separated list of customer IDs to filter projects") - * @Rest\QueryParam(name="visible", requirements="\d+", strict=true, nullable=true, description="Visibility status to filter projects. Allowed values: 1=visible, 2=hidden, 3=both (default; 1)") + * @Rest\QueryParam(name="visible", requirements="\d+", strict=true, nullable=true, description="Visibility status to filter projects. Allowed values: 1=visible, 2=hidden, 3=both (default: 1)") * @Rest\QueryParam(name="start", requirements=@Constraints\DateTime(format="Y-m-d\TH:i:s"), strict=true, nullable=true, description="Only projects that started before this date will be included. Allowed format: HTML5 (default: now, if end is also empty)") * @Rest\QueryParam(name="end", requirements=@Constraints\DateTime(format="Y-m-d\TH:i:s"), strict=true, nullable=true, description="Only projects that ended after this date will be included. Allowed format: HTML5 (default: now, if start is also empty)") * @Rest\QueryParam(name="ignoreDates", requirements="1", strict=true, nullable=true, description="If set, start and end are completely ignored. Allowed values: 1 (default: off)") * @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order. Allowed values: ASC, DESC (default: ASC)") * @Rest\QueryParam(name="orderBy", requirements="id|name|customer", strict=true, nullable=true, description="The field by which results will be ordered. Allowed values: id, name, customer (default: name)") - * @Rest\QueryParam(name="term", requirements="[a-zA-Z0-9 \-,:]+", strict=true, nullable=true, description="Free search term") + * @Rest\QueryParam(name="term", description="Free search term") * * @ApiSecurity(name="apiUser") * @ApiSecurity(name="apiToken") diff --git a/src/API/TimesheetController.php b/src/API/TimesheetController.php index 6a7d3e53..3851c255 100644 --- a/src/API/TimesheetController.php +++ b/src/API/TimesheetController.php @@ -143,7 +143,7 @@ class TimesheetController extends BaseApiController * @Rest\QueryParam(name="exported", requirements="0|1", strict=true, nullable=true, description="Use this flag if you want to filter for export state. Allowed values: 0=not exported, 1=exported (default: all)") * @Rest\QueryParam(name="active", requirements="0|1", strict=true, nullable=true, description="Filter for running/active records. Allowed values: 0=stopped, 1=active (default: all)") * @Rest\QueryParam(name="full", requirements="true", strict=true, nullable=true, description="Allows to fetch fully serialized objects including subresources (TimesheetSubCollection). Allowed values: true (default: false)") - * @Rest\QueryParam(name="term", requirements="[a-zA-Z0-9 \-,:]+", strict=true, nullable=true, description="Free search term") + * @Rest\QueryParam(name="term", description="Free search term") * * @Security("is_granted('view_own_timesheet') or is_granted('view_other_timesheet')") * diff --git a/src/API/UserController.php b/src/API/UserController.php index 8d9c22fc..1d99ad76 100644 --- a/src/API/UserController.php +++ b/src/API/UserController.php @@ -82,7 +82,7 @@ final class UserController extends BaseApiController * @Rest\QueryParam(name="visible", requirements="1|2|3", strict=true, nullable=true, description="Visibility status to filter users. Allowed values: 1=visible, 2=hidden, 3=all (default: 1)") * @Rest\QueryParam(name="orderBy", requirements="id|username|alias|email", strict=true, nullable=true, description="The field by which results will be ordered. Allowed values: id, username, alias, email (default: username)") * @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order. Allowed values: ASC, DESC (default: ASC)") - * @Rest\QueryParam(name="term", requirements="[a-zA-Z0-9 \-,:]+", strict=true, nullable=true, description="Free search term") + * @Rest\QueryParam(name="term", description="Free search term") * * @Security("is_granted('view_user')") * diff --git a/src/Form/ActivityEditForm.php b/src/Form/ActivityEditForm.php index 0dd8ab7a..dd2051e2 100644 --- a/src/Form/ActivityEditForm.php +++ b/src/Form/ActivityEditForm.php @@ -86,6 +86,8 @@ class ActivityEditForm extends AbstractType 'query_builder' => function (ProjectRepository $repo) use ($builder, $project, $customer) { $query = new ProjectFormTypeQuery($project, $customer); $query->setUser($builder->getOption('user')); + // TODO this should only allow creation of projects which did not yet end (see below) + $query->setIgnoreDate(true); return $repo->getQueryBuilderForFormType($query); }, @@ -105,6 +107,8 @@ class ActivityEditForm extends AbstractType 'query_builder' => function (ProjectRepository $repo) use ($builder, $data, $project) { $query = new ProjectFormTypeQuery($project, $data['customer']); $query->setUser($builder->getOption('user')); + // TODO this should only allow creation of projects which did not yet end (see above) + $query->setIgnoreDate(true); return $repo->getQueryBuilderForFormType($query); }, diff --git a/templates/doctor/index.html.twig b/templates/doctor/index.html.twig index 056685a0..bf1ade74 100644 --- a/templates/doctor/index.html.twig +++ b/templates/doctor/index.html.twig @@ -83,7 +83,7 @@ {% if logSize > 52428800 %}

Your logfile is larger than 50 MB, consider deleting it (it will be re-created automatically).

{% endif %} -
{% for logLine in logs -%}
+            
{% for logLine in logs|reverse -%}
                 {%- set logLineClass = '' -%}
                 {%- if '.CRITICAL' in logLine -%}
                     {%- set logLineClass = 'text-danger text-bold' -%}