Returns a list of enabled predefined packages for the specified service
public get_predefined_packages_for_service ( $service_id ) : array | ||
$service_id | ||
return | array |
/** * 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; }
protected function get_all_packages() { $custom_packages = $this->settings_store->get_packages(); $formatted_packages = array(); foreach ($custom_packages as $package) { $package_id = $package['name']; $formatted_packages[$package_id] = $package; } $service_id = 'usps'; //TODO: remove hardcoding $predefined_packages_schema = $this->service_schemas_store->get_predefined_packages_schema_for_service($service_id); $enabled_predefined_packages = $this->settings_store->get_predefined_packages_for_service($service_id); foreach ($predefined_packages_schema as $group) { foreach ($group->definitions as $package) { if (!in_array($package->id, $enabled_predefined_packages)) { continue; } $formatted_packages[$package->id] = $package; } } return $formatted_packages; }