![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/LeadBundle/Tests/DataFixtures/ORM/ |
<?php namespace Mautic\LeadBundle\Tests\DataFixtures\ORM; use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\OrderedFixtureInterface; use Doctrine\Persistence\ObjectManager; use Mautic\LeadBundle\Entity\LeadList; use Mautic\LeadBundle\Model\LeadModel; use Mautic\LeadBundle\Model\ListModel; class LoadSegmentsData extends AbstractFixture implements OrderedFixtureInterface { public function __construct( private ListModel $listModel, private LeadModel $contactModel ) { } public function load(ObjectManager $manager): void { $segments = [ [ // ID 2 'name' => 'Segment Test 1', 'alias' => 'segment-test-1', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'lookup', 'field' => 'state', 'operator' => '=', 'filter' => 'IA', 'display' => '', ], ], 'populate' => true, ], [ // ID 3 'name' => 'Segment Test 2', 'alias' => 'segment-test-2', 'public' => false, 'filters' => [ [ 'glue' => 'and', 'type' => 'lookup', 'field' => 'state', 'operator' => '=', 'filter' => 'IA', 'display' => '', ], [ 'glue' => 'or', 'type' => 'lookup', 'field' => 'state', 'operator' => '=', 'filter' => 'QLD', 'display' => '', ], ], 'populate' => true, ], [ // ID 4 'name' => 'Segment Test 3', 'alias' => 'segment-test-3', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'lookup', 'field' => 'title', 'operator' => '=', 'filter' => 'Mr.', 'display' => '', ], ], 'populate' => false, ], [ // ID 5 'name' => 'Segment Test 4', 'alias' => 'segment-test-4', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'hit_url', 'operator' => 'like', 'filter' => 'test.com', 'display' => '', ], ], 'populate' => true, ], [ // ID 6 'name' => 'Segment Test 5', 'alias' => 'segment-test-5', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'hit_url', 'operator' => '!like', 'filter' => 'test.com', 'display' => '', ], ], 'populate' => true, ], [ // ID 7 'name' => 'Like segment test with field percent sign at end', 'alias' => 'like-percent-end', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'title', 'operator' => 'like', 'filter' => 'Mr%', 'display' => '', ], ], 'populate' => true, ], [ // ID 8 'name' => 'Segment without filters', 'alias' => 'segment-test-without-filters', 'public' => true, 'filters' => [], 'populate' => true, ], [ // ID 9 'name' => 'Segment with manual members added and removed', 'alias' => 'segment-test-manual-membership', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United Kingdom', 'display' => '', ], ], 'populate' => true, 'manually_add' => [$this->getReference('lead-1')->id, $this->getReference('lead-2')->id, $this->getReference('lead-3')->id], 'manually_remove' => [$this->getReference('lead-4')->id, $this->getReference('lead-5')->id], ], [ // ID 10 'name' => 'Include segment membership with filters', 'alias' => 'segment-test-include-segment-with-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [3, 4], 'display' => '', ], ], 'populate' => true, ], [ // ID 11 'name' => 'Exclude segment membership with filters', 'alias' => 'segment-test-exclude-segment-with-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United States', 'display' => '', ], [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [3], 'display' => '', ], ], 'populate' => false, ], [ // ID 12 'name' => 'Include segment membership without filters', 'alias' => 'segment-test-include-segment-without-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United Kingdom', 'display' => '', ], [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [8], 'display' => '', ], ], 'populate' => false, ], [ // ID 13 'name' => 'Exclude segment membership without filters', 'alias' => 'segment-test-exclude-segment-without-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United Kingdom', 'display' => '', ], [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [8], 'display' => '', ], ], 'populate' => false, ], [ // ID 14 'name' => 'Include segment membership with mixed filters', 'alias' => 'segment-test-include-segment-mixed-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [4, 8], 'display' => '', ], ], 'populate' => false, ], [ // ID 15 'name' => 'Exclude segment membership with mixed filters', 'alias' => 'segment-test-exclude-segment-mixed-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [4, 8], 'display' => '', ], ], 'populate' => false, ], [ // ID 16 'name' => 'Segment membership with mixed include and exclude', 'alias' => 'segment-test-mixed-include-exclude-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [7], 'display' => '', ], [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [4], 'display' => '', ], ], 'populate' => true, ], [ // ID 17 'name' => 'Segment membership with including segment that has manual membership', 'alias' => 'segment-test-include-segment-manual-members', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [9], 'display' => '', ], ], 'populate' => false, ], [ // ID 18 'name' => 'Segment membership with excluded segment that has manual membership', 'alias' => 'segment-test-exclude-segment-manual-members', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'title', 'operator' => 'like', 'filter' => 'Mr%', 'display' => '', ], [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [9], 'display' => '', ], ], 'populate' => false, ], [ // ID 19 'name' => 'Segment membership with excluded segment without other filters', 'alias' => 'segment-test-exclude-segment-without-other-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [9], 'display' => '', ], ], 'populate' => false, ], [ // ID 20 'name' => 'Segment with filters and only manually removed contacts', 'alias' => 'segment-test-filters-and-removed', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United Kingdom', 'display' => '', ], ], 'populate' => true, 'manually_remove' => [3, 4], ], [ // ID 21 'name' => 'Segment with same filters as another that has manually removed contacts', 'alias' => 'segment-test-include-segment-with-segment-manual-removal-same-filters', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United Kingdom', 'display' => '', ], ], 'populate' => true, ], [ // ID 22 'name' => 'Segment membership with including segment that has a contact thats been removed from non-related segment', 'alias' => 'segment-test-include-segment-with-unrelated-segment-manual-removal', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [21], 'display' => '', ], ], 'populate' => true, ], [ // ID 23 'name' => 'Segment membership based on regex with special characters', 'alias' => 'segment-membership-regexp', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'email', 'operator' => 'regexp', 'filter' => '^.*(#|!|\\\\$|%|&|\\\\*|\\\\(|\\\\)|\\\\^|\\\\?|\\\\+|-|dayrep\\\\.com|http|gmail|abc|qwe|[0-9]).*$', 'display' => '', ], [ 'glue' => 'and', 'type' => 'text', 'field' => 'email', 'operator' => '!empty', 'filter' => null, 'display' => '', ], ], 'populate' => true, ], [ // ID 24 'name' => 'Segment membership based on only company fields', 'alias' => 'segment-company-only-fields', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'object' => 'company', 'field' => 'companycity', 'operator' => '=', 'filter' => 'Houston', 'display' => '', ], ], 'populate' => true, ], [ // ID 25 'name' => 'Segment membership with excluded segment without other filters', 'alias' => 'segment-including-segment-with-company-only-fields', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'object' => 'company', 'field' => 'companyindustry', 'operator' => 'in', 'filter' => ['Software', 'Hardware'], 'display' => '', ], [ 'glue' => 'and', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => '!in', 'filter' => [21], 'display' => '', ], ], 'populate' => true, ], [ // ID 26 'name' => 'Segment with relative date - today', 'alias' => 'segment-with-relative-date-today', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'today', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 27 'name' => 'Segment with relative date - tomorrow', 'alias' => 'segment-with-relative-date-tomorrow', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'tomorrow', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 28 'name' => 'Segment with relative date - yesterday', 'alias' => 'segment-with-relative-date-yesterday', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'yesterday', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 29 'name' => 'Segment with relative date - last week', 'alias' => 'segment-with-relative-date-last-week', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'last week', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 30 'name' => 'Segment with relative date - next week', 'alias' => 'segment-with-relative-date-next-week', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'next week', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 31 'name' => 'Segment with relative date - this week', 'alias' => 'segment-with-relative-date-this-week', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'this week', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 32 'name' => 'Segment with relative date - last month', 'alias' => 'segment-with-relative-date-last-month', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'last month', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 33 'name' => 'Segment with relative date - next month', 'alias' => 'segment-with-relative-date-next-month', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'next month', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 34 'name' => 'Segment with relative date - this month', 'alias' => 'segment-with-relative-date-this-month', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'this month', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 35 'name' => 'Segment with relative date - last year', 'alias' => 'segment-with-relative-date-last-year', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'last year', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 36 'name' => 'Segment with relative date - next year', 'alias' => 'segment-with-relative-date-next-year', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => 'next year', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 37 'name' => 'Segment with relative date - relative plus', 'alias' => 'segment-with-relative-date-relative-plus', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => '+5 days', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 38 'name' => 'Segment with relative date - relative minus', 'alias' => 'segment-with-relative-date-relative-minus', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'datetime', 'object' => 'lead', 'field' => 'date_identified', 'operator' => '=', 'filter' => '-4 days', 'display' => null, ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'lastname', 'operator' => '=', 'filter' => 'Date', 'display' => null, ], ], 'populate' => false, ], [ // ID 39 'name' => 'Name is not equal (not null test)', 'alias' => 'name-is-not-equal-not-null-test', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'firstname', 'operator' => '!=', 'filter' => 'xxxxx', 'display' => null, ], ], 'populate' => false, ], [ // ID 40 'name' => 'Include segment membership with or', 'alias' => 'segment-test-include-segment-with-or', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'field' => 'country', 'operator' => '=', 'filter' => 'United Kingdom', 'display' => '', ], [ 'glue' => 'or', 'type' => 'leadlist', 'field' => 'leadlist', 'operator' => 'in', 'filter' => [8], 'display' => '', ], ], 'populate' => false, ], [ // ID 41 'name' => 'Manually unsubscribed SMS', 'alias' => 'manually-unsubscribed-sms-test', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'field' => 'dnc_manual_sms', 'object' => 'lead', 'type' => 'boolean', 'operator' => '=', 'properties' => [ 'filter' => 1, ], ], ], 'populate' => false, ], [ // ID 42 email_id (bc for email_clicked_link 'name' => 'Clicked link in any email', 'alias' => 'clicked-link-in-any-email', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'field' => 'email_id', 'object' => 'behaviors', 'type' => 'boolean', 'operator' => '=', 'properties' => [ 'filter' => 1, ], ], ], 'populate' => false, ], [ // ID 43 email_id (bc for email_clicked_link 'name' => 'Did not click link in any email', 'alias' => 'did-not-click-link-in-any-email', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'field' => 'email_id', 'object' => 'behaviors', 'type' => 'boolean', 'operator' => '=', 'properties' => [ 'filter' => 0, ], ], ], 'populate' => false, ], [ // ID 44 email_clicked_link_date 'name' => 'Clicked link in any email on specific date', 'alias' => 'clicked-link-in-any-email-on-specific-date', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'field' => 'email_clicked_link_date', 'object' => 'behaviors', 'type' => 'datetime', 'operator' => 'gte', 'properties' => [ 'filter' => (new \DateTime())->format('Y-m-d H:i'), ], ], ], 'populate' => false, ], [ // ID 45 sms_clicked_link 'name' => 'Clicked link in any sms', 'alias' => 'clicked-link-in-any-sms', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'field' => 'sms_clicked_link', 'object' => 'behaviors', 'type' => 'boolean', 'operator' => '=', 'properties' => [ 'filter' => 1, ], ], ], 'populate' => false, ], [ // ID 46 sms_clicked_link_date 'name' => 'Clicked link in any sms on specific date', 'alias' => 'clicked-link-in-any-sms-on-specific-date', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'field' => 'sms_clicked_link_date', 'object' => 'behaviors', 'type' => 'datetime', 'operator' => 'gte', 'properties' => [ 'filter' => (new \DateTime())->format('Y-m-d H:i'), ], ], ], 'populate' => false, ], [ // ID 47 'name' => 'Tags empty', 'alias' => 'tags-empty', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'tags', 'field' => 'tags', 'operator' => 'empty', 'properties' => [ 'filter' => '', ], ], ], 'populate' => false, ], [ // ID 48 'name' => 'Tags not empty', 'alias' => 'tags-not-empty', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'tags', 'field' => 'tags', 'operator' => 'notEmpty', 'properties' => [ 'filter' => '', ], ], ], 'populate' => false, ], [ // ID 49 'name' => 'Has company', 'alias' => 'segment-having-company', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'company', 'operator' => '!empty', 'properties' => ['filter' => null], ], ], 'populate' => true, ], [ // ID 50 'name' => 'Has no company', 'alias' => 'segment-not-having-company', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'object' => 'lead', 'field' => 'company', 'operator' => 'empty', 'properties' => ['filter' => null], ], ], 'populate' => true, ], [ // ID 51 'name' => 'Has Email and visited URL', 'alias' => 'has-email-and-visited-url', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'email', 'object' => 'lead', 'field' => 'email', 'operator' => '!empty', 'properties' => ['filter' => null, 'display' => null], ], [ 'glue' => 'and', 'type' => 'text', 'object' => 'behaviors', 'field' => 'hit_url', 'operator' => 'regexp', 'properties' => ['filter' => 'segment-[[:digit:]]+'], ], ], 'populate' => true, ], [ // ID 52 'name' => 'Missing table name', 'alias' => 'table-name-missing-in-filter', 'public' => true, 'filters' => [ [ 'glue' => 'and', 'type' => 'text', 'object' => 'custom_object', 'field' => 'firstnameLOL', 'operator' => '!=', 'filter' => 'xxxxx', 'display' => null, 'table' => '', ], ], 'populate' => false, ], ]; foreach ($segments as $segmentConfig) { $this->createSegment($segmentConfig, $manager); } } protected function createSegment($listConfig, ObjectManager $manager) { $adminUser = $this->getReference('admin-user'); $list = new LeadList(); $list->setName($listConfig['name']); $list->setPublicName($listConfig['name']); $list->setAlias($listConfig['alias']); $list->setCreatedBy($adminUser); $list->setIsGlobal($listConfig['public']); $list->setFilters($listConfig['filters']); $this->setReference($listConfig['alias'], $list); $manager->persist($list); $manager->flush(); if ($listConfig['populate']) { $this->listModel->rebuildListLeads($list); } if (!empty($listConfig['manually_add'])) { foreach ($listConfig['manually_add'] as $lead) { $this->contactModel->addToLists($lead, $list); } } if (!empty($listConfig['manually_remove'])) { foreach ($listConfig['manually_remove'] as $lead) { $this->contactModel->removeFromLists($lead, $list); } } } /** * @return int */ public function getOrder() { return 7; } }