/**
* Returns the settings for this service (e.g. for use in the form or for
* sending to the rate request endpoint
*
* Used by WC_Connect_Loader to embed the form schema in the page for JS to consume
*
* @return object
*/
public function get_service_settings()
{
$service_settings = $this->service_settings_store->get_service_settings($this->id, $this->instance_id);
if (!is_object($service_settings)) {
$service_settings = new stdClass();
}
if (!property_exists($service_settings, 'services')) {
return $service_settings;
}
//mark the services with predefined packages as disabled if the corresponding package has been also disabled
$schema = $this->get_service_schema();
if (!property_exists($schema, 'service_settings') || !property_exists($schema->service_settings, 'definitions') || !property_exists($schema->service_settings->definitions, 'services')) {
return $service_settings;
}
$enabled_packages = $this->service_settings_store->get_predefined_packages_for_service($this->id);
foreach ($schema->service_settings->definitions->services as $service_schema) {
$service_id = $service_schema->id;
if (!property_exists($service_schema, 'predefined_package') || !property_exists($service_settings->services, $service_id)) {
continue;
}
if (false === in_array($service_schema->predefined_package, $enabled_packages)) {
$service_settings->services->{$service_id}->enabled = false;
}
}
return $service_settings;
}