fix: use new approach for pagination settings

pull/9475/head
Luciano Righetti 2024-01-04 14:19:24 +01:00
parent e17a8266dd
commit dcaef7d35c
5 changed files with 72 additions and 55 deletions

View File

@ -18,30 +18,30 @@ class GalaxyClustersController extends AppController
{
use LocatorAwareTrait;
protected $conditions = [];
protected $contain = [
'Tag' => [
'fields' => ['Tag.id'],
/*
'EventTag' => array(
'fields' => array('EventTag.event_id')
),
'AttributeTag' => array(
'fields' => array('AttributeTag.event_id', 'AttributeTag.attribute_id')
)
*/
],
'GalaxyElement' => [
'conditions' => ['GalaxyElement.key' => 'synonyms'],
'fields' => ['value']
],
];
public $paginate = [
'limit' => 60,
'recursive' => -1,
'order' => [
'GalaxyClusters.version' => 'DESC',
'GalaxyClusters.value' => 'ASC'
],
'contain' => [
'Tag' => [
'fields' => ['Tag.id'],
/*
'EventTag' => array(
'fields' => array('EventTag.event_id')
),
'AttributeTag' => array(
'fields' => array('AttributeTag.event_id', 'AttributeTag.attribute_id')
)
*/
],
'GalaxyElement' => [
'conditions' => ['GalaxyElement.key' => 'synonyms'],
'fields' => ['value']
],
]
];
public function initialize(): void
@ -124,11 +124,19 @@ class GalaxyClustersController extends AppController
return $this->RestResponse->viewData($clusters, $this->response->getType());
}
$this->paginate['conditions']['AND'][] = $contextConditions;
$this->paginate['conditions']['AND'][] = $searchConditions;
$this->paginate['conditions']['AND'][] = $aclConditions;
$this->paginate['contain'] = array_merge($this->paginate['contain'], ['Org', 'Orgc', 'SharingGroup', 'GalaxyClusterRelation', 'TargetingClusterRelation']);
$clusters = $this->paginate();
$this->conditions['AND'][] = $contextConditions;
$this->conditions['AND'][] = $searchConditions;
$this->conditions['AND'][] = $aclConditions;
$this->contain = array_merge($this->contain, ['Org', 'Orgc', 'SharingGroup', 'GalaxyClusterRelation', 'TargetingClusterRelation']);
$query = $this->GalaxyClusters->find(
'all',
[
'conditions' => $this->conditions,
'contain' => $this->contain
]
);
$clusters = $this->paginate($query);
$this->GalaxyClusters->attachExtendByInfo($this->ACL->getUser()->toArray(), $clusters);

View File

@ -10,7 +10,6 @@ class GalaxyElementsController extends AppController
{
public $paginate = [
'limit' => 20,
'recursive' => -1,
'order' => [
'GalaxyElement.key' => 'ASC'
]

View File

@ -15,17 +15,17 @@ class JobsController extends AppController
{
use LocatorAwareTrait;
protected $conditions = [];
protected $contain = [
'Organisations' => [
'fields' => ['id', 'name', 'uuid'],
],
];
public $paginate = [
'limit' => 20,
'recursive' => 0,
'order' => [
'Job.id' => 'DESC'
],
'contain' => [
'Organisations' => [
'fields' => ['id', 'name', 'uuid'],
],
]
];
public function beforeFilter(EventInterface $event)
@ -46,9 +46,16 @@ class JobsController extends AppController
$workers = $ServerTable->workerDiagnostics($issueCount);
$queues = ['email', 'default', 'cache', 'prio', 'update'];
if ($queue && in_array($queue, $queues, true)) {
$this->paginate['conditions'] = ['Job.worker' => $queue];
$this->conditions = ['Job.worker' => $queue];
}
$jobs = $this->paginate()->toArray();
$query = $this->Jobs->find(
'all',
[
'conditions' => $this->conditions,
'contain' => $this->contain,
]
);
$jobs = $this->paginate($query)->toArray();
foreach ($jobs as &$job) {
if (!empty($job['process_id'])) {
$job['job_status'] = $this->getJobStatus($job['process_id']);

View File

@ -6,17 +6,16 @@ use App\Controller\AppController;
class ObjectTemplateElementsController extends AppController
{
public $paginate = array(
public $paginate = [
'limit' => 60,
'order' => array(
'order' => [
'ObjectTemplateElement.id' => 'desc'
),
'recursive' => -1
);
],
];
public function viewElements($id, $context = 'all')
{
$this->paginate['conditions'] = array('ObjectTemplateElements.object_template_id' => $id);
$this->paginate['conditions'] = ['ObjectTemplateElements.object_template_id' => $id];
$elements = $this->paginate();
$this->set('list', $elements);
$this->layout = false;

View File

@ -13,14 +13,16 @@ class TaxonomiesController extends AppController
{
use LocatorAwareTrait;
protected $conditions = [];
protected $contain = [
'TaxonomyPredicates' => [
'fields' => ['TaxonomyPredicates.id', 'TaxonomyPredicates.taxonomy_id', 'TaxonomyPredicates.value'],
'TaxonomyEntries' => ['fields' => ['TaxonomyEntries.id', 'TaxonomyEntries.taxonomy_predicate_id', 'TaxonomyEntries.value']]
]
];
protected $fields = [];
public $paginate = [
'limit' => 60,
'contain' => [
'TaxonomyPredicates' => [
'fields' => ['TaxonomyPredicates.id', 'TaxonomyPredicates.taxonomy_id', 'TaxonomyPredicates.value'],
'TaxonomyEntries' => ['fields' => ['TaxonomyEntries.id', 'TaxonomyEntries.taxonomy_predicate_id', 'TaxonomyEntries.value']]
]
],
'order' => [
'Taxonomies.id' => 'DESC'
],
@ -31,24 +33,26 @@ class TaxonomiesController extends AppController
$this->paginate['recursive'] = -1;
if (!empty($this->request->getQueryParams()['value'])) {
$this->paginate['conditions']['id'] = $this->__search($this->request->getQueryParams()['value']);
$this->conditions['id'] = $this->__search($this->request->getQueryParams()['value']);
}
if (isset($this->request->getQueryParams()['enabled'])) {
$this->paginate['conditions']['enabled'] = $this->request->getQueryParams()['enabled'] ? 1 : 0;
$this->conditions['enabled'] = $this->request->getQueryParams()['enabled'] ? 1 : 0;
}
$query = $this->Taxonomies->find(
'all',
[
'conditions' => $this->conditions,
'contain' => $this->contain,
'fields' => $this->fields
]
);
if ($this->ParamHandler->isRest()) {
$keepFields = ['conditions', 'contain', 'recursive', 'sort'];
$searchParams = [];
foreach ($keepFields as $field) {
if (!empty($this->paginate[$field])) {
$searchParams[$field] = $this->paginate[$field];
}
}
$taxonomies = $this->Taxonomies->find('all', $searchParams);
$taxonomies = $query;
} else {
$taxonomies = $this->paginate();
$taxonomies = $this->paginate($query);
}
$taxonomies = $this->__tagCount($taxonomies->toArray());