Registrieren Sie sich deshalb jetzt bei Usercentrics
19 |
26 | ',
27 | 'en' => 'The Usercentrics Consent Management Platform (CMP) enables you to harmonize your marketing and data
28 | strategy with legal requirements.
29 |
Register now for Usercentrics
30 |
37 | '
38 | ],
39 | 'thumbnail' => 'logo.png',
40 | 'version' => '3.2.1',
41 | 'author' => 'OXID Professional Services',
42 | 'events' => [],
43 |
44 | 'templates' => [],
45 |
46 | 'settings' => [
47 | [
48 | 'group' => 'usercentrics_main',
49 | 'name' => 'usercentricsId',
50 | 'type' => 'str',
51 | 'value' => ''
52 | ],
53 | [
54 | 'group' => 'usercentrics_advanced',
55 | 'name' => 'smartDataProtectorActive',
56 | 'type' => 'bool',
57 | 'value' => true
58 | ],
59 | [
60 | 'group' => 'usercentrics_advanced',
61 | 'name' => 'smartDataProtectorDeactivateBlocking',
62 | 'type' => 'str',
63 | 'value' => ''
64 | ],
65 | [
66 | 'group' => 'usercentrics_advanced',
67 | 'name' => 'usercentricsMode',
68 | 'type' => 'select',
69 | 'value' => Pattern\CmpV2::VERSION_NAME,
70 | 'constraints' =>
71 | Pattern\CmpV1::VERSION_NAME . '|' .
72 | Pattern\CmpV2::VERSION_NAME . '|' .
73 | Pattern\CmpV2Legacy::VERSION_NAME . '|' .
74 | Pattern\CmpV2Tcf::VERSION_NAME . '|' .
75 | Pattern\CmpV2TcfLegacy::VERSION_NAME . '|' .
76 | Pattern\Custom::VERSION_NAME
77 | ],
78 | [
79 | 'group' => '',
80 | 'name' => 'developmentAutomaticConsent',
81 | 'type' => 'bool',
82 | 'value' => false
83 | ],
84 | ],
85 |
86 | 'controllers' => [],
87 |
88 | 'extend' => [
89 | JavaScriptRenderer::class => ScriptRenderer::class,
90 | ViewConfig::class => UsercentricsViewConfig::class
91 | ]
92 | ];
93 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OXID Cookie Management powered by usercentrics
2 |
3 | [](https://packagist.org/packages/oxid-professional-services/usercentrics)
4 |
5 | This module provides the [Usercentrics](https://usercentrics.com/de/preise/?partnerid=16967#business-paket) functionality for the [OXID eShop](https://www.oxid-esales.com/) allowing you to use their Consent Management Platform.
6 |
7 | ## Usage
8 |
9 | This assumes you have OXID eShop (at least the `v6.2.0` compilation) up and running.
10 |
11 | ### Install
12 |
13 | The Usercentrics module is already included in the OXID eShop compilation.
14 |
15 | Module can be installed manually, by using composer:
16 | ```bash
17 | $ composer require oxid-professional-services/usercentrics
18 | ```
19 |
20 | After requiring the module, you need to activate it, either via OXID eShop admin or CLI.
21 |
22 | Navigate to oxideshop folder and execute the following:
23 | ```bash
24 | $ vendor/bin/oe-console oe:module:activate oxps_usercentrics
25 | ```
26 |
27 | ### How to use
28 |
29 | Activate the module and enter your usercentrics ID in the module settings.
30 |
31 | User documentation: [DE](https://docs.oxid-esales.com/modules/usercentrics/de/latest/)
32 |
33 | ## Branch Compatibility
34 |
35 | * b-7.4.x branch and v3.2.1 for b-7.4.x shop compilation branches
36 | * b-7.3.x branch and v3.1.0 for b-7.3.x shop compilation branches
37 | * b-7.2.x branch and v3.0.0 for b-7.2.x shop compilation branches
38 | * b-7.1.x branch and v3.0.0 for b-7.1.x shop compilation branches
39 | * b-7.0.x branch and v3.0.0 for b-7.0.x shop compilation branches
40 | * b-6.5.x branch for b-6.5.x shop compilation branches
41 | * b-6.3.x branch for b-6.3.x and b-6.4.x shop compilation branches
42 | * b-6.2.x branch for b-6.2.x shop compilation branches
43 |
44 | ### Development installation
45 |
46 | We recommend developing the module as independent as possible. This means that the module for development should
47 | be installed as a [root package](https://getcomposer.org/doc/04-schema.md#root-package), with its own strict dependencies if such are needed.
48 |
49 | The next section shows how to install the module as a root package by using the OXID eShop SDK.
50 |
51 | In case of different environment usage, please adjust by your own needs.
52 |
53 | ### Development installation on OXID eShop SDK
54 |
55 | The installation instructions below are shown for the current [SDK](https://github.com/OXID-eSales/docker-eshop-sdk)
56 | for shop 7.4. Make sure your system meets the requirements of the SDK.
57 |
58 | 0. Ensure all docker containers are down to avoid port conflicts
59 |
60 | 1. Clone the SDK for the new project
61 | ```shell
62 | echo MyProject && git clone https://github.com/OXID-eSales/docker-eshop-sdk.git $_ && cd $_
63 | ```
64 |
65 | 2. Clone the repository to the source directory
66 | ```shell
67 | git clone --recurse-submodules https://github.com/OXID-eSales/usercentrics.git --branch=b-7.4.x ./source
68 | ```
69 |
70 | 3. Run the recipe to setup the development environment, you can decide which shop edition to install. Omitting the flag installs EE.
71 | ```shell
72 | ./source/recipes/setup-development.sh
73 | ```
74 |
75 | You should be able to access the shop with http://localhost.local and the admin panel with http://localhost.local/admin
76 | (credentials: noreply@oxid-esales.com / admin)
77 |
78 | ## Testing
79 | ### Linting, syntax check, static analysis
80 |
81 | ```bash
82 | $ composer update
83 | $ composer static
84 | ```
85 |
86 | ### Unit/Integration/Acceptance tests
87 |
88 | - Install this module in a running OXID eShop
89 | - Reset the shop's database
90 |
91 | ```bash
92 | $ bin/oe-console oe:database:reset --db-host=db-host --db-port=db-port --db-name=db-name --db-user=db-user --db-password=db-password --force
93 | ```
94 |
95 | - Run all the tests
96 |
97 | ```bash
98 | $ composer tests-all
99 | ```
100 |
101 | - Or the desired suite
102 |
103 | ```bash
104 | $ composer tests-unit
105 | $ composer tests-integration
106 | $ composer tests-codeception
107 | ```
108 | ## Contributing
109 |
110 | You like to contribute? 🙌 AWESOME 🙌\
111 | Go and check the [contribution guidelines](CONTRIBUTING.md)
112 |
113 | ## Issues
114 |
115 | To report issues with the module, please use the [OXID eShop bugtracking system](https://bugs.oxid-esales.com/) - module Usercentrics project.
116 |
117 | ## License
118 |
119 | OXID Module and Component License, see [LICENSE file](LICENSE).
120 |
--------------------------------------------------------------------------------
/tests/Integration/Service/ScriptServiceMapperTest.php:
--------------------------------------------------------------------------------
1 | createScriptMapper('Service1.yaml');
29 |
30 | $service = $scriptServiceMapper->getServiceByScriptUrl($scriptUrl);
31 | $this->assertNull(
32 | $service,
33 | "test.js should not return a service name as its not configured"
34 | );
35 | }
36 |
37 | /**
38 | * @dataProvider matchingScriptUrls
39 | */
40 | public function testScriptNameConfigured(string $scriptUrl): void
41 | {
42 | $scriptServiceMapper = $this->createScriptMapper('Service1.yaml');
43 |
44 | /** @var Service $service */
45 | $service = $scriptServiceMapper->getServiceByScriptUrl($scriptUrl);
46 |
47 | $this->assertNotNull($service);
48 | $this->assertEquals("name1", $service->getName());
49 | }
50 |
51 | public static function matchingScriptUrls(): array
52 | {
53 | return [
54 | ["http://someurl/path/test1.js"],
55 | ["http://someurl/path/test1.js?123456"],
56 | ["http://someurl/path/test1.js?123456#abc"],
57 | ["http://someurl/path/test1.js#abc"],
58 | ["https://someurl/path/test2.js#abc"],
59 | ["https://someurl/1/test/js/path/test2.js?123456"],
60 | ];
61 | }
62 |
63 | public static function notMatchingScriptUrls(): array
64 | {
65 | return [
66 | ["http://someurl/path/test.js"],
67 | ["http://someurl/path/test.js?123456"],
68 | ["http://someurl/path/test.js?123456#abc"],
69 | ["http://someurl/path/test.js#abc"],
70 | ["https://someurl/test2.js#abc"],
71 | ["https://someurl/js/test2.js"],
72 | ["https://someurl/path/js/test2.js?123456"],
73 | ];
74 | }
75 |
76 |
77 | public function testCalculateSnippetIdIsNotEmpty(): void
78 | {
79 | $scriptServiceMapper = $this->createScriptMapper('Snippets.yaml');
80 | $snippet = "alert('Service1')";
81 | $id = $scriptServiceMapper->calculateSnippetId($snippet);
82 | $this->assertNotEmpty($id);
83 | }
84 |
85 | public function testCalculateSnippetIdIsUnique(): void
86 | {
87 | $scriptServiceMapper = $this->createScriptMapper('Snippets.yaml');
88 | $snippet = "alert('Service1')";
89 | $id = $scriptServiceMapper->calculateSnippetId($snippet);
90 |
91 | $snippet2 = "alert('Service2')";
92 | $id2 = $scriptServiceMapper->calculateSnippetId($snippet2);
93 | $this->assertNotEquals($id, $id2);
94 | }
95 |
96 | public function testCalculateSnippetIdIsStable(): void
97 | {
98 | $scriptServiceMapper = $this->createScriptMapper('Snippets.yaml');
99 | $snippet = "alert('Service1')";
100 | $id = $scriptServiceMapper->calculateSnippetId($snippet);
101 | $id3 = $scriptServiceMapper->calculateSnippetId($snippet);
102 | $this->assertEquals($id, $id3);
103 | }
104 |
105 | public function testGetServiceBySnippetId(): void
106 | {
107 | $scriptServiceMapper = $this->createScriptMapper('Snippets.yaml');
108 | $id = $scriptServiceMapper->calculateSnippetId("alert('Service2')");
109 | $service = $scriptServiceMapper->getServiceBySnippetId($id);
110 | $this->assertNotNull($service);
111 | /** @psalm-suppress PossiblyNullReference */
112 | $this->assertEquals("name1", $service->getName());
113 | }
114 |
115 | public function testGetServiceByNotExistingSnippetId(): void
116 | {
117 | $scriptServiceMapper = $this->createScriptMapper('Snippets.yaml');
118 | $id = $scriptServiceMapper->calculateSnippetId("alert('NoService')");
119 | $service = $scriptServiceMapper->getServiceBySnippetId($id);
120 | $this->assertNull($service);
121 | }
122 |
123 | private function createScriptMapper(string $file): ScriptServiceMapper
124 | {
125 | $config = new ConfigurationDao($this->getStorage($file, __DIR__ . '/ConfigTestData'));
126 | return new ScriptServiceMapper($config);
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 | All notable changes to this project will be documented in this file.
3 |
4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6 |
7 | ## [3.2.1] - 2025-10-14
8 |
9 | ### Changed
10 | - Updated composer.json with stable release versions
11 |
12 | ## [3.2.0] - 2025-10-13
13 |
14 | ### Changed
15 | - Updated to work with OXID eShop 7.4.x.
16 |
17 | ## [3.1.0] - 2025-04-11
18 |
19 | ### Added
20 | - Support for PHP 8.4.
21 |
22 | ### Changed
23 | - Prevent page blocking when Usercentrics ID is missing
24 | - Updated to work with OXID eShop 7.3.x.
25 |
26 | ### Removed
27 | - Dropped support for PHP 8.1.
28 |
29 | ## [3.0.0] - 2024-03-15
30 |
31 | ### Added
32 | - ``Core\ViewConfig::getUsercentricsModuleSettings``
33 | - ``Service\Integration\Pattern\*->scriptSource`` type definition
34 | - ``Service/ModuleSettingsInterface::getSmartProtectorBlockingDisabledServices``
35 | - Code style tools
36 |
37 | ### Removed
38 | - Smarty support
39 | - ``Core\ViewConfig`` methods:
40 | - ``getUsercentricsID``
41 | - ``isSmartDataProtectorActive``
42 | - ``isDevelopmentAutomaticConsentActive``
43 | - ``getSmartDataProtectorDeactivateBlockingServices``
44 |
45 | ### Changed
46 | - Rename ``getSmartProtectorBlockingDisabledList`` to ``getSmartProtectorBlockingDisabledServices`` and change return
47 | type to ``string[]`` for:
48 | - ``Service/ModuleSettingsInterface``
49 | - ``Service/ModuleSettings``
50 | - Change ``Service/ModuleSettings::getStringSettingValue`` from protected to private
51 |
52 | ## [2.0.2] - 2023-05-09
53 |
54 | ### Fixed
55 | - Fix version in metadata
56 | - Fix version links in the changelog
57 |
58 | ## [2.0.1] - 2023-05-05
59 |
60 | ### Changed
61 | - License updated - OXID Module and Component License instead of GPL
62 | - Readme updated to clarify shop version compatibility
63 |
64 | ## [2.0.0] - 2023-05-04
65 |
66 | ### Added
67 | - Supports Twig shop configuration
68 | - Github workflow with tests runs added
69 | - PHP 8.0 and 8.1 support
70 |
71 | ### Changed
72 | - Not autowired container access goes through the `OxidProfessionalServices\Usercentrics\Traits\ServiceContainer` trait
73 | - `OxidProfessionalServices\Usercentrics\Service\ModuleSettings` improved:
74 | - Every module setting have its own getter
75 | - New module settings service used to access module configurations
76 | - Tests are not based on testing library anymore
77 |
78 | ### Fixed
79 | - Templates extracted from `src` directory and moved one level up
80 |
81 | ### Removed
82 | - Php 7.x are not supported anymore
83 |
84 | ## [1.2.2] - unreleased
85 |
86 | ### Changed
87 | - License updated - now using OXID ESS Module License
88 |
89 | ## [1.2.1] - 2022-06-07
90 |
91 | ### Fixed
92 | - `OxidProfessionalServices\Usercentrics\Service\Integration\IntegrationScriptBuilder` constructor's type-hint
93 |
94 | ## [1.2.0] - 2021-11-03
95 |
96 | ### Added
97 | - Add [deactivateBlocking configuration](https://docs.usercentrics.com/#/smart-data-protector?id=deactivate-smart-data-protector-for-specific-services) feature
98 | - Development related hidden parameter developmentAutomaticConsent
99 |
100 | ### Fixed
101 | - Rework tests to work with UserCentrics CMPv2
102 | - Possibility to run tests with new chrome browser
103 | - Fix possible test runner environment constants names to fit testing library documentation
104 |
105 | ## [1.1.3] - 2021-04-12
106 |
107 | ### Fixed
108 | - Fixed tests for never phpunit versions
109 |
110 | ## [1.1.2] - 2021-03-10
111 |
112 | ### Changed
113 | - Admin area: the link with the partnerid that is showed points directly to price and order form from usercentrics
114 |
115 | ## [1.1.1] - 2021-03-03
116 |
117 | ### Changed
118 | - Admin area: open API documentation in new browser tab
119 | - Admin area: added registration link
120 |
121 | ### Fixed
122 | - Fix default value for usercentricsMode
123 | - Improved the tests to be more stable on different shop modules configurations
124 |
125 | ## [1.1.0] - 2021-01-19
126 |
127 | ### Added
128 | - Support for Usercentrics CmpV2 including legacy browser mode.
129 | - Support for Usercentrics CmpV2 TFC (experimental).
130 | - ``Service\ModuleSettings`` class for accessing this module settings.
131 |
132 | ### Deprecated
133 | - ``Core\ViewConfig::getUsercentricsID``
134 |
135 | ### Changed
136 | - ``ModuleSettingsInterface`` is used to access module settings in the shop.
137 |
138 | ### Fixed
139 | - Tests improved and cleaned up.
140 | - Added tests for several edge cases.
141 |
142 | ## [1.0.0] - 2020-12-09
143 |
144 | ### Added
145 | - Module provides a possibility to turn on "Smart data protection" function provided by UserCentrics.
146 | - Possibility to configure any javascript included with oxscript tag to usercentrics service, and allow client to manipulate (turn it on/off) by Usercentrics data protection panel.
147 |
148 | [3.2.1]: https://github.com/OXID-eSales/usercentrics/compare/v3.2.0...v3.2.1
149 | [3.2.0]: https://github.com/OXID-eSales/usercentrics/compare/v3.1.0...v3.2.0
150 | [3.1.0]: https://github.com/OXID-eSales/usercentrics/compare/v3.0.0...v3.1.0
151 | [3.0.0]: https://github.com/OXID-eSales/usercentrics/compare/v2.0.2...v3.0.0
152 | [2.0.2]: https://github.com/OXID-eSales/usercentrics/compare/v2.0.1...v2.0.2
153 | [2.0.1]: https://github.com/OXID-eSales/usercentrics/compare/v2.0.0...v2.0.1
154 | [2.0.0]: https://github.com/OXID-eSales/usercentrics/compare/v1.2.1...v2.0.0
155 | [1.2.2]: https://github.com/OXID-eSales/usercentrics/compare/v1.2.1...b-6.5.x
156 | [1.2.1]: https://github.com/OXID-eSales/usercentrics/compare/v1.2.0...v1.2.1
157 | [1.2.0]: https://github.com/OXID-eSales/usercentrics/compare/v1.1.3...v1.2.0
158 | [1.1.3]: https://github.com/OXID-eSales/usercentrics/compare/v1.1.2...v1.1.3
159 | [1.1.2]: https://github.com/OXID-eSales/usercentrics/compare/v1.1.1...v1.1.2
160 | [1.1.1]: https://github.com/OXID-eSales/usercentrics/compare/v1.1.0...v1.1.1
161 | [1.1.0]: https://github.com/OXID-eSales/usercentrics/compare/v1.0.0...v1.1.0
162 | [1.0.0]: https://github.com/OXID-eSales/usercentrics/commits/v1.0.0
163 |
--------------------------------------------------------------------------------
/src/Service/Configuration/ConfigurationDao.php:
--------------------------------------------------------------------------------
1 | getScriptsConfiguration();
26 | $scriptsSnippets = $this->getScriptSnippetsConfiguration();
27 | $services = $this->getServicesConfiguration();
28 |
29 | return new Configuration($services, $scripts, $scriptsSnippets);
30 | }
31 |
32 | /**
33 | * @return Script[]
34 | */
35 | private function getScriptsConfiguration(): array
36 | {
37 | $plainConfig = $this->storage->getData();
38 | $plainScripts = $this->getConfigTypeFromPlainData('scripts', $plainConfig);
39 |
40 | $scripts = [];
41 | /** @var string[] $scriptDataArray */
42 | foreach ($plainScripts as $scriptDataArray) {
43 | $scripts[] = $this->scriptFromArray($scriptDataArray);
44 | }
45 |
46 | return $scripts;
47 | }
48 |
49 | /**
50 | * @return ScriptSnippet[]
51 | */
52 | private function getScriptSnippetsConfiguration(): array
53 | {
54 | $plainConfig = $this->storage->getData();
55 | $plainScripts = $this->getConfigTypeFromPlainData('scriptSnippets', $plainConfig);
56 |
57 | $scriptSnippets = [];
58 | /** @var string[] $scriptDataArray */
59 | foreach ($plainScripts as $scriptDataArray) {
60 | $scriptSnippets[] = $this->scriptSnippetFromArray($scriptDataArray);
61 | }
62 |
63 | return $scriptSnippets;
64 | }
65 |
66 | /**
67 | * @return Service[]
68 | */
69 | private function getServicesConfiguration(): array
70 | {
71 | $plainConfig = $this->storage->getData();
72 | $plainServices = $this->getConfigTypeFromPlainData('services', $plainConfig);
73 |
74 | $services = [];
75 | /** @var string[] $serviceDataArray */
76 | foreach ($plainServices as $serviceDataArray) {
77 | $service = $this->serviceFromArray($serviceDataArray);
78 | $services[$service->getId()] = $service;
79 | }
80 |
81 | return $services;
82 | }
83 |
84 | /**
85 | * @param string $typeOfList its a key - scripts|services
86 | * @param mixed[] $plainConfig
87 | *
88 | * @return mixed[]
89 | */
90 | private function getConfigTypeFromPlainData(string $typeOfList, array $plainConfig): array
91 | {
92 | /** @var mixed $typeConfig */
93 | $typeConfig = $plainConfig[$typeOfList] ?? [];
94 |
95 | if (!is_array($typeConfig)) {
96 | $typeConfig = [];
97 | }
98 |
99 | return $typeConfig;
100 | }
101 |
102 | /**
103 | * @param mixed[] $data
104 | */
105 | private function scriptFromArray(array $data): Script
106 | {
107 | $path = (string)($data['path'] ?? '');
108 | $service = (string)($data['service'] ?? '');
109 |
110 | return new Script($path, $service);
111 | }
112 |
113 | /**
114 | * @SuppressWarnings(PHPMD.ShortVariable)
115 | * @param mixed[] $data
116 | */
117 | private function scriptSnippetFromArray(array $data): ScriptSnippet
118 | {
119 | $id = (string)($data['id'] ?? '');
120 | $service = (string)($data['service'] ?? '');
121 |
122 | return new ScriptSnippet($id, $service);
123 | }
124 |
125 | /**
126 | * @param mixed[] $data
127 | */
128 | private function serviceFromArray(array $data): Service
129 | {
130 | $serviceName = (string)($data['name'] ?? '');
131 | $serviceId = (string)($data['id'] ?? '');
132 |
133 | return new Service($serviceName, $serviceId);
134 | }
135 |
136 | public function putConfiguration(Configuration $configuration): void
137 | {
138 | $plainConfig = [
139 | 'scripts' => $this->preparePlainScriptsArray($configuration->getScripts()),
140 | 'services' => $this->preparePlainServicesArray($configuration->getServices()),
141 | 'scriptSnippets' => $this->preparePlainSnippetsArray($configuration->getScriptSnippets())
142 | ];
143 |
144 | $this->storage->putData($plainConfig);
145 | }
146 |
147 | /**
148 | * Converts array of Services to plain array for further saving
149 | *
150 | * @param Script[] $scripts
151 | *
152 | * @return mixed[]
153 | */
154 | private function preparePlainScriptsArray(array $scripts): array
155 | {
156 | $plainScripts = [];
157 |
158 | foreach ($scripts as $script) {
159 | $plainScripts[] = [
160 | 'service' => $script->getServiceId(),
161 | 'path' => $script->getPath()
162 | ];
163 | }
164 |
165 | return $plainScripts;
166 | }
167 |
168 | /**
169 | * Converts array of Services to plain array for further saving
170 | *
171 | * @param Service[] $services
172 | *
173 | * @return mixed[]
174 | */
175 | private function preparePlainServicesArray(array $services): array
176 | {
177 | $plainServices = [];
178 |
179 | foreach ($services as $service) {
180 | $plainServices[] = [
181 | 'name' => $service->getName(),
182 | 'id' => $service->getId()
183 | ];
184 | }
185 |
186 | return $plainServices;
187 | }
188 |
189 | /**
190 | * Converts array of Services to plain array for further saving
191 | *
192 | * @param ScriptSnippet[] $snippets
193 | *
194 | * @return mixed[]
195 | */
196 | private function preparePlainSnippetsArray(array $snippets): array
197 | {
198 | $plainSnippets = [];
199 |
200 | foreach ($snippets as $snippet) {
201 | $plainSnippets[] = [
202 | 'service' => $snippet->getServiceId(),
203 | 'id' => $snippet->getId()
204 | ];
205 | }
206 |
207 | return $plainSnippets;
208 | }
209 | }
210 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | OXID ESS-Modul-Lizenz 2023
2 |
3 | 1. Präambel
4 | Diese Software ist ein ESS-Modul (E-Commerce Standard Service) und ausschließlich für den Einsatz mit den für kommerzielle Nutzung freigegebenen Editionen des OXID eShop bestimmt. Dies sind die Professional Edition und die Enterprise Edition, sowie die OXID eShop CE-Software, vorausgesetzt, für diese wird eine monatliche Nutzungsgebühr bezahlt.
5 |
6 | 2. Urheberrecht
7 | Die Software ist urheberrechtlich geschützt und geschütztes Geschäftsgeheimnis von OXID eSales.
8 | OXID eSales behält sich alle Rechte vor, sofern Ihnen in dieser Lizenzvereinbarung keine ausdrücklichen Rechte an der Software eingeräumt werden.
9 |
10 | 3. Rechteeinräumung
11 | OXID eSales räumt Ihnen an der Software das nicht ausschließliche und nicht übertragbare Recht zur Nutzung der Software ein.
12 |
13 | 4. Nutzungsbedingungen
14 | Sie erhalten das Recht zur Nutzung unter der Bedingung, dass Sie diese Lizenzvereinbarung und die darin enthaltenen Nutzungsbedingungen akzeptieren.
15 |
16 | 5. Einschränkungen
17 | a. Die Nutzung von unter dieser Lizenz veröffentlichten Softwareprodukten oder -modulen in Verbindung mit früheren Versionen der OXID eShop CE Software (vor Version 6.4.2) bzw. von dieser abgeleiteten Softwareprodukten (Forks) ist nicht zulässig.
18 | b. Die Nutzung dieser Software oder Teilen davon durch Module oder Software Dritter unterliegt diesen Nutzungsbedingungen.
19 | c. Die Software kann Softwareprodukte von Fremdherstellern enthalten. Die Fremdprodukte können Sie nach der Installation der composer.lock-Datei entnehmen. Für diese Fremdprodukte gelten zusätzliche Lizenzbestimmungen, die sie der entsprechenden Lizenzdatei des Fremdprodukts entnehmen können.
20 | d. Sie dürfen die Software weder umarbeiten, anpassen noch in eine andere Programmiersprache übersetzen, ebenso sind Reverse Engineering und Nachbau der Software nicht erlaubt.
21 | e. Jede gemäß dieser Lizenz zulässige Kopie der Software muss die Urheberrechts- und Schutzrechtsvermerke von OXID eSales tragen, die auf oder in der lizensierten Software vorhanden sind.
22 | f. Sie dürfen die Software Dritten weder vermieten, verleihen, unterlizensieren oder übertragen.
23 | g. Sie dürfen den Quellcode der Software Dritten nicht zugänglich machen, es sei denn,
24 | - die entsprechenden Dateien sind von OXID eSales explizit als öffentlich (open source) gekennzeichnet oder
25 | - der Dritte benötigt den Quellcode zur Durchführung seiner Tätigkeit für Sie und hat mit OXID eSales eine schriftliche Geheimhaltungsvereinbarung abgeschlossen.
26 |
27 | 6. Nutzungsuntersagung und Nutzungsentschädigung
28 | Wenn Sie die Bestimmungen von Ziff. 4 und 5 nicht oder nicht vollständig erfüllen, ist OXID eSales ohne weiteres berechtigt, Ihnen die Nutzung der Software zu untersagen. Schadensersatzansprüche von OXID eSales bleiben vorbehalten.
29 | Werden die Nutzungsbedingungen nicht eingehalten und gibt es keine andere Vereinbarung, stimmt der Lizenznehmer der jeweils gültigen Nutzungsentschädigung (Stand 31.12.2022: 111€) zuzüglich des Inflationsausgleichs gemäß der vom statistischen Bundesamt festgestellten jährlichen Inflationsrate für jeden Monat unrechtmäßiger Nutzung der Software mit anderen Softwareprodukten zu. Diese Entschädigung entbindet nicht vom Abschluss eines der Nutzung entsprechenden Lizenzvertrags.
30 | Für spätere Versionen behält sich OXID eine Anpassung der Nutzungsgebühr vor.
31 | Werden mehrere Shops oder Teile der OXID Professional Edition oder OXID Enterprise Edition oder vergleichbare Funktionalität, die durch Dritte auf Basis von OXID Software bereitgestellt wurde, mit dieser Software genutzt, wird eine Lizenzmiete für die Professional Edition oder Enterprise Edition gemäß der OXID Preisliste fällig. Es gilt die Preisliste des Monats, in dem die erste Lizenzmiete bezahlt wird.
32 |
33 | 7. Support und Wartung
34 | Support- und Wartungsleistungen sind nicht Bestandteil dieser Lizenzvereinbarung. Wenn Sie solche Leistungen in Anspruch nehmen wollen, wenden Sie sich bitte an sales@oxid-esales.com.
35 |
36 | 8. Rechte bei Mängeln
37 | a. Die vertragsgemäße Beschaffenheit der Software bestimmt sich ausschließlich nach den Spezifikationen der Dokumentation in der bei Abschluss dieses Lizenzvertrages gültigen Fassung.
38 | b. Die Verjährungsfrist beträgt 12 Monate nach Lieferung der Software (Bereitstellung zum Download).
39 | c. Die Software wird Ihnen in der Beschaffenheit überlassen, wie sie sich zum Zeitpunkt des Abschlusses dieses Lizenzvertrages befindet. OXID eSales übernimmt keine Haftung für Sach- und Rechtsmängel, insbesondere übernehmen wir keine Haftung für die vertragsgemäße Beschaffenheit oder die Eignung für den vertraglich vorausgesetzten Verwendungszweck. Die in der Dokumentation gegebene Beschreibung der Software darf in keinem Fall als Zusicherung oder Garantie verstanden werden. Unsere Haftung für vorsätzliches und/oder arglistiges Handeln bleibt davon jedoch unberührt.
40 |
41 | 9. Haftung
42 | a. OXID eSales haftet nur bei Vorsatz und grober Fahrlässigkeit, Ansprüchen nach dem deutschen Produkthaftungsgesetz sowie bei einer Verletzung des Lebens, des Körpers oder der Gesundheit. Im Übrigen haften die Parteien unbeschränkt nach den gesetzlichen Vorschriften
43 | b. Alle anderen Ansprüche sind ausgeschlossen.
44 |
45 | 10. Sonstiges
46 | a. Dieser Lizenzvertrag unterliegt deutschem Recht.
47 | b. Sollte eine Bestimmung dieses Lizenzvertrages unwirksam oder nichtig sein oder werden, so bleibt seine Wirksamkeit im Übrigen unberührt.
48 | c. Für die Auslegung dieses Lizenzvertrages ist die deutsche Sprachfassung verbindlich.
49 | d. Für alle Streitigkeiten, die aus dieser Lizenzvereinbarung entstehen, wird die Zuständigkeit des Landgerichts Freiburg vereinbart.
50 |
51 |
52 |
53 | ENGLISH VERSION
54 |
55 | This is a rough translation of the German language version for informational purposes. The German language version of this license agreement is legally binding.
56 |
57 | 1. Preamble
58 | This software is an ESS module (E-Commerce Standard Service) and is intended exclusively for use with the editions of OXID eShop released for commercial use. These are the Professional Edition and the Enterprise Edition, as well as the OXID eShop CE software, provided that a monthly fee is paid for these.
59 |
60 | 2. Copyright
61 | The software is copyrighted and protected trade secret of OXID eSales.
62 | OXID eSales reserves all rights unless you are granted explicit rights to the software in this license agreement.
63 |
64 | 3. Granting of rights
65 | OXID eSales grants you the non-exclusive and non-transferable right to use the software.
66 |
67 | 4. Terms of use
68 | You are granted the right to use the software under the condition that you accept this license agreement and the included terms of use.
69 |
70 | 5. Restrictions
71 | a. The use of software products or modules published under this licence in connection with earlier versions of the OXID eShop CE software (prior to version 6.4.2) or software products derived from it (forks) is not permitted.
72 | b. The use of this software or parts thereof by third party modules or software is subject to these Terms of Use.
73 | c. The software contains software products from third-party manufacturers. You can find the third-party products in the composer.lock file after installation. Additional license conditions apply to these third-party products, which you can find in the corresponding license file of the third-party product.
74 | d. You may not modify, adapt or translate this software, nor may you reverse engineer or decompile the software.
75 | e. Any copy of the Software permitted under this license must bear the copyright and proprietary notices of OXID eSales that are present on or in the Licensed Software.
76 | f. You may not rent, loan, sublicense or transfer the Software to any third party.
77 | g. You may not make the source code of the software available to third parties unless,
78 | - the corresponding files are explicitly marked as public (open source) by OXID eSales or
79 | - the third party requires the source code to carry out its activities for you and has concluded a written non-disclosure agreement with OXID eSales.
80 |
81 | 6. Prohibition of Use and Compensation for Use
82 | If you do not or not completely fulfill the provisions of clauses 4 and 5, OXID eSales is entitled without further ado to prohibit you from using the software. OXID eSales reserves the right to claim damages.
83 | If the terms of use are not complied with and there is no other agreement, the licensee agrees to compensation for use of € 111 plus inflation compensation in accordance with the annual inflation rate determined by the Federal Statistical Office of Germany for each month of unlawful use. This compensation does not release from the conclusion of a license agreement corresponding to the use.
84 | For later versions OXID reserves the right to adjust the usage fee.
85 | If several shops or parts of the OXID Professional Edition or OXID Enterprise Edition or comparable functionality provided by third parties based on OXID software are used, a license fee according to the OXID price list is due. The price list of the month in which the first license fee is paid applies.
86 |
87 | 7. Support and Maintenance
88 | Support and maintenance services are not part of this license agreement. If you wish to make use of such services, please contact sales@oxid-esales.com.
89 |
90 | 8. Rights in the Event of Defects
91 | a. The contractual quality of the software is determined exclusively by the specifications of the documentation in the version valid at the time of conclusion of this license agreement.
92 | b. The limitation period is 12 months after delivery of the software (provision for download).
93 | c. The software is provided to you in the condition as it is at the time of the conclusion of this license agreement. OXID eSales accepts no liability for material defects or defects of title, in particular we accept no liability for the contractual condition or suitability for the contractually assumed purpose. The description of the software given in the documentation may in no case be understood as an assurance or guarantee. However, this shall not affect our liability for intentional and/or fraudulent acts.
94 |
95 | 9. Liability
96 | a. OXID eSales shall only be liable in the event of intent and gross negligence, claims under the German Product Liability Act and in the event of injury to life or health. In all other respects the parties shall be liable without limitation in accordance with the statutory provisions.
97 | b. All other claims are excluded.
98 |
99 | 10. Miscellaneous
100 | a. This license agreement is subject to German law.
101 | b. Should any provision of this license agreement be or become invalid or void, the validity of the remaining provisions shall remain unaffected.
102 | c. The German language version shall be binding for the interpretation of this license agreement.
103 | d. It is agreed that the Regional Court of Freiburg shall have jurisdiction over all disputes arising from this licence agreement.
--------------------------------------------------------------------------------