You are here

public function DefaultController::matrix_custom_calculation_callback in Matrix field 8.2

Same name in this branch
  1. 8.2 src/DefaultController.php \Drupal\matrix\DefaultController::matrix_custom_calculation_callback()
  2. 8.2 src/Controller/DefaultController.php \Drupal\matrix\Controller\DefaultController::matrix_custom_calculation_callback()

File

src/DefaultController.php, line 10

Class

DefaultController
Default controller for the matrix module.

Namespace

Drupal\matrix

Code

public function matrix_custom_calculation_callback() {
  $callback = $_POST['callback'];
  $data = explode(",", $_POST['data']);
  $functions = \Drupal::moduleHandler()
    ->invokeAll('matrix_functions');

  //ensure the callback is allowed
  if (!in_array($callback, array_keys($functions['calculation']))) {
    drupal_json_output([
      'error' => t('Calcuation callback function not available'),
    ]);
    exit;
  }

  //ensure the data is safe
  foreach ($data as $id => $d) {
    $data[$id] = check_plain($d);
  }
  $result = call_user_func($callback, $data);
  drupal_json_output([
    'data' => check_plain($result),
  ]);
  exit;
}