name = 'visformscustomredirects'; $this->fid = Factory::getApplication()->getInput()->getInt('id', 0); } public static function getSubscribedEvents(): array { return [ 'onVisformsBeforeSuccessAction' => 'onVisformsBeforeSuccessAction', ]; } public function onVisformsBeforeSuccessAction(VisformsBeforeSuccessActionEvent $event): void { $context = $event->getContext(); $form = $event->getForm(); $fields = $event->getFields(); // Skip plugin if context is wrong if (($context != 'com_visforms.form') && ($context != 'mod_visforms.form') && ($context != 'plg_vfformview.form')) { return; } $app = Factory::getApplication(); if ($app->isClient('administrator')) { return; } if (empty($form->id)) { return; } else { $this->fid = $form->id; } $redirectUrl = $this->getRedirectUrl($context, $form, $fields); if (!empty($redirectUrl)) { $form->redirecturl = $redirectUrl; } } private function getRedirectUrl($context, $form, $fields) { foreach ($form->fields as $field) { if (!empty($field->isDisabled)) { continue; } if (in_array($field->typefield, array('multicheckbox', 'select', 'radio', 'multicheckboxsql', 'selectsql', 'radiosql')) && is_string($field->dbValue)) { $dbValues = HTMLHelper::_('visformsselect.explodeMsDbValue', $field->dbValue); foreach ($field->opts as $option) { if (!empty($option['redirecturl'])) { if (is_array($dbValues) && in_array($option['value'], $dbValues) && !empty(StringHelper::trim($option['redirecturl']))) { return $option['redirecturl']; } } } } } return ''; } }