Skip to content

Commit 175dacb

Browse files
TatevikGrtatevikg1
andauthored
Update import logic, add dynamic attribute repository (#362)
* Skip password and modified fields while import, do not subscribe blacklisted users * DefaultConfigProvider * Use ConfigProvider in ProcessQueueCommand * Use ConfigProvider in SubscriberCsvImporter + send email * Rename paramProvider * Test fix * AttributeValueProvider for dynamic tables * Update: config provider * Translations in default configs * Email with messageHandler * Style fix * PhpCs fix * Fix configs * replace list names * Add tests + fix * Add more tests + fix handler --------- Co-authored-by: Tatevik <tatevikg1@gmail.com>
1 parent feea299 commit 175dacb

File tree

48 files changed

+4261
-527
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+4261
-527
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,11 @@ For detailed configuration instructions, see the [Mailer Transports documentatio
214214
## Copyright
215215

216216
phpList is copyright (C) 2000-2025 [phpList Ltd](https://www.phplist.com/).
217+
218+
219+
### Translations
220+
command to extract translation strings
221+
222+
```bash
223+
php bin/console translation:extract --force en --format=xlf
224+
```

config/parameters.yml.dist

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,18 @@ parameters:
2121
env(PHPLIST_DATABASE_USER): 'phplist'
2222
database_password: '%%env(PHPLIST_DATABASE_PASSWORD)%%'
2323
env(PHPLIST_DATABASE_PASSWORD): 'phplist'
24+
database_prefix: '%%env(DATABASE_PREFIX)%%'
25+
env(DATABASE_PREFIX): 'phplist_'
2426

2527
# Email configuration
2628
app.mailer_from: '%%env(MAILER_FROM)%%'
2729
env(MAILER_FROM): 'noreply@phplist.com'
2830
app.mailer_dsn: '%%env(MAILER_DSN)%%'
2931
env(MAILER_DSN): 'null://null'
3032
app.confirmation_url: '%%env(CONFIRMATION_URL)%%'
31-
env(CONFIRMATION_URL): 'https://example.com/confirm/'
33+
env(CONFIRMATION_URL): 'https://example.com/subscriber/confirm/'
34+
app.subscription_confirmation_url: '%%env(SUBSCRIPTION_CONFIRMATION_URL)%%'
35+
env(SUBSCRIPTION_CONFIRMATION_URL): 'https://example.com/subscription/confirm/'
3236
app.password_reset_url: '%%env(PASSWORD_RESET_URL)%%'
3337
env(PASSWORD_RESET_URL): 'https://example.com/reset/'
3438

config/services/messenger.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,9 @@ services:
2222
tags: [ 'messenger.message_handler' ]
2323
arguments:
2424
$passwordResetUrl: '%app.password_reset_url%'
25+
26+
PhpList\Core\Domain\Messaging\MessageHandler\SubscriptionConfirmationMessageHandler:
27+
autowire: true
28+
autoconfigure: true
29+
tags: [ 'messenger.message_handler' ]
30+

config/services/providers.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ services:
33
autowire: true
44
autoconfigure: true
55

6-
PhpList\Core\Core\ConfigProvider:
6+
PhpList\Core\Core\ParameterProvider:
77
arguments:
88
$config: '%app.config%'
99

@@ -12,3 +12,18 @@ services:
1212
autoconfigure: true
1313
arguments:
1414
$confPath: '%app.phplist_isp_conf_path%'
15+
16+
PhpList\Core\Domain\Subscription\Service\Provider\CheckboxGroupValueProvider:
17+
autowire: true
18+
PhpList\Core\Domain\Subscription\Service\Provider\SelectOrRadioValueProvider:
19+
autowire: true
20+
PhpList\Core\Domain\Subscription\Service\Provider\ScalarValueProvider:
21+
autowire: true
22+
23+
PhpList\Core\Domain\Configuration\Service\Provider\DefaultConfigProvider:
24+
autowire: true
25+
26+
PhpList\Core\Domain\Configuration\Service\Provider\ConfigProvider:
27+
autowire: true
28+
arguments:
29+
$cache: '@Psr\SimpleCache\CacheInterface'

config/services/repositories.yml

Lines changed: 41 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,156 +1,138 @@
11
services:
2+
PhpList\Core\Domain\Analytics\Repository\LinkTrackRepository:
3+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
4+
arguments:
5+
- PhpList\Core\Domain\Analytics\Model\LinkTrack
6+
PhpList\Core\Domain\Analytics\Repository\UserMessageViewRepository:
7+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
8+
arguments:
9+
- PhpList\Core\Domain\Analytics\Model\UserMessageView
10+
PhpList\Core\Domain\Analytics\Repository\LinkTrackUmlClickRepository:
11+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
12+
arguments:
13+
- PhpList\Core\Domain\Analytics\Model\LinkTrackUmlClick
14+
15+
216
PhpList\Core\Domain\Configuration\Repository\ConfigRepository:
317
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
418
arguments:
519
- PhpList\Core\Domain\Configuration\Model\Config
6-
720
PhpList\Core\Domain\Configuration\Repository\EventLogRepository:
821
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
922
arguments:
1023
- PhpList\Core\Domain\Configuration\Model\EventLog
1124

25+
1226
PhpList\Core\Domain\Identity\Repository\AdministratorRepository:
1327
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
1428
arguments:
1529
- PhpList\Core\Domain\Identity\Model\Administrator
1630
- Doctrine\ORM\Mapping\ClassMetadata\ClassMetadata
1731
- PhpList\Core\Security\HashGenerator
18-
1932
PhpList\Core\Domain\Identity\Repository\AdminAttributeValueRepository:
2033
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
2134
arguments:
2235
- PhpList\Core\Domain\Identity\Model\AdminAttributeValue
23-
2436
PhpList\Core\Domain\Identity\Repository\AdminAttributeDefinitionRepository:
2537
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
2638
arguments:
2739
- PhpList\Core\Domain\Identity\Model\AdminAttributeDefinition
28-
2940
PhpList\Core\Domain\Identity\Repository\AdministratorTokenRepository:
3041
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
3142
arguments:
3243
- PhpList\Core\Domain\Identity\Model\AdministratorToken
33-
3444
PhpList\Core\Domain\Identity\Repository\AdminPasswordRequestRepository:
3545
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
3646
arguments:
3747
- PhpList\Core\Domain\Identity\Model\AdminPasswordRequest
3848

49+
3950
PhpList\Core\Domain\Subscription\Repository\SubscriberListRepository:
4051
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
4152
arguments:
4253
- PhpList\Core\Domain\Subscription\Model\SubscriberList
43-
4454
PhpList\Core\Domain\Subscription\Repository\SubscriberRepository:
4555
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
4656
arguments:
4757
- PhpList\Core\Domain\Subscription\Model\Subscriber
48-
4958
PhpList\Core\Domain\Subscription\Repository\SubscriberAttributeValueRepository:
5059
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
5160
arguments:
5261
- PhpList\Core\Domain\Subscription\Model\SubscriberAttributeValue
53-
5462
PhpList\Core\Domain\Subscription\Repository\SubscriberAttributeDefinitionRepository:
5563
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
5664
arguments:
5765
- PhpList\Core\Domain\Subscription\Model\SubscriberAttributeDefinition
58-
5966
PhpList\Core\Domain\Subscription\Repository\SubscriptionRepository:
6067
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
6168
arguments:
6269
- PhpList\Core\Domain\Subscription\Model\Subscription
70+
PhpList\Core\Domain\Subscription\Repository\DynamicListAttrRepository:
71+
autowire: true
72+
arguments:
73+
$prefix: '%database_prefix%'
74+
PhpList\Core\Domain\Subscription\Repository\SubscriberHistoryRepository:
75+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
76+
arguments:
77+
- PhpList\Core\Domain\Subscription\Model\SubscriberHistory
78+
PhpList\Core\Domain\Subscription\Repository\UserBlacklistRepository:
79+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
80+
arguments:
81+
- PhpList\Core\Domain\Subscription\Model\UserBlacklist
82+
PhpList\Core\Domain\Subscription\Repository\UserBlacklistDataRepository:
83+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
84+
arguments:
85+
- PhpList\Core\Domain\Subscription\Model\UserBlacklistData
86+
PhpList\Core\Domain\Subscription\Repository\SubscriberPageRepository:
87+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
88+
arguments:
89+
- PhpList\Core\Domain\Subscription\Model\SubscribePage
90+
PhpList\Core\Domain\Subscription\Repository\SubscriberPageDataRepository:
91+
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
92+
arguments:
93+
- PhpList\Core\Domain\Subscription\Model\SubscribePageData
94+
6395

6496
PhpList\Core\Domain\Messaging\Repository\MessageRepository:
6597
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
6698
arguments:
6799
- PhpList\Core\Domain\Messaging\Model\Message
68-
69100
PhpList\Core\Domain\Messaging\Repository\TemplateRepository:
70101
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
71102
arguments:
72103
- PhpList\Core\Domain\Messaging\Model\Template
73-
74104
PhpList\Core\Domain\Messaging\Repository\TemplateImageRepository:
75105
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
76106
arguments:
77107
- PhpList\Core\Domain\Messaging\Model\TemplateImage
78-
79108
PhpList\Core\Domain\Messaging\Repository\UserMessageBounceRepository:
80109
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
81110
arguments:
82111
- PhpList\Core\Domain\Messaging\Model\UserMessageBounce
83-
84112
PhpList\Core\Domain\Messaging\Repository\UserMessageForwardRepository:
85113
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
86114
arguments:
87115
- PhpList\Core\Domain\Messaging\Model\UserMessageForward
88-
89-
PhpList\Core\Domain\Analytics\Repository\LinkTrackRepository:
90-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
91-
arguments:
92-
- PhpList\Core\Domain\Analytics\Model\LinkTrack
93-
94-
PhpList\Core\Domain\Analytics\Repository\UserMessageViewRepository:
95-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
96-
arguments:
97-
- PhpList\Core\Domain\Analytics\Model\UserMessageView
98-
99-
PhpList\Core\Domain\Analytics\Repository\LinkTrackUmlClickRepository:
100-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
101-
arguments:
102-
- PhpList\Core\Domain\Analytics\Model\LinkTrackUmlClick
103-
104116
PhpList\Core\Domain\Messaging\Repository\UserMessageRepository:
105117
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
106118
arguments:
107119
- PhpList\Core\Domain\Messaging\Model\UserMessage
108-
109-
PhpList\Core\Domain\Subscription\Repository\SubscriberHistoryRepository:
110-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
111-
arguments:
112-
- PhpList\Core\Domain\Subscription\Model\SubscriberHistory
113-
114120
PhpList\Core\Domain\Messaging\Repository\ListMessageRepository:
115121
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
116122
arguments:
117123
- PhpList\Core\Domain\Messaging\Model\ListMessage
118-
119-
PhpList\Core\Domain\Subscription\Repository\UserBlacklistRepository:
120-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
121-
arguments:
122-
- PhpList\Core\Domain\Subscription\Model\UserBlacklist
123-
124-
PhpList\Core\Domain\Subscription\Repository\UserBlacklistDataRepository:
125-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
126-
arguments:
127-
- PhpList\Core\Domain\Subscription\Model\UserBlacklistData
128-
129-
PhpList\Core\Domain\Subscription\Repository\SubscriberPageRepository:
130-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
131-
arguments:
132-
- PhpList\Core\Domain\Subscription\Model\SubscribePage
133-
134-
PhpList\Core\Domain\Subscription\Repository\SubscriberPageDataRepository:
135-
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
136-
arguments:
137-
- PhpList\Core\Domain\Subscription\Model\SubscribePageData
138-
139124
PhpList\Core\Domain\Messaging\Repository\BounceRegexRepository:
140125
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
141126
arguments:
142127
- PhpList\Core\Domain\Messaging\Model\BounceRegex
143-
144128
PhpList\Core\Domain\Messaging\Repository\BounceRepository:
145129
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
146130
arguments:
147131
- PhpList\Core\Domain\Messaging\Model\Bounce
148-
149132
PhpList\Core\Domain\Messaging\Repository\BounceRegexBounceRepository:
150133
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
151134
arguments:
152135
- PhpList\Core\Domain\Messaging\Model\BounceRegex
153-
154136
PhpList\Core\Domain\Messaging\Repository\SendProcessRepository:
155137
parent: PhpList\Core\Domain\Common\Repository\AbstractRepository
156138
arguments:

config/services/resolvers.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
services:
2+
PhpList\Core\Domain\Subscription\Service\Resolver\AttributeValueResolver:
3+
arguments:
4+
$providers:
5+
- '@PhpList\Core\Domain\Subscription\Service\Provider\CheckboxGroupValueProvider'
6+
- '@PhpList\Core\Domain\Subscription\Service\Provider\SelectOrRadioValueProvider'
7+
- '@PhpList\Core\Domain\Subscription\Service\Provider\ScalarValueProvider'
8+
9+
PhpList\Core\Domain\Common\ClientIpResolver:
10+
autowire: true
11+
autoconfigure: true
12+
13+
PhpList\Core\Domain\Messaging\Service\BounceActionResolver:
14+
arguments:
15+
- !tagged_iterator { tag: 'phplist.bounce_action_handler' }

config/services/services.yml

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,6 @@ services:
4444
$mailqueueBatchPeriod: '%messaging.mail_queue_period%'
4545
$mailqueueThrottle: '%messaging.mail_queue_throttle%'
4646

47-
PhpList\Core\Domain\Common\ClientIpResolver:
48-
autowire: true
49-
autoconfigure: true
50-
5147
PhpList\Core\Domain\Common\SystemInfoCollector:
5248
autowire: true
5349
autoconfigure: true
@@ -118,18 +114,27 @@ services:
118114
autoconfigure: true
119115
resource: '../../src/Domain/Messaging/Service/Handler/*Handler.php'
120116

121-
PhpList\Core\Domain\Messaging\Service\BounceActionResolver:
122-
arguments:
123-
- !tagged_iterator { tag: 'phplist.bounce_action_handler' }
124-
125117
PhpList\Core\Domain\Messaging\Service\MaxProcessTimeLimiter:
126118
autowire: true
127119
autoconfigure: true
128120
arguments:
129121
$maxSeconds: '%messaging.max_process_time%'
130122

131-
132123
PhpList\Core\Domain\Identity\Service\PermissionChecker:
133124
autowire: true
134125
autoconfigure: true
135126
public: true
127+
128+
PhpList\Core\Domain\Configuration\Service\UserPersonalizer:
129+
autowire: true
130+
autoconfigure: true
131+
132+
PhpList\Core\Domain\Configuration\Service\LegacyUrlBuilder:
133+
autowire: true
134+
autoconfigure: true
135+
136+
cache.app.simple:
137+
class: Symfony\Component\Cache\Psr16Cache
138+
arguments: [ '@cache.app' ]
139+
140+
Psr\SimpleCache\CacheInterface: '@cache.app.simple'

0 commit comments

Comments
 (0)