protected function isValid(Lead $lead) { $valid = true; $webworks = false; $options = false; $account = $lead->getAccount(); $apis = $account->getApis(); // Check WebWorks API if ($apis) { foreach ($apis as $api) { if ($api->getName() == 'WebWorks') { $webworks = $api; } } } if ($webworks) { $options = []; $apiOptions = $webworks->getOptions(); $values = array_map(function ($option) { return [$option->getOption() => $option->getValue()]; }, array_filter($apiOptions, function ($option) { return $option->getApi()->getName() == 'WebWorks' && !empty($option->getValue()) && $option->getScope() == 'global'; })); foreach ($values as $option) { foreach ($option as $key => $value) { switch ($key) { case 'AppReferrer': if (!preg_match('/none/i', trim($value))) { $options[$key] = preg_replace('/\\{lead\\}/i', "Lead #" . $lead->getId(), $value); } break; default: $options[$key] = $value; break; } } } foreach ($account->getApiSettings() as $apiSetting) { $option = $apiSetting->getApiOption(); switch ($option->getOption()) { case 'CompanyId': $options['CompanyId'] = $apiSetting->getApiValue(); break; case 'CompanyName': $options['CompanyName'] = $apiSetting->getApiValue(); break; case 'AppReferrer': if (!preg_match('/none/i', trim($apiSetting->getApiValue()))) { $options['AppReferrer'] = $apiSetting->getApiValue(); } else { unset($options['AppReferrer']); } break; } } foreach (['Source', 'CompanyId'] as $option) { if (!in_array($option, array_keys($options))) { $valid = false; } } } else { $valid = false; } return $valid ? $options : false; }