Replace deprecated array types with Doctrine's ArrayParameterType

[MAILPOET-6142]
This commit is contained in:
Jan Jakes
2024-07-12 12:33:31 +02:00
committed by Aschepikov
parent c7dc7e5a24
commit ff6a98fae1
32 changed files with 97 additions and 96 deletions

View File

@ -7,6 +7,7 @@ use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Migrator\AppMigration;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Connection;
/**
@ -44,7 +45,7 @@ class Migration_20231128_120355_App extends AppMigration {
'newsletterTypes' => $newsletterTypes,
'taskStatus' => $statusCompleted,
], [
'newsletterTypes' => Connection::PARAM_STR_ARRAY,
'newsletterTypes' => ArrayParameterType::STRING,
]);
// Fix data for scheduled tasks
@ -62,7 +63,7 @@ class Migration_20231128_120355_App extends AppMigration {
'newsletterTypes' => $newsletterTypes,
'taskStatus' => $statusScheduled,
], [
'newsletterTypes' => Connection::PARAM_STR_ARRAY,
'newsletterTypes' => ArrayParameterType::STRING,
]);
}

View File

@ -8,7 +8,7 @@ use MailPoet\Entities\ScheduledTaskSubscriberEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsNewsletterEntity;
use MailPoet\Migrator\AppMigration;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
/**
* We've had a set of bugs where campaign type newsletters (see NewsletterEntity::CAMPAIGN_TYPES),
@ -119,7 +119,7 @@ class Migration_20240207_105912_App extends AppMigration {
WHERE t.id IN (:ids)
",
['sent' => NewsletterEntity::STATUS_SENT, 'ids' => $ids],
['ids' => Connection::PARAM_INT_ARRAY]
['ids' => ArrayParameterType::INTEGER]
);
}
@ -183,7 +183,7 @@ class Migration_20240207_105912_App extends AppMigration {
WHERE q.newsletter_id IN (:ids)
",
['ids' => $ids],
['ids' => Connection::PARAM_INT_ARRAY]
['ids' => ArrayParameterType::INTEGER]
);
}
}

View File

@ -5,7 +5,7 @@ namespace MailPoet\Migrations\App;
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
use MailPoet\Migrator\AppMigration;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
class Migration_20240322_110443_App extends AppMigration {
public function run(): void {
@ -46,7 +46,7 @@ class Migration_20240322_110443_App extends AppMigration {
$orders = $this->entityManager->getConnection()->executeQuery(
$query,
['orderIds' => $orderIds],
['orderIds' => Connection::PARAM_INT_ARRAY],
['orderIds' => ArrayParameterType::INTEGER],
)->fetchAllAssociative();
foreach ($orders as $order) {

View File

@ -5,7 +5,7 @@ namespace MailPoet\Migrations\Db;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SettingEntity;
use MailPoet\Migrator\DbMigration;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
class Migration_20230111_120000 extends DbMigration {
public function run(): void {
@ -35,7 +35,7 @@ class Migration_20230111_120000 extends DbMigration {
UPDATE {$segmentsTable}
SET {$columnName} = 1
WHERE id IN (?)
", [$segmentIds], [Connection::PARAM_INT_ARRAY]);
", [$segmentIds], [ArrayParameterType::INTEGER]);
$subscriptionSetting['segments'] = [];
$this->connection->executeStatement(

View File

@ -17,7 +17,6 @@ use MailPoet\Logging\LoggerFactory;
use MailPoet\Util\Helpers;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
@ -304,14 +303,14 @@ class NewslettersRepository extends Repository {
JOIN $sendingQueueTable q ON t.`id` = q.`task_id`
SET t.`deleted_at` = NOW()
WHERE q.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids], ['ids' => ArrayParameterType::INTEGER]);
// Trash sending queues
$this->entityManager->getConnection()->executeStatement("
UPDATE $sendingQueueTable q
SET q.`deleted_at` = NOW()
WHERE q.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids], ['ids' => ArrayParameterType::INTEGER]);
// Trash CPT.
$wpPostIds = $this->getWpPostIds($ids);
@ -350,7 +349,7 @@ class NewslettersRepository extends Repository {
'ids' => $ids,
'pausedStatus' => ScheduledTaskEntity::STATUS_PAUSED,
], [
'ids' => Connection::PARAM_INT_ARRAY,
'ids' => ArrayParameterType::INTEGER,
]);
// Restore sending queues
@ -358,7 +357,7 @@ class NewslettersRepository extends Repository {
UPDATE $sendingQueueTable q
SET q.`deleted_at` = null
WHERE q.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids], ['ids' => ArrayParameterType::INTEGER]);
// Untrash CPT.
$wpPostIds = $this->getWpPostIds($ids);

View File

@ -9,7 +9,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\InvalidStateException;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\ORM\QueryBuilder;
/**
@ -90,7 +90,7 @@ class ScheduledTaskSubscribersRepository extends Repository {
->set('sts.processed', ScheduledTaskSubscriberEntity::STATUS_PROCESSED)
->where('sts.subscriber IN (:subscriberIds)')
->andWhere('sts.task = :task')
->setParameter('subscriberIds', $subscriberIds, Connection::PARAM_INT_ARRAY)
->setParameter('subscriberIds', $subscriberIds, ArrayParameterType::INTEGER)
->setParameter('task', $task)
->getQuery()
->execute();
@ -159,7 +159,7 @@ class ScheduledTaskSubscribersRepository extends Repository {
->where('sts.task = :task')
->andWhere('sts.subscriber IN (:subscriberIds)')
->setParameter('task', $scheduledTask)
->setParameter('subscriberIds', $subscriberIds, Connection::PARAM_INT_ARRAY)
->setParameter('subscriberIds', $subscriberIds, ArrayParameterType::INTEGER)
->getQuery()
->execute();

View File

@ -12,7 +12,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Carbon\CarbonImmutable;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
@ -317,7 +317,7 @@ class ScheduledTasksRepository extends Repository {
->set('st.updatedAt', ':updatedAt')
->setParameter('updatedAt', $now)
->where('st.id IN (:ids)')
->setParameter('ids', $ids, Connection::PARAM_INT_ARRAY)
->setParameter('ids', $ids, ArrayParameterType::INTEGER)
->getQuery()
->execute();

View File

@ -7,7 +7,7 @@ use MailPoet\Automation\Engine\Data\AutomationRun;
use MailPoet\Automation\Engine\Storage\AutomationStorage;
use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
class AutomationsEvents implements Filter {
@ -85,7 +85,7 @@ class AutomationsEvents implements Filter {
'automations.id = runs.automation_id'
)
->andWhere("automations.id IN (:$automationIdsParam)")
->setParameter($automationIdsParam, $automationIds, Connection::PARAM_STR_ARRAY);
->setParameter($automationIdsParam, $automationIds, ArrayParameterType::STRING);
if ($action === self::EXITED_ACTION) {
$statusParam = $this->filterHelper->getUniqueParameterName('status');

View File

@ -14,7 +14,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\UserAgentEntity;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Util\Security;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -137,7 +137,7 @@ class EmailAction implements Filter {
$queryBuilder = $queryBuilder->andWhere($where);
if ($linkIds) {
$queryBuilder = $queryBuilder
->setParameter('links' . $parameterSuffix, $linkIds, Connection::PARAM_STR_ARRAY);
->setParameter('links' . $parameterSuffix, $linkIds, ArrayParameterType::STRING);
}
return $queryBuilder;
}
@ -164,7 +164,7 @@ class EmailAction implements Filter {
$statsTable,
'stats',
"statssent.subscriber_id = stats.subscriber_id AND stats.newsletter_id IN (:newsletters" . $parameterSuffix . ')'
)->setParameter('newsletters' . $parameterSuffix, $newsletters, Connection::PARAM_INT_ARRAY);
)->setParameter('newsletters' . $parameterSuffix, $newsletters, ArrayParameterType::INTEGER);
$where .= ' AND stats.id IS NULL';
} else {
$queryBuilder = $queryBuilder->innerJoin(
@ -172,7 +172,7 @@ class EmailAction implements Filter {
$statsTable,
'stats',
"stats.subscriber_id = $subscribersTable.id AND stats.newsletter_id IN (:newsletters" . $parameterSuffix . ')'
)->setParameter('newsletters' . $parameterSuffix, $newsletters, Connection::PARAM_INT_ARRAY);
)->setParameter('newsletters' . $parameterSuffix, $newsletters, ArrayParameterType::INTEGER);
if ($operator === DynamicSegmentFilterData::OPERATOR_ALL) {
$queryBuilder->groupBy('subscriber_id');
@ -212,7 +212,7 @@ class EmailAction implements Filter {
'statisticsNewsletter',
"$subscribersTable.id = statisticsNewsletter.subscriber_id AND statisticsNewsletter.newsletter_id IN (:newsletters" . $parameterSuffix . ')'
)
->setParameter('newsletters' . $parameterSuffix, $newsletters, Connection::PARAM_INT_ARRAY)
->setParameter('newsletters' . $parameterSuffix, $newsletters, ArrayParameterType::INTEGER)
->andWhere('statisticsNewsletter.subscriber_id IS NULL');
} else {
$queryBuilder->innerJoin(
@ -220,7 +220,7 @@ class EmailAction implements Filter {
$statisticsNewslettersTable,
'statisticsNewsletter',
"statisticsNewsletter.subscriber_id = $subscribersTable.id AND statisticsNewsletter.newsletter_id IN (:newsletters" . $parameterSuffix . ')'
)->setParameter('newsletters' . $parameterSuffix, $newsletters, Connection::PARAM_INT_ARRAY);
)->setParameter('newsletters' . $parameterSuffix, $newsletters, ArrayParameterType::INTEGER);
if ($operator === DynamicSegmentFilterData::OPERATOR_ALL) {
$queryBuilder->groupBy('subscriber_id');

View File

@ -8,7 +8,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Segments\SegmentsRepository;
use MailPoet\Util\Security;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -50,7 +50,7 @@ class SubscriberSegment implements Filter {
);
$queryBuilder->setParameter($statusSubscribedParam, SubscriberEntity::STATUS_SUBSCRIBED);
$queryBuilder->setParameter($segmentsParam, $segments, Connection::PARAM_INT_ARRAY);
$queryBuilder->setParameter($segmentsParam, $segments, ArrayParameterType::INTEGER);
if ($operator === DynamicSegmentFilterData::OPERATOR_NONE) {
$queryBuilder->andWhere('subscriber_segments.id IS NULL');

View File

@ -6,7 +6,7 @@ use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\StatisticsFormEntity;
use MailPoet\Form\FormsRepository;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
class SubscriberSubscribedViaForm implements Filter {
@ -54,7 +54,7 @@ class SubscriberSubscribedViaForm implements Filter {
$queryBuilder->andWhere("statisticsForms.subscriber_id IS NULL");
}
$queryBuilder->setParameter($formIdsParam, $formIds, Connection::PARAM_INT_ARRAY);
$queryBuilder->setParameter($formIdsParam, $formIds, ArrayParameterType::INTEGER);
return $queryBuilder;
}

View File

@ -7,7 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Util\Security;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use WP_Term;
@ -67,7 +67,7 @@ class WooCommerceCategory implements Filter {
$this->applyProductJoin($subQuery, $orderStatsAlias);
$this->applyTermRelationshipsJoin($subQuery);
$this->applyTermTaxonomyJoin($subQuery, $uniqueParamaterSuffix);
$subQuery->setParameter("category_$uniqueParamaterSuffix", $categoryIdWithChildrenIds, Connection::PARAM_STR_ARRAY);
$subQuery->setParameter("category_$uniqueParamaterSuffix", $categoryIdWithChildrenIds, ArrayParameterType::STRING);
$alias = sprintf("subQuery%s", $subQueryCount);
$queryBuilder->innerJoin(
$subscribersTable,
@ -90,7 +90,7 @@ class WooCommerceCategory implements Filter {
}
return $queryBuilder
->setParameter("category_$parameterSuffix", $categoryIdswithChildrenIds, Connection::PARAM_STR_ARRAY);
->setParameter("category_$parameterSuffix", $categoryIdswithChildrenIds, ArrayParameterType::STRING);
}
private function applyProductJoin(QueryBuilder $queryBuilder, string $orderStatsAlias): QueryBuilder {

View File

@ -6,7 +6,7 @@ use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Util\Security;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -38,7 +38,7 @@ class WooCommerceMembership implements Filter {
->andWhere("posts.post_parent IN (:plans" . $parameterSuffix . ")")
->groupBy("$subscribersTable.id")
->having("COUNT($subscribersTable.id) = :count$parameterSuffix")
->setParameter('plans' . $parameterSuffix, $planIds, Connection::PARAM_STR_ARRAY)
->setParameter('plans' . $parameterSuffix, $planIds, ArrayParameterType::STRING)
->setParameter('count' . $parameterSuffix, count($planIds));
}
@ -53,7 +53,7 @@ class WooCommerceMembership implements Filter {
$subQueryBuilder
->andWhere("posts.post_parent IN (:plans" . $parameterSuffix . ")");
return $queryBuilder->where("{$subscribersTable}.id NOT IN ({$subQueryBuilder->getSQL()})")
->setParameter('plans' . $parameterSuffix, $planIds, Connection::PARAM_STR_ARRAY);
->setParameter('plans' . $parameterSuffix, $planIds, ArrayParameterType::STRING);
}
// ANY
@ -61,7 +61,7 @@ class WooCommerceMembership implements Filter {
$this->applyParentPostJoin($queryBuilder);
return $queryBuilder
->andWhere("posts.post_parent IN (:plans" . $parameterSuffix . ")")
->setParameter('plans' . $parameterSuffix, $planIds, Connection::PARAM_STR_ARRAY);
->setParameter('plans' . $parameterSuffix, $planIds, ArrayParameterType::STRING);
}
private function applyPostJoin(QueryBuilder $queryBuilder): QueryBuilder {

View File

@ -8,7 +8,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Util\DBCollationChecker;
use MailPoet\Util\Security;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -98,7 +98,7 @@ class WooCommerceNumberOfOrders implements Filter {
],
], \true)
->setParameter('date' . $parameterSuffix, $date->toDateTimeString())
->setParameter('allowedStatuses' . $parameterSuffix, $this->wooFilterHelper->defaultIncludedStatuses(), Connection::PARAM_STR_ARRAY)
->setParameter('allowedStatuses' . $parameterSuffix, $this->wooFilterHelper->defaultIncludedStatuses(), ArrayParameterType::STRING)
->groupBy('inner_subscriber_id');
if ($type === '=') {

View File

@ -7,7 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Util\Security;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use WC_Product;
@ -69,7 +69,7 @@ class WooCommerceProduct implements Filter {
$queryBuilder->where("{$subscribersTable}.id NOT IN ({$this->filterHelper->getInterpolatedSQL($subQuery)})");
}
return $queryBuilder
->setParameter("products_{$parameterSuffix}", $productIds, Connection::PARAM_STR_ARRAY);
->setParameter("products_{$parameterSuffix}", $productIds, ArrayParameterType::STRING);
}
private function applyProductJoin(QueryBuilder $queryBuilder, string $orderStatsAlias): QueryBuilder {

View File

@ -6,7 +6,7 @@ use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Segments\DynamicSegments\Exceptions\InvalidFilterException;
use MailPoet\WP\Functions;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
class WooCommercePurchasedWithAttribute implements Filter {
@ -54,7 +54,7 @@ class WooCommercePurchasedWithAttribute implements Filter {
$productAlias = $this->applyProductJoin($queryBuilder, $orderStatsAlias);
$attributeAlias = $this->applyTaxonomyAttributeJoin($queryBuilder, $productAlias, $attributeTaxonomySlug);
$queryBuilder->andWhere("$attributeAlias.term_id IN (:$termIdsParam)");
$queryBuilder->setParameter($termIdsParam, $attributeTermIds, Connection::PARAM_STR_ARRAY);
$queryBuilder->setParameter($termIdsParam, $attributeTermIds, ArrayParameterType::STRING);
}
private function applyProductJoin(QueryBuilder $queryBuilder, string $orderStatsAlias, string $alias = 'product'): string {
@ -203,6 +203,6 @@ class WooCommercePurchasedWithAttribute implements Filter {
);
$queryBuilder->setParameter($keyParam, sprintf("attribute_%s", $attributeName));
$queryBuilder->setParameter($valuesParam, $attributeValues, Connection::PARAM_STR_ARRAY);
$queryBuilder->setParameter($valuesParam, $attributeValues, ArrayParameterType::STRING);
}
}

View File

@ -8,7 +8,7 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Util\DBCollationChecker;
use MailPoet\Util\Security;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -50,7 +50,7 @@ class WooCommerceSubscription implements Filter {
->andWhere("itemmeta.meta_value IN (:products" . $parameterSuffix . ")")
->groupBy("$subscribersTable.id")
->having("COUNT($subscribersTable.id) = :count$parameterSuffix")
->setParameter('products' . $parameterSuffix, $productIds, Connection::PARAM_STR_ARRAY)
->setParameter('products' . $parameterSuffix, $productIds, ArrayParameterType::STRING)
->setParameter('count' . $parameterSuffix, count($productIds));
}
@ -66,7 +66,7 @@ class WooCommerceSubscription implements Filter {
$subQueryBuilder
->andWhere("itemmeta.meta_value IN (:products" . $parameterSuffix . ")");
return $queryBuilder->where("{$subscribersTable}.id NOT IN ({$subQueryBuilder->getSQL()})")
->setParameter('products' . $parameterSuffix, $productIds, Connection::PARAM_STR_ARRAY);
->setParameter('products' . $parameterSuffix, $productIds, ArrayParameterType::STRING);
}
// ANY
@ -75,7 +75,7 @@ class WooCommerceSubscription implements Filter {
$this->applyOrderItemmetaJoin($queryBuilder);
return $queryBuilder
->andWhere("itemmeta.meta_value IN (:products" . $parameterSuffix . ")")
->setParameter('products' . $parameterSuffix, $productIds, Connection::PARAM_STR_ARRAY);
->setParameter('products' . $parameterSuffix, $productIds, ArrayParameterType::STRING);
}
private function applyPostmetaAndPostJoin(QueryBuilder $queryBuilder): QueryBuilder {

View File

@ -6,7 +6,7 @@ use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Segments\DynamicSegments\Exceptions\InvalidFilterException;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use WP_Term;
@ -69,7 +69,7 @@ class WooCommerceTag implements Filter {
AND
term_taxonomy.term_id IN (:$tagIdsParam)"
);
$queryBuilder->setParameter($tagIdsParam, $filterData->getArrayParam('tag_ids'), Connection::PARAM_STR_ARRAY);
$queryBuilder->setParameter($tagIdsParam, $filterData->getArrayParam('tag_ids'), ArrayParameterType::STRING);
}
private function applyProductJoin(QueryBuilder $queryBuilder, string $orderStatsAlias, string $productAlias = 'product'): string {

View File

@ -7,7 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Segments\DynamicSegments\Exceptions\InvalidFilterException;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
class WooCommerceUsedCouponCode implements Filter {
@ -83,7 +83,7 @@ class WooCommerceUsedCouponCode implements Filter {
$couponCodeIdsParam = $this->filterHelper->getUniqueParameterName('couponCodeIds');
$queryBuilder
->andWhere("couponLookup.coupon_id IN (:$couponCodeIdsParam)")
->setParameter($couponCodeIdsParam, $couponIds, Connection::PARAM_INT_ARRAY);
->setParameter($couponCodeIdsParam, $couponIds, ArrayParameterType::INTEGER);
}
private function applyForAllOperator(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): void {

View File

@ -7,7 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Segments\DynamicSegments\Exceptions\InvalidFilterException;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use WC_Payment_Gateway;
@ -112,7 +112,7 @@ class WooCommerceUsedPaymentMethod implements Filter {
->andWhere("postmeta.meta_key = :$paymentMethodMetaKeyParam")
->andWhere("postmeta.meta_value IN (:$paymentMethodParam)")
->setParameter($paymentMethodMetaKeyParam, '_payment_method')
->setParameter($paymentMethodParam, $paymentMethods, Connection::PARAM_STR_ARRAY);
->setParameter($paymentMethodParam, $paymentMethods, ArrayParameterType::STRING);
if (!$isAllTime) {
$dateParam = $this->filterHelper->getUniqueParameterName('date');
$queryBuilder
@ -129,7 +129,7 @@ class WooCommerceUsedPaymentMethod implements Filter {
$queryBuilder
->innerJoin($orderStatsAlias, $ordersTable, 'orders', "$orderStatsAlias.order_id = orders.id")
->andWhere("$ordersAlias.payment_method IN (:$paymentMethodParam)")
->setParameter($paymentMethodParam, $paymentMethods, Connection::PARAM_STR_ARRAY);
->setParameter($paymentMethodParam, $paymentMethods, ArrayParameterType::STRING);
if (!$isAllTime) {
$dateParam = $this->filterHelper->getUniqueParameterName('date');
$queryBuilder

View File

@ -7,7 +7,7 @@ use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Segments\DynamicSegments\Exceptions\InvalidFilterException;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
class WooCommerceUsedShippingMethod implements Filter {
@ -111,7 +111,7 @@ class WooCommerceUsedShippingMethod implements Filter {
->andWhere("$orderItemsTableAlias.order_item_type = 'shipping'")
->andWhere("$orderItemMetaTableAlias.meta_key = 'instance_id'")
->andWhere("$orderItemMetaTableAlias.meta_value IN (:$instanceIdsParam)")
->setParameter($instanceIdsParam, $shippingMethodInstanceIds, Connection::PARAM_STR_ARRAY);
->setParameter($instanceIdsParam, $shippingMethodInstanceIds, ArrayParameterType::STRING);
if (!$isAllTime) {
$dateParam = $this->filterHelper->getUniqueParameterName('date');
$queryBuilder
@ -137,7 +137,7 @@ class WooCommerceUsedShippingMethod implements Filter {
->andWhere("$orderItemMetaTableAlias.meta_key = 'instance_id'")
->andWhere("$orderItemMetaTableAlias.meta_value IN (:$instanceIdsParam)")
->setParameter($orderItemTypeParam, 'shipping')
->setParameter($instanceIdsParam, $shippingMethodInstanceIds, Connection::PARAM_STR_ARRAY)
->setParameter($instanceIdsParam, $shippingMethodInstanceIds, ArrayParameterType::STRING)
->groupBy('inner_subscriber_id')
->having("COUNT(DISTINCT($orderItemMetaTableAlias.meta_value)) = " . count($shippingMethodInstanceIds));

View File

@ -3,7 +3,7 @@
namespace MailPoet\Segments\DynamicSegments\Filters;
use MailPoet\Util\DBCollationChecker;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
class WooFilterHelper {
@ -81,7 +81,7 @@ class WooFilterHelper {
$statusParam = $this->filterHelper->getUniqueParameterName('status');
$orderStatsAlias = $this->applyCustomerOrderJoin($queryBuilder);
$queryBuilder->andWhere("$orderStatsAlias.status IN (:$statusParam)");
$queryBuilder->setParameter($statusParam, $allowedStatuses, Connection::PARAM_STR_ARRAY);
$queryBuilder->setParameter($statusParam, $allowedStatuses, ArrayParameterType::STRING);
return $orderStatsAlias;
}

View File

@ -11,7 +11,7 @@ use MailPoet\InvalidStateException;
use MailPoet\NotFoundException;
use MailPoet\Segments\DynamicSegments\Exceptions\InvalidFilterException;
use MailPoet\Segments\DynamicSegments\FilterHandler;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\DBAL\Result;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -386,7 +386,7 @@ class SegmentSubscribersRepository {
if ($candidateIds) {
$queryBuilder->andWhere("$subscribersTable.id IN (:candidateIds)")
->setParameter('candidateIds', $candidateIds, Connection::PARAM_STR_ARRAY);
->setParameter('candidateIds', $candidateIds, ArrayParameterType::STRING);
}
$statement = $this->executeQuery($queryBuilder);

View File

@ -17,7 +17,7 @@ use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
use MailPoet\NotFoundException;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\ParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\ORMException;
@ -254,27 +254,27 @@ class SegmentsRepository extends Repository {
", [
'ids' => $ids,
'type' => $type,
], ['ids' => Connection::PARAM_INT_ARRAY]);
], ['ids' => ArrayParameterType::INTEGER]);
$entityManager->getConnection()->executeStatement("
DELETE df FROM $segmentFiltersTable df
WHERE df.`segment_id` IN (:ids)
", [
'ids' => $ids,
], ['ids' => Connection::PARAM_INT_ARRAY]);
], ['ids' => ArrayParameterType::INTEGER]);
$queryBuilder = $entityManager->createQueryBuilder();
$count = $queryBuilder->delete(SegmentEntity::class, 's')
->where('s.id IN (:ids)')
->andWhere('s.type = :type')
->setParameter('ids', $ids, Connection::PARAM_INT_ARRAY)
->setParameter('ids', $ids, ArrayParameterType::INTEGER)
->setParameter('type', $type, ParameterType::STRING)
->getQuery()->execute();
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder->delete(NewsletterSegmentEntity::class, 'ns')
->where('ns.segment IN (:ids)')
->setParameter('ids', $ids, Connection::PARAM_INT_ARRAY)
->setParameter('ids', $ids, ArrayParameterType::INTEGER)
->getQuery()->execute();
});
return $count;

View File

@ -5,7 +5,7 @@ namespace MailPoet\Segments;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Subscribers\SubscribersCountsController;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Result;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -82,7 +82,7 @@ class SegmentsSimpleListRepository {
if (!empty($segmentTypes)) {
$segmentsDataQuery
->andWhere('segments.type IN (:typesParam)')
->setParameter('typesParam', $segmentTypes, Connection::PARAM_STR_ARRAY);
->setParameter('typesParam', $segmentTypes, ArrayParameterType::STRING);
}
$result = $segmentsDataQuery->executeQuery();

View File

@ -8,7 +8,7 @@ use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\InvalidStateException;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\ParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -129,13 +129,13 @@ class SubscribersFinder {
->setParameter('processed', ScheduledTaskSubscriberEntity::STATUS_UNPROCESSED, ParameterType::INTEGER)
->setParameter('subscribers_status', SubscriberEntity::STATUS_SUBSCRIBED, ParameterType::STRING)
->setParameter('relation_status', SubscriberEntity::STATUS_SUBSCRIBED, ParameterType::STRING)
->setParameter('segment_ids', $segmentIds, Connection::PARAM_INT_ARRAY);
->setParameter('segment_ids', $segmentIds, ArrayParameterType::INTEGER);
if ($filterSegmentId) {
$filterSegmentSubscriberIds = $this->segmentSubscriberRepository->findSubscribersIdsInSegment($filterSegmentId);
$selectQueryBuilder
->andWhere($selectQueryBuilder->expr()->in('subscribers.id', ':filterSegmentSubscriberIds'))
->setParameter('filterSegmentSubscriberIds', $filterSegmentSubscriberIds, Connection::PARAM_INT_ARRAY);
->setParameter('filterSegmentSubscriberIds', $filterSegmentSubscriberIds, ArrayParameterType::INTEGER);
}
// queryBuilder doesn't support INSERT IGNORE directly
@ -198,7 +198,7 @@ class SubscribersFinder {
ParameterType::INTEGER,
ParameterType::INTEGER,
ParameterType::STRING,
Connection::PARAM_INT_ARRAY,
ArrayParameterType::INTEGER,
]
);

View File

@ -16,6 +16,7 @@ use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoet\WooCommerce\Subscription;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -344,7 +345,7 @@ class WooCommerce {
UPDATE ' . $subscribersTable . ' mps
SET mps.is_woocommerce_user = 1
WHERE mps.email IN (:emails)
', ['emails' => $emails], ['emails' => Connection::PARAM_STR_ARRAY]);
', ['emails' => $emails], ['emails' => ArrayParameterType::STRING]);
// Save timestamp about new subscribers before insert
$this->subscriberChangesNotifier->subscribersBatchCreate();
@ -376,7 +377,7 @@ class WooCommerce {
FROM {$addressesTableName}
WHERE order_id IN (:orderIds) and address_type = 'billing'",
['orderIds' => array_values($orders)],
['orderIds' => Connection::PARAM_INT_ARRAY]
['orderIds' => ArrayParameterType::INTEGER]
)->fetchAllAssociative();
// format data in the same format that is used when querying wp_postmeta (see below).
@ -403,7 +404,7 @@ class WooCommerce {
WHERE meta_key IN ('_billing_first_name', '_billing_last_name') AND post_id IN (:postIds)
",
['metaKeys' => $metaKeys, 'postIds' => array_values($orders)],
['metaKeys' => Connection::PARAM_STR_ARRAY, 'postIds' => Connection::PARAM_INT_ARRAY]
['metaKeys' => ArrayParameterType::STRING, 'postIds' => ArrayParameterType::INTEGER]
)->fetchAllAssociative();
}

View File

@ -8,7 +8,7 @@ use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsClickEntity;
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\ParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -102,7 +102,7 @@ class StatisticsWooCommercePurchasesRepository extends Repository {
'notification_history_type' => ParameterType::STRING,
'notification_type' => ParameterType::STRING,
'currency' => ParameterType::STRING,
'revenue_status' => Connection::PARAM_STR_ARRAY,
'revenue_status' => ArrayParameterType::STRING,
])->fetchAllAssociative();
$data = array_map(function($row) {

View File

@ -10,7 +10,7 @@ use MailPoet\Segments\DynamicSegments\Filters\FilterHelper;
use MailPoet\Segments\DynamicSegments\Filters\WooFilterHelper;
use MailPoet\WooCommerce\Helper;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Result;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -113,7 +113,7 @@ class EngagementDataBackfiller {
->from($subscribersTable)
->innerJoin($subscribersTable, $clicksTable, 'clicks', "$subscribersTable.id = clicks.subscriber_id")
->andWhere("$subscribersTable.id IN (:subscriberIds)")
->setParameter('subscriberIds', $subscriberIds, Connection::PARAM_INT_ARRAY)
->setParameter('subscriberIds', $subscriberIds, ArrayParameterType::INTEGER)
->groupBy("$subscribersTable.id");
$result = $query->execute();
@ -138,7 +138,7 @@ class EngagementDataBackfiller {
->select("$subscribersTable.id, MAX(orderStats.date_created) as last_purchase_at")
->from($subscribersTable)
->andWhere("$subscribersTable.id IN (:subscriberIds)")
->setParameter('subscriberIds', $subscriberIds, Connection::PARAM_INT_ARRAY);
->setParameter('subscriberIds', $subscriberIds, ArrayParameterType::INTEGER);
$this->wooFilterHelper->applyOrderStatusFilter($query);
$query->groupBy("$subscribersTable.id");
@ -161,7 +161,7 @@ class EngagementDataBackfiller {
->from($subscribersTable)
->innerJoin($subscribersTable, $opensTable, 'opens', "$subscribersTable.id = opens.subscriber_id")
->andWhere("$subscribersTable.id IN (:subscriberIds)")
->setParameter('subscriberIds', $subscriberIds, Connection::PARAM_INT_ARRAY)
->setParameter('subscriberIds', $subscriberIds, ArrayParameterType::INTEGER)
->groupBy("$subscribersTable.id");
$result = $query->execute();
@ -183,7 +183,7 @@ class EngagementDataBackfiller {
->from($subscribersTable)
->innerJoin($subscribersTable, $sendsTable, 'sends', "$subscribersTable.id = sends.subscriber_id")
->andWhere("$subscribersTable.id IN (:subscriberIds)")
->setParameter('subscriberIds', $subscriberIds, Connection::PARAM_INT_ARRAY)
->setParameter('subscriberIds', $subscriberIds, ArrayParameterType::INTEGER)
->groupBy("$subscribersTable.id");
$result = $query->execute();

View File

@ -12,7 +12,7 @@ use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Segments\DynamicSegments\FilterHandler;
use MailPoet\Subscribers\SubscriberCustomFieldRepository;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
use MailPoetVendor\Doctrine\DBAL\Result;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -161,7 +161,7 @@ class ImportExportRepository {
$parameters[$keyColumn] = array_map(function(array $row) use ($columnIndex) {
return $row[$columnIndex];
}, $data);
$parameterTypes[$keyColumn] = Connection::PARAM_STR_ARRAY;
$parameterTypes[$keyColumn] = ArrayParameterType::STRING;
$keyColumnsConditions[] = "{$keyColumn} IN (:{$keyColumn})";
}
@ -327,6 +327,6 @@ class ImportExportRepository {
SELECT id
FROM {$tableName}
WHERE email IN (:emails)
", ['emails' => $emails], ['emails' => Connection::PARAM_STR_ARRAY])->fetchFirstColumn();
", ['emails' => $emails], ['emails' => ArrayParameterType::STRING])->fetchFirstColumn();
}
}

View File

@ -7,7 +7,7 @@ use MailPoet\Entities\ScheduledTaskSubscriberEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\ParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -141,7 +141,7 @@ class InactiveSubscribersController {
$connection->executeQuery("UPDATE {$subscribersTable} SET status = :statusInactive WHERE id IN (:idsToDeactivate)", [
'statusInactive' => SubscriberEntity::STATUS_INACTIVE,
'idsToDeactivate' => $idsToDeactivate,
], ['idsToDeactivate' => Connection::PARAM_INT_ARRAY]);
], ['idsToDeactivate' => ArrayParameterType::INTEGER]);
return count($idsToDeactivate);
}
@ -180,7 +180,7 @@ class InactiveSubscribersController {
$connection->executeQuery("UPDATE {$subscribersTable} SET status = :statusSubscribed WHERE id IN (:idsToActivate)", [
'statusSubscribed' => SubscriberEntity::STATUS_SUBSCRIBED,
'idsToActivate' => $idsToActivate,
], ['idsToActivate' => Connection::PARAM_INT_ARRAY]);
], ['idsToActivate' => ArrayParameterType::INTEGER]);
return count($idsToActivate);
}
}

View File

@ -17,7 +17,7 @@ use MailPoet\Util\License\Features\Subscribers;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Carbon\CarbonImmutable;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\ArrayParameterType;
use MailPoetVendor\Doctrine\DBAL\ParameterType;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
@ -187,7 +187,7 @@ class SubscribersRepository extends Repository {
WHERE scs.`subscriber_id` IN (:ids)
AND s.`is_woocommerce_user` = false
AND s.`wp_user_id` IS NULL
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids], ['ids' => ArrayParameterType::INTEGER]);
// Delete subscriber tags
$subscriberTagTable = $entityManager->getClassMetadata(SubscriberTagEntity::class)->getTableName();
@ -197,7 +197,7 @@ class SubscribersRepository extends Repository {
WHERE st.`subscriber_id` IN (:ids)
AND s.`is_woocommerce_user` = false
AND s.`wp_user_id` IS NULL
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids], ['ids' => ArrayParameterType::INTEGER]);
$queryBuilder = $entityManager->createQueryBuilder();
$count = $queryBuilder->delete(SubscriberEntity::class, 's')
@ -226,7 +226,7 @@ class SubscribersRepository extends Repository {
DELETE ss FROM $subscriberSegmentsTable ss
WHERE ss.`subscriber_id` IN (:ids)
AND ss.`segment_id` = :segment_id
", ['ids' => $ids, 'segment_id' => $segment->getId()], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids, 'segment_id' => $segment->getId()], ['ids' => ArrayParameterType::INTEGER]);
$this->changesNotifier->subscribersUpdated($ids);
return $count;
@ -554,7 +554,7 @@ class SubscribersRepository extends Repository {
DELETE st FROM $subscriberTagsTable st
WHERE st.`subscriber_id` IN (:ids)
AND st.`tag_id` = :tag_id
", ['ids' => $ids, 'tag_id' => $tag->getId()], ['ids' => Connection::PARAM_INT_ARRAY]);
", ['ids' => $ids, 'tag_id' => $tag->getId()], ['ids' => ArrayParameterType::INTEGER]);
$this->changesNotifier->subscribersUpdated($ids);
return $count;
@ -607,7 +607,7 @@ class SubscribersRepository extends Repository {
", [
'ids' => $ids,
'typeDefault' => SegmentEntity::TYPE_DEFAULT,
], ['ids' => Connection::PARAM_INT_ARRAY]);
], ['ids' => ArrayParameterType::INTEGER]);
return $count;
}