Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
fb94413256 | |||
7b23f86445 |
@ -15,7 +15,6 @@ use MailPoet\WP\Functions as WPFunctions;
|
|||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
use MailPoetVendor\Doctrine\DBAL\Connection;
|
use MailPoetVendor\Doctrine\DBAL\Connection;
|
||||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||||
use MailPoetVendor\Doctrine\ORM\Query;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @extends Repository<SegmentEntity>
|
* @extends Repository<SegmentEntity>
|
||||||
@ -227,13 +226,17 @@ class SegmentsRepository extends Repository {
|
|||||||
* Returns count of segments that have more than one dynamic filter
|
* Returns count of segments that have more than one dynamic filter
|
||||||
*/
|
*/
|
||||||
public function getSegmentCountWithMultipleFilters(): int {
|
public function getSegmentCountWithMultipleFilters(): int {
|
||||||
$qb = $this->entityManager->createQueryBuilder()
|
$segmentFiltersTable = $this->entityManager->getClassMetadata(DynamicSegmentFilterEntity::class)->getTableName();
|
||||||
->select('COUNT(DISTINCT s.id) AS segmentCount')
|
$qbInner = $this->entityManager->getConnection()->createQueryBuilder()
|
||||||
->from(SegmentEntity::class, 's')
|
->select('COUNT(DISTINCT sf.id) AS segmentCount')
|
||||||
->join('s.dynamicFilters', 'ds')
|
->from($segmentFiltersTable, 'sf')
|
||||||
->groupBy('ds.segment')
|
->groupBy('sf.segment_id')
|
||||||
->having('COUNT(ds.id) > 1');
|
->having('COUNT(sf.id) > 1');
|
||||||
$result = $qb->getQuery()->getOneOrNullResult(Query::HYDRATE_ARRAY);
|
$result = $this->entityManager->getConnection()->createQueryBuilder()
|
||||||
return (int)($result['segmentCount'] ?? 0);
|
->select('count(*)')
|
||||||
|
->from(sprintf('(%s) as subCounts', $qbInner->getSQL()))
|
||||||
|
->execute()
|
||||||
|
->fetchOne();
|
||||||
|
return (int)$result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Plugin Name: MailPoet 3 (New)
|
* Plugin Name: MailPoet 3 (New)
|
||||||
* Version: 3.73.1
|
* Version: 3.73.2
|
||||||
* Plugin URI: http://www.mailpoet.com
|
* Plugin URI: http://www.mailpoet.com
|
||||||
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
||||||
* Author: MailPoet
|
* Author: MailPoet
|
||||||
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$mailpoetPlugin = [
|
$mailpoetPlugin = [
|
||||||
'version' => '3.73.1',
|
'version' => '3.73.2',
|
||||||
'filename' => __FILE__,
|
'filename' => __FILE__,
|
||||||
'path' => dirname(__FILE__),
|
'path' => dirname(__FILE__),
|
||||||
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
||||||
|
@ -3,7 +3,7 @@ Contributors: mailpoet
|
|||||||
Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
|
Tags: email, email marketing, post notification, woocommerce emails, email automation, newsletter, newsletter builder, newsletter subscribers
|
||||||
Requires at least: 5.3
|
Requires at least: 5.3
|
||||||
Tested up to: 5.8
|
Tested up to: 5.8
|
||||||
Stable tag: 3.73.1
|
Stable tag: 3.73.2
|
||||||
Requires PHP: 7.1
|
Requires PHP: 7.1
|
||||||
License: GPLv3
|
License: GPLv3
|
||||||
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
@ -184,6 +184,9 @@ Check our [Knowledge Base](https://kb.mailpoet.com) or contact us through our [s
|
|||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 3.73.2 - 2021-11-08 =
|
||||||
|
* Fixed: error on dynamic segments filter query.
|
||||||
|
|
||||||
= 3.73.1 - 2021-11-04 =
|
= 3.73.1 - 2021-11-04 =
|
||||||
* Fixed: segments are not loading.
|
* Fixed: segments are not loading.
|
||||||
|
|
||||||
|
@ -69,6 +69,44 @@ class SegmentsRepositoryTest extends \MailPoetTest {
|
|||||||
expect($segment2->getDeletedAt())->null();
|
expect($segment2->getDeletedAt())->null();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItReturnsCountsOfSegmentsWithMultipleFilters() {
|
||||||
|
// No Segments
|
||||||
|
$count = $this->segmentsRepository->getSegmentCountWithMultipleFilters();
|
||||||
|
expect($count)->equals(0);
|
||||||
|
|
||||||
|
// Two segments with one filter each
|
||||||
|
$segment1 = $this->createDynamicSegmentEntityForEditorUsers();
|
||||||
|
$segment2 = $this->createDynamicSegmentEntityForEditorUsers();
|
||||||
|
$count = $this->segmentsRepository->getSegmentCountWithMultipleFilters();
|
||||||
|
expect($count)->equals(0);
|
||||||
|
|
||||||
|
// One segment with multiple filters
|
||||||
|
$filterData = new DynamicSegmentFilterData(
|
||||||
|
DynamicSegmentFilterData::TYPE_USER_ROLE,
|
||||||
|
UserRole::TYPE,
|
||||||
|
['wordpressRole' => 'editor']
|
||||||
|
);
|
||||||
|
$dynamicFilter = new DynamicSegmentFilterEntity($segment1, $filterData);
|
||||||
|
$this->entityManager->persist($dynamicFilter);
|
||||||
|
$segment1->addDynamicFilter($dynamicFilter);
|
||||||
|
$this->segmentsRepository->flush();
|
||||||
|
$count = $this->segmentsRepository->getSegmentCountWithMultipleFilters();
|
||||||
|
expect($count)->equals(1);
|
||||||
|
|
||||||
|
// Both segments with multiple filters
|
||||||
|
$filterData = new DynamicSegmentFilterData(
|
||||||
|
DynamicSegmentFilterData::TYPE_USER_ROLE,
|
||||||
|
UserRole::TYPE,
|
||||||
|
['wordpressRole' => 'editor']
|
||||||
|
);
|
||||||
|
$dynamicFilter = new DynamicSegmentFilterEntity($segment2, $filterData);
|
||||||
|
$this->entityManager->persist($dynamicFilter);
|
||||||
|
$segment1->addDynamicFilter($dynamicFilter);
|
||||||
|
$this->segmentsRepository->flush();
|
||||||
|
$count = $this->segmentsRepository->getSegmentCountWithMultipleFilters();
|
||||||
|
expect($count)->equals(2);
|
||||||
|
}
|
||||||
|
|
||||||
private function createDefaultSegment(string $name): SegmentEntity {
|
private function createDefaultSegment(string $name): SegmentEntity {
|
||||||
$segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, 'description');
|
$segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, 'description');
|
||||||
$this->entityManager->persist($segment);
|
$this->entityManager->persist($segment);
|
||||||
|
Reference in New Issue
Block a user