Registrations::addModules(array('gRank' => array('description' => 'gRank registration survey module.', 'filters' => array('save' => function ($self, $params, $chain) { // Check league to see if grank is enabled if (empty($params['entity']->getLeague()->modules->gRank)) { $enabled = false; } else { $enabled = true; } if ($enabled and isset($params['data']['gRank'])) { if (isset($params['data']['gRank']['score'])) { unset($params['data']['gRank']['score']); } # Calculate the actual score, store in secondary_rank_data.grank $score = \app\modules\Registrations\GRankModule::calculateScore($params['data']['gRank']['answers']); if (is_numeric($score)) { $params['data']['secondary_rank_data']['grank'] = $score; $params['data']['gRank']['score'] = $score; } } return $chain->next($self, $params, $chain); }, 'validates' => function ($self, $params, $chain) { $validationResult = $chain->next($self, $params, $chain); extract($params); // Check league to see if grank is enabled if (empty($entity->getLeague()->modules->gRank)) { $enabled = false; } else { $enabled = true; } $valid = true; if ($enabled) { if (!isset($entity->gRank->answers)) { $valid = false; $error = 'gRank data missing.'; } else { $score = \app\modules\Registrations\GRankModule::calculateScore($entity->gRank->answers->to('array')); if (!is_numeric($score)) { $valid = false; $params['entity']->errors('gRank.score', implode(', ', $score)); } } } return $valid && $validationResult; }))));