You are here

public function NodeOrderManager::getTermMinMax in Node Order 8

Get min and max weight in the term.

Parameters

int $tid: Term id.

bool $reset: Ignore static data.

Return value

array Array with min and max weights.

Overrides NodeOrderManagerInterface::getTermMinMax

2 calls to NodeOrderManager::getTermMinMax()
NodeOrderManager::addToList in src/NodeOrderManager.php
Push new or newly orderable node to the top of ordered list.
NodeOrderManager::handleListsDecrease in src/NodeOrderManager.php
Reorder list in which the node is dropped.

File

src/NodeOrderManager.php, line 117

Class

NodeOrderManager
Defines a service that creates & manages node ordering within taxonomy terms.

Namespace

Drupal\nodeorder

Code

public function getTermMinMax($tid, $reset = FALSE) {
  static $min_weights = [];
  static $max_weights = [];
  if ($reset) {
    $min_weights = [];
    $max_weights = [];
  }
  if (!isset($min_weights[$tid]) || !isset($max_weights[$tid])) {
    $query = \Drupal::database()
      ->select('taxonomy_index', 'i')
      ->fields('i', [
      'tid',
    ])
      ->condition('tid', $tid)
      ->groupBy('tid');
    $query
      ->addExpression('MAX(weight)', 'max_weight');
    $query
      ->addExpression('MIN(weight)', 'min_weight');
    $record = $query
      ->execute()
      ->fetch();
    $min_weights[$tid] = $record->min_weight;
    $max_weights[$tid] = $record->max_weight;
  }
  $weights['min'] = $min_weights[$tid];
  $weights['max'] = $max_weights[$tid];
  return $weights;
}