Oempro v4.12.0 released [6th April 2020]

Reference: https://www2.octeth.com/whats-new/oempro-v41200/

This version brings advanced new features to the audience segmentation of Oempro:

Global segments

The system administrator can set up global segments based on subscriber attributes (including global custom fields) and activities (email opens, link clicks, forwards, web browser views).

Global segment delivery servers

Assign a different delivery server to each user group inside a global segment. Wouldn’t it be great to send emails to highly engaged Gmail subscribers through a different SMTP server?

Last X emails

In segment rules, you can now add a recipient activity rule with the “last X emails” limit. For example, you can narrow down your segment audience to recipients who have opened an email at least 1 time in the last 10 emails.

Relative dates

In addition to setting up absolute dates, you can now set up relative dates. This is a quite powerful segmentation feature if you want to target a specific audience group based on a trigger date, prior to or after the date.

Changed files

Change Type File
M docker-compose.yml
M includes/api/deliveryserver.create.inc.php
M includes/api/deliveryserver.update.inc.php
M includes/api/medialibrary.foldercreate.inc.php
M includes/api/subscribers.search.inc.php
M includes/classes/campaigns.inc.php
M includes/classes/core.inc.php
M includes/classes/emails.inc.php
M includes/classes/journeys.inc.php
M includes/classes/personalization.inc.php
M includes/classes/queue.inc.php
M includes/classes/segments.inc.php
M includes/classes/send_engine.inc.php
M includes/classes/subscribers.inc.php
M includes/classes/transaction_emails.inc.php
M includes/classes/upgrade.inc.php
M includes/classes/users.inc.php
M includes/classes/webhooks.inc.php
M includes/frontend/controllers/admin/controller_deliveryservers.php
A includes/frontend/controllers/admin/controller_segments.php
M includes/frontend/controllers/admin/controller_suppression.php
M includes/frontend/controllers/admin/controller_usergroups.php
M includes/frontend/controllers/admin/controller_users.php
M includes/frontend/controllers/user/controller_campaign.php
M includes/frontend/controllers/user/controller_email.php
M includes/frontend/controllers/user/controller_subscribers.php
M includes/frontend/controllers/user/controller_webhooks.php
M includes/libraries/dbit.php
M includes/libraries/flit.php
M includes/libraries/wufoo/EntryArgs.php
M includes/libraries/wufoo/WufooApiExamples.php
M includes/libraries/wufoo/WufooApiWrapper.php
M includes/libraries/wufoo/WufooApiWrapperBase.php
M includes/libraries/wufoo/WufooValueObjects.php
M includes/libraries/wufoo/index.php
M install/sources/mysql.sql
M system/app/Http/Controllers/Campaign.php
M system/app/Http/Controllers/Webhook.php
M system/app/Jobs/ProcessIncomingWebhook.php
M templates/weefive/desktop/admin/create_delivery_server.php
M templates/weefive/desktop/admin/create_user_group.php
M templates/weefive/desktop/admin/edit_delivery_server.php
M templates/weefive/desktop/admin/edit_user_group.php
M templates/weefive/desktop/admin/globalcustomfields.php
A templates/weefive/desktop/admin/segments.php
M templates/weefive/desktop/admin/settings.php
M templates/weefive/desktop/admin/settings_deliveryservers.php
M templates/weefive/desktop/admin/settings_email_templates.php
M templates/weefive/desktop/admin/settings_sso.php
D templates/weefive/desktop/admin/settings_usergroups.php
A templates/weefive/desktop/admin/usergroups.php
M templates/weefive/desktop/admin/users.php
M templates/weefive/desktop/help/help_admin_globalcustomfields.php
A templates/weefive/desktop/help/help_admin_globalsegments.php
A templates/weefive/desktop/help/help_admin_usergroups.php
M templates/weefive/desktop/layouts/admin_header.php
M templates/weefive/desktop/user/apikeys.php
M templates/weefive/desktop/user/auto_responders.php
M templates/weefive/desktop/user/campaigns.php
M templates/weefive/desktop/user/clients.php
M templates/weefive/desktop/user/custom_fields.php
M templates/weefive/desktop/user/edit_webhook.php
M templates/weefive/desktop/user/email_templates.php
M templates/weefive/desktop/user/global_suppression_list.php
M templates/weefive/desktop/user/journeys.php
M templates/weefive/desktop/user/lists.php
M templates/weefive/desktop/user/segment_create.php
M templates/weefive/desktop/user/segments.php
M templates/weefive/desktop/user/subscriber_browse.php
M templates/weefive/desktop/user/tags.php
M templates/weefive/desktop/user/webhooks.php
M templates/weefive/js/screens/user/segment_create.js
M templates/weefive/js/screens/user/subscribers.js
M templates/weefive/languages/en/en.inc.php
M track_link.php
M track_open.php

