Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ProcessMaker/Http/Controllers/Api/TaskController.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,14 @@ public function index(Request $request, $getTotal = false, User $user = null)

$query = $this->indexBaseQuery($request);

// Get fields from request (sent by frontend)
// If not provided, don't apply select() to maintain backward compatibility (returns all columns)
$fields = $request->input('fields', '');
if ($fields) {
$selectedFields = explode(',', $fields);
$query = $query->select($selectedFields);
}
Comment thread
cursor[bot] marked this conversation as resolved.

$this->applyFilters($query, $request);

$this->excludeNonVisibleTasks($query, $request);
Expand Down
3 changes: 1 addition & 2 deletions ProcessMaker/Models/ProcessRequestToken.php
Original file line number Diff line number Diff line change
Expand Up @@ -782,8 +782,7 @@ public function valueAliasStatus($value, $expression, $callback = null, User $us

$query->whereIn('process_request_tokens.id', $selfServiceTaskIds);
} elseif ($user) {
$taskIds = $user->availableSelfServiceTaskIds();
$query->whereIn('process_request_tokens.id', $taskIds);
$query->whereIn('process_request_tokens.id', $user->availableSelfServiceTasksQuery());
} else {
$query->where('process_request_tokens.is_self_service', 1);
}
Expand Down
11 changes: 8 additions & 3 deletions ProcessMaker/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -466,11 +466,11 @@ public function removeFromGroups()
$this->groups()->detach();
}

public function availableSelfServiceTaskIds()
public function availableSelfServiceTasksQuery()
{
$groupIds = $this->groups()->pluck('groups.id');

$taskQuery = ProcessRequestToken::select(['id'])
$taskQuery = ProcessRequestToken::select(['process_request_tokens.id'])
->where([
'is_self_service' => true,
'status' => 'ACTIVE',
Expand All @@ -490,7 +490,12 @@ public function availableSelfServiceTaskIds()
$query->orWhereJsonContains('self_service_groups->users', (string) $this->id);
});

return $taskQuery->pluck('id');
return $taskQuery;
}

public function availableSelfServiceTaskIds()
{
return $this->availableSelfServiceTasksQuery()->pluck('id');
}

/**
Expand Down
2 changes: 1 addition & 1 deletion ProcessMaker/Traits/TaskControllerIndexMethods.php
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ private function applyForCurrentUser($query, $user)

$query->where(function ($query) use ($user) {
$query->where('user_id', $user->id)
->orWhereIn('id', $user->availableSelfServiceTaskIds());
->orWhereIn('id', $user->availableSelfServiceTasksQuery());
});
}

Expand Down
Loading
Loading