ViewsSimpleMathFieldSort.php in Views Simple Math Field 8.2
File
src/Plugin/views/sort/ViewsSimpleMathFieldSort.php
View source
<?php
namespace Drupal\views_simple_math_field\Plugin\views\sort;
use Drupal\views\Plugin\views\field\FieldPluginBase;
use Drupal\views\Plugin\views\sort\SortPluginBase;
use Drupal\views\ResultRow;
use Drupal\Core\Form\FormStateInterface;
class ViewsSimpleMathFieldSort extends SortPluginBase {
protected function defineOptions() {
$options = parent::defineOptions();
$options['simple'] = [
'default' => '',
];
return $options;
}
public function postExecute(&$values) {
$view = $this->view;
$order = $this->options['order'];
foreach ($this->view->result as $result) {
$sm_field = $view->field[$this->options['simple']]
->getValue($result);
$this->view->result[$result->index]->{$this->options['simple']} = $sm_field;
}
if ($order === 'ASC') {
usort($this->view->result, function ($item1, $item2) {
return $item1->{$this->options['simple']} <=> $item2->{$this->options['simple']};
});
}
else {
usort($this->view->result, function ($item1, $item2) {
return $item2->{$this->options['simple']} <=> $item1->{$this->options['simple']};
});
}
}
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
}
protected function showSortForm(&$form, FormStateInterface $form_state) {
parent::showSortForm($form, $form_state);
$simpleOptions = [];
$fieldsOptions = $this->displayHandler
->getFieldLabels();
foreach ($fieldsOptions as $key => $value) {
if (strpos($key, 'field_views_simple_math_field') !== FALSE) {
$simpleOptions[$key] = $value;
}
}
if (!empty($simpleOptions)) {
$form['simple'] = [
'#title' => $this
->t('Simple math fields'),
'#type' => 'radios',
'#options' => $simpleOptions,
'#default_value' => $this->options['simple'],
'#required' => TRUE,
];
}
}
public function query() {
}
}