ty to leverage the preexisting style * generation for simple block style variations. This way they get the * custom selectors they need. * * The inner elements and block styles for the variation itself are * still included at the top level but scoped by the variation's selector * when the stylesheet is generated. */ $elements_data = $variation_data['elements'] ?? array(); $blocks_data = $variation_data['blocks'] ?? array(); unset( $variation_data['elements'] ); unset( $variation_data['blocks'] ); _wp_array_set( $blocks_data, array( $parsed_block['blockName'], 'variations', $variation_instance ), $variation_data ); $config = array( 'version' => WP_Theme_JSON::LATEST_SCHEMA, 'styles' => array( 'elements' => $elements_data, 'blocks' => $blocks_data, ), ); // Turn off filter that excludes block nodes. They are needed here for the variation's inner block types. if ( ! is_admin() ) { remove_filter( 'wp_theme_json_get_style_nodes', 'wp_filter_out_block_nodes' ); } // Temporarily prevent variation instance from being sanitized while processing theme.json. $styles_registry = WP_Block_Styles_Registry::get_instance(); $styles_registry->register( $parsed_block['blockName'], array( 'name' => $variation_instance ) ); $variation_theme_json = new WP_Theme_JSON( $config, 'blocks' ); $variation_styles = $variation_theme_json->get_stylesheet( array( 'styles' ), array( 'custom' ), array( 'include_block_style_variations' => true, 'skip_root_layout_styles' => true, 'scope' => ".$class_name", ) ); // Clean up temporary block style now instance styles have been processed. $styles_registry->unregister( $parsed_block['blockName'], $variation_instance ); // Restore filter that excludes block nodes. if ( ! is_admin() ) { add_filter( 'wp_theme_json_get_style_nodes', 'wp_filter_out_block_nodes' ); } if ( empty( $variation_styles ) ) { return $parsed_block; } wp_register_style( 'block-style-variation-styles', false, array( 'wp-block-library', 'global-styles' ) ); wp_add_inline_style( 'block-style-variation-styles', $variation_styles ); /* * Add variation instance class name to block's className string so it can * be enforced in the block markup via render_block filter. */ _wp_array_set( $parsed_block, array( 'attrs', 'className' ), $updated_class_name ); return $parsed_block; } /** * Ensure the variation block support class name generated and added to * block attributes in the `render_block_data` filter gets applied to the * block's markup. * * @see wp_render_block_style_variation_support_styles * * @since 6.6.0 * @access private * * @param string $block_content Rendered block content. * @param array $block Block object. * * @return string Filtered block content. */ function wp_render_block_style_variation_class_name( $block_content, $block ) { if ( ! $block_content || empty( $block['attrs']['className'] ) ) { return $block_content; } /* * Matches a class prefixed by `is-style`, followed by the * variation slug, then `--`, and finally an instance number. */ preg_match( '/\bis-style-(\S+?--\d+)\b/', $block['attrs']['className'], $matches ); if ( empty( $matches ) ) { return $block_content; } $tags = new WP_HTML_Tag_Processor( $block_content ); if ( $tags->next_tag() ) { /* * Ensure the variation instance class name set in the * `render_block_data` filter is applied in markup. * See `wp_render_block_style_variation_support_styles`. */ $tags->add_class( $matches[0] ); } return $tags->get_updated_html(); } /** * Enqueues styles for block style variations. * * @since 6.6.0 * @access private */ function wp_enqueue_block_style_variation_styles() { wp_enqueue_style( 'block-style-variation-styles' ); } // Register the block support. WP_Block_Supports::get_instance()->register( 'block-style-variation', array() ); add_filter( 'render_block_data', 'wp_render_block_style_variation_support_styles', 10, 2 ); add_filter( 'render_block', 'wp_render_block_style_variation_class_name', 10, 2 ); add_action( 'wp_enqueue_scripts', 'wp_enqueue_block_style_variation_styles', 1 ); /** * Registers block style variations read in from theme.json partials. * * @since 6.6.0 * @access private * * @param array $variations Shared block style variations. */ function wp_register_block_style_variations_from_theme_json_partials( $variations ) { if ( empty( $variations ) ) { return; } $registry = WP_Block_Styles_Registry::get_instance(); foreach ( $variations as $variation ) { if ( empty( $variation['blockTypes'] ) || empty( $variation['styles'] ) ) { continue; } $variation_name = $variation['slug'] ?? _wp_to_kebab_case( $variation['title'] ); $variation_label = $variation['title'] ?? $variation_name; foreach ( $variation['blockTypes'] as $block_type ) { $registered_styles = $registry->get_registered_styles_for_block( $block_type ); // Register block style variation if it hasn't already been registered. if ( ! array_key_exists( $variation_name, $registered_styles ) ) { register_block_style( $block_type, array( 'name' => $variation_name, 'label' => $variation_label, ) ); } } } } meter('subscribed', SubscriberEntity::STATUS_SUBSCRIBED) ->setParameter('unconfirmed', SubscriberEntity::STATUS_UNCONFIRMED) ->setParameter('email', $email) ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); return $subscriber instanceof SubscriberEntity ? $subscriber : null; } /** * @return int - number of processed ids */ public function bulkTrash(array $ids): int { if (empty($ids)) { return 0; } $this->entityManager->createQueryBuilder() ->update(SubscriberEntity::class, 's') ->set('s.deletedAt', 'CURRENT_TIMESTAMP()') ->where('s.id IN (:ids)') ->setParameter('ids', $ids) ->getQuery()->execute(); $this->changesNotifier->subscribersUpdated($ids); $this->invalidateTotalSubscribersCache(); return count($ids); } /** * @return int - number of processed ids */ public function bulkRestore(array $ids): int { if (empty($ids)) { return 0; } $this->entityManager->createQueryBuilder() ->update(SubscriberEntity::class, 's') ->set('s.deletedAt', ':deletedAt') ->where('s.id IN (:ids)') ->setParameter('deletedAt', null) ->setParameter('ids', $ids) ->getQuery()->execute(); $this->changesNotifier->subscribersUpdated($ids); $this->invalidateTotalSubscribersCache(); return count($ids); } /** * @return int - number of processed ids */ public function bulkDelete(array $ids): int { if (empty($ids)) { return 0; } $count = 0; $this->entityManager->transactional(function (EntityManager $entityManager) use ($ids, &$count) { // Delete subscriber segments $this->removeSubscribersFromAllSegments($ids); // Delete subscriber custom fields $subscriberCustomFieldTable = $entityManager->getClassMetadata(SubscriberCustomFieldEntity::class)->getTableName(); $subscriberTable = $entityManager->getClassMetadata(SubscriberEntity::class)->getTableName(); $entityManager->getConnection()->executeStatement(" DELETE scs FROM $subscriberCustomFieldTable scs JOIN $subscriberTable s ON s.`id` = scs.`subscriber_id` 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]); // Delete subscriber tags $subscriberTagTable = $entityManager->getClassMetadata(SubscriberTagEntity::class)->getTableName(); $entityManager->getConnection()->executeStatement(" DELETE st FROM $subscriberTagTable st JOIN $subscriberTable s ON s.`id` = st.`subscriber_id` 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]); $queryBuilder = $entityManager->createQueryBuilder(); $count = $queryBuilder->delete(SubscriberEntity::class, 's') ->where('s.id IN (:ids)') ->andWhere('s.wpUserId IS NULL') ->andWhere('s.isWoocommerceUser = false') ->setParameter('ids', $ids) ->getQuery()->execute(); }); $this->changesNotifier->subscribersDeleted($ids); $this->invalidateTotalSubscribersCache(); return $count; } /** * @return int - number of processed ids */ public function bulkRemoveFromSegment(SegmentEntity $segment, array $ids): int { if (empty($ids)) { return 0; } $subscriberSegmentsTable = $this->entityManager->getClassMetadata(SubscriberSegmentEntity::class)->getTableName(); $count = (int)$this->entityManager->getConnection()->executeStatement(" 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]); $this->changesNotifier->subscribersUpdated($ids); return $count; } /** * @return int - number of processed ids */ public function bulkRemoveFromAllSegments(array $ids): int { $count = $this->removeSubscribersFromAllSegments($ids); $this->changesNotifier->subscribersUpdated($ids); return $count; } /** * @return int - number of processed ids */ public function bulkAddToSegment(SegmentEntity $segment, array $ids): int { $count = $this->addSubscribersToSegment($segment, $ids); $this->changesNotifier->subscribersUpdated($ids); return $count; } public function woocommerceUserExists(): bool { $subscribers = $this->entityManager ->createQueryBuilder() ->select('s') ->from(SubscriberEntity::class, 's') ->join('s.subscriberSegments', 'ss') ->join('ss.segment', 'segment') ->where('segment.type = :segmentType') ->setParameter('segmentType', SegmentEntity::TYPE_WC_USERS) ->andWhere('s.isWoocommerceUser = true') ->getQuery() ->setMaxResults(1) ->execute(); return count($subscribers) > 0; } /** * @return int - number of processed ids */ public function bulkMoveToSegment(SegmentEntity $segment, array $ids): int { if (empty($ids)) { return 0; } $this->removeSubscribersFromAllSegments($ids); $count = $this->addSubscribersToSegment($segment, $ids); $this->changesNotifier->subscribersUpdated($ids); return $count; } public function bulkUnsubscribe(array $ids): int { $this->entityManager->createQueryBuilder() ->update(SubscriberEntity::class, 's') ->set('s.status', ':status') ->where('s.id IN (:ids)') ->setParameter('status', SubscriberEntity::STATUS_UNSUBSCRIBED) ->setParameter('ids', $ids) ->getQuery()->execute(); $this->changesNotifier->subscribersUpdated($ids); $this->invalidateTotalSubscribersCache(); return count($ids); } public function bulkUpdateLastSendingAt(array $ids, DateTimeInterface $dateTime): int { if (empty($ids)) { return 0; } $this->entityManager->createQueryBuilder() ->update(SubscriberEntity::class, 's') ->set('s.lastSendingAt', ':lastSendingAt') ->where('s.id IN (:ids)') ->setParameter('lastSendingAt', $dateTime) ->setParameter('ids', $ids) ->getQuery() ->execute(); return count($ids); } public function bulkUpdateEngagementScoreUpdatedAt(array $ids, ?DateTimeInterface $dateTime): void { if (empty($ids)) { return; } $this->entityManager->createQueryBuilder() ->update(SubscriberEntity::class, 's') ->set('s.engagementScoreUpdatedAt', ':dateTime') ->where('s.id IN (:ids)') ->setParameter('dateTime', $dateTime) ->setParameter('ids', $ids) ->getQuery() ->execute(); } public function findWpUserIdAndEmailByEmails(array $emails): array { return $this->entityManager->createQueryBuilder() ->select('s.wpUserId AS wp_user_id, LOWER(s.email) AS email') ->from(SubscriberEntity::class, 's') ->where('s.email IN (:emails)') ->setParameter('emails', $emails) ->getQuery()->getResult(); } public function findIdAndEmailByEmails(array $emails): array { return $this->entityManager->createQueryBuilder() ->select('s.id, s.email') ->from(SubscriberEntity::class, 's') ->where('s.email IN (:emails)') ->setParameter('emails', $emails) ->getQuery()->getResult(); } /** * @return int[] */ public function findIdsOfDeletedByEmails(array $emails): array { return $this->entityManager->createQueryBuilder() ->select('s.id') ->from(SubscriberEntity::class, 's') ->where('s.email IN (:emails)') ->andWhere('s.deletedAt IS NOT NULL') ->setParameter('emails', $emails) ->getQuery()->getResult(); } public function getCurrentWPUser(): ?SubscriberEntity { $wpUser = WPFunctions::get()->wpGetCurrentUser(); if (empty($wpUser->ID)) { return null; // Don't look up a subscriber for guests } return $this->findOneBy(['wpUserId' => $wpUser->ID]); } public function findByUpdatedScoreNotInLastMonth(int $limit): array { $dateTime = (new Carbon())->subMonths(1); return $this->entityManager->createQueryBuilder() ->select('s') ->from(SubscriberEntity::class, 's') ->where('s.engagementScoreUpdatedAt IS NULL') ->orWhere('s.engagementScoreUpdatedAt < :dateTime') ->setParameter('dateTime', $dateTime) ->getQuery() ->setMaxResults($limit) ->getResult(); } public function maybeUpdateLastEngagement(SubscriberEntity $subscriberEntity): void { $now = $this->getCurrentDateTime(); // Do not update engagement if was recently updated to avoid unnecessary updates in DB if ($subscriberEntity->getLastEngagementAt() && $subscriberEntity->getLastEngagementAt() > $now->subMinute()) { return; } // Update last engagement $subscriberEntity->setLastEngagementAt($now); $this->flush(); } public function maybeUpdateLastOpenAt(SubscriberEntity $subscriberEntity): void { $now = $this->getCurrentDateTime(); // Avoid unnecessary DB calls if ($subscriberEntity->getLastOpenAt() && $subscriberEntity->getLastOpenAt() > $now->subMinute()) { return; } $subscriberEntity->setLastOpenAt($now); $subscriberEntity->setLastEngagementAt($now); $this->flush(); } public function maybeUpdateLastClickAt(SubscriberEntity $subscriberEntity): void { $now = $this->getCurrentDateTime(); // Avoid unnecessary DB calls if ($subscriberEntity->getLastClickAt() && $subscriberEntity->getLastClickAt() > $now->subMinute()) { return; } $subscriberEntity->setLastClickAt($now); $subscriberEntity->setLastEngagementAt($now); $this->flush(); } public function maybeUpdateLastPurchaseAt(SubscriberEntity $subscriberEntity): void { $now = $this->getCurrentDateTime(); // Avoid unnecessary DB calls if ($subscriberEntity->getLastPurchaseAt() && $subscriberEntity->getLastPurchaseAt() > $now->subMinute()) { return; } $subscriberEntity->setLastPurchaseAt($now); $subscriberEntity->setLastEngagementAt($now); $this->flush(); } public function maybeUpdateLastPageViewAt(SubscriberEntity $subscriberEntity): void { $now = $this->getCurrentDateTime(); // Avoid unnecessary DB calls if ($subscriberEntity->getLastPageViewAt() && $subscriberEntity->getLastPageViewAt() > $now->subMinute()) { return; } $subscriberEntity->setLastPageViewAt($now); $subscriberEntity->setLastEngagementAt($now); $this->flush(); } /** * @param array $ids * @return string[] */ public function getUndeletedSubscribersEmailsByIds(array $ids): array { return $this->entityManager->createQueryBuilder() ->select('s.email') ->from(SubscriberEntity::class, 's') ->where('s.deletedAt IS NULL') ->andWhere('s.id IN (:ids)') ->setParameter('ids', $ids) ->getQuery() ->getArrayResult(); } public function getMaxSubscriberId(): int { $maxSubscriberId = $this->entityManager->createQueryBuilder() ->select('MAX(s.id)') ->from(SubscriberEntity::class, 's') ->getQuery() ->getSingleScalarResult(); return intval($maxSubscriberId); } /** * Returns count of subscribers who subscribed after given date regardless of their current status. * @return int */ public function getCountOfLastSubscribedAfter(\DateTimeInterface $subscribedAfter): int { $result = $this->entityManager->createQueryBuilder() ->select('COUNT(s.id)') ->from(SubscriberEntity::class, 's') ->where('s.lastSubscribedAt > :lastSubscribedAt') ->andWhere('s.deletedAt IS NULL') ->setParameter('lastSubscribedAt', $subscribedAfter) ->getQuery() ->getSingleScalarResult(); return intval($result); } /** * Returns count of subscribers who unsubscribed after given date regardless of their current status. * @return int */ public function getCountOfUnsubscribedAfter(\DateTimeInterface $unsubscribedAfter): int { $result = $this->entityManager->createQueryBuilder() ->select('COUNT(DISTINCT s.id)') ->from(StatisticsUnsubscribeEntity::class, 'su') ->join('su.subscriber', 's') ->andWhere('su.createdAt > :unsubscribedAfter') ->andWhere('s.deletedAt IS NULL') ->setParameter('unsubscribedAfter', $unsubscribedAfter) ->getQuery() ->getSingleScalarResult(); return intval($result); } /** * Returns count of subscribers who subscribed to a list after given date regardless of their current global status. */ public function getListLevelCountsOfSubscribedAfter(\DateTimeInterface $date): array { $data = $this->entityManager->createQueryBuilder() ->select('seg.id, seg.name, seg.type, seg.averageEngagementScore, COUNT(ss.id) as count') ->from(SubscriberSegmentEntity::class, 'ss') ->join('ss.subscriber', 's') ->join('ss.segment', 'seg') ->where('ss.updatedAt > :date') ->andWhere('ss.status = :segment_status') ->andWhere('s.lastSubscribedAt > :date') // subscriber subscribed at some point after the date ->andWhere('s.deletedAt IS NULL') ->andWhere('seg.deletedAt IS NULL') // no trashed lists and disabled WP Users list ->setParameter('date', $date) ->setParameter('segment_status', SubscriberEntity::STATUS_SUBSCRIBED) ->groupBy('ss.segment') ->getQuery() ->getArrayResult(); return $data; } /** * Returns count of subscribers who unsubscribed from a list after given date regardless of their current global status. */ public function getListLevelCountsOfUnsubscribedAfter(\DateTimeInterface $date): array { return $this->entityManager->createQueryBuilder() ->select('seg.id, seg.name, seg.type, seg.averageEngagementScore, COUNT(ss.id) as count') ->from(SubscriberSegmentEntity::class, 'ss') ->join('ss.subscriber', 's') ->join('ss.segment', 'seg') ->where('ss.updatedAt > :date') ->andWhere('ss.status = :segment_status') ->andWhere('s.deletedAt IS NULL') ->andWhere('seg.deletedAt IS NULL') // no trashed lists and disabled WP Users list ->setParameter('date', $date) ->setParameter('segment_status', SubscriberEntity::STATUS_UNSUBSCRIBED) ->groupBy('ss.segment') ->getQuery() ->getArrayResult(); } /** * @return int - number of processed ids */ public function bulkAddTag(TagEntity $tag, array $ids): int { $count = $this->addTagToSubscribers($tag, $ids); $this->changesNotifier->subscribersUpdated($ids); return $count; } /** * @return int - number of processed ids */ public function bulkRemoveTag(TagEntity $tag, array $ids): int { if (empty($ids)) { return 0; } $subscriberTagsTable = $this->entityManager->getClassMetadata(SubscriberTagEntity::class)->getTableName(); $count = (int)$this->entityManager->getConnection()->executeStatement(" 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]); $this->changesNotifier->subscribersUpdated($ids); return $count; } public function removeOrphanedSubscribersFromWpSegment(): void { global $wpdb; $segmentId = $this->segmentsRepository->getWpUsersSegment()->getId(); $subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName(); $subscriberSegmentsTable = $this->entityManager->getClassMetadata(SubscriberSegmentEntity::class)->getTableName(); $this->entityManager->getConnection()->executeStatement( "DELETE s FROM {$subscribersTable} s INNER JOIN {$subscriberSegmentsTable} ss ON s.id = ss.subscriber_id LEFT JOIN {$wpdb->users} u ON s.wp_user_id = u.id WHERE ss.segment_id = :segmentId AND (u.id IS NULL OR s.email = '')", ['segmentId' => $segmentId], ['segmentId' => \PDO::PARAM_INT] ); } public function removeByWpUserIds(array $wpUserIds) { $queryBuilder = $this->entityManager->createQueryBuilder(); $queryBuilder ->delete(SubscriberEntity::class, 's') ->where('s.wpUserId IN (:wpUserIds)') ->setParameter('wpUserIds', $wpUserIds); return $queryBuilder->getQuery()->execute(); } /** * @return int - number of processed ids */ private function removeSubscribersFromAllSegments(array $ids): int { if (empty($ids)) { return 0; } $subscriberSegmentsTable = $this->entityManager->getClassMetadata(SubscriberSegmentEntity::class)->getTableName(); $segmentsTable = $this->entityManager->getClassMetadata(SegmentEntity::class)->getTableName(); $count = (int)$this->entityManager->getConnection()->executeStatement(" DELETE ss FROM $subscriberSegmentsTable ss JOIN $segmentsTable s ON s.id = ss.segment_id AND s.`type` = :typeDefault WHERE ss.`subscriber_id` IN (:ids) ", [ 'ids' => $ids, 'typeDefault' => SegmentEntity::TYPE_DEFAULT, ], ['ids' => Connection::PARAM_INT_ARRAY]); return $count; } /** * @return int - number of processed ids */ private function addSubscribersToSegment(SegmentEntity $segment, array $ids): int { if (empty($ids)) { return 0; } $subscribers = $this->entityManager ->createQueryBuilder() ->select('s') ->from(SubscriberEntity::class, 's') ->leftJoin('s.subscriberSegments', 'ss', Join::WITH, 'ss.segment = :segment') ->where('s.id IN (:ids)') ->andWhere('ss.segment IS NULL') ->setParameter('ids', $ids) ->setParameter('segment', $segment) ->getQuery()->execute(); $this->entityManager->transactional(function (EntityManager $entityManager) use ($subscribers, $segment) { foreach ($subscribers as $subscriber) { $subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED); $this->entityManager->persist($subscriberSegment); } $this->entityManager->flush(); }); return count($subscribers); } /** * @return int - number of processed ids */ private function addTagToSubscribers(TagEntity $tag, array $ids): int { if (empty($ids)) { return 0; } /** @var SubscriberEntity[] $subscribers */ $subscribers = $this->entityManager ->createQueryBuilder() ->select('s') ->from(SubscriberEntity::class, 's') ->leftJoin('s.subscriberTags', 'st', Join::WITH, 'st.tag = :tag') ->where('s.id IN (:ids)') ->andWhere('st.tag IS NULL') ->setParameter('ids', $ids) ->setParameter('tag', $tag) ->getQuery()->execute(); $this->entityManager->wrapInTransaction(function (EntityManager $entityManager) use ($subscribers, $tag) { foreach ($subscribers as $subscriber) { $subscriberTag = new SubscriberTagEntity($tag, $subscriber); $entityManager->persist($subscriberTag); } $entityManager->flush(); }); return count($subscribers); } private function getCurrentDateTime(): CarbonImmutable { return CarbonImmutable::createFromTimestamp((int)$this->wp->currentTime('timestamp')); } }
Fatal error: Uncaught Error: Class "MailPoet\Subscribers\SubscribersRepository" not found in /htdocs/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php:5298 Stack trace: #0 /htdocs/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php(2636): MailPoetGenerated\FreeCachedContainer->getSubscribersRepositoryService() #1 /htdocs/wp-content/plugins/mailpoet/vendor-prefixed/symfony/dependency-injection/Container.php(122): MailPoetGenerated\FreeCachedContainer->getInitializerService() #2 /htdocs/wp-content/plugins/mailpoet/vendor-prefixed/symfony/dependency-injection/Container.php(110): MailPoetVendor\Symfony\Component\DependencyInjection\Container->make('MailPoet\\Config...', 1) #3 /htdocs/wp-content/plugins/mailpoet/lib/DI/ContainerWrapper.php(39): MailPoetVendor\Symfony\Component\DependencyInjection\Container->get('MailPoet\\Config...') #4 /htdocs/wp-content/plugins/mailpoet/mailpoet_initializer.php(89): MailPoet\DI\ContainerWrapper->get('MailPoet\\Config...') #5 /htdocs/wp-content/plugins/mailpoet/mailpoet.php(194): require_once('/htdocs/wp-cont...') #6 /htdocs/wp-settings.php(526): include_once('/htdocs/wp-cont...') #7 /htdocs/wp-config.php(85): require_once('/htdocs/wp-sett...') #8 /htdocs/wp-load.php(50): require_once('/htdocs/wp-conf...') #9 /htdocs/wp-blog-header.php(13): require_once('/htdocs/wp-load...') #10 /htdocs/index.php(17): require('/htdocs/wp-blog...') #11 {main} thrown in /htdocs/wp-content/plugins/mailpoet/generated/FreeCachedContainer.php on line 5298