The API key that is underprivileged for MSS and Premium
is still considered as valid because the API can still authenticate the key
and the key can be used reporting subscriber stats etc.
I've check places where we use the property and in all cases we use
to distinguish if the plugin uses a subscription plan (free or paid) or no plan.
[MAILPOET-5191]
The values we have in key state might be missing or outdated.
We need to check also if the key check on MSS returned error
about access being restricted due email volume limit.
[MAILPOET-5191]
Currently the starter plan has no access to premium so the plugin is
not able to fetch email volume limit using premium key endpoint.
Also the data are related to sending so it makes more sense to read those
from MSS key state.
[MAILPOET-5191]
Some hosts do perform intentional misconfiguration of the mail function, causing it not to work.
When the mail function is misconfigured, we can still access and execute the mail function from within the codebase, but we get an error.
There’s no accurate way to know the PHP mail function is misconfigured. Unless we execute the function with all the proper parameters and check the exception error message against this error `Could not instantiate mail function.`
MAILPOET-4760
There are some cases where we link or redirect to main page but
actually we want to redirect to emails page. It happens that currently they are
the same page, but we need to distinguish these cases for the future when
we switch the main page to new homepage.
[MAILPOET-4824]
The current Captcha class has a lot of responsibilities. It renders the captcha
image, can check if a certain captcha type is a Google captcha, if a captcha is
required for a certain email. The SubscriberSubscribeController is not only in
charge of "controlling" the subscription process but also validates, whether a
captcha is correct or not. This architecture made it difficult to extend the
functionality and introduce the audio captcha feature.
Therefore this commit refactors the captcha architecture and tries to seperate
the different concerns into several classes and objects. Validation is now done
by validators.
The CaptchaPhrase now is in charge of keeping the captcha phrase consistent
between the image and the new audio, so that you can renew the captcha and both
captchas are in sync.
[MAILPOET-4514]
- added timezone to sale duration
- changed date format
- link to annual billing period
- added tracking
- switch dates in "shouldDisplay" condition, so it reads as "from to" rather than "to from"
- capitalized button
[MAILPOET-4670]
Handle edge case for domains where DMARC `p` policy is set to reject or quarantine but `sp` (subdomain policy) is set to none
The previous implementation will return dmarcStatus === none when
sp is none but will not check for p policy as well.
If the `sp` is reject or quarantine, it would supersede the `p` status
MAILPOET-4302