Changed language file content

@@ -115,0 +116,2 @@ $ArrayLanguageStrings['PageTitle']['Webhooks'] = 'Webhooks';
+$ArrayLanguageStrings['PageTitle']['AdminGlobalSegments'] = 'Global Segments';
+
@@ -945 +947 @@ $ArrayLanguageStrings['Screen']['0569'] = 'Update subscriber information';
-$ArrayLanguageStrings['Screen']['0570'] = 'Delete subscribers';
+$ArrayLanguageStrings['Screen']['0570'] = 'Delete';
@@ -1164 +1166 @@ $ArrayLanguageStrings['Screen']['0735'] = 'Overview';
-$ArrayLanguageStrings['Screen']['0736'] = 'Delete selected campaign(s)';
+$ArrayLanguageStrings['Screen']['0736'] = 'Delete';
@@ -1392 +1394 @@ $ArrayLanguageStrings['Screen']['0955'] = 'Tag assigned to selected campaigns';
-$ArrayLanguageStrings['Screen']['0956'] = 'Compare performance';
+$ArrayLanguageStrings['Screen']['0956'] = 'Compare';
@@ -1429 +1431 @@ $ArrayLanguageStrings['Screen']['0992'] = 'Select list';
-$ArrayLanguageStrings['Screen']['0993'] = 'Delete selected';
+$ArrayLanguageStrings['Screen']['0993'] = 'Delete';
@@ -1436,2 +1438,2 @@ $ArrayLanguageStrings['Screen']['0995'] = array(
-$ArrayLanguageStrings['Screen']['0996'] = 'Create new auto responder';
-$ArrayLanguageStrings['Screen']['0997'] = 'Copy auto responders from another list';
+$ArrayLanguageStrings['Screen']['0996'] = 'Create';
+$ArrayLanguageStrings['Screen']['0997'] = 'Copy';
@@ -1526 +1528 @@ $ArrayLanguageStrings['Screen']['1078'] = 'You have not created any email templa
-$ArrayLanguageStrings['Screen']['1079'] = 'Create client';
+$ArrayLanguageStrings['Screen']['1079'] = 'Create';
@@ -1528 +1530 @@ $ArrayLanguageStrings['Screen']['1080'] = 'Are you sure to delete selected clien
-$ArrayLanguageStrings['Screen']['1081'] = 'Delete selected client account(s)';
+$ArrayLanguageStrings['Screen']['1081'] = 'Delete';
@@ -1532,2 +1534,2 @@ $ArrayLanguageStrings['Screen']['1084'] = 'Selected client account(s) are remove
-$ArrayLanguageStrings['Screen']['1085'] = 'Delete selected tag(s)';
-$ArrayLanguageStrings['Screen']['1086'] = 'Create tag';
+$ArrayLanguageStrings['Screen']['1085'] = 'Delete';
+$ArrayLanguageStrings['Screen']['1086'] = 'Create';
@@ -1606,2 +1608,2 @@ $ArrayLanguageStrings['Screen']['1158'] = 'Edit custom field';
-$ArrayLanguageStrings['Screen']['1159'] = 'Delete selected custom field(s)';
-$ArrayLanguageStrings['Screen']['1160'] = 'Copy custom fields from another list';
+$ArrayLanguageStrings['Screen']['1159'] = 'Delete';
+$ArrayLanguageStrings['Screen']['1160'] = 'Copy';
@@ -1738 +1740 @@ $ArrayLanguageStrings['Screen']['1290'] = 'Edit segment';
-$ArrayLanguageStrings['Screen']['1291'] = 'Delete selected segments';
+$ArrayLanguageStrings['Screen']['1291'] = 'Delete';
@@ -1769 +1771 @@ $ArrayLanguageStrings['Screen']['1305'] = 'Segment is created';
-$ArrayLanguageStrings['Screen']['1306'] = 'Create segment';
+$ArrayLanguageStrings['Screen']['1306'] = 'Create';
@@ -1869 +1871 @@ $ArrayLanguageStrings['Screen']['1405'] = 'View on browser';
-$ArrayLanguageStrings['Screen']['1406'] = 'Enter dates in YYYY-MM-DD format';
+$ArrayLanguageStrings['Screen']['1406'] = 'Enter dates in YYYY-MM-DD format or relatively (ex: "NOW-2 days", "NOW+4 days", "NOW", "YESTERDAY", "TOMORROW")';
@@ -3015 +3017 @@ $ArrayLanguageStrings['Screen']['9192'] = 'MFROM Domain';
-$ArrayLanguageStrings['Screen']['9193'] = 'This is the "mail-from" domain of outgoing emails. This domain is used for SPF/DKIM/DMARC and domain-alignment verifications as well as for bounce processing. Instead of a domain, if you enter an email address here, the MFROM email address will be set to this one. Bounce processing will be disabled. Amazon SES and some other SMTP relaying services requires this setup.';
+$ArrayLanguageStrings['Screen']['9193'] = 'This is the "mail-from" domain of outgoing emails. This domain is used for SPF/DKIM/DMARC and domain-alignment verifications as well as for bounce processing. Instead of a domain, if you enter an email address here, the MFROM email address will be set to this one. Bounce processing will be disabled. Amazon SES and some other SMTP relaying services require this setup.';
@@ -3290 +3292 @@ $ArrayLanguageStrings['Screen']['9466'] = '# of Requests: ';
-$ArrayLanguageStrings['Screen']['9467'] = 'Create Incoming Webhook';
+$ArrayLanguageStrings['Screen']['9467'] = 'Create';
@@ -3327,7 +3329,27 @@ $ArrayLanguageStrings['Screen']['9503'] = 'Set condition';
-$ArrayLanguageStrings['Screen']['9504'] = '';
-$ArrayLanguageStrings['Screen']['9505'] = '';
-$ArrayLanguageStrings['Screen']['9506'] = '';
-$ArrayLanguageStrings['Screen']['9507'] = '';
-$ArrayLanguageStrings['Screen']['9508'] = '';
-$ArrayLanguageStrings['Screen']['9509'] = '';
-$ArrayLanguageStrings['Screen']['9510'] = '';
+$ArrayLanguageStrings['Screen']['9504'] = 'Edit Incoming Webhook';
+$ArrayLanguageStrings['Screen']['9505'] = 'Global Segments';
+$ArrayLanguageStrings['Screen']['9506'] = 'User Groups';
+$ArrayLanguageStrings['Screen']['9507'] = 'Create User Group';
+$ArrayLanguageStrings['Screen']['9508'] = 'Return back';
+$ArrayLanguageStrings['Screen']['9509'] = 'Create Global Segment';
+$ArrayLanguageStrings['Screen']['9510'] = 'Browse Global Segments';
+$ArrayLanguageStrings['Screen']['9511'] = 'Edit Global Segment';
+$ArrayLanguageStrings['Screen']['9512'] = 'Delete selected global segment(s)';
+$ArrayLanguageStrings['Screen']['9513'] = 'Are you sure to delete selected global segments?';
+$ArrayLanguageStrings['Screen']['9514'] = 'There are no global segments yet.';
+$ArrayLanguageStrings['Screen']['9515'] = 'Create Global Segment';
+$ArrayLanguageStrings['Screen']['9516'] = 'Update Global Segment';
+$ArrayLanguageStrings['Screen']['9517'] = 'Segment has been updated';
+$ArrayLanguageStrings['Screen']['9518'] = 'User Groups';
+$ArrayLanguageStrings['Screen']['9519'] = 'Choose a delivery server:';
+$ArrayLanguageStrings['Screen']['9520'] = 'emails';
+$ArrayLanguageStrings['Screen']['9521'] = 'Specific auto responder';
+$ArrayLanguageStrings['Screen']['9522'] = 'If you would like to pass custom field values along with the email address, simply add any of the following custom field parameter to the webhook request:';
+$ArrayLanguageStrings['Screen']['9523'] = 'Use the recipient list sender email address as MFROM email address if possible';
+$ArrayLanguageStrings['Screen']['9524'] = 'Use the recipient list sender email address as From email address if possible';
+$ArrayLanguageStrings['Screen']['9525'] = 'MFROM Sender Info';
+$ArrayLanguageStrings['Screen']['9526'] = 'From Sender Info';
+$ArrayLanguageStrings['Screen']['9527'] = '';
+$ArrayLanguageStrings['Screen']['9528'] = '';
+$ArrayLanguageStrings['Screen']['9529'] = '';
+$ArrayLanguageStrings['Screen']['9530'] = '';