From 051f25eae9f217a2d8c717f8891b34f23f3752bd Mon Sep 17 00:00:00 2001 From: Kevin Cristiano <kcristiano@kcristiano.com> Date: Thu, 7 Dec 2023 08:27:43 +0000 Subject: [PATCH] civicrm release-5.68.0 --- civicrm.php | 4 +- civicrm/CRM/ACL/DAO/ACL.php | 6 +- civicrm/CRM/ACL/Form/ACL.php | 2 +- civicrm/CRM/Activity/Form/Activity.php | 14 +- civicrm/CRM/Activity/Selector/Activity.php | 6 +- civicrm/CRM/Admin/Form/MailSettings.php | 2 +- .../CRM/Admin/Form/ParticipantStatusType.php | 2 +- .../CRM/Admin/Form/PaymentProcessorType.php | 8 +- .../CRM/Admin/Form/Preferences/Contribute.php | 2 +- civicrm/CRM/Admin/Form/RelationshipType.php | 2 +- civicrm/CRM/Admin/Page/AJAX.php | 8 +- civicrm/CRM/Badge/BAO/Layout.php | 6 +- civicrm/CRM/Badge/Form/Layout.php | 24 +- civicrm/CRM/Campaign/BAO/Petition.php | 43 +- civicrm/CRM/Campaign/BAO/Survey.php | 2 +- civicrm/CRM/Campaign/Form/Campaign.php | 2 +- civicrm/CRM/Campaign/Form/Petition.php | 8 +- .../CRM/Campaign/Form/Petition/Signature.php | 4 +- civicrm/CRM/Campaign/Form/Survey.php | 1 + civicrm/CRM/Campaign/Form/Survey/Main.php | 4 +- civicrm/CRM/Campaign/Page/AJAX.php | 8 +- civicrm/CRM/Case/Form/Activity.php | 22 +- civicrm/CRM/Case/Form/CaseView.php | 6 +- civicrm/CRM/Case/Form/CustomData.php | 2 +- civicrm/CRM/Contact/BAO/Contact.php | 5 +- civicrm/CRM/Contact/BAO/Group.php | 8 +- civicrm/CRM/Contact/BAO/GroupNesting.php | 2 +- civicrm/CRM/Contact/BAO/Query.php | 6 +- civicrm/CRM/Contact/BAO/Relationship.php | 8 +- civicrm/CRM/Contact/DAO/DashboardContact.php | 5 +- civicrm/CRM/Contact/Form/Contact.php | 21 +- civicrm/CRM/Contact/Form/Edit/Address.php | 2 +- .../Form/Inline/CommunicationPreferences.php | 2 +- .../CRM/Contact/Form/Inline/CustomData.php | 2 +- civicrm/CRM/Contact/Form/Relationship.php | 6 +- civicrm/CRM/Contact/Form/Search/Criteria.php | 4 +- civicrm/CRM/Contact/Form/Task.php | 2 +- civicrm/CRM/Contact/Form/Task/EmailTrait.php | 2 +- civicrm/CRM/Contact/Form/Task/Label.php | 2 +- civicrm/CRM/Contact/Import/Form/MapField.php | 10 +- civicrm/CRM/Contact/Page/AJAX.php | 6 +- .../CRM/Contact/Page/View/Relationship.php | 4 +- .../CRM/Contact/Page/View/UserDashBoard.php | 2 +- civicrm/CRM/Contact/Page/View/Vcard.php | 8 +- .../CRM/Contribute/ActionMapping/ByPage.php | 7 +- .../CRM/Contribute/ActionMapping/ByType.php | 8 +- civicrm/CRM/Contribute/BAO/Contribution.php | 21 +- .../CRM/Contribute/BAO/ContributionPage.php | 2 +- .../CRM/Contribute/BAO/ContributionSoft.php | 2 +- .../CRM/Contribute/BAO/FinancialProcessor.php | 6 +- civicrm/CRM/Contribute/BAO/Premium.php | 3 +- .../Contribute/Form/AbstractEditPayment.php | 2 +- .../CRM/Contribute/Form/AdditionalInfo.php | 2 + .../Contribute/Form/ContributeFormTrait.php | 91 + civicrm/CRM/Contribute/Form/Contribution.php | 263 +- .../Contribute/Form/Contribution/Confirm.php | 148 +- .../CRM/Contribute/Form/Contribution/Main.php | 589 +- .../Contribute/Form/Contribution/ThankYou.php | 8 +- .../CRM/Contribute/Form/ContributionBase.php | 372 +- .../Contribute/Form/ContributionCharts.php | 2 +- .../CRM/Contribute/Form/ContributionPage.php | 51 +- .../Form/ContributionPage/Amount.php | 27 +- .../Form/ContributionPage/Premium.php | 4 +- .../Form/ContributionPage/Settings.php | 18 +- .../Form/ContributionPage/ThankYou.php | 2 +- .../Form/ContributionPage/Widget.php | 2 +- .../CRM/Contribute/Form/ContributionView.php | 42 +- civicrm/CRM/Contribute/Form/Task/Invoice.php | 4 +- .../CRM/Contribute/Form/Task/PDFLetter.php | 2 +- .../CRM/Contribute/Page/ContributionRecur.php | 2 +- civicrm/CRM/Contribute/Page/DashBoard.php | 2 +- civicrm/CRM/Contribute/Page/Premium.php | 5 +- civicrm/CRM/Contribute/Page/UserDashboard.php | 4 +- civicrm/CRM/Contribute/Tokens.php | 78 +- .../Contribution/BasicContribution.php | 4 + civicrm/CRM/Core/BAO/Address.php | 13 +- civicrm/CRM/Core/BAO/Block.php | 4 +- civicrm/CRM/Core/BAO/CustomField.php | 37 +- civicrm/CRM/Core/BAO/Domain.php | 8 +- civicrm/CRM/Core/BAO/EntityTag.php | 4 +- civicrm/CRM/Core/BAO/MailSettings.php | 13 +- civicrm/CRM/Core/BAO/Managed.php | 7 +- civicrm/CRM/Core/BAO/Navigation.php | 36 +- civicrm/CRM/Core/BAO/RecurringEntity.php | 16 - civicrm/CRM/Core/BAO/Tag.php | 49 +- civicrm/CRM/Core/BAO/UFField.php | 2 +- civicrm/CRM/Core/BAO/UFGroup.php | 6 +- civicrm/CRM/Core/BAO/UserJob.php | 4 + .../Core/CodeGen/Util/MessageTemplates.php | 82 + civicrm/CRM/Core/CodeGen/Util/Smarty.php | 4 +- civicrm/CRM/Core/DAO.php | 93 +- civicrm/CRM/Core/DAO/EntityTag.php | 5 +- civicrm/CRM/Core/DAO/Managed.php | 37 +- civicrm/CRM/Core/DAO/Tag.php | 52 +- civicrm/CRM/Core/EntityTokens.php | 31 + civicrm/CRM/Core/Form.php | 34 +- civicrm/CRM/Core/Form/RecurringEntity.php | 72 +- civicrm/CRM/Core/Form/Tag.php | 5 +- civicrm/CRM/Core/ManagedEntities.php | 73 +- civicrm/CRM/Core/OptionValue.php | 2 +- civicrm/CRM/Core/Page.php | 2 + civicrm/CRM/Core/Page/Redirect.php | 2 +- civicrm/CRM/Core/Payment.php | 18 + civicrm/CRM/Core/Payment/Manual.php | 13 +- civicrm/CRM/Core/Payment/PayPalIPN.php | 2 +- civicrm/CRM/Core/PseudoConstant.php | 185 +- civicrm/CRM/Core/QuickForm/Action/Upload.php | 2 +- civicrm/CRM/Core/Resources.php | 37 + civicrm/CRM/Core/SelectValues.php | 10 + civicrm/CRM/Core/Selector/Controller.php | 2 +- civicrm/CRM/Core/Smarty.php | 1 + .../Core/Smarty/plugins/block.localize.php | 9 +- civicrm/CRM/Custom/Form/Field.php | 8 +- civicrm/CRM/Custom/Page/Field.php | 24 +- civicrm/CRM/Dedupe/MergeHandler.php | 2 +- civicrm/CRM/Event/BAO/Event.php | 2 +- civicrm/CRM/Event/BAO/Participant.php | 6 +- .../CRM/Event/BAO/ParticipantStatusType.php | 20 +- civicrm/CRM/Event/Form/EventFees.php | 28 - civicrm/CRM/Event/Form/ManageEvent.php | 3 + .../CRM/Event/Form/ManageEvent/EventInfo.php | 12 +- civicrm/CRM/Event/Form/ManageEvent/Fee.php | 19 +- .../Event/Form/ManageEvent/Registration.php | 20 +- civicrm/CRM/Event/Form/ManageEvent/Repeat.php | 5 +- civicrm/CRM/Event/Form/Participant.php | 234 +- civicrm/CRM/Event/Form/Participant/Delete.php | 2 +- civicrm/CRM/Event/Form/Registration.php | 7 +- .../CRM/Event/Form/Registration/Confirm.php | 8 +- .../CRM/Event/Form/Registration/Register.php | 35 +- civicrm/CRM/Event/Form/SelfSvcUpdate.php | 4 + civicrm/CRM/Event/ICalendar.php | 20 +- civicrm/CRM/Event/Page/EventInfo.php | 2 +- civicrm/CRM/Event/PseudoConstant.php | 198 +- civicrm/CRM/Event/Tokens.php | 13 +- .../Event/WorkflowMessage/EventExamples.php | 4 + .../WorkflowMessage/EventOfflineReceipt.php | 66 + .../WorkflowMessage/ParticipantTrait.php | 9 +- civicrm/CRM/Financial/BAO/FinancialType.php | 2 + civicrm/CRM/Financial/BAO/Order.php | 55 +- civicrm/CRM/Financial/BAO/Payment.php | 2 +- .../CRM/Financial/Form/BatchTransaction.php | 2 +- .../CRM/Financial/Form/FinancialAccount.php | 2 +- civicrm/CRM/Financial/Form/FinancialType.php | 2 +- civicrm/CRM/Friend/BAO/Friend.php | 2 +- civicrm/CRM/Friend/Form/Contribute.php | 2 +- civicrm/CRM/Friend/Form/Event.php | 2 +- civicrm/CRM/Group/Form/Edit.php | 4 +- civicrm/CRM/Import/Form/MapField.php | 9 +- civicrm/CRM/Import/Forms.php | 1 + civicrm/CRM/Mailing/BAO/Mailing.php | 14 +- civicrm/CRM/Mailing/BAO/MailingJob.php | 2 +- civicrm/CRM/Mailing/DAO/Mailing.php | 7 +- .../CRM/Mailing/DAO/MailingTrackableURL.php | 5 +- .../Mailing/Event/BAO/MailingEventQueue.php | 27 - civicrm/CRM/Mailing/Info.php | 8 - civicrm/CRM/Member/Form/MembershipBlock.php | 7 +- civicrm/CRM/PCP/BAO/PCP.php | 2 +- civicrm/CRM/PCP/Form/Contribute.php | 8 +- civicrm/CRM/PCP/Form/Event.php | 22 +- civicrm/CRM/Pledge/BAO/PledgeBlock.php | 3 + civicrm/CRM/Pledge/Form/Pledge.php | 41 +- civicrm/CRM/Pledge/Selector/Search.php | 30 +- civicrm/CRM/Price/BAO/LineItem.php | 4 +- civicrm/CRM/Price/BAO/PriceField.php | 55 +- civicrm/CRM/Price/BAO/PriceSet.php | 191 +- civicrm/CRM/Price/Form/Field.php | 14 +- civicrm/CRM/Price/Form/Option.php | 6 +- civicrm/CRM/Price/Form/Set.php | 4 +- civicrm/CRM/Price/Page/Option.php | 5 +- civicrm/CRM/Profile/Form.php | 5 +- .../Page/MultipleRecordFieldsListing.php | 2 +- civicrm/CRM/Queue/Runner.php | 2 +- civicrm/CRM/Report/BAO/ReportInstance.php | 4 +- civicrm/CRM/Report/Form.php | 16 +- .../Report/Form/Campaign/SurveyDetails.php | 10 +- civicrm/CRM/Report/Form/Case/Demographics.php | 6 +- civicrm/CRM/Report/Form/Case/Detail.php | 4 +- civicrm/CRM/Report/Form/Case/TimeSpent.php | 6 +- .../Report/Form/Contact/CurrentEmployer.php | 6 +- civicrm/CRM/Report/Form/Contact/Detail.php | 6 +- civicrm/CRM/Report/Form/Contact/Log.php | 6 +- .../CRM/Report/Form/Contact/Relationship.php | 14 +- .../CRM/Report/Form/Contribute/History.php | 10 +- .../Form/Contribute/HouseholdSummary.php | 6 +- civicrm/CRM/Report/Form/Contribute/Lybunt.php | 4 +- .../Form/Contribute/OrganizationSummary.php | 6 +- civicrm/CRM/Report/Form/Contribute/PCP.php | 6 +- civicrm/CRM/Report/Form/Contribute/Repeat.php | 32 +- .../CRM/Report/Form/Contribute/SoftCredit.php | 24 +- .../CRM/Report/Form/Contribute/Summary.php | 16 +- civicrm/CRM/Report/Form/Contribute/Sybunt.php | 14 +- .../CRM/Report/Form/Contribute/TopDonor.php | 6 +- .../Report/Form/Event/IncomeCountSummary.php | 6 +- civicrm/CRM/Report/Form/Event/Summary.php | 46 +- civicrm/CRM/Report/Form/Instance.php | 2 +- civicrm/CRM/Report/Form/Mailing/Bounce.php | 6 +- civicrm/CRM/Report/Form/Mailing/Summary.php | 6 +- civicrm/CRM/Report/Form/Member/Lapse.php | 6 +- .../CRM/Report/Form/Membership/Summary.php | 6 +- civicrm/CRM/Report/Form/Walklist/Walklist.php | 6 +- civicrm/CRM/SMS/Form/Provider.php | 4 +- civicrm/CRM/Tag/Form/Edit.php | 16 +- civicrm/CRM/Tag/Page/Tag.php | 2 +- civicrm/CRM/UF/Form/Field.php | 10 +- .../Upgrade/Incremental/MessageTemplates.php | 11 +- .../CRM/Upgrade/Incremental/php/FiveFour.php | 2 +- .../Incremental/php/FiveSixtyEight.php | 44 + .../Incremental/sql/5.68.alpha1.mysql.tpl | 11 + civicrm/CRM/Utils/Address.php | 8 +- civicrm/CRM/Utils/Address/BatchUpdate.php | 7 + civicrm/CRM/Utils/Array.php | 16 +- civicrm/CRM/Utils/Date.php | 12 +- civicrm/CRM/Utils/File.php | 9 +- civicrm/CRM/Utils/Hook.php | 16 +- civicrm/CRM/Utils/ICalendar.php | 55 + civicrm/CRM/Utils/Mail.php | 10 +- civicrm/CRM/Utils/String.php | 3 +- civicrm/CRM/Utils/System.php | 12 +- civicrm/CRM/Utils/System/Joomla.php | 4 +- civicrm/CRM/Utils/System/Standalone.php | 2 +- civicrm/CRM/Utils/Token.php | 39 +- civicrm/CRM/Utils/Wrapper.php | 2 +- civicrm/Civi/API/Api3SelectQuery.php | 4 +- civicrm/Civi/API/SelectQuery.php | 4 +- .../Civi/API/Subscriber/ChainSubscriber.php | 7 +- .../API/Subscriber/DynamicFKAuthorization.php | 2 +- civicrm/Civi/API/WhitelistRule.php | 2 +- civicrm/Civi/Angular/Manager.php | 32 +- civicrm/Civi/Angular/Page/Modules.php | 21 +- civicrm/Civi/Api4/Entity.php | 5 + civicrm/Civi/Api4/Generic/AbstractEntity.php | 9 + .../Civi/Api4/Generic/AutocompleteAction.php | 16 +- .../Api4/Generic/BasicGetFieldsAction.php | 8 +- civicrm/Civi/Api4/Generic/ExportAction.php | 75 +- .../Generic/Traits/ArrayQueryActionTrait.php | 8 +- .../Api4/Generic/Traits/DAOActionTrait.php | 2 +- .../Traits/SavedSearchInspectorTrait.php | 2 +- civicrm/Civi/Api4/Navigation.php | 1 + civicrm/Civi/Api4/OptionValue.php | 1 + civicrm/Civi/Api4/Query/Api4Query.php | 7 +- civicrm/Civi/Api4/Query/SqlExpression.php | 22 +- .../OptionValueAutocompleteProvider.php | 2 + .../Api4/Service/Schema/SchemaMapBuilder.php | 4 +- .../DashboardCreationSpecProvider.php | 38 + .../Provider/EntityTagFilterSpecProvider.php | 2 +- .../Spec/Provider/TagCreationSpecProvider.php | 2 + .../Civi/Api4/Service/Spec/SpecFormatter.php | 4 +- .../Civi/Api4/Service/Spec/SpecGatherer.php | 3 - civicrm/Civi/Api4/Tag.php | 1 + civicrm/Civi/Api4/Utils/CoreUtil.php | 47 +- civicrm/Civi/Core/Format.php | 15 +- civicrm/Civi/Core/SettingsManager.php | 2 +- civicrm/Civi/Core/SettingsMetadata.php | 2 +- civicrm/Civi/Managed/MultisiteManaged.php | 107 + civicrm/Civi/Test.php | 2 +- civicrm/Civi/Test/Api3TestTrait.php | 2 +- civicrm/Civi/Test/Api4TestTrait.php | 4 +- .../Civi/Test/ContributionPageTestTrait.php | 113 + civicrm/Civi/Test/EventTestTrait.php | 4 - civicrm/Civi/Test/FormTrait.php | 63 +- civicrm/Civi/Test/FormWrapper.php | 40 +- civicrm/Civi/Test/HttpTestTrait.php | 53 +- civicrm/Civi/Token/TokenRow.php | 4 +- .../Traits/AddressingTrait.php | 2 +- .../Traits/CustomFieldTrait.php | 67 + .../afform/afformQuickAddIndividual.aff.html | 18 + .../afform/afformQuickAddIndividual.aff.php | 14 + .../afformQuickAddOrganization.aff.html | 16 + .../afform/afformQuickAddOrganization.aff.php | 14 + civicrm/ang/afform/afsearchTabNote.aff.php | 2 +- civicrm/ang/afform/afsearchTabRel.aff.php | 2 +- civicrm/ang/crmUi.js | 2 + civicrm/api/api.php | 8 +- civicrm/api/v3/Activity.php | 2 +- civicrm/api/v3/Attachment.php | 8 +- civicrm/api/v3/Case.php | 2 +- civicrm/api/v3/Contact.php | 18 +- civicrm/api/v3/ContributionPage.php | 19 +- civicrm/api/v3/CustomValue.php | 2 +- civicrm/api/v3/Cxn.php | 2 +- civicrm/api/v3/Dedupe.php | 8 +- civicrm/api/v3/EntityTag.php | 5 +- civicrm/api/v3/Extension.php | 5 +- civicrm/api/v3/Generic.php | 8 +- civicrm/api/v3/Generic/Setvalue.php | 2 +- civicrm/api/v3/GroupContact.php | 10 +- civicrm/api/v3/Job.php | 23 +- civicrm/api/v3/LocBlock.php | 2 +- civicrm/api/v3/Logging.php | 4 +- civicrm/api/v3/Mailing.php | 2 +- civicrm/api/v3/Membership.php | 14 +- civicrm/api/v3/MembershipStatus.php | 2 +- civicrm/api/v3/Participant.php | 2 +- civicrm/api/v3/Profile.php | 12 +- civicrm/api/v3/Setting.php | 20 +- civicrm/api/v3/System.php | 4 +- civicrm/api/v3/Tag.php | 1 - civicrm/api/v3/utils.php | 38 +- ...mise-60df2490a63990439db23398a56349b2.json | 6 - .../bower_components/es6-promise/bower.json | 20 - .../es6-promise/es6-promise.auto.js | 1181 --- .../es6-promise/es6-promise.auto.map | 1 - .../es6-promise/es6-promise.auto.min.js | 1 - .../es6-promise/es6-promise.auto.min.map | 1 - .../es6-promise/es6-promise.js | 1179 --- .../es6-promise/es6-promise.map | 1 - .../es6-promise/es6-promise.min.js | 1 - .../es6-promise/es6-promise.min.map | 1 - civicrm/civicrm-version.php | 2 +- civicrm/composer.json | 8 +- civicrm/composer.lock | 98 +- civicrm/css/joomla.css | 47 +- .../Civi/AfformAdmin/AfformAdminMeta.php | 7 + civicrm/ext/afform/admin/ang/afAdmin.js | 2 +- .../ang/afAdmin/afAdminList.controller.js | 9 +- civicrm/ext/afform/admin/ang/afGuiEditor.js | 2 +- .../ang/afGuiEditor/afGuiEditor.component.js | 12 +- .../admin/ang/afGuiEditor/afGuiSearch.html | 8 + .../admin/ang/afGuiEditor/config-form.html | 43 +- .../afGuiEditor/elements/afGuiField-menu.html | 5 + .../elements/afGuiField.component.js | 14 + .../ang/afGuiEditor/inputType/Hidden.html | 1 + civicrm/ext/afform/admin/info.xml | 6 +- .../managed/Navigation_afform_admin.mgd.php | 16 +- .../afform/core/CRM/Afform/AfformScanner.php | 56 +- .../Civi/Afform/AngularDependencyMapper.php | 2 +- .../afform/core/Civi/Afform/StatusChecks.php | 27 +- .../ext/afform/core/Civi/Afform/Tokens.php | 4 +- civicrm/ext/afform/core/Civi/Afform/Utils.php | 22 + .../core/Civi/Api4/Action/Afform/Get.php | 19 +- .../core/Civi/Api4/Action/Afform/Revert.php | 10 +- civicrm/ext/afform/core/Civi/Api4/Afform.php | 35 +- .../Civi/Api4/Utils/AfformFormatTrait.php | 12 +- .../core/Civi/Api4/Utils/AfformSaveTrait.php | 17 +- civicrm/ext/afform/core/afform.php | 65 +- civicrm/ext/afform/core/ang/af.ang.php | 1 - .../afform/core/ang/af/afField.component.js | 3 + .../core/ang/af/afFieldset.directive.js | 23 +- .../afform/core/ang/af/afForm.component.js | 9 +- .../afform/core/ang/af/fields/EntityRef.html | 1 + .../ext/afform/core/ang/af/fields/Hidden.html | 1 + civicrm/ext/afform/core/ang/afCore.ang.php | 1 - .../afform/core/ang/afformStandalone.ang.php | 1 - civicrm/ext/afform/core/api/v3/Afform.php | 5 +- civicrm/ext/afform/core/info.xml | 6 +- .../core/managed/AfformPlacement.mgd.php | 109 + .../Civi/Afform/AfformContactSummaryTest.php | 16 +- .../Civi/Afform/AfformMetadataTest.php | 2 +- civicrm/ext/afform/html/info.xml | 6 +- civicrm/ext/afform/mock/info.xml | 6 +- .../api/v4/AfformAutocompleteUsageTest.php | 29 +- .../phpunit/api/v4/AfformContactUsageTest.php | 44 +- .../api/v4/AfformCustomFieldUsageTest.php | 15 +- .../phpunit/api/v4/AfformFileUploadTest.php | 22 +- .../phpunit/api/v4/AfformPrefillUsageTest.php | 10 +- .../api/v4/AfformRelationshipUsageTest.php | 13 +- .../phpunit/api/v4/AfformRoutingTest.php | 12 +- .../mock/tests/phpunit/api/v4/AfformTest.php | 60 +- .../phpunit/api/v4/AfformUsageTestCase.php | 8 +- civicrm/ext/authx/authx.php | 17 - civicrm/ext/authx/info.xml | 10 +- civicrm/ext/authx/xml/Menu/authx.xml | 8 - civicrm/ext/civi_campaign/info.xml | 6 +- civicrm/ext/civi_case/info.xml | 6 +- civicrm/ext/civi_contribute/info.xml | 6 +- .../Provider/EventCreationSpecProvider.php | 2 + .../Spec/Provider/EventGetSpecProvider.php | 59 + civicrm/ext/civi_event/info.xml | 6 +- civicrm/ext/civi_mail/info.xml | 6 +- civicrm/ext/civi_member/info.xml | 6 +- civicrm/ext/civi_pledge/info.xml | 6 +- civicrm/ext/civi_report/info.xml | 6 +- .../ang/afsearchAdminCustomFields.aff.php | 12 - .../ang/afsearchAdminCustomGroups.aff.php | 12 - .../ang/afsearchAdminFinancialTypes.aff.php | 12 - .../ang/afsearchAssignUsersToRoles.aff.php | 13 - .../afsearchAssignedFinancialAccounts.aff.php | 11 - .../ang/afsearchMailAccounts.aff.php | 12 - .../afsearchManageContributionPages.aff.php | 13 - .../ang/afsearchManageGroups.aff.php | 13 - .../ang/afsearchProfileFields.aff.php | 12 - .../ang/afsearchProfiles.aff.php | 12 - .../ang/afsearchRelationshipTypes.aff.php | 12 - .../ang/afsearchScheduledJobsLog.aff.php | 13 - civicrm/ext/civicrm_admin_ui/info.xml | 6 +- ...edSearch_Manage_Contribution_Pages.mgd.php | 3 +- .../ang/afsearchContactSearch.aff.php | 13 - .../ang/afsearchFindContributions.aff.php | 10 - civicrm/ext/civicrm_search_ui/info.xml | 6 +- .../managed/Navigation_Experimental.mgd.php | 4 +- civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php | 4 +- .../civigrant/CRM/Grant/Form/GrantView.php | 9 +- .../civigrant/CRM/Grant/Selector/Search.php | 2 +- .../civigrant/ang/afsearchTabGrant.aff.php | 2 +- civicrm/ext/civigrant/info.xml | 6 +- .../templates/CRM/Grant/Form/Grant.tpl | 2 - civicrm/ext/civigrant/xml/Menu/Grant.xml | 5 +- .../civigrant/xml/schema/CRM/Grant/Grant.xml | 2 +- .../Event/Subscriber/ImportSubscriber.php | 3 - .../civiimport/ang/afsearchAllImports.aff.php | 11 - .../civiimport/ang/afsearchMyImports.aff.php | 12 - .../civiimport/ang/afsearchTemplates.aff.php | 11 - civicrm/ext/civiimport/info.xml | 8 +- civicrm/ext/ckeditor4/info.xml | 6 +- .../ext/contributioncancelactions/info.xml | 6 +- civicrm/ext/elavon/info.xml | 6 +- civicrm/ext/eventcart/info.xml | 6 +- civicrm/ext/ewaysingle/info.xml | 6 +- civicrm/ext/financialacls/financialacls.php | 19 +- civicrm/ext/financialacls/info.xml | 6 +- .../settings/financialacls.setting.php | 2 +- .../Civi/Financialacls/FinancialTypeTest.php | 88 +- civicrm/ext/flexmailer/info.xml | 6 +- .../ext/flexmailer/src/API/MailingPreview.php | 2 +- .../ClickTracker/TextClickTrackerTest.php | 13 +- civicrm/ext/greenwich/info.xml | 6 +- civicrm/ext/legacycustomsearches/info.xml | 6 +- .../managed/Navigation.mgd.php | 24 +- civicrm/ext/message_admin/info.xml | 6 +- civicrm/ext/oauth-client/info.xml | 6 +- civicrm/ext/payflowpro/info.xml | 6 +- civicrm/ext/recaptcha/info.xml | 8 +- civicrm/ext/recaptcha/recaptcha.php | 15 - civicrm/ext/recaptcha/xml/Menu/recaptcha.xml | 11 - civicrm/ext/scheduled_communications/info.xml | 6 +- .../SearchDisplay/AbstractRunAction.php | 2 +- .../Api4/Action/SearchDisplay/Download.php | 2 + .../Civi/Api4/Action/SearchDisplay/Run.php | 2 +- .../SearchDisplayCreationSpecProvider.php | 3 +- .../SearchSegmentExtraFieldProvider.php | 5 + civicrm/ext/search_kit/Civi/Search/Admin.php | 4 +- .../search_kit/ang/crmSearchAdmin.module.js | 2 +- .../crmSearchAdminLinkGroup.component.js | 6 +- .../crmSearchAdminTags.component.js | 4 +- .../crmSearchAdmin/crmSearchAdminTags.html | 6 +- .../crmSearchFunction.component.js | 4 +- .../common/searchAdminCssRules.component.js | 7 +- .../common/searchAdminIcons.component.js | 7 +- .../crmSearchInputVal.component.js | 2 +- .../crmSearchTasks/crmSearchInput/date.html | 2 +- .../crmSearchTasks/crmSearchTaskTag.ctrl.js | 8 +- .../ang/crmSearchTasks/crmSearchTaskTag.html | 2 +- civicrm/ext/search_kit/css/crmSearchAdmin.css | 2 +- civicrm/ext/search_kit/info.xml | 6 +- .../managed/Navigation_search_kit.mgd.php | 16 +- .../v4/SearchDisplay/SearchDisplayTest.php | 21 +- .../v4/SearchDisplay/SearchDownloadTest.php | 5 + .../api/v4/SearchDisplay/SearchExportTest.php | 4 + .../api/v4/SearchDisplay/SearchRunTest.php | 28 +- .../SearchRunWithCustomFieldTest.php | 86 + .../v4/SearchSegment/SearchSegmentTest.php | 8 +- civicrm/ext/sequentialcreditnotes/info.xml | 6 +- .../CRM/Standaloneusers/Upgrader.php | 6 +- .../Civi/Api4/Action/User/PasswordReset.php | 4 +- .../Api4/Action/User/SendPasswordReset.php | 2 +- .../ang/afformEditRole.aff.php | 11 - .../ang/afformEditUserAccount.aff.php | 11 - .../afsearchAdministerUserAccounts.aff.php | 11 - .../ang/afsearchUserRoles.aff.php | 10 - civicrm/ext/standaloneusers/info.xml | 6 +- .../ang/afsearchUserDashboard.aff.php | 32 + civicrm/ext/user_dashboard/info.xml | 36 + .../managed/Dashboard_Tag.mgd.php | 27 + ...vedSearch_UserDashboard_Activities.mgd.php | 175 + .../SavedSearch_UserDashboard_Groups.mgd.php | 149 + .../SavedSearch_UserDashboard_Pledges.mgd.php | 146 + .../UserDashboard_Contributions.mgd.php | 114 + .../managed/UserDashboard_Events.mgd.php | 106 + .../managed/UserDashboard_Memberships.mgd.php | 114 + .../managed/UserDashboard_PCPs.mgd.php | 98 + .../UserDashboard_Relationships.mgd.php | 143 + .../user_dashboard/user_dashboard.civix.php | 200 + civicrm/ext/user_dashboard/user_dashboard.php | 80 + civicrm/js/Common.js | 73 +- civicrm/mixin/setting-admin@1/mixin.php | 214 + civicrm/release-notes.md | 32 +- civicrm/release-notes/5.67.0.md | 11 +- civicrm/release-notes/5.67.1.md | 48 - civicrm/release-notes/5.67.2.md | 45 - civicrm/release-notes/5.67.3.md | 43 - civicrm/release-notes/5.68.0.md | 907 ++ civicrm/setup/src/Setup/SmartyUtil.php | 3 +- civicrm/sql/civicrm.mysql | 17 +- civicrm/sql/civicrm_data.mysql | 602 +- .../sql/civicrm_data/civicrm_tag.sqldata.php | 20 +- civicrm/sql/civicrm_generated.mysql | 8721 +++++++++-------- civicrm/templates/CRM/Admin/Form/Job.tpl | 54 +- .../CRM/Admin/Form/MessageTemplates.tpl | 5 +- .../templates/CRM/Admin/Page/MailSettings.tpl | 5 +- .../templates/CRM/Admin/Page/Reminders.tpl | 2 +- civicrm/templates/CRM/Case/Form/Activity.tpl | 9 +- civicrm/templates/CRM/Case/Form/CaseView.tpl | 4 +- .../CRM/Contact/Form/Edit/Organization.tpl | 20 +- .../Form/Inline/CommunicationPreferences.tpl | 3 +- .../templates/CRM/Contact/Form/Task/Email.hlp | 12 +- .../Contribute/Form/Contribution/Confirm.tpl | 8 +- .../CRM/Contribute/Form/Contribution/Main.tpl | 25 +- .../Form/Contribution/PremiumBlock.tpl | 2 +- .../Form/ContributionPage/Amount.tpl | 15 +- .../CRM/Custom/Form/Edit/CustomField.tpl | 7 +- civicrm/templates/CRM/Custom/Form/Field.tpl | 4 +- civicrm/templates/CRM/Custom/Form/Group.tpl | 2 +- .../CRM/Event/Form/ManageEvent/Fee.tpl | 4 - .../templates/CRM/Event/Page/DashBoard.tpl | 2 +- civicrm/templates/CRM/Form/validate.tpl | 2 +- civicrm/templates/CRM/PCP/Form/PCP.tpl | 2 +- civicrm/templates/CRM/Pledge/Form/Pledge.tpl | 7 +- .../templates/CRM/Pledge/Form/Selector.tpl | 2 +- .../CRM/Pledge/Page/UserDashboard.tpl | 2 +- civicrm/templates/CRM/Price/Form/Field.tpl | 20 +- civicrm/templates/CRM/Price/Form/Option.tpl | 8 +- civicrm/templates/CRM/Price/Form/PriceSet.tpl | 26 +- civicrm/templates/CRM/Price/Page/Option.tpl | 6 +- .../templates/CRM/Profile/Form/Dynamic.tpl | 4 +- civicrm/templates/CRM/Tag/Form/Edit.tpl | 4 +- civicrm/templates/CRM/Tag/Page/Tag.tpl | 12 +- civicrm/templates/CRM/common/joomla.tpl | 29 +- civicrm/templates/CRM/common/l10n.js.tpl | 6 +- civicrm/vendor/autoload.php | 2 +- civicrm/vendor/composer/autoload_psr4.php | 2 +- civicrm/vendor/composer/autoload_real.php | 14 +- civicrm/vendor/composer/autoload_static.php | 26 +- civicrm/vendor/composer/installed.json | 107 +- civicrm/vendor/composer/installed.php | 30 +- civicrm/vendor/html2text/html2text/.gitignore | 3 - .../vendor/html2text/html2text/.travis.yml | 18 - .../vendor/html2text/html2text/PATCHES.txt | 7 - civicrm/vendor/html2text/html2text/README.md | 26 - .../vendor/html2text/html2text/composer.json | 16 - .../html2text/html2text/phpunit.xml.dist | 17 - .../html2text/html2text/src/Html2Text.php | 659 -- .../soundasleep/html2text/.editorconfig | 23 + .../html2text/.github/workflows/lint.yml | 17 + .../html2text/.github/workflows/test.yml | 41 + .../vendor/soundasleep/html2text/.gitignore | 7 + .../vendor/soundasleep/html2text/CHANGELOG.md | 37 + .../vendor/soundasleep/html2text/LICENSE.md | 21 + .../vendor/soundasleep/html2text/README.md | 102 + .../soundasleep/html2text/composer.json | 32 + .../vendor/soundasleep/html2text/convert.php | 21 + .../soundasleep/html2text/html2text.php | 16 + .../soundasleep/html2text/phpstan.neon.dist | 7 + .../vendor/soundasleep/html2text/phpunit.xml | 8 + .../soundasleep/html2text/src/Html2Text.php | 540 + .../html2text/src/Html2TextException.php | 15 + civicrm/xml/schema/ACL/ACL.xml | 2 + .../xml/schema/Contact/DashboardContact.xml | 2 + civicrm/xml/schema/Core/Dashboard.xml | 1 + civicrm/xml/schema/Core/EntityTag.xml | 3 +- civicrm/xml/schema/Core/Managed.xml | 17 +- civicrm/xml/schema/Core/Tag.xml | 29 +- civicrm/xml/schema/Event/Event.xml | 1 + civicrm/xml/schema/Mailing/Mailing.xml | 5 +- .../schema/Mailing/MailingTrackableURL.xml | 3 + .../xml/templates/civicrm_msg_template.tpl | 86 +- .../xml/templates/civicrm_state_province.tpl | 13 +- .../event_offline_receipt_html.tpl | 6 +- .../event_offline_receipt_text.tpl | 233 - .../event_online_receipt_html.tpl | 6 +- .../event_online_receipt_text.tpl | 6 +- .../membership_online_receipt_html.tpl | 2 - civicrm/xml/version.xml | 2 +- 562 files changed, 12972 insertions(+), 12076 deletions(-) create mode 100644 civicrm/CRM/Contribute/Form/ContributeFormTrait.php create mode 100644 civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php create mode 100644 civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl create mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php create mode 100644 civicrm/Civi/Managed/MultisiteManaged.php create mode 100644 civicrm/Civi/Test/ContributionPageTestTrait.php create mode 100644 civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php create mode 100644 civicrm/ang/afform/afformQuickAddIndividual.aff.html create mode 100644 civicrm/ang/afform/afformQuickAddIndividual.aff.php create mode 100644 civicrm/ang/afform/afformQuickAddOrganization.aff.html create mode 100644 civicrm/ang/afform/afformQuickAddOrganization.aff.php delete mode 100644 civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json delete mode 100644 civicrm/bower_components/es6-promise/bower.json delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.auto.js delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.auto.map delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.auto.min.js delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.auto.min.map delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.js delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.map delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.min.js delete mode 100644 civicrm/bower_components/es6-promise/es6-promise.min.map create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html create mode 100644 civicrm/ext/afform/core/ang/af/fields/Hidden.html create mode 100644 civicrm/ext/afform/core/managed/AfformPlacement.mgd.php create mode 100644 civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php delete mode 100644 civicrm/ext/recaptcha/xml/Menu/recaptcha.xml create mode 100644 civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php create mode 100644 civicrm/ext/user_dashboard/info.xml create mode 100644 civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php create mode 100644 civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php create mode 100644 civicrm/ext/user_dashboard/user_dashboard.civix.php create mode 100644 civicrm/ext/user_dashboard/user_dashboard.php create mode 100644 civicrm/mixin/setting-admin@1/mixin.php delete mode 100644 civicrm/release-notes/5.67.1.md delete mode 100644 civicrm/release-notes/5.67.2.md delete mode 100644 civicrm/release-notes/5.67.3.md create mode 100644 civicrm/release-notes/5.68.0.md delete mode 100644 civicrm/vendor/html2text/html2text/.gitignore delete mode 100644 civicrm/vendor/html2text/html2text/.travis.yml delete mode 100644 civicrm/vendor/html2text/html2text/PATCHES.txt delete mode 100644 civicrm/vendor/html2text/html2text/README.md delete mode 100644 civicrm/vendor/html2text/html2text/composer.json delete mode 100644 civicrm/vendor/html2text/html2text/phpunit.xml.dist delete mode 100644 civicrm/vendor/html2text/html2text/src/Html2Text.php create mode 100644 civicrm/vendor/soundasleep/html2text/.editorconfig create mode 100644 civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml create mode 100644 civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml create mode 100644 civicrm/vendor/soundasleep/html2text/.gitignore create mode 100644 civicrm/vendor/soundasleep/html2text/CHANGELOG.md create mode 100644 civicrm/vendor/soundasleep/html2text/LICENSE.md create mode 100644 civicrm/vendor/soundasleep/html2text/README.md create mode 100644 civicrm/vendor/soundasleep/html2text/composer.json create mode 100644 civicrm/vendor/soundasleep/html2text/convert.php create mode 100644 civicrm/vendor/soundasleep/html2text/html2text.php create mode 100644 civicrm/vendor/soundasleep/html2text/phpstan.neon.dist create mode 100644 civicrm/vendor/soundasleep/html2text/phpunit.xml create mode 100644 civicrm/vendor/soundasleep/html2text/src/Html2Text.php create mode 100644 civicrm/vendor/soundasleep/html2text/src/Html2TextException.php diff --git a/civicrm.php b/civicrm.php index 78eed4c779..343ff49bd7 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,7 +2,7 @@ /** * Plugin Name: CiviCRM * Description: CiviCRM - Growing and Sustaining Relationships - * Version: 5.67.3 + * Version: 5.68.0 * Requires at least: 4.9 * Requires PHP: 7.3 * Author: CiviCRM LLC @@ -36,7 +36,7 @@ if (!defined('ABSPATH')) { } // Set version here: changing it forces Javascript and CSS to reload. -define('CIVICRM_PLUGIN_VERSION', '5.67.3'); +define('CIVICRM_PLUGIN_VERSION', '5.68.0'); // Store reference to this file. if (!defined('CIVICRM_PLUGIN_FILE')) { diff --git a/civicrm/CRM/ACL/DAO/ACL.php b/civicrm/CRM/ACL/DAO/ACL.php index 0a9b48d468..b9b28c82b0 100644 --- a/civicrm/CRM/ACL/DAO/ACL.php +++ b/civicrm/CRM/ACL/DAO/ACL.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/ACL/ACL.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:56266204b43a487af7bf9963d23e0556) + * (GenCodeChecksum:d49159426e04e1bab16768e2f7ed9551) */ /** @@ -135,7 +135,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { /** * Is this property active? * - * @var bool|string|null + * @var bool|string * (SQL type: tinyint) * Note that values will be retrieved from the database as a string. */ @@ -425,6 +425,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('ACL Is Active?'), 'description' => ts('Is this property active?'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -432,6 +433,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'token' => FALSE, ], 'where' => 'civicrm_acl.is_active', + 'default' => '1', 'table_name' => 'civicrm_acl', 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', diff --git a/civicrm/CRM/ACL/Form/ACL.php b/civicrm/CRM/ACL/Form/ACL.php index b4f52a7c74..5f5c5b88a5 100644 --- a/civicrm/CRM/ACL/Form/ACL.php +++ b/civicrm/CRM/ACL/Form/ACL.php @@ -256,7 +256,7 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { } else { $params = $this->controller->exportValues($this->_name); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['entity_table'] = 'civicrm_acl_role'; // Figure out which type of object we're permissioning on and set object_table and object_id. diff --git a/civicrm/CRM/Activity/Form/Activity.php b/civicrm/CRM/Activity/Form/Activity.php index 001ea75742..cefbe57ae3 100644 --- a/civicrm/CRM/Activity/Form/Activity.php +++ b/civicrm/CRM/Activity/Form/Activity.php @@ -550,12 +550,8 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { if (isset($this->_activityId)) { if ($this->_context !== 'standalone') { - $this->assign('target_contact_value', - CRM_Utils_Array::value('target_contact_value', $defaults) - ); - $this->assign('assignee_contact_value', - CRM_Utils_Array::value('assignee_contact_value', $defaults) - ); + $this->assign('target_contact_value', $defaults['target_contact_value'] ?? NULL); + $this->assign('assignee_contact_value', $defaults['assignee_contact_value'] ?? NULL); } // Fixme: why are we getting the wrong keys from upstream? @@ -596,7 +592,7 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { } if ($this->_action & (CRM_Core_Action::DELETE | CRM_Core_Action::RENEW)) { - $this->assign('delName', CRM_Utils_Array::value('subject', $defaults)); + $this->assign('delName', $defaults['subject'] ?? NULL); } if ($this->_activityTypeFile) { @@ -679,13 +675,13 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { $this->addEntityRef($field, $values['label'], $attribute, $required); } else { - $this->add($values['type'], $field, $values['label'], $attribute, $required, CRM_Utils_Array::value('extra', $values)); + $this->add($values['type'], $field, $values['label'], $attribute, $required, $values['extra'] ?? NULL); } } } // CRM-7362 --add campaigns. - CRM_Campaign_BAO_Campaign::addCampaign($this, CRM_Utils_Array::value('campaign_id', $this->_values)); + CRM_Campaign_BAO_Campaign::addCampaign($this, $this->_values['campaign_id'] ?? NULL); // Add engagement level CRM-7775 $buildEngagementLevel = FALSE; diff --git a/civicrm/CRM/Activity/Selector/Activity.php b/civicrm/CRM/Activity/Selector/Activity.php index f8682ae5a7..d6a2af75e6 100644 --- a/civicrm/CRM/Activity/Selector/Activity.php +++ b/civicrm/CRM/Activity/Selector/Activity.php @@ -417,11 +417,11 @@ class CRM_Activity_Selector_Activity extends CRM_Core_Selector_Base implements C $row['engagement_level'] = CRM_Utils_Array::value($engagementLevel, $engagementLevels, $engagementLevel); } - $actionLinks = $this->actionLinks(CRM_Utils_Array::value('activity_type_id', $row), - CRM_Utils_Array::value('source_record_id', $row), + $actionLinks = $this->actionLinks($row['activity_type_id'], + $row['source_record_id'] ?? NULL, // CRM-3553 !empty($row['mailingId']), - CRM_Utils_Array::value('activity_id', $row), + $row['activity_id'] ?? NULL, $this->_key ); diff --git a/civicrm/CRM/Admin/Form/MailSettings.php b/civicrm/CRM/Admin/Form/MailSettings.php index acdc5744da..833c0de137 100644 --- a/civicrm/CRM/Admin/Form/MailSettings.php +++ b/civicrm/CRM/Admin/Form/MailSettings.php @@ -211,7 +211,7 @@ class CRM_Admin_Form_MailSettings extends CRM_Admin_Form { 'is_contact_creation_disabled_if_no_match', 'is_active', ])) { - $params[$f] = CRM_Utils_Array::value($f, $formValues, FALSE); + $params[$f] = $formValues[$f] ?? FALSE; } else { $params[$f] = $formValues[$f] ?? NULL; diff --git a/civicrm/CRM/Admin/Form/ParticipantStatusType.php b/civicrm/CRM/Admin/Form/ParticipantStatusType.php index a3097c7de7..7eb9523568 100644 --- a/civicrm/CRM/Admin/Form/ParticipantStatusType.php +++ b/civicrm/CRM/Admin/Form/ParticipantStatusType.php @@ -119,7 +119,7 @@ class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form { } $params['weight'] = CRM_Utils_Weight::updateOtherWeights('CRM_Event_DAO_ParticipantStatusType', $oldWeight, $params['weight']); - $participantStatus = CRM_Event_BAO_ParticipantStatusType::create($params); + $participantStatus = CRM_Event_BAO_ParticipantStatusType::writeRecord($params); if ($participantStatus->id) { if ($this->_action & CRM_Core_Action::UPDATE) { diff --git a/civicrm/CRM/Admin/Form/PaymentProcessorType.php b/civicrm/CRM/Admin/Form/PaymentProcessorType.php index 2259920ef8..8543723e85 100644 --- a/civicrm/CRM/Admin/Form/PaymentProcessorType.php +++ b/civicrm/CRM/Admin/Form/PaymentProcessorType.php @@ -146,7 +146,7 @@ class CRM_Admin_Form_PaymentProcessorType extends CRM_Admin_Form { $attributes = CRM_Core_DAO::getAttribute('CRM_Financial_DAO_PaymentProcessorType'); foreach ($this->_fields as $field) { - $required = CRM_Utils_Array::value('required', $field, FALSE); + $required = $field['required'] ?? FALSE; $this->add('text', $field['name'], $field['label'], $attributes['name'], $required ); @@ -210,9 +210,9 @@ UPDATE civicrm_payment_processor SET is_default = 0"; $dao = new CRM_Financial_DAO_PaymentProcessorType(); $dao->id = $this->_id; - $dao->is_default = CRM_Utils_Array::value('is_default', $values, 0); - $dao->is_active = CRM_Utils_Array::value('is_active', $values, 0); - $dao->is_recur = CRM_Utils_Array::value('is_recur', $values, 0); + $dao->is_default = $values['is_default'] ?? 0; + $dao->is_active = $values['is_active'] ?? 0; + $dao->is_recur = $values['is_recur'] ?? 0; $dao->name = $values['name']; $dao->description = $values['description']; diff --git a/civicrm/CRM/Admin/Form/Preferences/Contribute.php b/civicrm/CRM/Admin/Form/Preferences/Contribute.php index 7729a1f170..e6182123ee 100644 --- a/civicrm/CRM/Admin/Form/Preferences/Contribute.php +++ b/civicrm/CRM/Admin/Form/Preferences/Contribute.php @@ -167,7 +167,7 @@ class CRM_Admin_Form_Preferences_Contribute extends CRM_Admin_Form_Preferences { // too. This means that saving from api will not have the desired core effect. // but we should fix that elsewhere - ie. stop abusing the settings // and fix the code repetition associated with invoicing - $invoiceParams['invoicing'] = CRM_Utils_Array::value('invoicing', $params, 0); + $invoiceParams['invoicing'] = $params['invoicing'] ?? 0; Civi::settings()->set('contribution_invoice_settings', $invoiceParams); parent::postProcess(); } diff --git a/civicrm/CRM/Admin/Form/RelationshipType.php b/civicrm/CRM/Admin/Form/RelationshipType.php index ce43206171..c3c07573dd 100644 --- a/civicrm/CRM/Admin/Form/RelationshipType.php +++ b/civicrm/CRM/Admin/Form/RelationshipType.php @@ -141,7 +141,7 @@ class CRM_Admin_Form_RelationshipType extends CRM_Admin_Form { else { // store the submitted values in an array $params = $this->exportValues(); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; if ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; diff --git a/civicrm/CRM/Admin/Page/AJAX.php b/civicrm/CRM/Admin/Page/AJAX.php index cb151a57d8..5552495c49 100644 --- a/civicrm/CRM/Admin/Page/AJAX.php +++ b/civicrm/CRM/Admin/Page/AJAX.php @@ -86,7 +86,7 @@ class CRM_Admin_Page_AJAX { $result[] = [ 'key' => $key, 'value' => $allOptions[$key]['label'], - 'adv_search_legacy' => $allOptions[$key]['adv_search_legacy'], + 'adv_search_legacy' => $allOptions[$key]['adv_search_legacy'] ?? '', ]; } return $result; @@ -289,7 +289,7 @@ class CRM_Admin_Page_AJAX { $result = []; $whereClauses = ['is_tagset <> 1']; - $orderColumn = 'name'; + $orderColumn = 'label'; // fetch all child tags in Array('parent_tag' => array('child_tag_1', 'child_tag_2', ...)) format $childTagIDs = CRM_Core_BAO_Tag::getChildTags($substring); @@ -299,7 +299,7 @@ class CRM_Admin_Page_AJAX { $whereClauses[] = "parent_id = $parent"; } elseif ($substring) { - $whereClauses['substring'] = " name LIKE '%$substring%' "; + $whereClauses['substring'] = " label LIKE '%$substring%' "; if (!empty($parentIDs)) { $whereClauses['substring'] = sprintf(" %s OR id IN (%s) ", $whereClauses['substring'], implode(',', $parentIDs)); } @@ -327,7 +327,7 @@ class CRM_Admin_Page_AJAX { $usedFor = (array) explode(',', $dao->used_for); $tag = [ 'id' => $dao->id, - 'text' => $dao->name, + 'text' => $dao->label, 'a_attr' => [ 'class' => 'crm-tag-item', ], diff --git a/civicrm/CRM/Badge/BAO/Layout.php b/civicrm/CRM/Badge/BAO/Layout.php index c146c3a49c..e7443c3ef4 100644 --- a/civicrm/CRM/Badge/BAO/Layout.php +++ b/civicrm/CRM/Badge/BAO/Layout.php @@ -50,9 +50,9 @@ class CRM_Badge_BAO_Layout extends CRM_Core_DAO_PrintLabel { * @return object */ public static function create(&$params) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_default'] = $params['is_default'] ?? FALSE; + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; $params['label_type_id'] = CRM_Core_PseudoConstant::getKey('CRM_Core_DAO_PrintLabel', 'label_type_id', 'Event Badge'); diff --git a/civicrm/CRM/Badge/Form/Layout.php b/civicrm/CRM/Badge/Form/Layout.php index 661fb70ac3..6f5b9a4189 100644 --- a/civicrm/CRM/Badge/Form/Layout.php +++ b/civicrm/CRM/Badge/Form/Layout.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Token\TokenProcessor; + /** * * @package CRM @@ -49,21 +51,13 @@ class CRM_Badge_Form_Layout extends CRM_Admin_Form { $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_PrintLabel', 'title')); - // get the tokens - at the point of rendering the token processor is used so - // the only reason for this cut-down set of tokens is UI on this - // screen and / or historical. - $contactTokens = CRM_Core_SelectValues::contactTokens(); - $eventTokens = [ - '{event.event_id}' => ts('Event ID'), - '{event.title}' => ts('Event Title'), - // This layout selection is day + month eg October 27th - // obviously someone felt year was not logical for dates. - '{event.start_date|crmDate:"%B %E%f"}' => ts('Event Start Date'), - '{event.end_date|crmDate:"%B %E%f"}' => ts('Event End Date'), - ]; - $participantTokens = CRM_Core_SelectValues::participantTokens(); - - $tokens = array_merge($contactTokens, $eventTokens, $participantTokens); + $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['participantId', 'contactId', 'eventId']]); + $tokens = $tokenProcessor->listTokens(); + // This layout selection is day + month eg October 27th + // obviously someone felt year was not logical for dates. + $tokens['{event.start_date|crmDate:"%B %E%f"}'] = ts('Event Start Date - Day & Month'); + $tokens[] = ts('Event End Date - Day & Month'); + asort($tokens); $tokens = array_merge(['spacer' => ts('- spacer -')] + $tokens); diff --git a/civicrm/CRM/Campaign/BAO/Petition.php b/civicrm/CRM/Campaign/BAO/Petition.php index 887370953f..7cd48e5404 100644 --- a/civicrm/CRM/Campaign/BAO/Petition.php +++ b/civicrm/CRM/Campaign/BAO/Petition.php @@ -38,12 +38,12 @@ class CRM_Campaign_BAO_Petition extends CRM_Campaign_BAO_Survey { * Takes an associative array and creates a petition signature activity. * * @param array $params - * (reference ) an assoc array of name/value pairs. + * an assoc array of name/value pairs. * * @return mixed * CRM_Campaign_BAO_Petition or NULl or void */ - public function createSignature(&$params) { + public function createSignature($params) { if (empty($params)) { return NULL; } @@ -102,33 +102,24 @@ class CRM_Campaign_BAO_Petition extends CRM_Campaign_BAO_Survey { * @return bool */ public function confirmSignature($activity_id, $contact_id, $petition_id) { - // change activity status to completed (status_id = 2) - // I wonder why do we need contact_id when we have activity_id anyway? [chastell] - $sql = 'UPDATE civicrm_activity SET status_id = 2 WHERE id = %1'; - $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); - $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); - $params = [ - 1 => [$activity_id, 'Integer'], - 2 => [$contact_id, 'Integer'], - 3 => [$sourceID, 'Integer'], - ]; - CRM_Core_DAO::executeQuery($sql, $params); + // change activity status to completed + \Civi\Api4\Activity::update(FALSE) + ->addValue('status_id:name', 'Completed') + ->addWhere('id', '=', $activity_id) + ->execute(); + \Civi\Api4\ActivityContact::update(FALSE) + ->addValue('contact_id', $contact_id) + ->addWhere('activity_id', '=', $activity_id) + ->addWhere('record_type_id:name', '=', 'Activity Source') + ->execute(); - $sql = 'UPDATE civicrm_activity_contact SET contact_id = %2 WHERE activity_id = %1 AND record_type_id = %3'; - CRM_Core_DAO::executeQuery($sql, $params); // remove 'Unconfirmed' tag for this contact - $tag_name = Civi::settings()->get('tag_unconfirmed'); + \Civi\Api4\EntityTag::delete(FALSE) + ->addWhere('tag_id:name', '=', Civi::settings()->get('tag_unconfirmed')) + ->addWhere('entity_table', '=', 'civicrm_contact') + ->addWhere('entity_id', '=', $contact_id) + ->execute(); - $sql = " -DELETE FROM civicrm_entity_tag -WHERE entity_table = 'civicrm_contact' -AND entity_id = %1 -AND tag_id = ( SELECT id FROM civicrm_tag WHERE name = %2 )"; - $params = [ - 1 => [$contact_id, 'Integer'], - 2 => [$tag_name, 'String'], - ]; - CRM_Core_DAO::executeQuery($sql, $params); // validate arguments to setcookie are numeric to prevent header manipulation if (isset($petition_id) && is_numeric($petition_id) && isset($activity_id) && is_numeric($activity_id)) { diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php index c6aa2dc2cb..f0220a12b2 100644 --- a/civicrm/CRM/Campaign/BAO/Survey.php +++ b/civicrm/CRM/Campaign/BAO/Survey.php @@ -674,7 +674,7 @@ INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a ); $menuLinks[] = sprintf('<a href="%s" class="action-item crm-hover-button" title="%s">%s</a>', $urlPath, - CRM_Utils_Array::value('title', $link), + $link['title'] ?? NULL, $link['title'] ); } diff --git a/civicrm/CRM/Campaign/Form/Campaign.php b/civicrm/CRM/Campaign/Form/Campaign.php index 7feef215f2..f5a1c523bb 100644 --- a/civicrm/CRM/Campaign/Form/Campaign.php +++ b/civicrm/CRM/Campaign/Form/Campaign.php @@ -291,7 +291,7 @@ class CRM_Campaign_Form_Campaign extends CRM_Core_Form { $params['created_date'] = date('YmdHis'); } // format params - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); $result = self::submit($params, $this); diff --git a/civicrm/CRM/Campaign/Form/Petition.php b/civicrm/CRM/Campaign/Form/Petition.php index 1cbd72d69b..55a7377984 100644 --- a/civicrm/CRM/Campaign/Form/Petition.php +++ b/civicrm/CRM/Campaign/Form/Petition.php @@ -291,7 +291,7 @@ WHERE $whereClause $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); + $params['is_share'] = $params['is_share'] ?? FALSE; if ($this->_surveyId) { @@ -309,9 +309,9 @@ WHERE $whereClause $params['created_date'] = date('YmdHis'); } - $params['bypass_confirm'] = CRM_Utils_Array::value('bypass_confirm', $params, 0); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, 0); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, 0); + $params['bypass_confirm'] = $params['bypass_confirm'] ?? 0; + $params['is_active'] = $params['is_active'] ?? 0; + $params['is_default'] = $params['is_default'] ?? 0; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->getEntityId(), $this->getDefaultEntity()); diff --git a/civicrm/CRM/Campaign/Form/Petition/Signature.php b/civicrm/CRM/Campaign/Form/Petition/Signature.php index aed16cd246..42e8ef2ec0 100644 --- a/civicrm/CRM/Campaign/Form/Petition/Signature.php +++ b/civicrm/CRM/Campaign/Form/Petition/Signature.php @@ -345,13 +345,15 @@ class CRM_Campaign_Form_Petition_Signature extends CRM_Core_Form { $tag_name = Civi::settings()->get('tag_unconfirmed'); if ($tag_name) { - // Check if contact 'email confirmed' tag exists, else create one + // Check if contact 'Unconfirmed' tag exists, else create one // This should be in the petition module initialise code to create a default tag for this $tag_params['name'] = $tag_name; $tag_params['version'] = 3; $tag = civicrm_api('tag', 'get', $tag_params); if ($tag['count'] == 0) { //create tag + $tag_params['label'] = ts('Unconfirmed'); + $tag_params['color'] = '#ffdd00'; $tag_params['description'] = $tag_name; $tag_params['is_reserved'] = 1; $tag_params['used_for'] = 'civicrm_contact'; diff --git a/civicrm/CRM/Campaign/Form/Survey.php b/civicrm/CRM/Campaign/Form/Survey.php index 7b533d4d24..74d1563dad 100644 --- a/civicrm/CRM/Campaign/Form/Survey.php +++ b/civicrm/CRM/Campaign/Form/Survey.php @@ -86,6 +86,7 @@ class CRM_Campaign_Form_Survey extends CRM_Core_Form { // CRM-11480, CRM-11682 // Preload libraries required by the "Questions" tab + $this->assign('perm', (bool) CRM_Core_Permission::check('administer CiviCRM')); CRM_UF_Page_ProfileEditor::registerProfileScripts(); CRM_UF_Page_ProfileEditor::registerSchemas(['IndividualModel', 'ActivityModel']); diff --git a/civicrm/CRM/Campaign/Form/Survey/Main.php b/civicrm/CRM/Campaign/Form/Survey/Main.php index 2aca9a250b..e23617951b 100644 --- a/civicrm/CRM/Campaign/Form/Survey/Main.php +++ b/civicrm/CRM/Campaign/Form/Survey/Main.php @@ -155,8 +155,8 @@ class CRM_Campaign_Form_Survey_Main extends CRM_Campaign_Form_Survey { $params['created_date'] = date('YmdHis'); } - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, 0); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, 0); + $params['is_active'] = $params['is_active'] ?? 0; + $params['is_default'] = $params['is_default'] ?? 0; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->getEntityId(), $this->getDefaultEntity()); diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php index 6236287a30..69e15a5585 100644 --- a/civicrm/CRM/Campaign/Page/AJAX.php +++ b/civicrm/CRM/Campaign/Page/AJAX.php @@ -254,9 +254,9 @@ class CRM_Campaign_Page_AJAX { TRUE, FALSE, FALSE, FALSE, FALSE, - CRM_Utils_Array::value('whereClause', $voterClause), + $voterClause['whereClause'] ?? NULL, NULL, - CRM_Utils_Array::value('fromClause', $voterClause) + $voterClause['fromClause'] ?? NULL ); $iTotal = $searchCount; @@ -287,9 +287,9 @@ class CRM_Campaign_Page_AJAX { FALSE, FALSE, FALSE, FALSE, FALSE, - CRM_Utils_Array::value('whereClause', $voterClause), + $voterClause['whereClause'] ?? NULL, $sortOrder, - CRM_Utils_Array::value('fromClause', $voterClause) + $voterClause['fromClause'] ?? NULL ); while ($result->fetch()) { $contactID = $result->contact_id; diff --git a/civicrm/CRM/Case/Form/Activity.php b/civicrm/CRM/Case/Form/Activity.php index e959a94232..6a82870900 100644 --- a/civicrm/CRM/Case/Form/Activity.php +++ b/civicrm/CRM/Case/Form/Activity.php @@ -203,10 +203,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { } $this->assign('targetContactValues', empty($targetContactValues) ? FALSE : $targetContactValues); - if (isset($this->_encounterMedium)) { - $this->_defaults['medium_id'] = $this->_encounterMedium; - } - elseif (empty($this->_defaults['medium_id'])) { + if (empty($this->_defaults['medium_id'])) { // set default encounter medium CRM-4816 $medium = CRM_Core_OptionGroup::values('encounter_medium', FALSE, FALSE, FALSE, 'AND is_default = 1'); if (count($medium) == 1) { @@ -266,22 +263,13 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { $this->assign('urlPath', 'civicrm/case/activity'); - $encounterMediums = CRM_Case_PseudoConstant::encounterMedium(); - if ($this->_activityTypeFile == 'OpenCase' && $this->_action == CRM_Core_Action::UPDATE) { $this->getElement('activity_date_time')->freeze(); - - if ($this->_activityId) { - // Fixme: what's the justification for this? It seems like it is just re-adding an option in case it is the default and disabled. - // Is that really a big problem? - $this->_encounterMedium = CRM_Core_DAO::getFieldValue('CRM_Activity_DAO_Activity', $this->_activityId, 'medium_id'); - if (!array_key_exists($this->_encounterMedium, $encounterMediums)) { - $encounterMediums[$this->_encounterMedium] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'medium_id', $this->_encounterMedium); - } - } } - $this->add('select', 'medium_id', ts('Medium'), $encounterMediums, TRUE); + $this->addSelect('medium_id'); + + // Related contacts $i = 0; foreach ($this->_caseId as $key => $val) { $this->_relatedContacts[] = $rgc = CRM_Case_BAO_Case::getRelatedAndGlobalContacts($val); @@ -394,7 +382,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { // store the submitted values in an array // Explanation for why we only check the is_unittest element: Prior to adding that check, there was no check and so any $params passed in would have been overwritten. Just in case somebody is passing in some non-null params and that broken code would have inadvertently been working, we can maintain backwards compatibility by only checking for the is_unittest parameter, and so that broken code will still work. At the same time this allows unit tests to pass in a $params without it getting overwritten. See also PR #2077 for some discussion of when the $params parameter was added as a passed in variable. if (empty($params['is_unittest'])) { - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); } //set parent id if its edit mode diff --git a/civicrm/CRM/Case/Form/CaseView.php b/civicrm/CRM/Case/Form/CaseView.php index bf50e3ec6a..6ef33b6d89 100644 --- a/civicrm/CRM/Case/Form/CaseView.php +++ b/civicrm/CRM/Case/Form/CaseView.php @@ -457,16 +457,16 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { 'entity_table' => 'civicrm_case', 'tag_id.parent_id.is_tagset' => 1, 'options' => ['limit' => 0], - 'return' => ["tag_id.parent_id", "tag_id.parent_id.name", "tag_id.name"], + 'return' => ["tag_id.parent_id", "tag_id.parent_id.label", "tag_id.label"], ]); foreach ($tagSetItems['values'] as $tag) { $tagSetTags += [ $tag['tag_id.parent_id'] => [ - 'name' => $tag['tag_id.parent_id.name'], + 'label' => $tag['tag_id.parent_id.label'], 'items' => [], ], ]; - $tagSetTags[$tag['tag_id.parent_id']]['items'][] = $tag['tag_id.name']; + $tagSetTags[$tag['tag_id.parent_id']]['items'][] = $tag['tag_id.label']; } } $this->assign('tagSetTags', $tagSetTags); diff --git a/civicrm/CRM/Case/Form/CustomData.php b/civicrm/CRM/Case/Form/CustomData.php index b1768b6342..47dbd939bd 100644 --- a/civicrm/CRM/Case/Form/CustomData.php +++ b/civicrm/CRM/Case/Form/CustomData.php @@ -110,7 +110,7 @@ class CRM_Case_Form_CustomData extends CRM_Core_Form { * @throws \CRM_Core_Exception */ public function postProcess(): void { - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); $transaction = new CRM_Core_Transaction(); diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index 5d948999fc..fc3435e30f 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -119,7 +119,10 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact implements Civi\Co // CRM-7925 throw new CRM_Core_Exception(ts('The Contact Sub Type does not match the Contact type for this record')); } - $params['contact_sub_type'] = CRM_Utils_Array::implodePadded($params['contact_sub_type']); + // Ensure value is an array so it can be handled properly by `copyValues()` + if (is_string($params['contact_sub_type'])) { + $params['contact_sub_type'] = CRM_Core_DAO::unSerializeField($params['contact_sub_type'], self::fields()['contact_sub_type']['serialize']); + } } } diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 3a5b8b7b81..7c777557d7 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -344,9 +344,11 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { 'parents' => NULL, ]; + // Fill title and frontend_title if not supplied + if (empty($params['id']) && empty($params['title'])) { + $params['title'] = $params['frontend_title'] ?? $params['name']; + } if (empty($params['id']) && empty($params['frontend_title'])) { - // If we were calling writeRecord it would handle this, but we need - // to migrate the other bits of magic. $params['frontend_title'] = $params['title']; } $hook = empty($params['id']) ? 'create' : 'edit'; @@ -388,6 +390,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { // form the name only if missing: CRM-627 $nameParam = $params['name'] ?? NULL; + // If we were calling writeRecord it would handle this, but we need + // to migrate the other bits of magic. if (!$nameParam && empty($params['id'])) { $params['name'] = CRM_Utils_String::titleToVar($params['title']); } diff --git a/civicrm/CRM/Contact/BAO/GroupNesting.php b/civicrm/CRM/Contact/BAO/GroupNesting.php index f480e44566..4e3f17cee7 100644 --- a/civicrm/CRM/Contact/BAO/GroupNesting.php +++ b/civicrm/CRM/Contact/BAO/GroupNesting.php @@ -27,7 +27,7 @@ class CRM_Contact_BAO_GroupNesting extends CRM_Contact_DAO_GroupNesting { */ public static function create($params) { $hook = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($hook, 'GroupNesting', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($hook, 'GroupNesting', $params['id'] ?? NULL, $params); $dao = new CRM_Contact_BAO_GroupNesting(); $dao->copyValues($params); if (empty($params['id'])) { diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index 0969bc8bfc..6fb4936ad1 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -4247,7 +4247,7 @@ WHERE $smartGroupClause if (!empty($relQill)) { $relQill .= ' OR '; } - $relQill .= CRM_Utils_Array::value($rel, $allRelationshipType); + $relQill .= $allRelationshipType[$rel] ?? ''; } $this->_qill[$grouping][] = 'Relationship Type(s) ' . $relQill . " ( " . implode(", ", $qillNames) . " )"; } @@ -6202,7 +6202,7 @@ AND displayRelType.is_active = 1 $pseudoOptions = CRM_Core_PseudoConstant::worldRegion(); } elseif ($daoName == 'CRM_Event_DAO_Event' && $fieldName == 'id') { - $checkPermission = CRM_Utils_Array::value('check_permission', $pseudoExtraParam, TRUE); + $checkPermission = $pseudoExtraParam['check_permission'] ?? TRUE; $pseudoOptions = CRM_Event_BAO_Event::getEvents(0, $fieldValue, TRUE, $checkPermission, TRUE); } elseif ($fieldName == 'contribution_product_id') { @@ -6437,7 +6437,7 @@ AND displayRelType.is_active = 1 // is not declared for them. // @todo so far only integer fields are being handled. If we add string fields we need to look at // escaping. - $pseudoConstantMetadata = CRM_Utils_Array::value('pseudoconstant', $fieldSpec, FALSE); + $pseudoConstantMetadata = $fieldSpec['pseudoconstant'] ?? FALSE; if (!empty($pseudoConstantMetadata) ) { if (!empty($pseudoConstantMetadata['optionGroupName']) diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php index dacab11fcf..9d231e0fe4 100644 --- a/civicrm/CRM/Contact/BAO/Relationship.php +++ b/civicrm/CRM/Contact/BAO/Relationship.php @@ -1807,7 +1807,9 @@ AND cc.sort_name LIKE '%$name%'"; } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getContactRelationshipSelector(&$params) { // format the params @@ -1950,7 +1952,9 @@ AND cc.sort_name LIKE '%$name%'"; } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getColumnHeaders() { return [ diff --git a/civicrm/CRM/Contact/DAO/DashboardContact.php b/civicrm/CRM/Contact/DAO/DashboardContact.php index 3e298084bb..aff797b875 100644 --- a/civicrm/CRM/Contact/DAO/DashboardContact.php +++ b/civicrm/CRM/Contact/DAO/DashboardContact.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/DashboardContact.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:73ab6a9a4f5d372c85b888aae2abe826) + * (GenCodeChecksum:2b31333980964ba3394f0c71cc764a9d) */ /** @@ -67,7 +67,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { /** * Is this widget active? * - * @var bool|string|null + * @var bool|string * (SQL type: tinyint) * Note that values will be retrieved from the database as a string. */ @@ -219,6 +219,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Dashlet is Active?'), 'description' => ts('Is this widget active?'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php index a016b17d3d..0b0aec7ab1 100644 --- a/civicrm/CRM/Contact/Form/Contact.php +++ b/civicrm/CRM/Contact/Form/Contact.php @@ -501,10 +501,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { // make we require one primary block, CRM-5505 if ($updateMode) { if (!$hasPrimary) { - $hasPrimary = CRM_Utils_Array::value( - 'is_primary', - CRM_Utils_Array::value($instance, $defaults[$name]) - ); + $hasPrimary = !empty($defaults[$name][$instance]['is_primary']); } continue; } @@ -987,7 +984,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { } //get the submitted values in an array - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); if (!isset($params['preferred_communication_method'])) { // If this field is empty QF will trim it so we have to add it in. $params['preferred_communication_method'] = 'null'; @@ -1060,7 +1057,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { if (array_key_exists('CommunicationPreferences', $this->_editOptions)) { // this is a chekbox, so mark false if we dont get a POST value - $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE); + $params['is_opt_out'] = $params['is_opt_out'] ?? FALSE; CRM_Utils_Array::formatArrayKeys($params['preferred_communication_method']); } @@ -1294,15 +1291,15 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { for ($i = 0; $i < count($contactLinks['rows']); $i++) { $row .= ' <tr> '; $row .= ' <td class="matching-contacts-name"> '; - $row .= CRM_Utils_Array::value('display_name', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['display_name'] ?? ''; $row .= ' </td>'; $row .= ' <td class="matching-contacts-email"> '; - $row .= CRM_Utils_Array::value('primary_email', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['primary_email'] ?? ''; $row .= ' </td>'; $row .= ' <td class="action-items"> '; - $row .= CRM_Utils_Array::value('view', $contactLinks['rows'][$i]); - $row .= CRM_Utils_Array::value('edit', $contactLinks['rows'][$i]); - $row .= CRM_Utils_Array::value('merge', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['view'] ?? ''; + $row .= $contactLinks['rows'][$i]['edit'] ?? ''; + $row .= $contactLinks['rows'][$i]['merge'] ?? ''; $row .= ' </td>'; $row .= ' </tr> '; } @@ -1413,7 +1410,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { $streetAddress .= ' '; } } - $streetAddress .= CRM_Utils_Array::value($fld, $address); + $streetAddress .= $address[$fld] ?? ''; } $address['street_address'] = trim($streetAddress); $parseSuccess[$instance] = TRUE; diff --git a/civicrm/CRM/Contact/Form/Edit/Address.php b/civicrm/CRM/Contact/Form/Edit/Address.php index 8b88bb49c2..4c82a7ff51 100644 --- a/civicrm/CRM/Contact/Form/Edit/Address.php +++ b/civicrm/CRM/Contact/Form/Edit/Address.php @@ -296,7 +296,7 @@ class CRM_Contact_Form_Edit_Address { $streetAddress .= ' '; } } - $streetAddress .= CRM_Utils_Array::value($fld, $address); + $streetAddress .= $address[$fld] ?? ''; } $streetAddress = trim($streetAddress); if (!empty($streetAddress)) { diff --git a/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php b/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php index 6452b0b02e..f65942b56f 100644 --- a/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php +++ b/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php @@ -65,7 +65,7 @@ class CRM_Contact_Form_Inline_CommunicationPreferences extends CRM_Contact_Form_ // Process / save communication preferences // this is a chekbox, so mark false if we dont get a POST value - $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE); + $params['is_opt_out'] = $params['is_opt_out'] ?? FALSE; $params['contact_type'] = $this->_contactType; $params['contact_id'] = $this->_contactId; diff --git a/civicrm/CRM/Contact/Form/Inline/CustomData.php b/civicrm/CRM/Contact/Form/Inline/CustomData.php index d8e92f86bb..96247fa484 100644 --- a/civicrm/CRM/Contact/Form/Inline/CustomData.php +++ b/civicrm/CRM/Contact/Form/Inline/CustomData.php @@ -72,7 +72,7 @@ class CRM_Contact_Form_Inline_CustomData extends CRM_Contact_Form_Inline { public function postProcess() { // Process / save custom data // Get the form values and groupTree - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); CRM_Core_BAO_CustomValueTable::postProcess($params, 'civicrm_contact', $this->_contactId, diff --git a/civicrm/CRM/Contact/Form/Relationship.php b/civicrm/CRM/Contact/Form/Relationship.php index 46f69186b9..7001592c6b 100644 --- a/civicrm/CRM/Contact/Form/Relationship.php +++ b/civicrm/CRM/Contact/Form/Relationship.php @@ -489,7 +489,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { $jsData[$id] = array_filter(array_intersect_key($allRelationshipNames[$id], $whatWeWant)); // Add user-friendly placeholder foreach (['a', 'b'] as $x) { - $type = !empty($jsData[$id]["contact_sub_type_$x"]) ? $jsData[$id]["contact_sub_type_$x"] : CRM_Utils_Array::value("contact_type_$x", $jsData[$id]); + $type = !empty($jsData[$id]["contact_sub_type_$x"]) ? $jsData[$id]["contact_sub_type_$x"] : (CRM_Utils_Array::value("contact_type_$x", $jsData[$id])); $jsData[$id]["placeholder_$x"] = $type ? ts('- select %1 -', [strtolower($contactTypes[$type]['label'])]) : ts('- select contact -'); } } @@ -575,8 +575,8 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { } // If this is a b_a relationship these form elements are flipped - $params['is_permission_a_b'] = CRM_Utils_Array::value("is_permission_{$a}_{$b}", $values, 0); - $params['is_permission_b_a'] = CRM_Utils_Array::value("is_permission_{$b}_{$a}", $values, 0); + $params['is_permission_a_b'] = $values["is_permission_{$a}_{$b}"] ?? 0; + $params['is_permission_b_a'] = $values["is_permission_{$b}_{$a}"] ?? 0; return [$params, $a]; } diff --git a/civicrm/CRM/Contact/Form/Search/Criteria.php b/civicrm/CRM/Contact/Form/Search/Criteria.php index b7f60d9469..c98485d740 100644 --- a/civicrm/CRM/Contact/Form/Search/Criteria.php +++ b/civicrm/CRM/Contact/Form/Search/Criteria.php @@ -374,7 +374,7 @@ class CRM_Contact_Form_Search_Criteria { 'job_title' => ['name' => 'job_title'], 'preferred_language' => ['name' => 'preferred_language'], 'contact_id' => [ - 'name' => 'contact_id', + 'name' => 'id', 'help' => ['id' => 'id-contact-id', 'file' => 'CRM/Contact/Form/Contact'], ], 'external_identifier' => [ @@ -461,7 +461,7 @@ class CRM_Contact_Form_Search_Criteria { } if ($addressOptions['postal_code']) { - $attr = ['class' => 'six'] + (array) CRM_Utils_Array::value('postal_code', $attributes); + $attr = ['class' => 'six'] + ($attributes['postal_code'] ?? []); $form->addElement('text', 'postal_code_low', NULL, $attr + ['placeholder' => ts('From')]); $form->addElement('text', 'postal_code_high', NULL, $attr + ['placeholder' => ts('To')]); } diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 6d21f77a26..f7eb547968 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -262,7 +262,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { $queryOperator = 'AND'; } $dao = $selector->contactIDQuery($params, $sortID, - CRM_Utils_Array::value('display_relationship_type', $fv), + $fv['display_relationship_type'] ?? NULL, $queryOperator ); diff --git a/civicrm/CRM/Contact/Form/Task/EmailTrait.php b/civicrm/CRM/Contact/Form/Task/EmailTrait.php index 1755bbc232..3a97596024 100644 --- a/civicrm/CRM/Contact/Form/Task/EmailTrait.php +++ b/civicrm/CRM/Contact/Form/Task/EmailTrait.php @@ -384,7 +384,7 @@ trait CRM_Contact_Form_Task_EmailTrait { $cc, $bcc, $additionalDetails, - CRM_Utils_Array::value('campaign_id', $formValues), + $formValues['campaign_id'] ?? NULL, $this->getCaseID() ); diff --git a/civicrm/CRM/Contact/Form/Task/Label.php b/civicrm/CRM/Contact/Form/Task/Label.php index e303d62dd1..0b84559684 100644 --- a/civicrm/CRM/Contact/Form/Task/Label.php +++ b/civicrm/CRM/Contact/Form/Task/Label.php @@ -250,7 +250,7 @@ class CRM_Contact_Form_Task_Label extends CRM_Contact_Form_Task { if (!empty($fv['location_type_id'])) { foreach ($valuesothers as $vals) { if (($vals['location_type_id'] ?? NULL) == - CRM_Utils_Array::value('location_type_id', $fv) + ($fv['location_type_id'] ?? NULL) ) { foreach ($vals as $k => $v) { if (in_array($k, [ diff --git a/civicrm/CRM/Contact/Import/Form/MapField.php b/civicrm/CRM/Contact/Import/Form/MapField.php index 06680d140f..ce367b544f 100644 --- a/civicrm/CRM/Contact/Import/Form/MapField.php +++ b/civicrm/CRM/Contact/Import/Form/MapField.php @@ -82,6 +82,9 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField { * @throws \Civi\API\Exception\UnauthorizedException */ public function preProcess(): void { + // Don't mess up the fields for related contacts + $this->shouldSortMapperFields = FALSE; + parent::preProcess(); //format custom field names, CRM-2676 $contactType = $this->getContactType(); @@ -275,7 +278,12 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField { $last_key = array_key_last($mapper[$i]); } elseif ($this->getSubmittedValue('savedMapping') && $processor->getFieldName($i)) { - $defaults["mapper[$i]"] = $processor->getSavedQuickformDefaultsForColumn($i); + $defaultField = $processor->getSavedQuickformDefaultsForColumn($i); + if (!array_key_exists($defaultField[0], $this->_mapperFields)) { + $defaultField = ['do_not_import']; + CRM_Core_Session::setStatus(ts('Data was configured to be imported to column %1 but it is not available. The field has been set to "%2"', [1 => $columnHeader, 2 => $this->_mapperFields['do_not_import']])); + } + $defaults["mapper[$i]"] = $defaultField; $last_key = array_key_last($defaults["mapper[$i]"]) ?? 0; } else { diff --git a/civicrm/CRM/Contact/Page/AJAX.php b/civicrm/CRM/Contact/Page/AJAX.php index 3c9f17e001..9cacb36776 100644 --- a/civicrm/CRM/Contact/Page/AJAX.php +++ b/civicrm/CRM/Contact/Page/AJAX.php @@ -951,7 +951,7 @@ LIMIT {$offset}, {$rowCount} public static function toggleDedupeSelect() { $pnid = $_REQUEST['pnid']; $isSelected = CRM_Utils_Type::escape($_REQUEST['is_selected'], 'Boolean'); - $cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', $null, FALSE); + $cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', NULL, FALSE); $params = [ 1 => [$isSelected, 'Boolean'], @@ -979,7 +979,9 @@ LIMIT {$offset}, {$rowCount} } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getContactRelationships() { $contactID = CRM_Utils_Type::escape($_GET['cid'], 'Integer'); diff --git a/civicrm/CRM/Contact/Page/View/Relationship.php b/civicrm/CRM/Contact/Page/View/Relationship.php index 0b0bb7eb8c..ec6ad2f88d 100644 --- a/civicrm/CRM/Contact/Page/View/Relationship.php +++ b/civicrm/CRM/Contact/Page/View/Relationship.php @@ -227,7 +227,9 @@ class CRM_Contact_Page_View_Relationship extends CRM_Core_Page { } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. * * @return array * (reference) of action links diff --git a/civicrm/CRM/Contact/Page/View/UserDashBoard.php b/civicrm/CRM/Contact/Page/View/UserDashBoard.php index 5ac3aa23bc..5eee298b75 100644 --- a/civicrm/CRM/Contact/Page/View/UserDashBoard.php +++ b/civicrm/CRM/Contact/Page/View/UserDashBoard.php @@ -129,7 +129,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { // Relationship section // FIXME - this used to share code with the contact summary "Relationships" tab // now that tab has been switched to use SearchKit, and this ought to be switched as well; - // then remove all code commented with "DELETEME only-used-by-user-dashboard" + // then remove all code commented with "only-used-by-user-dashboard" if (!empty($dashboardOptions['Permissioned Orgs']) && CRM_Core_Permission::check('view my contact')) { $columnHeaders = CRM_Contact_BAO_Relationship::getColumnHeaders(); $contactRelationships = $selector = NULL; diff --git a/civicrm/CRM/Contact/Page/View/Vcard.php b/civicrm/CRM/Contact/Page/View/Vcard.php index 9d98552cf3..29ff266df6 100644 --- a/civicrm/CRM/Contact/Page/View/Vcard.php +++ b/civicrm/CRM/Contact/Page/View/Vcard.php @@ -45,10 +45,10 @@ class CRM_Contact_Page_View_Vcard extends CRM_Contact_Page_View { if ($defaults['contact_type'] == 'Individual') { $vcard->setName(CRM_Utils_Array::value('last_name', $defaults), - CRM_Utils_Array::value('first_name', $defaults), - CRM_Utils_Array::value('middle_name', $defaults), - CRM_Utils_Array::value('prefix', $defaults), - CRM_Utils_Array::value('suffix', $defaults) + $defaults['first_name'] ?? NULL, + $defaults['middle_name'] ?? NULL, + $defaults['prefix'] ?? NULL, + $defaults['suffix'] ?? NULL ); $organizationName = $defaults['organization_name'] ?? NULL; if ($organizationName !== NULL) { diff --git a/civicrm/CRM/Contribute/ActionMapping/ByPage.php b/civicrm/CRM/Contribute/ActionMapping/ByPage.php index 5cf73dbbb1..7254291b80 100644 --- a/civicrm/CRM/Contribute/ActionMapping/ByPage.php +++ b/civicrm/CRM/Contribute/ActionMapping/ByPage.php @@ -78,10 +78,13 @@ class CRM_Contribute_ActionMapping_ByPage extends CRM_Contribute_ActionMapping { $query['casContactTableAlias'] = NULL; // $schedule->start_action_date is user-supplied data. validate. - if (!array_key_exists($schedule->start_action_date, $this->getDateFields())) { + if (empty($schedule->absolute_date) && !array_key_exists($schedule->start_action_date, $this->getDateFields())) { throw new CRM_Core_Exception("Invalid date field"); } - $query['casDateField'] = $schedule->start_action_date; + $query['casDateField'] = $schedule->start_action_date ?? ''; + if (empty($query['casDateField']) && $schedule->absolute_date) { + $query['casDateField'] = "'" . CRM_Utils_Type::escape($schedule->absolute_date, 'String') . "'"; + } // build where clause if (!empty($selectedValues)) { diff --git a/civicrm/CRM/Contribute/ActionMapping/ByType.php b/civicrm/CRM/Contribute/ActionMapping/ByType.php index 39d8c51654..0434b8f25a 100644 --- a/civicrm/CRM/Contribute/ActionMapping/ByType.php +++ b/civicrm/CRM/Contribute/ActionMapping/ByType.php @@ -119,11 +119,13 @@ class CRM_Contribute_ActionMapping_ByType extends CRM_Contribute_ActionMapping { $query['casContactTableAlias'] = NULL; // $schedule->start_action_date is user-supplied data. validate. - if (!array_key_exists($schedule->start_action_date, $this->getDateFields())) { + if (empty($schedule->absolute_date) && !array_key_exists($schedule->start_action_date, $this->getDateFields())) { throw new CRM_Core_Exception("Invalid date field"); } - $query['casDateField'] = $schedule->start_action_date; - + $query['casDateField'] = $schedule->start_action_date ?? ''; + if (empty($query['casDateField']) && $schedule->absolute_date) { + $query['casDateField'] = "'" . CRM_Utils_Type::escape($schedule->absolute_date, 'String') . "'"; + } // build where clause if (!empty($selectedValues)) { $query->where("e.financial_type_id IN (@selectedValues)") diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index cc88625bb2..a04da212f2 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -409,6 +409,8 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im $billingFirstName = $params['billing_first_name'] ?? NULL; $billingMiddleName = $params['billing_middle_name'] ?? NULL; $billingLastName = $params['billing_last_name'] ?? NULL; + // Note this is NOT used when creating a billing address. It is probably passed + // the the payment processor - which is horrible & could maybe change. $addressParams['address_name'] = "{$billingFirstName}" . CRM_Core_DAO::VALUE_SEPARATOR . "{$billingMiddleName}" . CRM_Core_DAO::VALUE_SEPARATOR . "{$billingLastName}"; foreach ($billingFields as $value) { @@ -1656,16 +1658,21 @@ LEFT JOIN civicrm_option_value contribution_status ON (civicrm_contribution.cont * thought). * * @param array $params - * @param int $billingLocationTypeID * * @return int * address id */ - public static function createAddress($params, $billingLocationTypeID) { + public static function createAddress($params) { + $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling(); [$hasBillingField, $addressParams] = self::getBillingAddressParams($params, $billingLocationTypeID); if ($hasBillingField) { - $address = CRM_Core_BAO_Address::writeRecord($addressParams); - return $address->id; + $nameFields = [ + $params['billing_first_name'] ?? NULL, + $params['billing_middle_name'] ?? NULL, + $params['billing_last_name'] ?? NULL, + ]; + $addressParams['name'] = implode(' ', array_filter($nameFields)); + return (int) CRM_Core_BAO_Address::writeRecord($addressParams)->id; } return NULL; @@ -3359,7 +3366,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } // record line items and financial items if (empty($params['skipLineItem'])) { - CRM_Price_BAO_LineItem::processPriceSet($entityId, CRM_Utils_Array::value('line_item', $params), $params['contribution'], $entityTable, $isUpdate); + CRM_Price_BAO_LineItem::processPriceSet($entityId, $params['line_item'] ?? NULL, $params['contribution'], $entityTable, $isUpdate); } // create batch entry if batch_id is passed and @@ -3483,7 +3490,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac 'version' => 3, 'id' => ($props['contribution_page_id']), ]); - $types = (array) CRM_Utils_Array::value('payment_processor', $page, 0); + $types = (array) $page['payment_processor'] ?? 0; $params['condition'] = 'id IN (' . implode(',', $types) . ')'; } break; @@ -3947,7 +3954,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac // if we are still empty see if we can use anything from a contribution page. if (!empty($pageValues['receipt_from_email'])) { return [ - CRM_Utils_Array::value('receipt_from_name', $pageValues), + $pageValues['receipt_from_name'] ?? NULL, $pageValues['receipt_from_email'], ]; } diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php index 72fec24e84..a2a5ce289d 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php @@ -261,7 +261,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio if ($gId) { $email = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $gId, 'notify'); if ($email) { - $val = CRM_Core_BAO_UFGroup::checkFieldsEmptyValues($gId, $contactID, CRM_Utils_Array::value($key, $params), TRUE); + $val = CRM_Core_BAO_UFGroup::checkFieldsEmptyValues($gId, $contactID, $params[$key] ?? NULL, TRUE); CRM_Core_BAO_UFGroup::commonSendMail($contactID, $val); } } diff --git a/civicrm/CRM/Contribute/BAO/ContributionSoft.php b/civicrm/CRM/Contribute/BAO/ContributionSoft.php index 797d3dce9b..2a2885c95f 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionSoft.php +++ b/civicrm/CRM/Contribute/BAO/ContributionSoft.php @@ -30,7 +30,7 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio */ public static function add(&$params) { $hook = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($hook, 'ContributionSoft', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($hook, 'ContributionSoft', $params['id'] ?? NULL, $params); $contributionSoft = new CRM_Contribute_DAO_ContributionSoft(); $contributionSoft->copyValues($params); diff --git a/civicrm/CRM/Contribute/BAO/FinancialProcessor.php b/civicrm/CRM/Contribute/BAO/FinancialProcessor.php index 475caa8165..73056b55da 100644 --- a/civicrm/CRM/Contribute/BAO/FinancialProcessor.php +++ b/civicrm/CRM/Contribute/BAO/FinancialProcessor.php @@ -81,7 +81,7 @@ class CRM_Contribute_BAO_FinancialProcessor { if ($params['contribution']->currency) { $currency = $params['contribution']->currency; } - $previousLineItemTotal = CRM_Utils_Array::value('line_total', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $previousLineItemTotal = CRM_Utils_Array::value('line_total', $previousLineItems[$fieldValueId] ?? NULL, 0); $itemParams = [ 'transaction_date' => $receiveDate, 'contact_id' => $params['prevContribution']->contact_id, @@ -101,10 +101,10 @@ class CRM_Contribute_BAO_FinancialProcessor { $taxAmount = (float) $lineItemDetails['tax_amount']; if ($context === 'changeFinancialType' && $lineItemDetails['tax_amount'] === 'null') { // reverse the Sale Tax amount if there is no tax rate associated with new Financial Type - $taxAmount = CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $taxAmount = CRM_Utils_Array::value('tax_amount', $previousLineItems[$fieldValueId] ?? NULL, 0); } elseif ($previousLineItemTotal != $lineItemDetails['line_total']) { - $taxAmount -= CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $taxAmount -= CRM_Utils_Array::value('tax_amount', $previousLineItems[$fieldValueId] ?? NULL, 0); } if ($taxAmount != 0) { $itemParams['amount'] = CRM_Contribute_BAO_FinancialProcessor::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount; diff --git a/civicrm/CRM/Contribute/BAO/Premium.php b/civicrm/CRM/Contribute/BAO/Premium.php index 2f648474de..d0314a12f5 100644 --- a/civicrm/CRM/Contribute/BAO/Premium.php +++ b/civicrm/CRM/Contribute/BAO/Premium.php @@ -112,6 +112,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { } } else { + // Why? should we not skip if not found? CRM_Core_DAO::storeValues($productDAO, $products[$productDAO->id]); } } @@ -127,10 +128,10 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { if (count($products)) { $form->assign('showPremium', $formItems); $form->assign('showSelectOptions', $formItems); - $form->assign('products', $products); $form->assign('premiumBlock', $premiumBlock); } } + $form->assign('products', $products ?? NULL); } /** diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 68e86322e4..6b9b5472ef 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -529,7 +529,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { } $tplParams['credit_card_exp_date'] = isset($params['credit_card_exp_date']) ? CRM_Utils_Date::mysqlToIso(CRM_Utils_Date::format($params['credit_card_exp_date'])) : NULL; - $tplParams['credit_card_type'] = CRM_Utils_Array::value('credit_card_type', $params); + $tplParams['credit_card_type'] = $params['credit_card_type'] ?? NULL; $tplParams['credit_card_number'] = CRM_Utils_System::mungeCreditCard(CRM_Utils_Array::value('credit_card_number', $params)); return $tplParams; } diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php index 86b0e94572..7f1d5e393f 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php +++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php @@ -147,9 +147,11 @@ class CRM_Contribute_Form_AdditionalInfo { * * Build the form object for PaymentReminders Information. * + * @deprecated since 5.68 will be removed around 5.78. * @param CRM_Core_Form $form */ public static function buildPaymentReminders(&$form) { + CRM_Core_Error::deprecatedFunctionWarning('no alternative, will be removed around 5.78'); //PaymentReminders section $form->add('hidden', 'hidden_PaymentReminders', 1); $form->add('text', 'initial_reminder_day', ts('Send Initial Reminder'), ['size' => 3]); diff --git a/civicrm/CRM/Contribute/Form/ContributeFormTrait.php b/civicrm/CRM/Contribute/Form/ContributeFormTrait.php new file mode 100644 index 0000000000..b5f23429e9 --- /dev/null +++ b/civicrm/CRM/Contribute/Form/ContributeFormTrait.php @@ -0,0 +1,91 @@ +<?php + +use Civi\API\EntityLookupTrait; + +/** + * Trait implements functions to retrieve contribution related values. + */ +trait CRM_Contribute_Form_ContributeFormTrait { + + use EntityLookupTrait; + + /** + * Get the value for a field relating to the contribution. + * + * All values returned in apiv4 format. Escaping may be required. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @param string $fieldName + * + * @return mixed + * @throws \CRM_Core_Exception + */ + public function getContributionValue(string $fieldName) { + if ($this->isDefined('Contribution')) { + return $this->lookup('Contribution', $fieldName); + } + $id = $this->getContributionID(); + if ($id) { + $this->define('Contribution', 'Contribution', ['id' => $id]); + return $this->lookup('Contribution', $fieldName); + } + return NULL; + } + + /** + * Get the selected Contribution ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + throw new CRM_Core_Exception('`getContributionID` must be implemented'); + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + throw new CRM_Core_Exception('`ContributionPageID` must be implemented'); + } + + /** + * Get a value from the contribution being acted on. + * + * All values returned in apiv4 format. Escaping may be required. + * + * @param string $fieldName + * + * @return mixed + * @noinspection PhpUnhandledExceptionInspection + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + */ + public function getContributionPageValue(string $fieldName) { + if ($this->isDefined('ContributionPage')) { + return $this->lookup('ContributionPage', $fieldName); + } + $id = $this->getContributionPageID(); + if ($id) { + $this->define('ContributionPage', 'ContributionPage', ['id' => $id]); + return $this->lookup('ContributionPage', $fieldName); + } + return NULL; + } + +} diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index 8ea0d4fe32..8227fb63af 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -18,6 +18,7 @@ use Civi\Payment\Exception\PaymentProcessorException; */ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditPayment { use CRM_Contact_Form_ContactFormTrait; + use CRM_Contribute_Form_ContributeFormTrait; /** * The id of the contribution that we are processing. @@ -208,6 +209,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP */ public $payment_instrument_id; + /** + * @var bool + */ + private $_payNow; + /** * Explicitly declare the form context. */ @@ -215,6 +221,14 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP return 'create'; } + public function __get($name) { + if ($name === '_contributionID') { + CRM_Core_Error::deprecatedWarning('_contributionID is not a form property - use getContributionID()'); + return $this->getContributionID(); + } + return NULL; + } + /** * Set variables up before form is built. * @@ -240,8 +254,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $this->assign('action', $this->_action); // Get the contribution id if update - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive'); - $this->assign('isUsePaymentBlock', !empty($this->_id)); + $this->assign('isUsePaymentBlock', (bool) $this->getContributionID()); if (!empty($this->_id)) { $this->assignPaymentInfoBlock(); $this->assign('contribID', $this->_id); @@ -306,7 +319,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // Set title if ($this->_mode && $this->_id) { $this->_payNow = TRUE; - $this->assign('payNow', $this->_payNow); $this->setTitle(ts('Pay with Credit Card')); } elseif ($this->_values['is_template']) { @@ -318,6 +330,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP else { $this->setPageTitle($this->_ppID ? ts('Pledge Payment') : ts('Contribution')); } + $this->assign('payNow', $this->_payNow); } private function preProcessPledge(): void { @@ -605,8 +618,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $getOnlyPriceSetElements = FALSE; } - $this->set('priceSetId', $this->_priceSetId); - CRM_Price_BAO_PriceSet::buildPriceSet($this, 'contribution', FALSE); + $this->buildPriceSet(); // get only price set form elements. if ($getOnlyPriceSetElements) { @@ -670,7 +682,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } if ($buildRecurBlock) { - CRM_Contribute_Form_Contribution_Main::buildRecur($this); + $this->buildRecur(); $this->setDefaults(['is_recur' => 0]); $this->assign('buildRecurBlock', TRUE); } @@ -925,6 +937,49 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } + /** + * Build the price set form. + */ + private function buildPriceSet(): void { + $priceSetId = $this->getPriceSetID(); + $form = $this; + $component = 'contribution'; + $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, TRUE, FALSE); + $form->_priceSet = $priceSet[$priceSetId] ?? NULL; + $validPriceFieldIds = array_keys($form->_priceSet['fields']); + + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetId; + $form->assign('priceSet', $form->_priceSet); + + $feeBlock = &$form->_priceSet['fields']; + + // Call the buildAmount hook. + CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); + + $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($feeBlock as $id => $field) { + $options = $field['options'] ?? NULL; + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + + if (!empty($options)) { + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $field['id'], + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + NULL, + $options + ); + } + } + } + /** * Global form rule. * @@ -1031,7 +1086,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP return; } // Get the submitted form values. - $submittedValues = $this->controller->exportValues($this->_name); + $submittedValues = $this->getSubmittedValues(); if ($this->_values['is_template']) { // If we are a template contribution we don't allow the contribution_status_id to be set // on the form but we need it for the submit function. @@ -1210,7 +1265,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $contributionParams, $financialType, $this->_bltID, - CRM_Utils_Array::value('is_recur', $this->_params) + $this->_params['is_recur'] ?? NULL ); $paymentParams['contributionID'] = $contribution->id; @@ -1335,7 +1390,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // add these values for the recurringContrib function ,CRM-10188 $params['financial_type_id'] = $financialType->id; - $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $billingLocationID); + $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); //@todo - this is being set from the form to resolve CRM-10188 - an // eNotice caused by it not being set @ the front end @@ -1349,7 +1404,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // We may no longer need to set params['is_recur'] - it used to be used in processRecurringContribution $params['is_recur'] = $isRecur; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; - $recurringContributionID = !$isRecur ? NULL : CRM_Contribute_Form_Contribution_Confirm::processRecurringContribution($form, $params, [ + $recurringContributionID = !$isRecur ? NULL : $this->processRecurringContribution($form, $params, [ 'contact_id' => $contactID, 'financial_type_id' => $financialType->id, ]); @@ -1394,9 +1449,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $smarty->assign('dataArray', $dataArray); $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL); } - - // lets store it in the form variable so postProcess hook can get to this and use it - $form->_contributionID = $contribution->id; } // process soft credit / pcp params first @@ -1432,6 +1484,51 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP return $contribution; } + /** + * Create the recurring contribution record. + * + * @param self $form + * @param array $params + * @param array $recurParams + * + * @return int|null + */ + private function processRecurringContribution($form, $params, $recurParams) { + // @todo - previously shared code - many items may be irrelevant. + $recurParams['amount'] = $params['amount'] ?? NULL; + $recurParams['auto_renew'] = $params['auto_renew'] ?? NULL; + $recurParams['frequency_unit'] = $params['frequency_unit'] ?? NULL; + $recurParams['frequency_interval'] = $params['frequency_interval'] ?? NULL; + $recurParams['installments'] = $params['installments'] ?? NULL; + $recurParams['currency'] = $params['currency'] ?? NULL; + $recurParams['payment_instrument_id'] = $params['payment_instrument_id']; + + $recurParams['is_test'] = 0; + if (($form->_action & CRM_Core_Action::PREVIEW) || + (isset($form->_mode) && ($form->_mode == 'test')) + ) { + $recurParams['is_test'] = 1; + } + + $recurParams['start_date'] = $recurParams['create_date'] = $recurParams['modified_date'] = date('YmdHis'); + if (!empty($params['receive_date'])) { + $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date'])); + } + $recurParams['invoice_id'] = $params['invoiceID'] ?? NULL; + $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); + $recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL; + $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE); + // We set trxn_id=invoiceID specifically for paypal IPN. It is reset this when paypal sends us the real trxn id, CRM-2991 + $recurParams['processor_id'] = $recurParams['trxn_id'] = ($params['trxn_id'] ?? $params['invoiceID']); + + $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL; + $recurParams['campaign_id'] = $campaignId; + $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams); + $form->_params['contributionRecurID'] = $recurring->id; + + return $recurring->id; + } + /** * Generate the data to construct a snippet based pane. * @@ -1484,8 +1581,20 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP * * @throws \CRM_Core_Exception * @throws \Civi\Payment\Exception\PaymentProcessorException + * + * @deprecated since 5.68 will be removed around 5.80. + * + * Try something like + * use use \Civi\Test\FormTrait; + * $form = $this->getTestForm('CRM_Contribute_Form_Contribution', $submittedValues, [ + * 'id' => 4; + * 'action' => 'update', + * ]); + * $form->processForm(); */ public function testSubmit($params, $action, $creditCardMode = NULL) { + // Note that this is really used from tests - so adding noisy deprecations would make them + // fail straight away. $defaults = [ 'soft_credit_contact_id' => [], 'receive_date' => date('Y-m-d H:i:s'), @@ -1531,7 +1640,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $this->_fields = []; return $this->submit(array_merge($defaults, $params), $action, CRM_Utils_Array::value('pledge_payment_id', $params)); - } /** @@ -1558,7 +1666,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP if ($this->getPriceSetID() && $action & CRM_Core_Action::UPDATE) { $line = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'contribution'); $lineID = key($line); - $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', CRM_Utils_Array::value('price_field_id', $line[$lineID]), 'price_set_id'); + $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $line[$lineID]['price_field_id'] ?? NULL, 'price_set_id'); $quickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config'); // Why do we do this? Seems like a like a wrapper for old functionality - but single line price sets & quick // config should be treated the same. @@ -1661,7 +1769,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $componentDetails = CRM_Contribute_BAO_Contribution::getComponentDetails($this->_id); if (empty($componentDetails['membership']) && empty($componentDetails['participant'])) { if (!($this->_action & CRM_Core_Action::UPDATE && (($this->_defaults['contribution_status_id'] != $submittedValues['contribution_status_id'])))) { - $lineItems[$itemId]['unit_price'] = $lineItems[$itemId]['line_total'] = CRM_Utils_Rule::cleanMoney(CRM_Utils_Array::value('total_amount', $submittedValues)); + $lineItems[$itemId]['unit_price'] = $lineItems[$itemId]['line_total'] = $this->getSubmittedValue('total_amount'); } } @@ -1707,7 +1815,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $submittedValues['total_amount'] = $this->_values['total_amount'] ?? NULL; // Avoid tax amount deduction on edit form and keep it original, because this will lead to error described in CRM-20676 if (!$this->_id) { - $submittedValues['total_amount'] -= CRM_Utils_Array::value('tax_amount', $this->_values, 0); + $submittedValues['total_amount'] -= $this->_values['tax_amount'] ?? 0; } } $this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE); @@ -1895,9 +2003,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $contribution->id, ($formValues['option_type'] ?? 0) == 2, $formValues['total_amount'], - CRM_Utils_Array::value('total_amount', $this->_defaults), + $this->_defaults['total_amount'] ?? NULL, $formValues['contribution_status_id'], - CRM_Utils_Array::value('contribution_status_id', $this->_defaults) + $this->_defaults['contribution_status_id'] ?? NULL ); return $contribution; } @@ -1919,7 +2027,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP foreach ($lineItem as $key => $value) { foreach ($value as $v) { if (isset($taxRate[(string) CRM_Utils_Array::value('tax_rate', $v)])) { - $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + CRM_Utils_Array::value('tax_amount', $v); + $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + ($v['tax_amount'] ?? 0); } else { if (isset($v['tax_rate'])) { @@ -2058,12 +2166,32 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } /** - * Get the contribution ID. + * Get the selected Contribution ID. * - * @return int|null + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive'); + } + return $this->_id ? (int) $this->_id : NULL; + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection */ - protected function getContributionID(): ?int { - return $this->_id; + public function getContributionPageID(): ?int { + return $this->getContributionID() ? $this->getContributionValue('contribution_page_id') : NULL; } /** @@ -2223,4 +2351,91 @@ WHERE contribution_id = {$id} return $this->_ppID ? (int) $this->_ppID : NULL; } + /** + * Build elements to collect information for recurring contributions. + * + * Previously shared function. + */ + private function buildRecur(): void { + $form = $this; + $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_ContributionRecur'); + $className = 'CRM_Contribute_Form_Contribution'; + + $form->assign('is_recur_interval', $form->_values['is_recur_interval'] ?? NULL); + $form->assign('is_recur_installments', $form->_values['is_recur_installments'] ?? NULL); + $paymentObject = $form->getVar('_paymentObject'); + if ($paymentObject) { + $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [ + 'is_recur_installments' => !empty($form->_values['is_recur_installments']), + 'is_email_receipt' => !empty($form->_values['is_email_receipt']), + ])); + } + + $frUnits = $form->_values['recur_frequency_unit'] ?? NULL; + $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, TRUE); + if (empty($frUnits) && + $className == 'CRM_Contribute_Form_Contribution' + ) { + $frUnits = implode(CRM_Core_DAO::VALUE_SEPARATOR, + CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, FALSE, NULL, 'value') + ); + } + + $unitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $frUnits); + + // FIXME: Ideally we should freeze select box if there is only + // one option but looks there is some problem /w QF freeze. + //if ( count( $units ) == 1 ) { + //$frequencyUnit->freeze( ); + //} + + $form->add('text', 'installments', ts('installments'), + $attributes['installments'] + ['class' => 'two'] + ); + $form->addRule('installments', ts('Number of installments must be a whole number.'), 'integer'); + + $is_recur_label = ts('I want to contribute this amount every'); + + // CRM 10860, display text instead of a dropdown if there's only 1 frequency unit + if (count($unitVals) == 1) { + $form->assign('one_frequency_unit', TRUE); + $form->add('hidden', 'frequency_unit', $unitVals[0]); + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $unit = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($unitVals[0]); + $form->assign('frequency_unit', $unit); + } + else { + $is_recur_label = ts('I want to contribute this amount every %1', + [1 => $frequencyUnits[$unitVals[0]]] + ); + $form->assign('all_text_recur', TRUE); + } + } + else { + $form->assign('one_frequency_unit', FALSE); + $units = []; + foreach ($unitVals as $key => $val) { + if (array_key_exists($val, $frequencyUnits)) { + $units[$val] = $frequencyUnits[$val]; + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $units[$val] = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($val); + $unit = ts('Every'); + } + } + } + $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); + } + + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); + $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); + } + else { + // make sure frequency_interval is submitted as 1 if given no choice to user. + $form->add('hidden', 'frequency_interval', 1); + } + + $form->add('checkbox', 'is_recur', $is_recur_label, NULL); + } + } diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php index 0da5a223ce..daf64aa0f6 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php @@ -328,7 +328,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr [$field, $locType] = explode('-', $loc); } - if (in_array($field, $addressBlocks)) { + if (in_array($field, $addressBlocks) && !empty($value)) { if ($locType === 'Primary') { $defaultLocationType = CRM_Core_BAO_LocationType::getDefault(); $locType = $defaultLocationType->id; @@ -565,20 +565,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $this->assign('is_separate_payment', $this->isSeparateMembershipPayment()); $this->assign('priceSetID', $this->_priceSetId); - - // The concept of contributeMode is deprecated. - if ($this->_contributeMode === 'notify' || - $this->_amount <= 0.0 || $this->_params['is_pay_later'] - ) { - $contribButton = ts('Continue'); - } - elseif (!empty($this->_ccid)) { - $contribButton = ts('Make Payment'); - } - else { - $contribButton = ts('Make Contribution'); - } - $this->assign('button', $contribButton); + $contributionButtonText = $this->getPaymentProcessorObject()->getText('contributionPageButtonText', [ + 'is_payment_to_existing' => !empty($this->_ccid), + 'amount' => $this->_amount, + ]); + $this->assign('button', $contributionButtonText); $this->assign('continueText', $this->getPaymentProcessorObject()->getText('contributionPageContinueText', [ @@ -586,11 +577,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr 'amount' => $this->_amount, ]) ); + $this->assign('confirmText', + $this->getPaymentProcessorObject()->getText('contributionPageConfirmText', [ + 'is_payment_to_existing' => !empty($this->_ccid), + 'amount' => $this->_amount, + ]) + ); $this->addButtons([ [ 'type' => 'next', - 'name' => $contribButton, + 'name' => $contributionButtonText, 'spacing' => ' ', 'isDefault' => TRUE, ], @@ -802,22 +799,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr return $separateMembershipPayment; } - /** - * Overwrite action. - * - * Since we are only showing elements in frozen mode no help display needed. - * - * @return int - */ - public function getAction() { - if ($this->_action & CRM_Core_Action::PREVIEW) { - return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW; - } - else { - return CRM_Core_Action::VIEW; - } - } - /** * Set default values for the form. * @@ -1047,7 +1028,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // add these values for the recurringContrib function ,CRM-10188 $params['financial_type_id'] = $financialType->id; - $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $billingLocationID); + $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); //@todo - this is being set from the form to resolve CRM-10188 - an // eNotice caused by it not being set @ the front end @@ -1061,7 +1042,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // We may no longer need to set params['is_recur'] - it used to be used in processRecurringContribution $params['is_recur'] = $isRecur; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; - $recurringContributionID = !$isRecur ? NULL : self::processRecurringContribution($form, $params, [ + $recurringContributionID = !$isRecur ? NULL : $this->processRecurringContribution($params, [ 'contact_id' => $contactID, 'financial_type_id' => $financialType->id, ]); @@ -1167,13 +1148,12 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr /** * Create the recurring contribution record. * - * @param CRM_Core_Form $form * @param array $params * @param array $recurParams * * @return int|null */ - public static function processRecurringContribution($form, $params, $recurParams) { + private function processRecurringContribution(array $params, array $recurParams) { $recurParams['amount'] = $params['amount'] ?? NULL; $recurParams['auto_renew'] = $params['auto_renew'] ?? NULL; @@ -1185,20 +1165,20 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // CRM-14354: For an auto-renewing membership with an additional contribution, // if separate payments is not enabled, make sure only the membership fee recurs - if (!empty($form->_membershipBlock) - && $form->_membershipBlock['is_separate_payment'] === '0' + if (!empty($this->_membershipBlock) + && $this->_membershipBlock['is_separate_payment'] === '0' && isset($params['selectMembership']) - && $form->_values['is_allow_other_amount'] == '1' + && $this->_values['is_allow_other_amount'] == '1' // CRM-16331 - && !empty($form->_membershipTypeValues) - && !empty($form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']) + && !empty($this->_membershipTypeValues) + && !empty($this->_membershipTypeValues[$params['selectMembership']]['minimum_fee']) ) { - $recurParams['amount'] = $form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; + $recurParams['amount'] = $this->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; } $recurParams['is_test'] = 0; - if (($form->_action & CRM_Core_Action::PREVIEW) || - (isset($form->_mode) && ($form->_mode == 'test')) + if (($this->_action & CRM_Core_Action::PREVIEW) || + (isset($this->_mode) && ($this->_mode === 'test')) ) { $recurParams['is_test'] = 1; } @@ -1208,16 +1188,16 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date'])); } $recurParams['invoice_id'] = $params['invoiceID'] ?? NULL; - $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); + $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); $recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL; $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE); // We set trxn_id=invoiceID specifically for paypal IPN. It is reset this when paypal sends us the real trxn id, CRM-2991 $recurParams['processor_id'] = $recurParams['trxn_id'] = ($params['trxn_id'] ?? $params['invoiceID']); - $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL; + $campaignId = $params['campaign_id'] ?? $this->_values['campaign_id'] ?? NULL; $recurParams['campaign_id'] = $campaignId; $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams); - $form->_params['contributionRecurID'] = $recurring->id; + $this->_params['contributionRecurID'] = $recurring->id; return $recurring->id; } @@ -1458,13 +1438,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $membershipParams, $contactID, $premiumParams, $customFieldsFormatted, $membershipDetails, $membershipTypeIDs, $isPaidMembership, $membershipID, $isProcessSeparateMembershipTransaction, $financialTypeID, $unprocessedLineItems) { - // Assign $this to $form while we eliminate it. - $form = $this; $membershipContribution = NULL; $isTest = $membershipParams['is_test'] ?? FALSE; $errors = $paymentResults = []; - $form->_values['isMembership'] = TRUE; - $isRecurForFirstTransaction = $form->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL; + $this->_values['isMembership'] = TRUE; + $isRecurForFirstTransaction = $this->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL; $totalAmount = $membershipParams['amount']; @@ -1502,14 +1480,14 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $membershipContribution = $paymentResult['contribution']; // Save the contribution ID so that I can be used in email receipts // For example, if you need to generate a tax receipt for the donation only. - $form->_values['contribution_other_id'] = $membershipContribution->id; + $this->_values['contribution_other_id'] = $membershipContribution->id; } } if ($isProcessSeparateMembershipTransaction) { try { - $form->_lineItem = $unprocessedLineItems; - if (empty($form->_params['auto_renew']) && !empty($membershipParams['is_recur'])) { + $this->_lineItem = $unprocessedLineItems; + if (empty($this->_params['auto_renew']) && !empty($membershipParams['is_recur'])) { unset($membershipParams['is_recur']); } [$membershipContribution, $secondPaymentResult] = $this->processSecondaryFinancialTransaction($contactID, array_merge($membershipParams, ['skipLineItem' => 1]), @@ -1530,7 +1508,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr //@todo - why is this nested so deep? it seems like it could be just set on the calling function on the form layer if (isset($membershipParams['onbehalf']) && !empty($membershipParams['onbehalf']['member_campaign_id'])) { - $form->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; + $this->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; } //@todo it should no longer be possible for it to get to this point & membership to not be an array if (is_array($membershipTypeIDs) && !empty($membershipContributionID)) { @@ -1546,7 +1524,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } $i = 1; - $form->_params['createdMembershipIDs'] = []; + $this->_params['createdMembershipIDs'] = []; foreach ($membershipTypeIDs as $memType) { $membershipLineItems = []; if ($i < count($membershipTypeIDs)) { @@ -1558,22 +1536,22 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } $i++; $numTerms = $typesTerms[$memType] ?? 1; - $contributionRecurID = $form->_params['contributionRecurID'] ?? NULL; + $contributionRecurID = $this->_params['contributionRecurID'] ?? NULL; $membershipSource = NULL; - if (!empty($form->_params['membership_source'])) { - $membershipSource = $form->_params['membership_source']; + if (!empty($this->_params['membership_source'])) { + $membershipSource = $this->_params['membership_source']; } - elseif ((isset($form->_values['title']) && !empty($form->_values['title'])) || (isset($form->_values['frontend_title']) && !empty($form->_values['frontend_title']))) { - $title = $form->_values['frontend_title']; + elseif ((isset($this->_values['title']) && !empty($this->_values['title'])) || (isset($this->_values['frontend_title']) && !empty($this->_values['frontend_title']))) { + $title = $this->_values['frontend_title']; $membershipSource = ts('Online Contribution:') . ' ' . $title; } $isPayLater = NULL; - if (isset($form->_params)) { - $isPayLater = $form->_params['is_pay_later'] ?? NULL; + if (isset($this->_params)) { + $isPayLater = $this->_params['is_pay_later'] ?? NULL; } $memParams = [ - 'campaign_id' => $form->_params['campaign_id'] ?? ($form->_values['campaign_id'] ?? NULL), + 'campaign_id' => $this->_params['campaign_id'] ?? ($this->_values['campaign_id'] ?? NULL), ]; // @todo Move this into CRM_Member_BAO_Membership::processMembership @@ -1593,10 +1571,10 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $membershipLineItems ); - $form->set('renewal_mode', $renewalMode); + $this->set('renewal_mode', $renewalMode); if (!empty($dates)) { - $form->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d')); - $form->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d')); + $this->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d')); + $this->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d')); } if (!empty($membershipContribution)) { @@ -1609,17 +1587,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr civicrm_api3('MembershipPayment', 'create', $membershipPaymentParams); } if ($membership) { - CRM_Core_BAO_CustomValueTable::postProcess($form->_params, 'civicrm_membership', $membership->id, 'Membership'); - $form->_params['createdMembershipIDs'][] = $membership->id; - $form->_params['membershipID'] = $membership->id; + CRM_Core_BAO_CustomValueTable::postProcess($this->_params, 'civicrm_membership', $membership->id, 'Membership'); + $this->_params['createdMembershipIDs'][] = $membership->id; + $this->_params['membershipID'] = $membership->id; //CRM-15232: Check if membership is created and on the basis of it use //membership receipt template to send payment receipt - $form->_values['isMembership'] = TRUE; + $this->_values['isMembership'] = TRUE; } } - if ($form->_priceSetId && !empty($form->_useForMember) && !empty($form->_lineItem)) { - foreach ($form->_lineItem[$form->_priceSetId] as & $priceFieldOp) { + if ($this->_priceSetId && !empty($this->_useForMember) && !empty($this->_lineItem)) { + foreach ($this->_lineItem[$this->_priceSetId] as & $priceFieldOp) { if (!empty($priceFieldOp['membership_type_id']) && $membership->membership_type_id == $priceFieldOp['membership_type_id']) { $membershipOb = $membership; $priceFieldOp['start_date'] = $membershipOb->start_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->start_date) : '-'; @@ -1629,8 +1607,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A'; } } - $form->_values['lineItem'] = $form->_lineItem; - $form->assign('lineItem', $form->_lineItem); + $this->_values['lineItem'] = $this->_lineItem; + $this->assign('lineItem', $this->_lineItem); } } @@ -1640,25 +1618,25 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } if (isset($membershipContributionID)) { - $form->_values['contribution_id'] = $membershipContributionID; + $this->_values['contribution_id'] = $membershipContributionID; } - if (empty($form->_params['is_pay_later']) && $form->_paymentProcessor) { + if (empty($this->_params['is_pay_later']) && $this->_paymentProcessor) { // the is_monetary concept probably should be deprecated as it can be calculated from // the existence of 'amount' & seems fragile. - if ($form->_values['is_monetary'] && $form->_amount > 0.0 && !$form->_params['is_pay_later']) { + if ($this->_values['is_monetary'] && $this->_amount > 0.0 && !$this->_params['is_pay_later']) { // call postProcess hook before leaving - $form->postProcessHook(); + $this->postProcessHook(); } - $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor); + $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor); // The contribution_other_id is effectively the ID for the only contribution or the non-membership contribution. // Since we have called the membership contribution (in a 2 contribution scenario) this is out // primary-contribution compared to that - but let's face it - it's all just too hard & confusing at the moment! - $paymentParams = array_merge($form->_params, ['contributionID' => $form->_values['contribution_other_id']]); + $paymentParams = array_merge($this->_params, ['contributionID' => $this->_values['contribution_other_id']]); // CRM-19792 : set necessary fields for payment processor - CRM_Core_Payment_Form::mapParams($form->_bltID, $paymentParams, $paymentParams, TRUE); + CRM_Core_Payment_Form::mapParams($this->_bltID, $paymentParams, $paymentParams, TRUE); // If this is a single membership-related contribution, it won't have // be performed yet, so do it now. @@ -1696,9 +1674,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr return; } - $emailValues = array_merge($membershipParams, $form->_values); + $emailValues = array_merge($membershipParams, $this->_values); $emailValues['membership_assign'] = 1; - $emailValues['useForMember'] = !empty($form->_useForMember); + $emailValues['useForMember'] = !empty($this->_useForMember); // Finally send an email receipt for pay-later scenario (although it might sometimes be caught above!) if ($totalAmount == 0) { @@ -1710,7 +1688,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // also it reset any payment processor selection result into pending free membership // so its a kind of hack to complete free membership at this point since there is no $form->_paymentProcessor info if (!empty($membershipContribution) && !is_a($membershipContribution, 'CRM_Core_Error')) { - if (empty($form->_paymentProcessor)) { + if (empty($this->_paymentProcessor)) { // @todo this can maybe go now we are setting payment_processor_id = 0 more reliably. $paymentProcessorIDs = explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->_values['payment_processor'] ?? NULL); $this->_paymentProcessor['id'] = $paymentProcessorIDs[0]; diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index e05211d3f5..46cf7e28c0 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -126,14 +126,14 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // remove component related fields foreach ($this->_fields as $name => $fieldInfo) { //don't set custom data Used for Contribution (CRM-1344) - if (substr($name, 0, 7) == 'custom_') { + if (substr($name, 0, 7) === 'custom_') { $id = substr($name, 7); if (!CRM_Core_BAO_CustomGroup::checkCustomField($id, ['Contribution', 'Membership'])) { continue; } // ignore component fields } - elseif (array_key_exists($name, $contribFields) || (substr($name, 0, 11) == 'membership_') || (substr($name, 0, 13) == 'contribution_')) { + elseif (array_key_exists($name, $contribFields) || (substr($name, 0, 11) === 'membership_') || (substr($name, 0, 13) == 'contribution_')) { continue; } $fields[$name] = $fieldInfo; @@ -146,8 +146,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $billingDefaults = $this->getProfileDefaults('Billing', $contactID); $this->_defaults = array_merge($this->_defaults, $billingDefaults); } - if (!empty($this->_ccid) && !empty($this->_pendingAmount)) { - $this->_defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($this->_pendingAmount); + $balance = $this->getContributionBalance(); + if ($balance) { + $this->_defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($balance); } /* @@ -291,7 +292,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // CRM-18399: used by template to pass pre profile id as a url arg $this->assign('custom_pre_id', $this->_values['custom_pre_id']); - $this->buildComponentForm($this->_id, $this); + $this->buildComponentForm(); } // Build payment processor form @@ -349,12 +350,12 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // build price set form. $this->set('priceSetId', $this->_priceSetId); if (empty($this->_ccid)) { - CRM_Price_BAO_PriceSet::buildPriceSet($this, $this->getFormContext()); + $this->buildPriceSet($this, $this->getFormContext()); } if ($this->_values['is_monetary'] && $this->_values['is_recur'] && empty($this->_values['pledge_id']) ) { - self::buildRecur($this); + $this->buildRecur(); } } @@ -366,7 +367,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu //don't build pledge block when mid is passed if (!$this->getRenewalMembershipID() && empty($this->_ccid)) { if (CRM_Core_Component::isEnabled('CiviPledge') && !empty($this->_values['pledge_block_id'])) { - CRM_Pledge_BAO_PledgeBlock::buildPledgeBlock($this); + $this->buildPledgeBlock(); } } @@ -401,10 +402,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu CRM_Core_BAO_CMSUser::buildForm($this, $profileID, TRUE); } } - if ($this->_pcpId && empty($this->_ccid)) { + if ($this->getPcpID() && empty($this->_ccid)) { if (CRM_PCP_BAO_PCP::displayName($this->_pcpId)) { $pcp_supporter_text = CRM_PCP_BAO_PCP::getPcpSupporterText($this->_pcpId, $this->_id, 'contribute'); - $this->assign('pcpSupporterText', $pcp_supporter_text); } $prms = ['id' => $this->_pcpId]; CRM_Core_DAO::commonRetrieve('CRM_PCP_DAO_PCP', $prms, $pcpInfo); @@ -420,6 +420,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->addField('pcp_personal_note', ['entity' => 'ContributionSoft', 'context' => 'create', 'style' => 'height: 3em; width: 40em;']); } } + $this->assign('pcpSupporterText', $pcp_supporter_text ?? NULL); if (empty($this->_values['fee']) && empty($this->_ccid)) { throw new CRM_Core_Exception(ts('This page does not have any price fields configured or you may not have permission for them. Please contact the site administrator for more details.')); } @@ -468,6 +469,122 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->addFormRule(['CRM_Contribute_Form_Contribution_Main', 'formRule'], $this); } + /** + * Build the price set form. + * + * @param CRM_Core_Form $form + * @param string|null $component + * + * @return void + * @throws \CRM_Core_Exception + */ + private function buildPriceSet(&$form, $component = NULL) { + $validPriceFieldIds = array_keys($this->getPriceFieldMetaData()); + $form->assign('priceSet', $form->_priceSet); + + // @todo - this hook wrangling can be done earlier if we set the form on $this->>order. + $feeBlock = &$form->_values['fee']; + // Call the buildAmount hook. + CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); + + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($this->getPriceFieldMetaData() as $id => $field) { + if ($field['visibility_id:name'] === 'public' || + ($field['visibility_id:name'] === 'admin' && $adminFieldVisible) + ) { + $options = $field['options'] ?? NULL; + if ($this->_membershipContactID && $options) { + $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($this->_membershipContactID, FALSE, TRUE); + $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); + $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); + $isCurrentMember = (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); + $checklifetime = $checklifetime ?: $isCurrentMember; + } + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + if (!CRM_Core_Permission::check('edit contributions')) { + foreach ($options as $key => $currentOption) { + if ($currentOption['visibility_id:name'] === 'admin') { + unset($options[$key]); + } + } + } + if (!empty($options)) { + $label = (!empty($this->_membershipBlock) && $field['name'] === 'contribution_amount') ? ts('Additional Contribution') : $field['label']; + $extra = []; + $fieldID = (int) $field['id']; + if ($fieldID === $this->getPriceFieldOtherID()) { + $extra = [ + 'onclick' => 'useAmountOther("price_' . $this->getPriceFieldMainID() . '");', + 'autocomplete' => 'off', + ]; + } + if ($fieldID === $this->getPriceFieldMainID()) { + $extra = [ + 'onclick' => 'clearAmountOther("price_' . $this->getPriceFieldOtherID() . '");', + ]; + } + + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $fieldID, + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + $label, + $options, + [], + $extra + ); + } + } + } + $form->assign('hasExistingLifetimeMembership', $checklifetime); + } + + /** + * Get the idea of the other amount field if the form is configured to offer it. + * + * The other amount field is an alternative to the configured radio options, + * specific to this form. + * + * @return int|null + */ + private function getPriceFieldOtherID(): ?int { + if (!$this->isQuickConfig()) { + return NULL; + } + foreach ($this->order->getPriceFieldsMetadata() as $field) { + if ($field['name'] === 'other_amount') { + return (int) $field['id']; + } + } + return NULL; + } + + /** + * Get the idea of the other amount field if the form is configured to offer an other amount. + * + * The other amount field is an alternative to the configured radio options, + * specific to this form. + * + * @return int|null + */ + private function getPriceFieldMainID(): ?int { + if (!$this->isQuickConfig() || !$this->getPriceFieldOtherID()) { + return NULL; + } + foreach ($this->order->getPriceFieldsMetadata() as $field) { + if ($field['name'] === 'contribution_amount') { + return (int) $field['id']; + } + } + return NULL; + } + /** * Build Membership Block in Contribution Pages. * @todo this was shared on CRM_Contribute_Form_ContributionBase but we are refactoring and simplifying for each @@ -480,7 +597,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu */ private function buildMembershipBlock() { $cid = $this->_membershipContactID; - $isTest = (bool) ($this->_action & CRM_Core_Action::PREVIEW); + $isTest = (bool) ($this->getAction() & CRM_Core_Action::PREVIEW); $separateMembershipPayment = FALSE; $this->addOptionalQuickFormElement('auto_renew'); if ($this->_membershipBlock) { @@ -495,7 +612,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $separateMembershipPayment = $this->_membershipBlock['is_separate_payment'] ?? NULL; - foreach ($this->_priceSet['fields'] as $pField) { + foreach ($this->getPriceFieldMetaData() as $pField) { if (empty($pField['options'])) { continue; } @@ -571,7 +688,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu if ($membership["membership_type_id.duration_unit:name"] === 'lifetime') { unset($radio[$memType['id']]); unset($radioOptAttrs[$memType['id']]); - $this->assign('islifetime', TRUE); + $this->assign('hasExistingLifetimeMembership', TRUE); continue; } $this->assign('renewal_mode', TRUE); @@ -622,15 +739,14 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu /** * Build elements to collect information for recurring contributions. * - * - * @param CRM_Core_Form $form + * Previously shared function. */ - public static function buildRecur(&$form) { + private function buildRecur(): void { + $form = $this; $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_ContributionRecur'); - $className = get_class($form); - $form->assign('is_recur_interval', CRM_Utils_Array::value('is_recur_interval', $form->_values)); - $form->assign('is_recur_installments', CRM_Utils_Array::value('is_recur_installments', $form->_values)); + $form->assign('is_recur_interval', $this->getContributionPageValue('is_recur_interval')); + $form->assign('is_recur_installments', $this->getContributionPageValue('is_recur_installments')); $paymentObject = $form->getVar('_paymentObject'); if ($paymentObject) { $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [ @@ -641,13 +757,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $frUnits = $form->_values['recur_frequency_unit'] ?? NULL; $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, TRUE); - if (empty($frUnits) && - $className == 'CRM_Contribute_Form_Contribution' - ) { - $frUnits = implode(CRM_Core_DAO::VALUE_SEPARATOR, - CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, FALSE, NULL, 'value') - ); - } $unitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $frUnits); @@ -668,7 +777,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu if (count($unitVals) == 1) { $form->assign('one_frequency_unit', TRUE); $form->add('hidden', 'frequency_unit', $unitVals[0]); - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $unit = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($unitVals[0]); $form->assign('frequency_unit', $unit); } @@ -685,7 +794,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu foreach ($unitVals as $key => $val) { if (array_key_exists($val, $frequencyUnits)) { $units[$val] = $frequencyUnits[$val]; - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $units[$val] = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($val); $unit = ts('Every'); } @@ -694,7 +803,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); } - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); } @@ -720,7 +829,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu */ public static function formRule($fields, $files, $self) { $errors = []; - $amount = self::computeAmount($fields, $self->_values); + $amount = $self->computeAmount($fields, $self->_values); if (!empty($fields['auto_renew']) && empty($fields['payment_processor_id'])) { $errors['auto_renew'] = ts('You cannot have auto-renewal on if you are paying later.'); } @@ -912,7 +1021,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } if (isset($fields['selectProduct']) && - $fields['selectProduct'] != 'no_thanks' + $fields['selectProduct'] !== 'no_thanks' ) { $productDAO = new CRM_Contribute_DAO_Product(); $productDAO->id = $fields['selectProduct']; @@ -1032,7 +1141,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu * * @return int|mixed|null|string */ - public static function computeAmount($params, $formValues) { + private function computeAmount($params, $formValues) { $amount = 0; // First clean up the other amount field if present. if (isset($params['amount_other'])) { @@ -1135,13 +1244,13 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } } - - if (!empty($this->_ccid) && !empty($this->_pendingAmount)) { - $params['amount'] = $this->_pendingAmount; + $balance = $this->getContributionBalance(); + if ($balance) { + $params['amount'] = $balance; } else { // from here on down, $params['amount'] holds a monetary value (or null) rather than an option ID - $params['amount'] = self::computeAmount($params, $this->_values); + $params['amount'] = $this->computeAmount($params, $this->_values); } $params['separate_amount'] = $params['amount']; @@ -1181,11 +1290,11 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->set('amount_level', CRM_Utils_Array::value('amount_level', $params)); } - $priceSetId = $params['priceSetId'] ?? NULL; + $priceSetID = $this->getPriceSetID(); if (!empty($this->_ccid)) { $this->set('lineItem', [$this->getPriceSetID() => $this->getExistingContributionLineItems()]); } - elseif ($priceSetId) { + elseif ($priceSetID) { $lineItem = []; if ($this->isQuickConfig()) { foreach ($this->_values['fee'] as $key => & $val) { @@ -1205,17 +1314,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } if ($this->_membershipBlock) { - $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId); + $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetID]); } else { - CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId); + CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetID], $priceSetID); } if ($proceFieldAmount) { - $lineItem[$params['priceSetId']][$fieldOption]['unit_price'] = $proceFieldAmount; - $lineItem[$params['priceSetId']][$fieldOption]['line_total'] = $proceFieldAmount; - if (isset($lineItem[$params['priceSetId']][$fieldOption]['tax_amount'])) { - $proceFieldAmount += $lineItem[$params['priceSetId']][$fieldOption]['tax_amount']; + $lineItem[$priceSetID][$fieldOption]['unit_price'] = $proceFieldAmount; + $lineItem[$priceSetID][$fieldOption]['line_total'] = $proceFieldAmount; + if (isset($lineItem[$priceSetID][$fieldOption]['tax_amount'])) { + $proceFieldAmount += $lineItem[$priceSetID][$fieldOption]['tax_amount']; } if (!$this->_membershipBlock['is_separate_payment']) { //require when separate membership not used @@ -1337,24 +1446,11 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } $this->assign('dummyTitle', $dummyTitle); - + $this->assign('pendingAmount', $this->getContributionBalance()); if (empty($this->getExistingContributionID())) { return; } - if (!$this->getContactID()) { - CRM_Core_Error::statusBounce(ts("Returning since there is no contact attached to this contribution id.")); - } - - $paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_ccid); - //bounce if the contribution is not pending. - if ((float) $paymentBalance <= 0) { - CRM_Core_Error::statusBounce(ts("Returning since contribution has already been handled.")); - } - if (!empty($paymentBalance)) { - $this->_pendingAmount = $paymentBalance; - $this->assign('pendingAmount', $this->_pendingAmount); - } - + // @todo - all this stuff is likely obsolete. if ($taxAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $this->_ccid, 'tax_amount')) { $this->assign('taxAmount', $taxAmount); } @@ -1365,6 +1461,29 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->assign('priceSetID', $this->getPriceSetID()); } + /** + * Get the balance amount if an existing contribution is being paid. + * + * @return float|null + * + * @throws \CRM_Core_Exception + */ + private function getContributionBalance(): ?float { + if (empty($this->getExistingContributionID())) { + return NULL; + } + if (!$this->getContactID()) { + CRM_Core_Error::statusBounce(ts('Returning since there is no contact attached to this contribution id.')); + } + + $paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_ccid); + //bounce if the contribution is not pending. + if ((float) $paymentBalance <= 0) { + CRM_Core_Error::statusBounce(ts('Returning since contribution has already been handled.')); + } + return $paymentBalance; + } + /** * Function for unit tests on the postProcess function. * @@ -1386,7 +1505,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu * * @param array $params * - * @return mixed + * @return bool * @throws \CRM_Core_Exception */ protected function hasSeparateMembershipPaymentAmount($params) { @@ -1411,4 +1530,354 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu return NULL; } + /** + * Add onbehalf/honoree profile fields and native module fields. + * + * @throws \CRM_Core_Exception + */ + private function buildComponentForm(): void { + + foreach (['soft_credit', 'on_behalf'] as $module) { + if ($module === 'soft_credit') { + $this->addSoftCreditFields(); + } + else { + $this->addOnBehalfFields(); + } + } + + } + + /** + * Add soft credit fields. + * + * @throws \CRM_Core_Exception + */ + private function addSoftCreditFields(): void { + if (!empty($this->_values['honoree_profile_id'])) { + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_values['honoree_profile_id'], 'is_active')) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the selected honoree profile is either disabled or not found.')); + } + + $profileContactType = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']); + $requiredProfileFields = [ + 'Individual' => ['first_name', 'last_name'], + 'Organization' => ['organization_name', 'email'], + 'Household' => ['household_name', 'email'], + ]; + $validProfile = CRM_Core_BAO_UFGroup::checkValidProfile($this->_values['honoree_profile_id'], $requiredProfileFields[$profileContactType]); + if (!$validProfile) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the required fields of the selected honoree profile are disabled or doesn\'t exist.')); + } + + $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE); + + // radio button for Honor Type + foreach ($this->_values['soft_credit_types'] as $value) { + $honorTypes[$value] = $softCreditTypes[$value]; + } + $this->addRadio('soft_credit_type_id', NULL, $honorTypes, ['allowClear' => TRUE]); + + $honoreeProfileFields = CRM_Core_BAO_UFGroup::getFields( + $this->_values['honoree_profile_id'], FALSE, + NULL, NULL, + NULL, FALSE, + NULL, TRUE, + NULL, CRM_Core_Permission::CREATE + ); + + // add the form elements + foreach ($honoreeProfileFields as $name => $field) { + // If soft credit type is not chosen then make omit requiredness from honoree profile fields + if (count($this->_submitValues) && + empty($this->_submitValues['soft_credit_type_id']) && + !empty($field['is_required']) + ) { + $field['is_required'] = FALSE; + } + CRM_Core_BAO_UFGroup::buildProfile($this, $field, CRM_Profile_Form::MODE_CREATE, NULL, FALSE, FALSE, NULL, 'honor'); + } + } + $this->assign('honoreeProfileFields', $honoreeProfileFields ?? NULL); + $this->assign('honor_block_title', $this->_values['honor_block_title'] ?? NULL); + $this->assign('honor_block_text', $this->_values['honor_block_text'] ?? NULL); + } + + /** + * Add the on behalf fields. + * + * @throws \CRM_Core_Exception + */ + private function addOnBehalfFields(): void { + $contactID = $this->getContactID(); + if (!empty($this->_values['onbehalf_profile_id'])) { + + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_values['onbehalf_profile_id'], 'is_active')) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of an organization and the selected onbehalf profile is either disabled or not found.')); + } + + $member = CRM_Member_BAO_Membership::getMembershipBlock($this->getContributionPageID()); + if (empty($member['is_active'])) { + $msg = ts('Mixed profile not allowed for on behalf of registration/sign up.'); + $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($this->_values['onbehalf_profile_id']); + foreach ( + [ + 'Individual', + 'Organization', + 'Household', + ] as $contactType + ) { + if (in_array($contactType, $onBehalfProfile) && + (in_array('Membership', $onBehalfProfile) || + in_array('Contribution', $onBehalfProfile) + ) + ) { + CRM_Core_Error::statusBounce($msg); + } + } + } + + if ($contactID) { + // retrieve all permissioned organizations of contact $contactID + $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($contactID, NULL, NULL, 'Organization'); + + if (count($organizations)) { + // Related org url - pass checksum if needed + $args = [ + 'ufID' => $this->_values['onbehalf_profile_id'], + 'cid' => '', + ]; + if (!empty($_GET['cs'])) { + $args = [ + 'ufID' => $this->_values['onbehalf_profile_id'], + 'uid' => $this->_contactID, + 'cs' => $_GET['cs'], + 'cid' => '', + ]; + } + $locDataURL = CRM_Utils_System::url('civicrm/ajax/permlocation', $args, FALSE, NULL, FALSE); + } + if (count($organizations) > 0) { + $this->add('select', 'onbehalfof_id', '', CRM_Utils_Array::collect('name', $organizations)); + + $orgOptions = [ + 0 => ts('Select an existing organization'), + 1 => ts('Enter a new organization'), + ]; + $this->addRadio('org_option', ts('options'), $orgOptions); + $this->setDefaults(['org_option' => 0]); + } + } + + if (!empty($this->_values['is_for_organization'])) { + if ((int) $this->_values['is_for_organization'] !== 2) { + $this->addElement('checkbox', 'is_for_organization', + $this->_values['for_organization'], + NULL + ); + } + } + + $profileFields = CRM_Core_BAO_UFGroup::getFields( + $this->_values['onbehalf_profile_id'], + FALSE, CRM_Core_Action::VIEW, NULL, + NULL, FALSE, NULL, FALSE, NULL, + CRM_Core_Permission::CREATE, NULL + ); + + $fieldTypes = ['Contact', 'Organization']; + if (!empty($this->_membershipBlock)) { + $fieldTypes = array_merge($fieldTypes, ['Membership']); + } + $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); + $fieldTypes = array_merge($fieldTypes, $contactSubType); + + foreach ($profileFields as $name => $field) { + if (in_array($field['field_type'], $fieldTypes)) { + [$prefixName, $index] = CRM_Utils_System::explode('-', $name, 2); + if (in_array($prefixName, ['organization_name', 'email']) && empty($field['is_required'])) { + $field['is_required'] = 1; + } + if (count($this->_submitValues) && + empty($this->_submitValues['is_for_organization']) && + $this->_values['is_for_organization'] == 1 && + !empty($field['is_required']) + ) { + $field['is_required'] = FALSE; + } + CRM_Core_BAO_UFGroup::buildProfile($this, $field, NULL, NULL, FALSE, 'onbehalf', NULL, 'onbehalf'); + } + } + } + $this->assign('onBehalfRequired', (int) ($this->_values['is_for_organization'] ?? 0) === 2); + $this->assign('locDataURL', $locDataURL ?? NULL); + $this->assign('onBehalfOfFields', $profileFields ?? NULL); + $this->assign('fieldSetTitle', empty($this->_values['onbehalf_profile_id']) ? NULL : CRM_Core_BAO_UFGroup::getFrontEndTitle($this->_values['onbehalf_profile_id'])); + // @todo - this is horrible - we are accessing a value in the POST rather than via QF. _submitValues is 'raw' + $this->assign('submittedOnBehalf', $this->_submitValues['onbehalfof_id'] ?? NULL); + $this->assign('submittedOnBehalfInfo', empty($this->_submitValues['onbehalf']) ? NULL : json_encode(str_replace('"', '\"', $this->_submitValues['onbehalf']), JSON_HEX_APOS)); + } + + /** + * Build Pledge Block in Contribution Pages. + * + * @throws \CRM_Core_Exception + */ + private function buildPledgeBlock() { + //build pledge payment fields. + if (!empty($this->_values['pledge_id'])) { + //get all payments required details. + $allPayments = []; + $returnProperties = [ + 'status_id', + 'scheduled_date', + 'scheduled_amount', + 'currency', + ]; + CRM_Core_DAO::commonRetrieveAll('CRM_Pledge_DAO_PledgePayment', 'pledge_id', + $this->_values['pledge_id'], $allPayments, $returnProperties + ); + // get all status + $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + + $nextPayment = []; + $isNextPayment = FALSE; + $overduePayments = []; + foreach ($allPayments as $payID => $value) { + if ($allStatus[$value['status_id']] == 'Overdue') { + $overduePayments[$payID] = [ + 'id' => $payID, + 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), + 'scheduled_amount_currency' => $value['currency'], + 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], + '%B %d' + ), + ]; + } + elseif (!$isNextPayment && + $allStatus[$value['status_id']] == 'Pending' + ) { + // get the next payment. + $nextPayment = [ + 'id' => $payID, + 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), + 'scheduled_amount_currency' => $value['currency'], + 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], + '%B %d' + ), + ]; + $isNextPayment = TRUE; + } + } + + // build check box array for payments. + $payments = []; + if (!empty($overduePayments)) { + foreach ($overduePayments as $id => $payment) { + $label = ts("%1 - due on %2 (overdue)", [ + 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $payment), CRM_Utils_Array::value('scheduled_amount_currency', $payment)), + 2 => $payment['scheduled_date'] ?? NULL, + ]); + $paymentID = $payment['id'] ?? NULL; + $payments[] = $this->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $payment)]); + } + } + + if (!empty($nextPayment)) { + $label = ts("%1 - due on %2", [ + 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $nextPayment), CRM_Utils_Array::value('scheduled_amount_currency', $nextPayment)), + 2 => $nextPayment['scheduled_date'] ?? NULL, + ]); + $paymentID = $nextPayment['id'] ?? NULL; + $payments[] = $this->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $nextPayment)]); + } + // give error if empty or build form for payment. + if (empty($payments)) { + throw new CRM_Core_Exception(ts('Oops. It looks like there is no valid payment status for online payment.')); + } + $this->addGroup($payments, 'pledge_amount', ts('Make Pledge Payment(s):'), '<br />'); + } + else { + $pledgeBlock = []; + + $dao = new CRM_Pledge_DAO_PledgeBlock(); + $dao->entity_table = 'civicrm_contribution_page'; + $dao->entity_id = $this->getContributionPageID(); + if ($dao->find(TRUE)) { + CRM_Core_DAO::storeValues($dao, $pledgeBlock); + } + // build form for pledge creation. + $pledgeOptions = [ + '0' => ts('I want to make a one-time contribution'), + '1' => ts('I pledge to contribute this amount every'), + ]; + $this->addRadio('is_pledge', ts('Pledge Frequency Interval'), $pledgeOptions, + NULL, ['<br/>'] + ); + $this->addElement('text', 'pledge_installments', ts('Installments'), ['size' => 3, 'aria-label' => ts('Installments')]); + + if (!empty($pledgeBlock['is_pledge_interval'])) { + $this->addElement('text', 'pledge_frequency_interval', NULL, ['size' => 3, 'aria-label' => ts('Frequency Intervals')]); + } + else { + $this->add('hidden', 'pledge_frequency_interval', 1); + } + // Frequency unit drop-down label suffixes switch from *ly to *(s) + $freqUnitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $pledgeBlock['pledge_frequency_unit']); + $freqUnits = []; + $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units'); + foreach ($freqUnitVals as $key => $val) { + if (array_key_exists($val, $frequencyUnits)) { + $freqUnits[$val] = !empty($pledgeBlock['is_pledge_interval']) ? "{$frequencyUnits[$val]}(s)" : $frequencyUnits[$val]; + } + } + $this->addElement('select', 'pledge_frequency_unit', NULL, $freqUnits, ['aria-label' => ts('Frequency Units')]); + // CRM-18854 + if (!empty($pledgeBlock['is_pledge_start_date_visible'])) { + if (!empty($pledgeBlock['pledge_start_date'])) { + $defaults = []; + $date = (array) json_decode($pledgeBlock['pledge_start_date']); + foreach ($date as $field => $value) { + switch ($field) { + case 'contribution_date': + $this->add('datepicker', 'start_date', ts('First installment payment'), [], FALSE, ['time' => FALSE]); + $paymentDate = $value = date('Y-m-d'); + $defaults['start_date'] = $value; + $this->assign('is_date', TRUE); + break; + + case 'calendar_date': + $this->add('datepicker', 'start_date', ts('First installment payment'), [], FALSE, ['time' => FALSE]); + $defaults['start_date'] = $value; + $this->assign('is_date', TRUE); + $paymentDate = $value; + break; + + case 'calendar_month': + $month = CRM_Utils_Date::getCalendarDayOfMonth(); + $this->add('select', 'start_date', ts('Day of month installments paid'), $month); + $paymentDate = CRM_Pledge_BAO_Pledge::getPaymentDate($value); + $defaults['start_date'] = $paymentDate; + break; + + default: + break; + + } + $this->setDefaults($defaults); + $this->assign('start_date_display', $paymentDate); + $this->assign('start_date_editable', FALSE); + if (!empty($pledgeBlock['is_pledge_start_date_editable'])) { + $this->assign('start_date_editable', TRUE); + if ($field === 'calendar_month') { + $this->assign('is_date', FALSE); + $this->setDefaults(['start_date' => $value]); + } + } + } + } + } + } + } + } diff --git a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php index 60e14469b5..9c0a93bccf 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php +++ b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php @@ -78,6 +78,8 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont /** * Build the form object. + * + * @throws \CRM_Core_Exception */ public function buildQuickForm() { // FIXME: Some of this code is identical to Confirm.php and should be broken out into a shared function @@ -109,10 +111,10 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont } } } - $this->assign('getTaxDetails', $getTaxDetails); - $this->assign('taxTerm', CRM_Invoicing_Utils::getTaxTerm()); - $this->assign('totalTaxAmount', $params['tax_amount']); } + $this->assign('getTaxDetails', (bool) $this->order->getTotalTaxAmount()); + $this->assign('totalTaxAmount', $this->order->getTotalTaxAmount()); + $this->assign('taxTerm', \Civi::settings()->get('tax_term')); if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) { $this->assign('lineItem', $tplLineItems); diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index 95ff6b6a4d..31b76b29f8 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -15,11 +15,14 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\PriceSet; + /** * This class generates form components for processing a contribution. */ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { use CRM_Financial_Form_FrontEndPaymentFormTrait; + use CRM_Contribute_Form_ContributeFormTrait; /** * The id of the contribution page that we are processing. @@ -114,6 +117,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { * Pcp id * * @var int + * + * @internal use getPcpID(). */ public $_pcpId; @@ -268,11 +273,41 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { else { $this->_priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id); } + if (!$this->_priceSetId) { + if ($this->isShowMembershipBlock()) { + $this->_priceSetId = PriceSet::get(FALSE) + ->addWhere('name', '=', 'default_membership_type_amount') + ->execute() + ->first()['id']; + } + } $this->set('priceSetId', $this->_priceSetId); } return $this->_priceSetId ?: NULL; } + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return int + */ + public function getContributionPageID(): int { + if (!$this->_id) { + /** @noinspection PhpUnhandledExceptionInspection */ + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + if (!$this->_id) { + // seems like the session is corrupted and/or we lost the id trail + // lets just bump this to a regular session error and redirect user to main page + $this->controller->invalidKeyRedirect(); + } + } + return $this->_id; + } + /** * Set variables up before form is built. * @@ -282,13 +317,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { public function preProcess() { // current contribution page id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + $this->getContributionPageID(); $this->_ccid = CRM_Utils_Request::retrieve('ccid', 'Positive', $this); - if (!$this->_id) { - // seems like the session is corrupted and/or we lost the id trail - // lets just bump this to a regular session error and redirect user to main page - $this->controller->invalidKeyRedirect(); - } $this->_emailExists = $this->get('emailExists'); $this->_contactID = $this->_membershipContactID = $this->getContactID(); @@ -354,6 +384,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { if ($this->getPriceSetID()) { $this->order = new CRM_Financial_BAO_Order(); $this->order->setPriceSetID($this->getPriceSetID()); + $this->order->setIsExcludeExpiredFields(TRUE); + $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues()); } else { CRM_Core_Error::deprecatedFunctionWarning('forms require a price set ID'); @@ -366,11 +398,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->_fields = []; CRM_Contribute_BAO_ContributionPage::setValues($this->_id, $this->_values); - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() - && !CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($this->_values['financial_type_id'])) - ) { - CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); - } if (empty($this->_values['is_active'])) { throw new CRM_Contribute_Exception_InactiveContributionPageException(ts('The page you requested is currently unavailable.'), $this->_id); } @@ -455,10 +482,9 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->set('membershipBlock', $this->getMembershipBlock()); // Handle PCP - $pcpId = CRM_Utils_Request::retrieve('pcpId', 'Positive', $this); - if ($pcpId) { + $pcpId = $this->getPcpID(); + if ($this->getPcpID()) { $pcp = CRM_PCP_BAO_PCP::handlePcp($pcpId, 'contribute', $this->_values); - $this->_pcpId = $pcp['pcpId']; $this->_pcpBlock = $pcp['pcpBlock']; $this->_pcpInfo = $pcp['pcpInfo']; } @@ -473,10 +499,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->assign('linkText', $linkText); } - //set pledge block if block id is set - if (!empty($this->_values['pledge_block_id'])) { - $this->assign('pledgeBlock', TRUE); - } + $this->assign('pledgeBlock', !empty($this->_values['pledge_block_id'])); // @todo - move this check to `getMembershipBlock` if (!$this->isFormSupportsNonMembershipContributions() && @@ -490,7 +513,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->set('amount_block_is_active', $this->isFormSupportsNonMembershipContributions()); $this->_contributeMode = $this->get('contributeMode'); - $this->assign('contributeMode', $this->_contributeMode); //assigning is_monetary and is_email_receipt to template $this->assign('is_monetary', $this->_values['is_monetary']); @@ -499,7 +521,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { //assign cancelSubscription URL to templates $this->assign('cancelSubscriptionUrl', - CRM_Utils_Array::value('cancelSubscriptionUrl', $this->_values) + $this->_values['cancelSubscriptionUrl'] ?? NULL ); $title = $this->_values['frontend_title']; @@ -544,14 +566,44 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { if ($form->_action & CRM_Core_Action::UPDATE) { $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'contribution'); } - - $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId); - $form->_priceSet = $priceSet[$priceSetId] ?? NULL; - $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL; + $form->_priceSet = $this->order->getPriceSetMetadata(); + $this->setPriceFieldMetaData($this->order->getPriceFieldsMetadata()); $form->set('priceSet', $form->_priceSet); } } + /** + * Set price field metadata. + * + * @param array $metadata + */ + public function setPriceFieldMetaData(array $metadata): void { + $this->_values['fee'] = $this->_priceSet['fields'] = $metadata; + } + + /** + * Get price field metadata. + * + * The returned value is an array of arrays where each array + * is an id-keyed price field and an 'options' key has been added to that + * arry for any options. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return array + */ + public function getPriceFieldMetaData(): array { + if (!empty($this->_values['fee'])) { + return $this->_values['fee']; + } + if (!empty($this->_priceSet['fields'])) { + return $this->_priceSet['fields']; + } + return $this->order->getPriceFieldsMetadata(); + } + /** * Set the default values. */ @@ -787,8 +839,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } } - $this->assign($name, $fields); - if ($profileContactType && count($viewOnlyFileValues[$profileContactType])) { $this->assign('viewOnlyPrefixFileValues', $viewOnlyFileValues); } @@ -797,6 +847,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } } } + $this->assign($name, $fields ?? NULL); } /** @@ -856,195 +907,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } } - /** - * Add onbehalf/honoree profile fields and native module fields. - * - * @param int $id - * @param CRM_Core_Form $form - * - * @throws \CRM_Core_Exception - */ - public function buildComponentForm($id, $form): void { - if (empty($id)) { - return; - } - - $contactID = $this->getContactID(); - - foreach (['soft_credit', 'on_behalf'] as $module) { - if ($module === 'soft_credit') { - if (empty($form->_values['honoree_profile_id'])) { - continue; - } - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $form->_values['honoree_profile_id'], 'is_active')) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the selected honoree profile is either disabled or not found.')); - } - - $profileContactType = CRM_Core_BAO_UFGroup::getContactType($form->_values['honoree_profile_id']); - $requiredProfileFields = [ - 'Individual' => ['first_name', 'last_name'], - 'Organization' => ['organization_name', 'email'], - 'Household' => ['household_name', 'email'], - ]; - $validProfile = CRM_Core_BAO_UFGroup::checkValidProfile($form->_values['honoree_profile_id'], $requiredProfileFields[$profileContactType]); - if (!$validProfile) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the required fields of the selected honoree profile are disabled or doesn\'t exist.')); - } - - foreach (['honor_block_title', 'honor_block_text'] as $name) { - $form->assign($name, $form->_values[$name]); - } - - $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE); - - // radio button for Honor Type - foreach ($form->_values['soft_credit_types'] as $value) { - $honorTypes[$value] = $softCreditTypes[$value]; - } - $form->addRadio('soft_credit_type_id', NULL, $honorTypes, ['allowClear' => TRUE]); - - $honoreeProfileFields = CRM_Core_BAO_UFGroup::getFields( - $this->_values['honoree_profile_id'], FALSE, - NULL, NULL, - NULL, FALSE, - NULL, TRUE, - NULL, CRM_Core_Permission::CREATE - ); - $form->assign('honoreeProfileFields', $honoreeProfileFields); - - // add the form elements - foreach ($honoreeProfileFields as $name => $field) { - // If soft credit type is not chosen then make omit requiredness from honoree profile fields - if (count($form->_submitValues) && - empty($form->_submitValues['soft_credit_type_id']) && - !empty($field['is_required']) - ) { - $field['is_required'] = FALSE; - } - CRM_Core_BAO_UFGroup::buildProfile($form, $field, CRM_Profile_Form::MODE_CREATE, NULL, FALSE, FALSE, NULL, 'honor'); - } - } - else { - if (empty($form->_values['onbehalf_profile_id'])) { - continue; - } - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $form->_values['onbehalf_profile_id'], 'is_active')) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of an organization and the selected onbehalf profile is either disabled or not found.')); - } - - $member = CRM_Member_BAO_Membership::getMembershipBlock($form->_id); - if (empty($member['is_active'])) { - $msg = ts('Mixed profile not allowed for on behalf of registration/sign up.'); - $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($form->_values['onbehalf_profile_id']); - foreach ( - [ - 'Individual', - 'Organization', - 'Household', - ] as $contactType - ) { - if (in_array($contactType, $onBehalfProfile) && - (in_array('Membership', $onBehalfProfile) || - in_array('Contribution', $onBehalfProfile) - ) - ) { - CRM_Core_Error::statusBounce($msg); - } - } - } - - if ($contactID) { - // retrieve all permissioned organizations of contact $contactID - $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($contactID, NULL, NULL, 'Organization'); - - if (count($organizations)) { - // Related org url - pass checksum if needed - $args = [ - 'ufID' => $form->_values['onbehalf_profile_id'], - 'cid' => '', - ]; - if (!empty($_GET['cs'])) { - $args = [ - 'ufID' => $form->_values['onbehalf_profile_id'], - 'uid' => $this->_contactID, - 'cs' => $_GET['cs'], - 'cid' => '', - ]; - } - $locDataURL = CRM_Utils_System::url('civicrm/ajax/permlocation', $args, FALSE, NULL, FALSE); - $form->assign('locDataURL', $locDataURL); - } - if (count($organizations) > 0) { - $form->add('select', 'onbehalfof_id', '', CRM_Utils_Array::collect('name', $organizations)); - - $orgOptions = [ - 0 => ts('Select an existing organization'), - 1 => ts('Enter a new organization'), - ]; - $form->addRadio('org_option', ts('options'), $orgOptions); - $form->setDefaults(['org_option' => 0]); - } - } - - $form->assign('fieldSetTitle', CRM_Core_BAO_UFGroup::getFrontEndTitle($form->_values['onbehalf_profile_id'])); - - if (!empty($form->_values['is_for_organization'])) { - if ($form->_values['is_for_organization'] == 2) { - $form->assign('onBehalfRequired', TRUE); - } - else { - $form->addElement('checkbox', 'is_for_organization', - $form->_values['for_organization'], - NULL - ); - } - } - - $profileFields = CRM_Core_BAO_UFGroup::getFields( - $form->_values['onbehalf_profile_id'], - FALSE, CRM_Core_Action::VIEW, NULL, - NULL, FALSE, NULL, FALSE, NULL, - CRM_Core_Permission::CREATE, NULL - ); - - $form->assign('onBehalfOfFields', $profileFields); - if (!empty($form->_submitValues['onbehalf'])) { - if (!empty($form->_submitValues['onbehalfof_id'])) { - $form->assign('submittedOnBehalf', $form->_submitValues['onbehalfof_id']); - } - $form->assign('submittedOnBehalfInfo', json_encode(str_replace('"', '\"', $form->_submitValues['onbehalf']), JSON_HEX_APOS)); - } - - $fieldTypes = ['Contact', 'Organization']; - if (!empty($form->_membershipBlock)) { - $fieldTypes = array_merge($fieldTypes, ['Membership']); - } - $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); - $fieldTypes = array_merge($fieldTypes, $contactSubType); - - foreach ($profileFields as $name => $field) { - if (in_array($field['field_type'], $fieldTypes)) { - [$prefixName, $index] = CRM_Utils_System::explode('-', $name, 2); - if (in_array($prefixName, ['organization_name', 'email']) && empty($field['is_required'])) { - $field['is_required'] = 1; - } - if (count($form->_submitValues) && - empty($form->_submitValues['is_for_organization']) && - $form->_values['is_for_organization'] == 1 && - !empty($field['is_required']) - ) { - $field['is_required'] = FALSE; - } - CRM_Core_BAO_UFGroup::buildProfile($form, $field, NULL, NULL, FALSE, 'onbehalf', NULL, 'onbehalf'); - } - } - } - } - - } - /** * Check template file exists. * @@ -1241,10 +1103,9 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { * Params reflecting form input e.g with fields 'price_5' => 7, 'price_8' => array(7, 8) * @param $lineItems * Line item array to be altered. - * @param int $priceSetID */ - public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems, $priceSetID = NULL) { - CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $priceSetID); + public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems) { + CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $this->getPriceSetID()); $autoRenew = []; $autoRenew[0] = $autoRenew[1] = $autoRenew[2] = 0; foreach ($lineItems as $lineItem) { @@ -1382,6 +1243,48 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { return $this->_ccid ?: CRM_Utils_Request::retrieve('ccid', 'Positive', $this); } + /** + * Get the submitted value, accessing it from whatever form in the flow it is + * submitted on. + * + * @param string $fieldName + * + * @return mixed|null + */ + public function getSubmittedValue(string $fieldName) { + $value = $this->controller->exportValue('Main', $fieldName); + if (in_array($fieldName, $this->submittableMoneyFields, TRUE)) { + return CRM_Utils_Rule::cleanMoney($value); + } + + // Numeric fields are not in submittableMoneyFields (for now) + $fieldRules = $this->_rules[$fieldName] ?? []; + foreach ($fieldRules as $rule) { + if ('money' === $rule['type']) { + return CRM_Utils_Rule::cleanMoney($value); + } + } + return $value; + } + + /** + * Get the fields that can be submitted in this form flow. + * + * This is overridden to make the fields submitted on the first + * form (Contribution_Main) available from the others in the same flow + * (Contribution_Confirm, Contribution_ThankYou). + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return string[] + */ + protected function getSubmittableFields(): array { + $fieldNames = array_keys($this->controller->exportValues('Main')); + return array_fill_keys($fieldNames, $this->_name); + } + /** * @return array */ @@ -1393,4 +1296,37 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { return $lineItems; } + /** + * Get the PCP ID being contributed to. + * + * @return int|null + */ + protected function getPcpID(): ?int { + if ($this->_pcpId === NULL) { + $this->_pcpId = CRM_Utils_Request::retrieve('pcpId', 'Positive', $this); + } + return $this->_pcpId ? (int) $this->_pcpId : NULL; + } + + /** + * Get the selected Contribution ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + if ($this->getExistingContributionID()) { + return $this->getExistingContributionID(); + } + if (property_exists($this, '_contributionID')) { + // Available on Confirm form (which is tested), so this avoids + // accessing that directly & will work for ThankYou in time. + return $this->_contributionID; + } + return NULL; + } + } diff --git a/civicrm/CRM/Contribute/Form/ContributionCharts.php b/civicrm/CRM/Contribute/Form/ContributionCharts.php index 5b2005f746..666546e0ca 100644 --- a/civicrm/CRM/Contribute/Form/ContributionCharts.php +++ b/civicrm/CRM/Contribute/Form/ContributionCharts.php @@ -97,7 +97,7 @@ class CRM_Contribute_Form_ContributionCharts extends CRM_Core_Form { $abbrMonthNames = CRM_Utils_Date::getAbbrMonthNames(); foreach ($abbrMonthNames as $monthKey => $monthName) { - $val = CRM_Utils_Array::value($monthKey, $chartInfoMonthly['By Month'], 0); + $val = $chartInfoMonthly['By Month'][$monthKey] ?? 0; // don't include zero value month. if (!$val && ($chartType != 'bvg')) { diff --git a/civicrm/CRM/Contribute/Form/ContributionPage.php b/civicrm/CRM/Contribute/Form/ContributionPage.php index 28a383d00f..3b8f5a1d6f 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage.php @@ -46,7 +46,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { * * @var int */ - protected $_priceSetID = NULL; + protected $_priceSetID; protected $_values; @@ -68,11 +68,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { * Set variables up before form is built. */ public function preProcess() { - // current contribution page id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', - $this, FALSE, NULL, 'REQUEST' - ); - $this->assign('contributionPageID', $this->_id); + $this->assign('contributionPageID', $this->getContributionPageID()); // get the requested action $this->_action = CRM_Utils_Request::retrieve('action', 'String', @@ -85,10 +81,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { $title = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage', $this->_id, 'title'); } - // CRM-16776 - show edit/copy/create buttons on Profiles Tab if user has required permission. - if (CRM_Core_Permission::check('administer CiviCRM')) { - $this->assign('perm', TRUE); - } + $this->assign('perm', (bool) CRM_Core_Permission::check('administer CiviCRM')); // set up tabs CRM_Contribute_Form_ContributionPage_TabHeader::build($this); @@ -258,10 +251,8 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { // get price set of type contributions //this is the value for stored in db if price set extends contribution - $usedFor = 2; - $this->_priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id, $usedFor, 1); - if ($this->_priceSetID) { - $defaults['price_set_id'] = $this->_priceSetID; + if ($this->getPriceSetID()) { + $defaults['price_set_id'] = $this->getPriceSetID(); } } else { @@ -406,4 +397,36 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { } } + /** + * Get the price set ID for the event. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getContributionPageID(): ?int { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + } + return $this->_id ? (int) $this->_id : NULL; + } + + /** + * Get the price set ID for the contribution page. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getPriceSetID(): ?int { + if (!$this->_priceSetID && $this->getContributionPageID()) { + $this->_priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->getContributionPageID()); + } + return $this->_priceSetID ? (int) $this->_priceSetID : NULL; + } + } diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php index 910d57e1a9..03df84064a 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php @@ -98,9 +98,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co if (count($recurringPaymentProcessor)) { $this->assign('recurringPaymentProcessor', $recurringPaymentProcessor); } - if (count($futurePaymentProcessor)) { - $this->assign('futurePaymentProcessor', $futurePaymentProcessor); - } + $this->assign('futurePaymentProcessor', json_encode($futurePaymentProcessor ?? [], TRUE)); if (count($paymentProcessor)) { $this->assign('paymentProcessor', $paymentProcessor); } @@ -144,7 +142,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co else { $this->assign('price', TRUE); } - + $this->assign('isQuick', $this->isQuickConfig()); $this->addSelect('price_set_id', [ 'entity' => 'PriceSet', 'option_url' => 'civicrm/admin/price', @@ -208,12 +206,10 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co if (empty($defaults['pay_later_text'])) { $defaults['pay_later_text'] = ts('I will send payment by check'); } - if (!empty($defaults['amount_block_is_active'])) { if ($priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id, NULL)) { - if ($isQuick = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config')) { - $this->assign('isQuick', $isQuick); + if ($this->isQuickConfig()) { //$priceField = CRM_Core_DAO::getFieldValue( 'CRM_Price_DAO_PriceField', $priceSetId, 'id', 'price_set_id' ); $options = $pFIDs = []; $priceFieldParams = ['price_set_id' => $priceSetId]; @@ -447,7 +443,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co if (array_key_exists(CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor', 'AuthNet', 'id', 'payment_processor_type_id' ), - CRM_Utils_Array::value('payment_processor', $params) + ($params['payment_processor'] ?? NULL) )) { CRM_Core_Session::setStatus(ts(' Please note that the Authorize.net payment processor only allows recurring contributions and auto-renew memberships with payment intervals from 7-365 days or 1-12 months (i.e. not greater than 1 year).'), '', 'alert'); } @@ -501,8 +497,8 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co $params['recur_frequency_unit'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, array_keys($params['recur_frequency_unit']) ); - $params['is_recur_interval'] = CRM_Utils_Array::value('is_recur_interval', $params, FALSE); - $params['is_recur_installments'] = CRM_Utils_Array::value('is_recur_installments', $params, FALSE); + $params['is_recur_interval'] = $params['is_recur_interval'] ?? FALSE; + $params['is_recur_installments'] = $params['is_recur_installments'] ?? FALSE; } if (!empty($params['adjust_recur_start_date'])) { @@ -818,7 +814,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co } if ($deleteAmountBlk) { - $priceField = !empty($params['price_field_id']) ? $params['price_field_id'] : CRM_Utils_Array::value('price_field_other', $params); + $priceField = !empty($params['price_field_id']) ? $params['price_field_id'] : $params['price_field_other'] ?? NULL; if ($priceField) { $priceSetID = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $priceField, 'price_set_id'); CRM_Price_BAO_PriceSet::setIsQuickConfig($priceSetID, 0); @@ -828,6 +824,15 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co parent::endPostProcess(); } + /** + * Is the price set quick config. + * + * @return bool + */ + private function isQuickConfig(): bool { + return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID()); + } + /** * Return a descriptive name for the page, used in wizard header * diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php index 7683f3d900..258c4e1cba 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php @@ -127,8 +127,8 @@ class CRM_Contribute_Form_ContributionPage_Premium extends CRM_Contribute_Form_C $params['id'] = $premiumID; } - $params['premiums_active'] = CRM_Utils_Array::value('premiums_active', $params, FALSE); - $params['premiums_display_min_contribution'] = CRM_Utils_Array::value('premiums_display_min_contribution', $params, FALSE); + $params['premiums_active'] = $params['premiums_active'] ?? FALSE; + $params['premiums_display_min_contribution'] = $params['premiums_display_min_contribution'] ?? FALSE; $params['entity_table'] = 'civicrm_contribution_page'; $params['entity_id'] = $this->_id; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php index c91b6e9ec6..a91499ab6a 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php @@ -69,8 +69,8 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $defaults['honoree_profile'] = $ufGroupDAO->id; } $defaults['soft_credit_types'] = [ - CRM_Utils_Array::value('in_honor_of', $soft_credit_types), - CRM_Utils_Array::value('in_memory_of', $soft_credit_types), + $soft_credit_types['in_honor_of'] ?? NULL, + $soft_credit_types['in_memory_of'] ?? NULL, ]; } else { @@ -92,8 +92,8 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $defaults['honoree_profile'] = $ufGroupDAO->id; } $defaults['soft_credit_types'] = [ - CRM_Utils_Array::value('in_honor_of', $soft_credit_types), - CRM_Utils_Array::value('in_memory_of', $soft_credit_types), + $soft_credit_types['in_honor_of'] ?? NULL, + $soft_credit_types['in_memory_of'] ?? NULL, ]; } @@ -311,11 +311,11 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $params['currency'] = $config->defaultCurrency; } - $params['is_confirm_enabled'] = CRM_Utils_Array::value('is_confirm_enabled', $params, FALSE); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_credit_card_only'] = CRM_Utils_Array::value('is_credit_card_only', $params, FALSE); - $params['honor_block_is_active'] = CRM_Utils_Array::value('honor_block_is_active', $params, FALSE); + $params['is_confirm_enabled'] = $params['is_confirm_enabled'] ?? FALSE; + $params['is_share'] = $params['is_share'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_credit_card_only'] = $params['is_credit_card_only'] ?? FALSE; + $params['honor_block_is_active'] = $params['honor_block_is_active'] ?? FALSE; $params['is_for_organization'] = !empty($params['is_organization']) ? CRM_Utils_Array::value('is_for_organization', $params, FALSE) : 0; $params['goal_amount'] = CRM_Utils_Rule::cleanMoney($params['goal_amount']); diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php b/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php index f8cc668f07..2b325bc60b 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php @@ -100,7 +100,7 @@ class CRM_Contribute_Form_ContributionPage_ThankYou extends CRM_Contribute_Form_ $params = $this->controller->exportValues($this->_name); $params['id'] = $this->_id; - $params['is_email_receipt'] = CRM_Utils_Array::value('is_email_receipt', $params, FALSE); + $params['is_email_receipt'] = $params['is_email_receipt'] ?? FALSE; if (!$params['is_email_receipt']) { $params['receipt_from_name'] = NULL; $params['receipt_from_email'] = NULL; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php b/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php index 937d7457c3..a8b838cbb4 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php @@ -241,7 +241,7 @@ class CRM_Contribute_Form_ContributionPage_Widget extends CRM_Contribute_Form_Co $params['id'] = $this->_widget->id; } $params['contribution_page_id'] = $this->_id; - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['url_homepage'] = 'null'; $widget = new CRM_Contribute_DAO_Widget(); diff --git a/civicrm/CRM/Contribute/Form/ContributionView.php b/civicrm/CRM/Contribute/Form/ContributionView.php index e3fa74ea25..d68c4d3087 100644 --- a/civicrm/CRM/Contribute/Form/ContributionView.php +++ b/civicrm/CRM/Contribute/Form/ContributionView.php @@ -21,6 +21,7 @@ use Civi\Api4\Contribution; * This class generates form components for Payment-Instrument. */ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { + use CRM_Contribute_Form_ContributeFormTrait; /** * Set variables up before form is built. @@ -28,7 +29,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { * @throws \CRM_Core_Exception */ public function preProcess() { - $id = $this->getID(); + $id = $this->getContributionID(); // Check permission for action. $actionMapping = [ @@ -82,11 +83,11 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { $values['contribution_page_title'] = ''; if (!empty($values['contribution_page_id'])) { $contribPages = CRM_Contribute_PseudoConstant::contributionPage(NULL, TRUE); - $values['contribution_page_title'] = CRM_Utils_Array::value(CRM_Utils_Array::value('contribution_page_id', $values), $contribPages); + $values['contribution_page_title'] = $contribPages[$values['contribution_page_id']] ?? ''; } // get received into i.e to_financial_account_id from last trxn - $financialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($this->getID(), 'DESC'); + $financialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($this->getContributionID(), 'DESC'); $values['to_financial_account'] = ''; $values['payment_processor_name'] = ''; if (!empty($financialTrxnId['financialTrxnId'])) { @@ -176,7 +177,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { } //assign soft credit record if exists. - $SCRecords = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->getID(), TRUE); + $SCRecords = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->getContributionID(), TRUE); $this->assign('softContributions', empty($SCRecords['soft_credit']) ? NULL : $SCRecords['soft_credit']); // unset doesn't complain if array member missing unset($SCRecords['soft_credit']); @@ -266,7 +267,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=update&context={$context}&key={$searchKey}"; } if (!$contribution['is_template']) { - foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getID(), $contributionStatus) as $paymentButton) { + foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getContributionID(), $contributionStatus) as $paymentButton) { $paymentButton['icon'] = 'fa-plus-circle'; $linkButtons[] = $paymentButton; } @@ -378,7 +379,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { try { return Contribution::checkAccess() ->setAction($action) - ->addValue('id', $this->getID()) + ->addValue('id', $this->getContributionID()) ->execute()->first()['access']; } catch (CRM_Core_Exception $e) { @@ -387,16 +388,33 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { } /** - * Get the contribution ID. + * Get the selected Contribution ID. * - * @return int + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection */ - private function getID(): int { + public function getContributionID(): ?int { $id = $this->get('id'); - if (empty($id)) { - CRM_Core_Error::statusBounce('Contribution ID is required'); + if (!$id) { + $id = CRM_Utils_Request::retrieve('id', 'Positive'); } - return $id; + return (int) $id; + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + return $this->getContributionID() ? $this->getContributionValue('contribution_page_id') : NULL; } } diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php index c43a24be99..f8b885edcb 100644 --- a/civicrm/CRM/Contribute/Form/Task/Invoice.php +++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php @@ -287,12 +287,12 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $lineItem = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionID); foreach ($lineItem as $taxRate) { if (isset($dataArray[(string) $taxRate['tax_rate']])) { - $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + CRM_Utils_Array::value('tax_amount', $taxRate); + $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + ($taxRate['tax_amount'] ?? 0); } else { $dataArray[(string) $taxRate['tax_rate']] = $taxRate['tax_amount'] ?? NULL; } - $subTotal += CRM_Utils_Array::value('subTotal', $taxRate); + $subTotal += $taxRate['subTotal'] ?? 0; } // to email the invoice diff --git a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php index 833bc44be9..1718cca1a7 100644 --- a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php +++ b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php @@ -241,7 +241,7 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task { $contactIds = array_keys($contacts); // CRM-16725 Skip creation of activities if user is previewing their PDF letter(s) if ($this->isLiveMode()) { - $this->createActivities($html_message, $contactIds, CRM_Utils_Array::value('subject', $formValues, ts('Thank you letter')), CRM_Utils_Array::value('campaign_id', $formValues), $contactHtml); + $this->createActivities($html_message, $contactIds, CRM_Utils_Array::value('subject', $formValues, ts('Thank you letter')), $formValues['campaign_id'] ?? NULL, $contactHtml); } $html = array_diff_key($html, $emailedHtml); diff --git a/civicrm/CRM/Contribute/Page/ContributionRecur.php b/civicrm/CRM/Contribute/Page/ContributionRecur.php index 644c4144b9..4236ae3a58 100644 --- a/civicrm/CRM/Contribute/Page/ContributionRecur.php +++ b/civicrm/CRM/Contribute/Page/ContributionRecur.php @@ -51,7 +51,7 @@ class CRM_Contribute_Page_ContributionRecur extends CRM_Core_Page { } $contributionRecur['payment_processor'] = CRM_Financial_BAO_PaymentProcessor::getPaymentProcessorName( - CRM_Utils_Array::value('payment_processor_id', $contributionRecur) + $contributionRecur['payment_processor_id'] ?? NULL ); $idFields = ['contribution_status_id', 'campaign_id', 'financial_type_id']; foreach ($idFields as $idField) { diff --git a/civicrm/CRM/Contribute/Page/DashBoard.php b/civicrm/CRM/Contribute/Page/DashBoard.php index b7df27e2f7..aa8cdbbc41 100644 --- a/civicrm/CRM/Contribute/Page/DashBoard.php +++ b/civicrm/CRM/Contribute/Page/DashBoard.php @@ -68,7 +68,7 @@ class CRM_Contribute_Page_DashBoard extends CRM_Core_Page { } //for contribution tabular View - $buildTabularView = CRM_Utils_Array::value('showtable', $_GET, FALSE); + $buildTabularView = $_GET['showtable'] ?? FALSE; $this->assign('buildTabularView', $buildTabularView); if ($buildTabularView) { return; diff --git a/civicrm/CRM/Contribute/Page/Premium.php b/civicrm/CRM/Contribute/Page/Premium.php index 72cc941def..98c50a73d6 100644 --- a/civicrm/CRM/Contribute/Page/Premium.php +++ b/civicrm/CRM/Contribute/Page/Premium.php @@ -54,12 +54,14 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/contribute/addProductToPage', 'qs' => 'action=update&id=%%id%%&pid=%%pid%%&reset=1', 'title' => ts('Edit Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/contribute/addProductToPage', 'qs' => 'action=preview&id=%%id%%&pid=%%pid%%', 'title' => ts('Preview Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::DELETE => [ 'name' => ts('Remove'), @@ -67,6 +69,7 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { 'qs' => 'action=delete&id=%%id%%&pid=%%pid%%', 'extra' => 'onclick = "if (confirm(\'' . $deleteExtra . '\') ) this.href+=\'&confirmed=1\'; else return false;"', 'title' => ts('Disable Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } @@ -142,7 +145,7 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { $action = array_sum(array_keys($this->links())); - $premiums[$premiumsProductDao->product_id]['action'] = CRM_Core_Action::formLink(self::links(), $action, + $premiums[$premiumsProductDao->product_id]['action'] = CRM_Core_Action::formLink($this->links(), $action, ['id' => $pageID, 'pid' => $premiumsProductDao->id], ts('more'), FALSE, diff --git a/civicrm/CRM/Contribute/Page/UserDashboard.php b/civicrm/CRM/Contribute/Page/UserDashboard.php index 96b94a18d7..cdb2745468 100644 --- a/civicrm/CRM/Contribute/Page/UserDashboard.php +++ b/civicrm/CRM/Contribute/Page/UserDashboard.php @@ -32,7 +32,9 @@ class CRM_Contribute_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBo // which the tpl can iterate through - this should allow us to cope with competing attempts to add new buttons // and allow extensions to assign new ones through the pageRun hook // We could check for balance_amount > 0 here? It feels more correct but this seems to be working. - if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE)) { + if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE) + && Civi::settings()->get('default_invoice_page') + ) { $row['buttons']['pay'] = [ 'class' => 'button', 'label' => ts('Pay Now'), diff --git a/civicrm/CRM/Contribute/Tokens.php b/civicrm/CRM/Contribute/Tokens.php index 5af208998f..625496528f 100644 --- a/civicrm/CRM/Contribute/Tokens.php +++ b/civicrm/CRM/Contribute/Tokens.php @@ -10,8 +10,8 @@ +--------------------------------------------------------------------+ */ -use Civi\Api4\ContributionPage; -use Civi\Api4\ContributionRecur; +use Civi\Api4\Address; +use Civi\Token\TokenRow; /** * Class CRM_Contribute_Tokens @@ -61,35 +61,61 @@ class CRM_Contribute_Tokens extends CRM_Core_EntityTokens { if (!array_key_exists('Contribution', \Civi::service('action_object_provider')->getEntities())) { return $tokens; } + $tokens += $this->getRelatedTokensForEntity('Address', 'address_id', ['name', 'id']); + + $tokens['address_id.name']['title'] = ts('Billing Address Name'); + $tokens['address_id.display'] = [ + 'title' => ts('Billing Address'), + 'name' => 'address_id.display', + 'type' => 'mapped', + 'input_type' => 'Text', + 'audience' => 'user', + 'data_type' => 'String', + ]; + // Ideally we would derive this from 'usage' - but it looks like adding the usage data // was quite a bit of work & didn't leave the energy to implement - esp expose for // where clauses (also, it feels like 'hidden+token' would be a good usage. - $tokenList = ['frontend_title', 'pay_later_text', 'pay_later_receipt', 'is_share', 'receipt_text']; - $contributionPageTokens = ContributionPage::getFields(FALSE)->addWhere('name', 'IN', $tokenList)->execute(); - foreach ($contributionPageTokens as $contributionPageToken) { - $tokens['contribution_page_id.' . $contributionPageToken['name']] = [ - 'title' => $contributionPageToken['title'], - 'name' => 'contribution_page_id.' . $contributionPageToken['name'], - 'type' => 'mapped', - 'data_type' => $contributionPageToken['data_type'], - 'input_type' => $contributionPageToken['input_type'], - 'audience' => $contributionPageToken['name'] === 'is_share' ? 'hidden' : 'user', - ]; - } + $contributionPageTokens = ['frontend_title', 'pay_later_text', 'pay_later_receipt', 'is_share', 'receipt_text']; + $tokens += $this->getRelatedTokensForEntity('ContributionPage', 'contribution_page_id', $contributionPageTokens, ['is_share']); + $hiddenTokens = ['modified_date', 'create_date', 'trxn_id', 'invoice_id', 'is_test', 'payment_token_id', 'payment_processor_id', 'payment_instrument_id', 'cycle_day', 'installments', 'processor_id', 'next_sched_contribution_date', 'failure_count', 'failure_retry_date', 'auto_renew', 'is_email_receipt', 'contribution_status_id']; - $contributionRecurFields = ContributionRecur::getFields(FALSE)->setLoadOptions(TRUE)->execute(); - foreach ($contributionRecurFields as $contributionRecurField) { - $tokens['contribution_recur_id.' . $contributionRecurField['name']] = [ - 'title' => $contributionRecurField['title'], - 'name' => 'contribution_recur_id.' . $contributionRecurField['name'], - 'type' => 'mapped', - 'options' => $contributionRecurField['options'] ?? NULL, - 'data_type' => $contributionRecurField['data_type'], - 'input_type' => $contributionRecurField['input_type'], - 'audience' => in_array($contributionRecurField['name'], $hiddenTokens) ? 'hidden' : 'user', - ]; - } + $tokens += $this->getRelatedTokensForEntity('ContributionRecur', 'contribution_recur_id', ['*'], $hiddenTokens); return $tokens; } + /** + * @param \Civi\Token\TokenRow $row + * @param string $field + * @return string|int + */ + protected function getFieldValue(TokenRow $row, string $field) { + $entityName = $this->getEntityName(); + if (isset($row->context[$entityName][$field])) { + return $row->context[$entityName][$field]; + } + if ($field === 'address_id.display') { + $addressID = $this->getFieldValue($row, 'address_id.id'); + // We possibly could figure out how to load in a cleverer way + // or as part of apiv4 but this is tested so that can easily happen later... + $address = Address::get(FALSE) + ->addWhere('id', '=', $addressID) + ->addSelect('*', 'state_province_id:label', 'country_id:label') + ->execute()->first(); + // We have name in the address_id.name token. + unset($address['name']); + return \CRM_Utils_Address::format($address); + } + return parent::getFieldValue($row, $field); + } + + /** + * Get fields which need to be returned to render another token. + * + * @return array + */ + public function getDependencies(): array { + return ['address_id.display' => 'address_id.id']; + } + } diff --git a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php index d3477bb3da..4c5bdc364f 100644 --- a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php +++ b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php @@ -143,6 +143,10 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work $this->setLineItem($mockOrder, $priceField, $priceFieldValue, $index); } + $contribution['address_id.name'] = 'Barbara Johnson'; + $contribution['address_id.display'] = '790L Lincoln St S +Baltimore, New York 10545 +United States'; $contribution['total_amount'] = $mockOrder->getTotalAmount(); $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; $messageTemplate->setContribution($contribution); diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php index d7391167e7..a0aa6a5019 100644 --- a/civicrm/CRM/Core/BAO/Address.php +++ b/civicrm/CRM/Core/BAO/Address.php @@ -1283,8 +1283,13 @@ SELECT is_primary, catch (CRM_Core_Exception $e) { $providerExists = FALSE; } - if ($providerExists) { - $provider::format($params); + try { + if ($providerExists) { + $provider::format($params); + } + } + catch (CRM_Core_Exception $e) { + \Civi::log()->error('Geocoding error:' . $e->getMessage(), ['geocoder' => get_class($provider), 'input' => $params]); } // dev/core#2379 - Limit geocode length to 14 characters to avoid validation error on save in UI. foreach (['geo_code_1', 'geo_code_2'] as $geocode) { @@ -1292,6 +1297,8 @@ SELECT is_primary, // ensure that if the geocoding provider (Google, OSM etc) has returned the string 'null' because they can't geocode, ensure that contacts are not placed on null island 0,0 if ($params[$geocode] !== 'null') { $params[$geocode] = (float) substr($params[$geocode], 0, 14); + //set manual_geo_code to 0 + $params['manual_geo_code'] = FALSE; } } } @@ -1312,7 +1319,7 @@ SELECT is_primary, } CRM_Core_BAO_Block::sortPrimaryFirst($params['address']); - $updateBlankLocInfo = CRM_Utils_Array::value('updateBlankLocInfo', $params, FALSE); + $updateBlankLocInfo = $params['updateBlankLocInfo'] ?? FALSE; $contactId = $params['contact_id']; //get all the addresses for this contact $addresses = self::allAddress($contactId); diff --git a/civicrm/CRM/Core/BAO/Block.php b/civicrm/CRM/Core/BAO/Block.php index bd80441e14..fe5df456d3 100644 --- a/civicrm/CRM/Core/BAO/Block.php +++ b/civicrm/CRM/Core/BAO/Block.php @@ -208,8 +208,8 @@ class CRM_Core_BAO_Block { $contactId = $params['contact_id']; - $updateBlankLocInfo = CRM_Utils_Array::value('updateBlankLocInfo', $params, FALSE); - $isIdSet = CRM_Utils_Array::value('isIdSet', $params[$blockName], FALSE); + $updateBlankLocInfo = $params['updateBlankLocInfo'] ?? FALSE; + $isIdSet = $params[$blockName]['isIdSet'] ?? FALSE; //get existing block ids. $blockIds = self::getBlockIds($blockName, $contactId, $entityElements); diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 619dbdb042..e6f4b68d31 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -856,6 +856,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { && $field['custom_group_id.is_public'] && ( !empty($entityValueMatches) + || empty($entityFilters) || empty($field['custom_group_id.extends_entity_column_id']) ) && ( @@ -1132,6 +1133,10 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $qf->assign('customUrls', $customUrls); break; + + case 'Hidden': + $element = $qf->add('hidden', $elementName); + break; } switch ($field->data_type) { @@ -1148,21 +1153,21 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { case 'Float': if ($field->is_search_range && $search) { - $qf->addRule($elementName . '_from', ts('%1 From must be a number (with or without decimal point).', [1 => $label]), 'numeric'); - $qf->addRule($elementName . '_to', ts('%1 To must be a number (with or without decimal point).', [1 => $label]), 'numeric'); + $qf->addRule($elementName . '_from', ts('%1 From must be a number (with or without decimals).', [1 => $label]), 'money'); + $qf->addRule($elementName . '_to', ts('%1 To must be a number (with or without decimals).', [1 => $label]), 'money'); } elseif ($widget == 'Text') { - $qf->addRule($elementName, ts('%1 must be a number (with or without decimal point).', [1 => $label]), 'numeric'); + $qf->addRule($elementName, ts('%1 must be a number (with or without decimals).', [1 => $label]), 'money'); } break; case 'Money': if ($field->is_search_range && $search) { - $qf->addRule($elementName . '_from', ts('%1 From must in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); - $qf->addRule($elementName . '_to', ts('%1 To must in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); + $qf->addRule($elementName . '_from', ts('%1 From must in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); + $qf->addRule($elementName . '_to', ts('%1 To must in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); } elseif ($widget == 'Text') { - $qf->addRule($elementName, ts('%1 must be in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); + $qf->addRule($elementName, ts('%1 must be in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); } break; @@ -1321,7 +1326,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { // In such cases we could just get intval($value) and fetch matching // option again, but this would not work if key is float like 5.6. // So we need to truncate trailing zeros to make it work as expected. - if ($display === '' && strpos(($value ?? ''), '.') !== FALSE) { + if ($display === '' && is_numeric($value) && strpos(($value ?? ''), '.') !== FALSE) { // Use round() to truncate trailing zeros, e.g: // 10.00 -> 10, 10.60 -> 10.6, 10.69 -> 10.69. $value = (string) round($value, 5); @@ -2221,7 +2226,7 @@ WHERE id IN ( %1, %2 ) // create any option group & values if required $allowedOptionTypes = ['String', 'Int', 'Float', 'Money']; - if ($htmlType !== 'Text' && in_array($dataType, $allowedOptionTypes, TRUE)) { + if (!in_array($htmlType, ['Text', 'Hidden'], TRUE) && in_array($dataType, $allowedOptionTypes, TRUE)) { //CRM-16659: if option_value then create an option group for this custom field. // An option_type of 2 would be a 'message' from the form layer not to handle // the option_values key. If not set then it is not ignored. @@ -2749,30 +2754,22 @@ WHERE f.id IN ($ids)"; switch ($dataType) { case 'Int': $ruleName = 'integer'; - $errorMsg = ts('%1 must be an integer (whole number).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be an integer (whole number).', [1 => $fieldTitle]); break; case 'Money': $ruleName = 'money'; - $errorMsg = ts('%1 must in proper money format. (decimal point/comma/space is allowed).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be in money format (a number with or without decimals, ex: %2).', [1 => $fieldTitle, 2 => Civi::format()->number(123.98)]); break; case 'Float': $ruleName = 'numeric'; - $errorMsg = ts('%1 must be a number (with or without decimal point).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be a number (with or without decimals).', [1 => $fieldTitle]); break; case 'Link': $ruleName = 'wikiURL'; - $errorMsg = ts('%1 must be valid Website.', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be valid Website.', [1 => $fieldTitle]); break; } diff --git a/civicrm/CRM/Core/BAO/Domain.php b/civicrm/CRM/Core/BAO/Domain.php index 548baffdc6..6e4049562f 100644 --- a/civicrm/CRM/Core/BAO/Domain.php +++ b/civicrm/CRM/Core/BAO/Domain.php @@ -164,9 +164,11 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { } /** + * @deprecated * @return bool */ public static function multipleDomains() { + CRM_Core_Error::deprecatedFunctionWarning('API'); $session = CRM_Core_Session::singleton(); $numberDomains = $session->get('numberDomains'); @@ -231,12 +233,12 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { /** * @param int $contactID - * - * @return bool|null|object|string - * + * @return bool|int + * @deprecated * @throws \CRM_Core_Exception */ public static function addContactToDomainGroup($contactID) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contact_BAO_GroupContact::addContactsToGroup'); $groupID = self::getGroupId(); if ($groupID) { diff --git a/civicrm/CRM/Core/BAO/EntityTag.php b/civicrm/CRM/Core/BAO/EntityTag.php index c48246775d..97c94866d9 100644 --- a/civicrm/CRM/Core/BAO/EntityTag.php +++ b/civicrm/CRM/Core/BAO/EntityTag.php @@ -301,7 +301,7 @@ class CRM_Core_BAO_EntityTag extends CRM_Core_DAO_EntityTag { public static function getContactTags($contactID, $count = FALSE) { $contactTags = []; if (!$count) { - $select = "SELECT ct.id, ct.name "; + $select = "SELECT ct.id, ct.label "; } else { $select = "SELECT count(*) as cnt"; @@ -322,7 +322,7 @@ class CRM_Core_BAO_EntityTag extends CRM_Core_DAO_EntityTag { } while ($dao->fetch()) { - $contactTags[$dao->id] = $dao->name; + $contactTags[$dao->id] = $dao->label; } return $contactTags; diff --git a/civicrm/CRM/Core/BAO/MailSettings.php b/civicrm/CRM/Core/BAO/MailSettings.php index 1519394d03..2d8b6b85ef 100644 --- a/civicrm/CRM/Core/BAO/MailSettings.php +++ b/civicrm/CRM/Core/BAO/MailSettings.php @@ -19,7 +19,7 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { /** * Get a list of setup-actions. * - * @return array + * @return array{array{title:string, callback: mixed, url: string}} * List of available actions. See description in the hook-docs. * @see CRM_Utils_Hook::mailSetupActions() */ @@ -31,6 +31,13 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { ]; CRM_Utils_Hook::mailSetupActions($setupActions); + + foreach ($setupActions as $key => &$setupAction) { + if (!isset($setupAction['url'])) { + $setupAction['url'] = (string) Civi::url('//civicrm/ajax/setupMailAccount')->addQuery(['type' => $key]); + } + } + return $setupActions; } @@ -129,8 +136,8 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { } if (empty($params['id'])) { - $params['is_ssl'] = CRM_Utils_Array::value('is_ssl', $params, FALSE); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); + $params['is_ssl'] = $params['is_ssl'] ?? FALSE; + $params['is_default'] = $params['is_default'] ?? FALSE; } //handle is_default. diff --git a/civicrm/CRM/Core/BAO/Managed.php b/civicrm/CRM/Core/BAO/Managed.php index 4204350105..38fc061a7c 100644 --- a/civicrm/CRM/Core/BAO/Managed.php +++ b/civicrm/CRM/Core/BAO/Managed.php @@ -50,11 +50,14 @@ class CRM_Core_BAO_Managed extends CRM_Core_DAO_Managed implements Civi\Core\Hoo * @param \Civi\Core\Event\PostEvent $event */ public static function on_hook_civicrm_post(\Civi\Core\Event\PostEvent $event) { - // When an entity is deleted, delete the corresponding Managed record + // When an entity is deleted by the user, nullify 'entity_id' from corresponding Managed record + // This tells the ManagedEntity system that the entity was manually deleted, + // and should be recreated at the discretion of the `update` policy. if ($event->action === 'delete' && $event->id && self::isApi4ManagedType($event->entity)) { - \Civi\Api4\Managed::delete(FALSE) + \Civi\Api4\Managed::update(FALSE) ->addWhere('entity_type', '=', $event->entity) ->addWhere('entity_id', '=', $event->id) + ->addValue('entity_id', NULL) ->execute(); } // When an entity is updated, update the timestamp in corresponding Managed record diff --git a/civicrm/CRM/Core/BAO/Navigation.php b/civicrm/CRM/Core/BAO/Navigation.php index 5357b6f7d4..9a5bb862a2 100644 --- a/civicrm/CRM/Core/BAO/Navigation.php +++ b/civicrm/CRM/Core/BAO/Navigation.php @@ -74,10 +74,9 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { * @return CRM_Core_DAO_Navigation */ public static function add(&$params) { - $navigation = new CRM_Core_DAO_Navigation(); if (empty($params['id'])) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['has_separator'] = CRM_Utils_Array::value('has_separator', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['has_separator'] = $params['has_separator'] ?? FALSE; $params['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); } @@ -98,14 +97,7 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { $params['weight'] = self::calculateWeight(CRM_Utils_Array::value('parent_id', $params)); } - if (array_key_exists('permission', $params) && is_array($params['permission'])) { - $params['permission'] = implode(',', $params['permission']); - } - - $navigation->copyValues($params); - - $navigation->save(); - return $navigation; + return self::writeRecord($params); } /** @@ -513,11 +505,11 @@ ORDER BY weight"; break; case "rename": - self::processRename($nodeID, $label); + self::writeRecord(['id' => $nodeID, 'label' => $label]); break; case "delete": - self::processDelete($nodeID); + self::deleteRecord(['id' => $nodeID]); break; } @@ -578,8 +570,6 @@ ORDER BY weight"; $incrementOtherNodes = FALSE; } - $transaction = new CRM_Core_Transaction(); - // now update the existing nodes to weight + 1, if required. if ($incrementOtherNodes) { $query = "UPDATE civicrm_navigation SET weight = weight + 1 @@ -588,11 +578,8 @@ ORDER BY weight"; CRM_Core_DAO::executeQuery($query); } - // finally set the weight of current node - $query = "UPDATE civicrm_navigation SET weight = {$newWeight}, parent_id = {$newParentID} WHERE id = {$nodeID}"; - CRM_Core_DAO::executeQuery($query); - - $transaction->commit(); + // finally set the weight and parent of current node + self::writeRecord(['id' => $nodeID, 'weight' => $newWeight, 'parent_id' => $newParentID]); } /** @@ -600,19 +587,22 @@ ORDER BY weight"; * * @param int $nodeID * @param $label + * @deprecated - use API */ public static function processRename($nodeID, $label) { - CRM_Core_DAO::setFieldValue('CRM_Core_DAO_Navigation', $nodeID, 'label', $label); + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + self::writeRecord(['id' => $nodeID, 'label' => $label]); } /** * Process delete action for tree. * * @param int $nodeID + * @deprecated - use API */ public static function processDelete($nodeID) { - $query = "DELETE FROM civicrm_navigation WHERE id = {$nodeID}"; - CRM_Core_DAO::executeQuery($query); + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + self::deleteRecord(['id' => $nodeID]); } /** diff --git a/civicrm/CRM/Core/BAO/RecurringEntity.php b/civicrm/CRM/Core/BAO/RecurringEntity.php index 9a8aa74492..cc1d7c1f8e 100644 --- a/civicrm/CRM/Core/BAO/RecurringEntity.php +++ b/civicrm/CRM/Core/BAO/RecurringEntity.php @@ -39,24 +39,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity implemen protected $recursion = NULL; protected $recursion_start_date = NULL; - public static $_entitiesToBeDeleted = []; - public static $status = NULL; - public static $_recurringEntityHelper - = [ - 'civicrm_event' => [ - 'helper_class' => 'CRM_Event_DAO_Event', - 'delete_func' => 'delete', - 'pre_delete_func' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents', - ], - 'civicrm_activity' => [ - 'helper_class' => 'CRM_Activity_DAO_Activity', - 'delete_func' => 'delete', - 'pre_delete_func' => '', - ], - ]; - public static $_dateColumns = [ 'civicrm_event' => [ diff --git a/civicrm/CRM/Core/BAO/Tag.php b/civicrm/CRM/Core/BAO/Tag.php index cd2a0522e0..2e57b46f72 100644 --- a/civicrm/CRM/Core/BAO/Tag.php +++ b/civicrm/CRM/Core/BAO/Tag.php @@ -198,14 +198,15 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { // Instead of recursively making mysql queries, we'll make one big // query and build the hierarchy with the algorithm below. $args = [1 => ['%' . $usedFor . '%', 'String']]; - $query = "SELECT id, name, parent_id, is_tagset, is_selectable + $query = "SELECT id, name, label, parent_id, is_tagset, is_selectable FROM civicrm_tag WHERE used_for LIKE %1"; if ($parentId) { $query .= " AND parent_id = %2"; $args[2] = [$parentId, 'Integer']; } - $query .= " ORDER BY name"; + $query .= " ORDER BY label"; + // @todo when it becomes localizable then we might need the i18nrewrite $dao = CRM_Core_DAO::executeQuery($query, $args, TRUE, NULL, FALSE, FALSE); // Sort the tags into the correct storage by the parent_id/is_tagset @@ -231,6 +232,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'prefix' => '', 'name' => $dao->name, 'idPrefix' => $idPrefix, + 'label' => $dao->label, ]; } else { @@ -240,6 +242,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'name' => $dao->name, 'parent_id' => $dao->parent_id, 'idPrefix' => $idPrefix, + 'label' => $dao->label, ]; } } @@ -257,6 +260,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { $root['prefix'], $root['name'], $root['idPrefix'], + $root['label'], ]; // As you find the children, append them to the end of the new set @@ -270,6 +274,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'prefix' => $tags[$root['id']][0] . $separator, 'name' => $row['name'], 'idPrefix' => $row['idPrefix'], + 'label' => $row['label'], ]; unset($rows[$key]); } @@ -290,7 +295,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { if (!empty($tag[2])) { $key = $tag[2] . "-" . $key; } - $formattedTags[$key] = $tag[0] . $tag[1]; + $formattedTags[$key] = $tag[0] . $tag[3]; } $tags = $formattedTags; @@ -311,7 +316,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'sort' => "name ASC", ], 'is_tagset' => 0, - 'return' => ['name', 'description', 'parent_id', 'color', 'is_selectable', 'used_for'], + 'return' => ['label', 'description', 'parent_id', 'color', 'is_selectable', 'used_for'], ]; if ($usedFor) { $params['used_for'] = ['LIKE' => "%$usedFor%"]; @@ -322,7 +327,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { $allTags = []; foreach (CRM_Utils_Array::value('values', civicrm_api3('Tag', 'get', $params)) as $id => $tag) { $allTags[$id] = [ - 'text' => $tag['name'], + 'text' => $tag['label'], 'id' => $id, 'description' => $tag['description'] ?? NULL, 'parent_id' => $tag['parent_id'] ?? NULL, @@ -366,8 +371,16 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { */ public static function add(&$params, $ids = []) { $id = $params['id'] ?? $ids['tag'] ?? NULL; - if (!$id && !self::dataExists($params)) { - return NULL; + if (!$id) { + // Make label from name if missing. + if (CRM_Utils_System::isNull($params['label'] ?? NULL)) { + // If name is also missing, cannot create object. + if (CRM_Utils_System::isNull($params['name'] ?? NULL)) { + // FIXME: Throw exception + return NULL; + } + $params['label'] = $params['name']; + } } // Check permission to create or modify reserved tag @@ -401,7 +414,6 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { // save creator id and time if (!$id) { $params['created_id'] = $params['created_id'] ?? CRM_Core_Session::getLoggedInContactID(); - $params['created_date'] = $params['created_date'] ?? date('YmdHis'); } $tag = self::writeRecord($params); @@ -422,23 +434,6 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { return $tag; } - /** - * Check if there is data to create the object. - * - * @param array $params - * - * @return bool - */ - public static function dataExists($params) { - // Disallow empty values except for the number zero. - // TODO: create a utility for this since it's needed in many places - if (!empty($params['name']) || (string) $params['name'] === '0') { - return TRUE; - } - - return FALSE; - } - /** * Get the tag sets for a entity object. * @@ -450,7 +445,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { */ public static function getTagSet($entityTable) { $tagSets = []; - $query = "SELECT name, id FROM civicrm_tag + $query = "SELECT label, id FROM civicrm_tag WHERE is_tagset=1 AND parent_id IS NULL and used_for LIKE %1"; $dao = CRM_Core_DAO::executeQuery($query, [ 1 => [ @@ -459,7 +454,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { ], ], TRUE, NULL, FALSE, FALSE); while ($dao->fetch()) { - $tagSets[$dao->id] = $dao->name; + $tagSets[$dao->id] = $dao->label; } return $tagSets; } diff --git a/civicrm/CRM/Core/BAO/UFField.php b/civicrm/CRM/Core/BAO/UFField.php index 88ef83cfe1..0212831e83 100644 --- a/civicrm/CRM/Core/BAO/UFField.php +++ b/civicrm/CRM/Core/BAO/UFField.php @@ -248,7 +248,7 @@ WHERE cf.id IN (" . $customFieldIds . ") AND is_multiple = 1 LIMIT 0,1"; $oldWeight = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFField', !empty($params['id']) ? $params['id'] : $params['field_id'], 'weight', 'id'); } $fieldValues = ['uf_group_id' => !empty($params['uf_group_id']) ? $params['uf_group_id'] : $params['group_id']]; - return CRM_Utils_Weight::updateOtherWeights('CRM_Core_DAO_UFField', $oldWeight, CRM_Utils_Array::value('weight', $params, 0), $fieldValues); + return CRM_Utils_Weight::updateOtherWeights('CRM_Core_DAO_UFField', $oldWeight, $params['weight'] ?? 0, $fieldValues); } /** diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index 645dfcb6d3..fae355c2e7 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -1808,7 +1808,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) $view = $field['is_view']; $required = ($mode == CRM_Profile_Form::MODE_SEARCH) ? FALSE : $field['is_required']; $search = $mode == CRM_Profile_Form::MODE_SEARCH; - $isShared = CRM_Utils_Array::value('is_shared', $field, 0); + $isShared = $field['is_shared'] ?? 0; // do not display view fields in drupal registration form // CRM-4632 @@ -1958,7 +1958,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) ], $required); } elseif ($fieldName === 'contact_sub_type') { - $gId = $form->get('gid') ? $form->get('gid') : CRM_Utils_Array::value('group_id', $field); + $gId = $form->get('gid') ?: $field['group_id'] ?? NULL; if ($usedFor == 'onbehalf') { $profileType = 'Organization'; } @@ -1992,7 +1992,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) } elseif (in_array($fieldName, CRM_Contact_BAO_Contact::$_greetingTypes)) { // Get contact type for greeting selector - $gId = $form->get('gid') ?: CRM_Utils_Array::value('group_id', $field); + $gId = $form->get('gid') ?: $field['group_id'] ?? NULL; $profileType = CRM_Core_BAO_UFField::getProfileType($gId, TRUE, FALSE, TRUE); if (!$profileType || in_array($profileType, ['Contact', 'Contribution', 'Participant', 'Membership'])) { diff --git a/civicrm/CRM/Core/BAO/UserJob.php b/civicrm/CRM/Core/BAO/UserJob.php index 8f572fa54d..0e3ea8faf2 100644 --- a/civicrm/CRM/Core/BAO/UserJob.php +++ b/civicrm/CRM/Core/BAO/UserJob.php @@ -16,6 +16,7 @@ */ use Civi\Api4\Mapping; +use Civi\Api4\Queue; use Civi\Api4\UserJob; use Civi\Core\ClassScanner; use Civi\Core\Event\PreEvent; @@ -102,6 +103,9 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements HookInterface $mappingName = Mapping::get(FALSE)->addWhere('id', '=', $event->id)->addSelect('name')->execute()->first()['name']; UserJob::delete(FALSE)->addWhere('name', '=', 'import_' . $mappingName)->execute(); } + if ($event->entity === 'UserJob' && $event->action === 'delete') { + Queue::delete(FALSE)->addWhere('name', '=', 'user_job_' . $event->id)->execute(); + } } /** diff --git a/civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php b/civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php new file mode 100644 index 0000000000..2df3165642 --- /dev/null +++ b/civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php @@ -0,0 +1,82 @@ +<?php +/** + * Class CRM_Core_CodeGen_Util_MessageTemplate + */ +class CRM_Core_CodeGen_Util_MessageTemplates { + + public static function assignSmartyVariables($smarty): void { + // Assigns for message templates + $ogNames = [ + 'case' => ts('Message Template Workflow for Cases', ['escape' => 'sql']), + 'contribution' => ts('Message Template Workflow for Contributions', ['escape' => 'sql']), + 'event' => ts('Message Template Workflow for Events', ['escape' => 'sql']), + 'friend' => ts('Message Template Workflow for Tell-a-Friend', ['escape' => 'sql']), + 'membership' => ts('Message Template Workflow for Memberships', ['escape' => 'sql']), + 'meta' => ts('Message Template Workflow for Meta Templates', ['escape' => 'sql']), + 'pledge' => ts('Message Template Workflow for Pledges', ['escape' => 'sql']), + 'uf' => ts('Message Template Workflow for Profiles', ['escape' => 'sql']), + 'petition' => ts('Message Template Workflow for Petition', ['escape' => 'sql']), + ]; + $ovNames = [ + 'case' => [ + 'case_activity' => ts('Cases - Send Copy of an Activity', ['escape' => 'sql']), + ], + 'contribution' => [ + 'contribution_dupalert' => ts('Contributions - Duplicate Organization Alert', ['escape' => 'sql']), + 'contribution_offline_receipt' => ts('Contributions - Receipt (off-line)', ['escape' => 'sql']), + 'contribution_online_receipt' => ts('Contributions - Receipt (on-line)', ['escape' => 'sql']), + 'contribution_invoice_receipt' => ts('Contributions - Invoice', ['escape' => 'sql']), + 'contribution_recurring_notify' => ts('Contributions - Recurring Start and End Notification', ['escape' => 'sql']), + 'contribution_recurring_cancelled' => ts('Contributions - Recurring Cancellation Notification', ['escape' => 'sql']), + 'contribution_recurring_billing' => ts('Contributions - Recurring Billing Updates', ['escape' => 'sql']), + 'contribution_recurring_edit' => ts('Contributions - Recurring Updates', ['escape' => 'sql']), + 'pcp_notify' => ts('Personal Campaign Pages - Admin Notification', ['escape' => 'sql']), + 'pcp_status_change' => ts('Personal Campaign Pages - Supporter Status Change Notification', ['escape' => 'sql']), + 'pcp_supporter_notify' => ts('Personal Campaign Pages - Supporter Welcome', ['escape' => 'sql']), + 'pcp_owner_notify' => ts('Personal Campaign Pages - Owner Notification', ['escape' => 'sql']), + 'payment_or_refund_notification' => ts('Additional Payment Receipt or Refund Notification', ['escape' => 'sql']), + ], + 'event' => [ + 'event_offline_receipt' => ts('Events - Registration Confirmation and Receipt (off-line)', ['escape' => 'sql']), + 'event_online_receipt' => ts('Events - Registration Confirmation and Receipt (on-line)', ['escape' => 'sql']), + 'event_registration_receipt' => ts('Events - Receipt only', ['escape' => 'sql']), + 'participant_cancelled' => ts('Events - Registration Cancellation Notice', ['escape' => 'sql']), + 'participant_confirm' => ts('Events - Registration Confirmation Invite', ['escape' => 'sql']), + 'participant_expired' => ts('Events - Pending Registration Expiration Notice', ['escape' => 'sql']), + 'participant_transferred' => ts('Events - Registration Transferred Notice', ['escape' => 'sql']), + ], + 'friend' => [ + 'friend' => ts('Tell-a-Friend Email', ['escape' => 'sql']), + ], + 'membership' => [ + 'membership_offline_receipt' => ts('Memberships - Signup and Renewal Receipts (off-line)', ['escape' => 'sql']), + 'membership_online_receipt' => ts('Memberships - Receipt (on-line)', ['escape' => 'sql']), + 'membership_autorenew_cancelled' => ts('Memberships - Auto-renew Cancellation Notification', ['escape' => 'sql']), + 'membership_autorenew_billing' => ts('Memberships - Auto-renew Billing Updates', ['escape' => 'sql']), + ], + 'meta' => [ + 'test_preview' => ts('Test-drive - Receipt Header', ['escape' => 'sql']), + ], + 'pledge' => [ + 'pledge_acknowledge' => ts('Pledges - Acknowledgement', ['escape' => 'sql']), + 'pledge_reminder' => ts('Pledges - Payment Reminder', ['escape' => 'sql']), + ], + 'uf' => [ + 'uf_notify' => ts('Profiles - Admin Notification', ['escape' => 'sql']), + ], + 'petition' => [ + 'petition_sign' => ts('Petition - signature added', ['escape' => 'sql']), + 'petition_confirmation_needed' => ts('Petition - need verification', ['escape' => 'sql']), + ], + ]; + $smarty->assign('ogNames', $ogNames); + $smarty->assign('ovNames', $ovNames); + $dir = $smarty->get_template_vars()['gencodeXmlDir'] . '/templates/message_templates/sample'; + $templates = []; + foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { + $templates[] = ['name' => basename($filename, '.tpl'), 'filename' => "$dir/$filename"]; + } + $smarty->assign('templates', $templates); + } + +} diff --git a/civicrm/CRM/Core/CodeGen/Util/Smarty.php b/civicrm/CRM/Core/CodeGen/Util/Smarty.php index d45989504d..a1eb1f29c9 100644 --- a/civicrm/CRM/Core/CodeGen/Util/Smarty.php +++ b/civicrm/CRM/Core/CodeGen/Util/Smarty.php @@ -59,9 +59,9 @@ class CRM_Core_CodeGen_Util_Smarty { require_once 'CRM/Core/Smarty/plugins/block.localize.php'; $smarty->register_block('localize', 'smarty_block_localize'); - $smarty->assign('gencodeXmlDir', dirname(dirname(dirname(dirname(__DIR__)))) . '/xml'); - + require_once 'CRM/Core/CodeGen/Util/MessageTemplates.php'; + CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty); return $smarty; } diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index 027ea8c5ab..eb8a7499a3 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -780,6 +780,10 @@ class CRM_Core_DAO extends DB_DataObject { } } elseif (is_array($value) && !empty($field['serialize'])) { + if (!empty($field['pseudoconstant'])) { + // Pseudoconstant implies 1-1 option matching; duplicates would not make sense + $value = array_unique($value); + } $this->$dbName = CRM_Core_DAO::serializeField($value, $field['serialize']); $allNull = FALSE; } @@ -3408,27 +3412,76 @@ SELECT contact_id // No label supplied, do nothing return; } + + // Strip unsafe characters and trim to max length, allowing room for a + // unique suffix composed of an underscore + 4 alphanumeric chars, + // supporting up to 36^4=1,679,616 unique names for any given value of + // $label. Half that amount could be considered the working limit, as + // much above that the time to find a non-existent suffix becomes + // unacceptable. + $maxSuffixLen = 5; $maxLen = static::getSupportedFields()['name']['maxlength'] ?? 255; - // Strip unsafe characters and trim to max length (-3 characters leaves room for a unique suffix) - $name = CRM_Utils_String::munge($label, '_', $maxLen - 3); - - // Find existing records with the same name - $sql = new CRM_Utils_SQL_Select($this::getTableName()); - $sql->select(['id', 'name']); - $sql->where('name LIKE @name', ['@name' => $name . '%']); - // Include all fields that are part of the index - foreach (array_diff($indexNameWith, ['name']) as $field) { - $sql->where("`$field` = @val", ['@val' => $this->$field]); - } - $query = $sql->toSQL(); - $existing = self::executeQuery($query)->fetchMap('id', 'name'); - $dupes = 0; - $suffix = ''; - // Add unique suffix if existing records have the same name - while (in_array($name . $suffix, $existing)) { - $suffix = '_' . ++$dupes; - } - $this->name = $name . $suffix; + $name = CRM_Utils_String::munge($label, '_', $maxLen - $maxSuffixLen); + + // Define an arbitrary limit on how many guesses we will perform before + // throwing an exception. This would occur only in some unanticipated use + // case. + $max_guesses = 36 ^ ($maxSuffixLen - 1); + + $guesses_per_loop = 5; + $guess_count = 0; + + do { + // Make an initial attempt to guess a unique name by searching for + // 5 candidates (the original $name plus $name with 4 random suffixes). + // If all of these happen to exist in the table, we'll keep trying, + // doubling the number of guesses each time through the loop. + for ($i = 0; $i < $guesses_per_loop; $i++, $guess_count++) { + $suffix = $guess_count == 0 ? '' : + '_' . CRM_Utils_String::createRandom($maxSuffixLen - 1, 'abcdefghijklmnopqrstuvwxyz0123456789'); + $candidates[$i] = $name . $suffix; + } + + $sql = new CRM_Utils_SQL_Select($this::getTableName()); + $sql->select(['id', 'LOWER(name) name_lc']); + $sql->where('name IN (@candidates)', ['@candidates' => $candidates]); + + // Narrow the search by specifying the value of any additional fields + // that may be part of the index. + foreach (array_diff($indexNameWith, ['name']) as $field) { + $sql->where("`$field` = @val", ['@val' => $this->$field]); + } + $query = $sql->toSQL(); + + // Search the table for our candidates using case-sensitivity determined + // by the collation of the name column -- case-insensitive by default. + // Array $existing_lc will contains all the candidates found in the table, + // converted to lower-case. + $existing_lc = self::executeQuery($query)->fetchMap('id', 'name_lc'); + + if (count($existing_lc) < $guesses_per_loop) { + // Not all of our candidates were found in the table, so we'll search + // for the first element of $candidates that wasn't found. This search + // is performed case-insensitive to ensure that the selected candidate + // is unique with both ci and cs collation of the name column. If the + // original (unsuffixed) value of $name doesn't exist in the table, then + // that value will be our selected candidate. + foreach ($candidates as $c) { + if (!in_array(strtolower($c), $existing_lc)) { + $this->name = $c; + return; + } + } + } + else { + // All candidates were found in the table. Try harder next time. + $guesses_per_loop = min(1000, $guesses_per_loop * 2); + + if ($guess_count > $max_guesses) { + throw new CRM_Core_Exception("CRM_Core_DAO::makeNameFromLabel failed to generate a unique name for label $label."); + } + } + } while (1); } /** diff --git a/civicrm/CRM/Core/DAO/EntityTag.php b/civicrm/CRM/Core/DAO/EntityTag.php index 3f57d572bd..df3e79bd2a 100644 --- a/civicrm/CRM/Core/DAO/EntityTag.php +++ b/civicrm/CRM/Core/DAO/EntityTag.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/EntityTag.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:2fccc138a26fe391325fd641c891cd91) + * (GenCodeChecksum:5bca5ff1c4ba7d85034410408464f0ac) */ /** @@ -200,7 +200,8 @@ class CRM_Core_DAO_EntityTag extends CRM_Core_DAO { 'pseudoconstant' => [ 'table' => 'civicrm_tag', 'keyColumn' => 'id', - 'labelColumn' => 'name', + 'labelColumn' => 'label', + 'nameColumn' => 'name', 'condition' => 'is_tagset != 1', ], 'add' => '1.1', diff --git a/civicrm/CRM/Core/DAO/Managed.php b/civicrm/CRM/Core/DAO/Managed.php index a82a5cae36..d23d84643e 100644 --- a/civicrm/CRM/Core/DAO/Managed.php +++ b/civicrm/CRM/Core/DAO/Managed.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Managed.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:1f1273f734c559351767e25b05b3925e) + * (GenCodeChecksum:4ff1b19106d4bc7810d4aa9eb2a73f65) */ /** @@ -40,10 +40,10 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { public $id; /** - * Name of the module which declared this object + * Name of the module which declared this object (soft FK to civicrm_extension.full_name) * * @var string - * (SQL type: varchar(127)) + * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ public $module; @@ -51,8 +51,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { /** * Symbolic name used by the module to identify the object * - * @var string|null - * (SQL type: varchar(127)) + * @var string + * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ public $name; @@ -67,9 +67,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { public $entity_type; /** - * Foreign key to the referenced item. + * Soft foreign key to the referenced item. * - * @var int|string + * @var int|string|null * (SQL type: int unsigned) * Note that values will be retrieved from the database as a string. */ @@ -78,8 +78,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { /** * Policy on when to cleanup entity (always, never, unused) * - * @var string|null - * (SQL type: varchar(32)) + * @var string + * (SQL type: varchar(16)) * Note that values will be retrieved from the database as a string. */ public $cleanup; @@ -146,9 +146,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'name' => 'module', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Module'), - 'description' => ts('Name of the module which declared this object'), + 'description' => ts('Name of the module which declared this object (soft FK to civicrm_extension.full_name)'), 'required' => TRUE, - 'maxlength' => 127, + 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -161,6 +161,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'entity' => 'Managed', 'bao' => 'CRM_Core_BAO_Managed', 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_Managed::getBaseModules', + ], 'add' => '4.2', ], 'name' => [ @@ -168,7 +171,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Name'), 'description' => ts('Symbolic name used by the module to identify the object'), - 'maxlength' => 127, + 'required' => TRUE, + 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -208,8 +212,7 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'name' => 'entity_id', 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Entity ID'), - 'description' => ts('Foreign key to the referenced item.'), - 'required' => TRUE, + 'description' => ts('Soft foreign key to the referenced item.'), 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -228,8 +231,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Cleanup Setting'), 'description' => ts('Policy on when to cleanup entity (always, never, unused)'), - 'maxlength' => 32, - 'size' => CRM_Utils_Type::MEDIUM, + 'required' => TRUE, + 'maxlength' => 16, + 'size' => CRM_Utils_Type::TWELVE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -237,6 +241,7 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'token' => FALSE, ], 'where' => 'civicrm_managed.cleanup', + 'default' => 'always', 'table_name' => 'civicrm_managed', 'entity' => 'Managed', 'bao' => 'CRM_Core_BAO_Managed', diff --git a/civicrm/CRM/Core/DAO/Tag.php b/civicrm/CRM/Core/DAO/Tag.php index b84fa0d5e4..b6c5a2f1a4 100644 --- a/civicrm/CRM/Core/DAO/Tag.php +++ b/civicrm/CRM/Core/DAO/Tag.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Tag.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:f8d8698f48fbd60b8d8e0bf8eff40c47) + * (GenCodeChecksum:ded9d6a9f9c08146a0205da83c838c91) */ /** @@ -35,7 +35,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { * * @var string */ - public static $_labelField = 'name'; + public static $_labelField = 'label'; /** * Should CiviCRM log any modifications to this table in the civicrm_log table. @@ -54,7 +54,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { public $id; /** - * Name of Tag. + * Unique machine name * * @var string * (SQL type: varchar(64)) @@ -62,6 +62,15 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { */ public $name; + /** + * User-facing tag name + * + * @var string + * (SQL type: varchar(64)) + * Note that values will be retrieved from the database as a string. + */ + public $label; + /** * Optional verbose description of the tag. * @@ -206,7 +215,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'name' => 'name', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Tag Name'), - 'description' => ts('Name of Tag.'), + 'description' => ts('Unique machine name'), 'required' => TRUE, 'maxlength' => 64, 'size' => CRM_Utils_Type::BIG, @@ -223,6 +232,30 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'localizable' => 0, 'add' => '1.1', ], + 'label' => [ + 'name' => 'label', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Tag Label'), + 'description' => ts('User-facing tag name'), + 'required' => TRUE, + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_tag.label', + 'table_name' => 'civicrm_tag', + 'entity' => 'Tag', + 'bao' => 'CRM_Core_BAO_Tag', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => '5.68', + ], 'description' => [ 'name' => 'description', 'type' => CRM_Utils_Type::T_STRING, @@ -267,7 +300,8 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'pseudoconstant' => [ 'table' => 'civicrm_tag', 'keyColumn' => 'id', - 'labelColumn' => 'name', + 'labelColumn' => 'label', + 'nameColumn' => 'name', ], 'add' => '1.1', ], @@ -375,6 +409,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'localizable' => 0, 'FKClassName' => 'CRM_Contact_DAO_Contact', 'html' => [ + 'type' => 'EntityRef', 'label' => ts("Created By"), ], 'add' => '3.4', @@ -412,10 +447,17 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'token' => FALSE, ], 'where' => 'civicrm_tag.created_date', + 'default' => 'CURRENT_TIMESTAMP', 'table_name' => 'civicrm_tag', 'entity' => 'Tag', 'bao' => 'CRM_Core_BAO_Tag', 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDateTime', + 'label' => ts("Created Date"), + ], + 'readonly' => TRUE, 'add' => '3.4', ], ]; diff --git a/civicrm/CRM/Core/EntityTokens.php b/civicrm/CRM/Core/EntityTokens.php index 850f5848de..ce76c40e23 100644 --- a/civicrm/CRM/Core/EntityTokens.php +++ b/civicrm/CRM/Core/EntityTokens.php @@ -701,4 +701,35 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber { return $cacheKey; } + /** + * Get metadata for tokens for a related entity joined by a field on the main entity. + * + * @param string $entity + * @param string $joinField + * @param array $tokenList + * @param array $hiddenTokens + * + * @return array + * @throws \CRM_Core_Exception + */ + protected function getRelatedTokensForEntity(string $entity, string $joinField, array $tokenList, $hiddenTokens = []): array { + $apiParams = ['checkPermissions' => FALSE]; + if ($tokenList !== ['*']) { + $apiParams['where'] = [['name', 'IN', $tokenList]]; + } + $relatedTokens = civicrm_api4($entity, 'getFields', $apiParams); + $tokens = []; + foreach ($relatedTokens as $relatedToken) { + $tokens[$joinField . '.' . $relatedToken['name']] = [ + 'title' => $relatedToken['title'], + 'name' => $joinField . '.' . $relatedToken['name'], + 'type' => 'mapped', + 'data_type' => $relatedToken['data_type'], + 'input_type' => $relatedToken['input_type'], + 'audience' => in_array($relatedToken['name'], $hiddenTokens, TRUE) ? 'hidden' : 'user', + ]; + } + return $tokens; + } + } diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index 10382406df..da2a22ae6d 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -202,6 +202,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * to combine fields from the various screens & save the resulting 'submitted_values' * to the UserJob. * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * * @return array */ public function getSubmittedValues(): array { @@ -219,6 +223,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * Contribution_Main and Contribution_Confirm) accessible you can override * this function as CRM_Import_Forms does. * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * * @return string[] */ protected function getSubmittableFields(): array { @@ -781,7 +789,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $this->submitOnce = TRUE; } - $attrs = ['class' => 'crm-form-submit'] + (array) CRM_Utils_Array::value('js', $button); + $attrs = ['class' => 'crm-form-submit'] + ($button['js'] ?? []); // A lot of forms use the hacky method of looking at // `$params['button name']` (dating back to them being inputs with a @@ -1836,7 +1844,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } if ($context == 'search') { $widget = $widget == 'Select2' ? $widget : 'Select'; - $props['multiple'] = CRM_Utils_Array::value('multiple', $props, TRUE); + $props['multiple'] = $props['multiple'] ?? TRUE; } elseif (!empty($fieldSpec['serialize'])) { $props['multiple'] = TRUE; @@ -2316,6 +2324,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $props['data-select-params'] = json_encode($props['select']); $props['data-api-params'] = json_encode($props['api']); $props['data-api-entity'] = $props['entity']; + if (!empty($props['select']['quickAdd'])) { + Civi::service('angularjs.loader')->addModules(['af']); + } CRM_Utils_Array::remove($props, 'select', 'api', 'entity'); return $this->add('text', $name, $label, $props, $required); } @@ -3012,6 +3023,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * they have permission to (setContactID does do that) and can be used to check if the user is * accessing their own record. * + * @deprecated use getAuthenticatedContactID() + * * @return int|false * @throws \CRM_Core_Exception */ @@ -3028,14 +3041,20 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } /** - * Get values submitted by the user. + * Get value submitted by the user. * * These values have been validated against the fields added to the form. * https://pear.php.net/manual/en/package.html.html-quickform.html-quickform.exportvalues.php * + * Any money processing has also been done. + * * @param string $fieldName * * @return mixed|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. */ public function getSubmittedValue(string $fieldName) { if (empty($this->exportedValues)) { @@ -3045,6 +3064,15 @@ class CRM_Core_Form extends HTML_QuickForm_Page { if (in_array($fieldName, $this->submittableMoneyFields, TRUE)) { return CRM_Utils_Rule::cleanMoney($value); } + else { + // Numeric fields are not in submittableMoneyFields (for now) + $fieldRules = $this->_rules[$fieldName] ?? []; + foreach ($fieldRules as $rule) { + if ('money' === $rule['type']) { + return CRM_Utils_Rule::cleanMoney($value); + } + } + } return $value; } diff --git a/civicrm/CRM/Core/Form/RecurringEntity.php b/civicrm/CRM/Core/Form/RecurringEntity.php index 6390726a75..ce86c7a42a 100644 --- a/civicrm/CRM/Core/Form/RecurringEntity.php +++ b/civicrm/CRM/Core/Form/RecurringEntity.php @@ -20,6 +20,12 @@ * This class generates form components for processing Entity. */ class CRM_Core_Form_RecurringEntity { + + private static $preDeleteFunction = [ + 'Event' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents', + 'Activity' => NULL, + ]; + /** * Current entity id * @var int @@ -317,6 +323,7 @@ class CRM_Core_Form_RecurringEntity { * * @param array $params * @param string $type + * Redundant - always the same as `$params['entity_table']` * @param array $linkedEntities * * @throws \CRM_Core_Exception @@ -393,59 +400,22 @@ class CRM_Core_Form_RecurringEntity { } } - // FIXME: This is the worst way possible to convert a table name to an api entity name - $apiEntityType = explode("_", $type); - if (!empty($apiEntityType[1])) { - $apiType = $apiEntityType[1]; - } - //Delete relations if any from recurring entity tables before inserting new relations for this entity id + // Delete relations if any from recurring entity tables before inserting new relations for this entity id if ($params['entity_id']) { - //If entity has any pre delete function, consider that first - if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func']) && - !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) - ) { - // FIXME: This calls `CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents` - // which then sets the static variable `CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted` - // which is then accessed below and used to delete events with no registrations. - // I can't think of a worse way to pass a variable back from a function. - call_user_func_array(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func'], [$params['entity_id']]); + $entityType = CRM_Core_DAO_AllCoreTables::getEntityNameForTable($type); + // Use pre-delete function for events to exclude those with registered participants + if (!empty(self::$preDeleteFunction[$entityType])) { + $itemsToDelete = call_user_func_array(self::$preDeleteFunction[$entityType], [$params['entity_id']]); } - //Ready to execute delete on entities if it has delete function set - if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func']) && - !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) - ) { - //Check if pre delete function has some ids to be deleted - if (!empty(CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted)) { - foreach (CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted as $eid) { - $result = civicrm_api3( - ucfirst(strtolower($apiType)), - CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func'], - [ - 'sequential' => 1, - 'id' => $eid, - ] - ); - if ($result['error']) { - CRM_Core_Error::statusBounce(ts('Error creating recurring list')); - } - } - } - else { - $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($params['entity_id'], $params['entity_table'], FALSE); - foreach ($getRelatedEntities as $key => $value) { - $result = civicrm_api3( - ucfirst(strtolower($apiType)), - CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func'], - [ - 'sequential' => 1, - 'id' => $value['id'], - ] - ); - if ($result['error']) { - CRM_Core_Error::statusBounce(ts('Error creating recurring list')); - } - } - } + else { + $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($params['entity_id'], $params['entity_table'], FALSE); + $itemsToDelete = array_column($getRelatedEntities, 'id'); + } + if ($itemsToDelete) { + civicrm_api4($entityType, 'delete', [ + 'checkPermissions' => FALSE, + 'where' => [['id', 'IN', $itemsToDelete]], + ]); } // find all entities from the recurring set. At this point we 'll get entities which were not deleted diff --git a/civicrm/CRM/Core/Form/Tag.php b/civicrm/CRM/Core/Form/Tag.php index 0d55661b3c..fe9c14605b 100644 --- a/civicrm/CRM/Core/Form/Tag.php +++ b/civicrm/CRM/Core/Form/Tag.php @@ -46,10 +46,7 @@ class CRM_Core_Form_Tag { $form->assign('isTagset', FALSE); $mode = NULL; - foreach ($parentNames as &$parentNameItem) { - // get the parent id for tag list input for keyword - $parentId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Tag', $parentNameItem, 'id', 'name'); - + foreach ($parentNames as $parentId => $parentNameItem) { // check if parent exists if ($parentId) { $tagsetItem = $tagsetElementName . 'parentId_' . $parentId; diff --git a/civicrm/CRM/Core/ManagedEntities.php b/civicrm/CRM/Core/ManagedEntities.php index daacdca7a5..09ea4c76a2 100644 --- a/civicrm/CRM/Core/ManagedEntities.php +++ b/civicrm/CRM/Core/ManagedEntities.php @@ -153,7 +153,7 @@ class CRM_Core_ManagedEntities { // Fetch default values for fields that are writeable $condition = [['type', '=', 'Field'], ['readonly', 'IS EMPTY'], ['default_value', '!=', 'now']]; // Exclude "weight" as that auto-adjusts - if (in_array('SortableEntity', CoreUtil::getInfoItem($item['entity_type'], 'type'), TRUE)) { + if (CoreUtil::isType($item['entity_type'], 'SortableEntity')) { $weightCol = CoreUtil::getInfoItem($item['entity_type'], 'order_by'); $condition[] = ['name', '!=', $weightCol]; } @@ -200,12 +200,18 @@ class CRM_Core_ManagedEntities { } /** - * Create a new entity. + * Create a new entity (if policy allows). * * @param array $item * Entity specification (per hook_civicrm_managedEntities). */ protected function insertNewEntity(array $item) { + // If entity has previously been created, only re-insert if 'update' policy is 'always' + // NOTE: $item[id] is the id of the `civicrm_managed` row not the entity itself + // If that id exists, then we know the entity was inserted previously and subsequently deleted. + if (!empty($item['id']) && $item['update'] !== 'always') { + return; + } $params = $item['params']; // APIv4 if ($params['version'] == 4) { @@ -233,11 +239,13 @@ class CRM_Core_ManagedEntities { } $dao = new CRM_Core_DAO_Managed(); + // If re-inserting the entity, we'll update instead of create the managed record. + $dao->id = $item['id'] ?? NULL; $dao->module = $item['module']; $dao->name = $item['name']; $dao->entity_type = $item['entity_type']; $dao->entity_id = $id; - $dao->cleanup = $item['cleanup'] ?? NULL; + $dao->cleanup = $item['cleanup'] ?? 'always'; $dao->save(); } @@ -291,7 +299,13 @@ class CRM_Core_ManagedEntities { } elseif ($doUpdate && $item['params']['version'] == 4) { $params = ['checkPermissions' => FALSE] + $item['params']; - $params['values']['id'] = $item['entity_id']; + $idField = CoreUtil::getIdFieldName($item['entity_type']); + $params['values'][$idField] = $item['entity_id']; + // Exclude "weight" as that auto-adjusts + if (CoreUtil::isType($item['entity_type'], 'SortableEntity')) { + $weightCol = CoreUtil::getInfoItem($item['entity_type'], 'order_by'); + unset($params['values'][$weightCol]); + } // 'match' param doesn't apply to "update" action unset($params['match']); try { @@ -429,30 +443,6 @@ class CRM_Core_ManagedEntities { return $result; } - /** - * @param array $moduleIndex - * @param array $declarations - * - * @return array - * indexed by module,name - */ - protected function createDeclarationIndex($moduleIndex, $declarations) { - $result = []; - if (!isset($moduleIndex[TRUE])) { - return $result; - } - foreach ($moduleIndex[TRUE] as $moduleName => $module) { - if ($module->is_active) { - // need an empty array() for all active modules, even if there are no current $declarations - $result[$moduleName] = []; - } - } - foreach ($declarations as $declaration) { - $result[$declaration['module']][$declaration['name']] = $declaration; - } - return $result; - } - /** * @param array $declarations * @@ -585,29 +575,20 @@ class CRM_Core_ManagedEntities { $plan = []; foreach ($managedEntities as $managedEntity) { $key = "{$managedEntity['module']}_{$managedEntity['name']}_{$managedEntity['entity_type']}"; - // Set to disable or delete if module is disabled or missing - it will be overwritten below module is active. + // Set to disable or delete if module is disabled or missing - it will be overwritten below if module is active. $action = $this->isModuleDisabled($managedEntity['module']) ? 'disable' : 'delete'; $plan[$key] = array_merge($managedEntity, ['managed_action' => $action]); } foreach ($declarations as $declaration) { $key = "{$declaration['module']}_{$declaration['name']}_{$declaration['entity']}"; - if (isset($plan[$key])) { - $plan[$key]['params'] = $declaration['params']; - $plan[$key]['managed_action'] = 'update'; - $plan[$key]['cleanup'] = $declaration['cleanup'] ?? NULL; - $plan[$key]['update'] = $declaration['update'] ?? 'always'; - } - else { - $plan[$key] = [ - 'module' => $declaration['module'], - 'name' => $declaration['name'], - 'entity_type' => $declaration['entity'], - 'managed_action' => 'create', - 'params' => $declaration['params'], - 'cleanup' => $declaration['cleanup'] ?? NULL, - 'update' => $declaration['update'] ?? 'always', - ]; - } + // Set action to update if already managed + $plan[$key]['managed_action'] = empty($plan[$key]['entity_id']) ? 'create' : 'update'; + $plan[$key]['module'] = $declaration['module']; + $plan[$key]['name'] = $declaration['name']; + $plan[$key]['entity_type'] = $declaration['entity']; + $plan[$key]['params'] = $declaration['params']; + $plan[$key]['cleanup'] = $declaration['cleanup'] ?? NULL; + $plan[$key]['update'] = $declaration['update'] ?? 'always'; } return $plan; } diff --git a/civicrm/CRM/Core/OptionValue.php b/civicrm/CRM/Core/OptionValue.php index 95662e6bd4..89f45a28da 100644 --- a/civicrm/CRM/Core/OptionValue.php +++ b/civicrm/CRM/Core/OptionValue.php @@ -181,7 +181,7 @@ class CRM_Core_OptionValue { * */ public static function addOptionValue(&$params, $optionGroupName, $action, $optionValueID) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; // checking if the group name with the given id or name (in $groupParams) exists $groupParams = ['name' => $optionGroupName, 'is_active' => 1]; $optionGroup = CRM_Core_BAO_OptionGroup::retrieve($groupParams, $defaults); diff --git a/civicrm/CRM/Core/Page.php b/civicrm/CRM/Core/Page.php index 41a8a57c69..bfe554070f 100644 --- a/civicrm/CRM/Core/Page.php +++ b/civicrm/CRM/Core/Page.php @@ -132,6 +132,8 @@ class CRM_Core_Page { // in 'body.tpl 'suppressForm', 'beginHookFormElements', + // This is checked in validate.tpl + 'snippet_type', ]; /** diff --git a/civicrm/CRM/Core/Page/Redirect.php b/civicrm/CRM/Core/Page/Redirect.php index 4f0b83dde4..3977e5ad33 100644 --- a/civicrm/CRM/Core/Page/Redirect.php +++ b/civicrm/CRM/Core/Page/Redirect.php @@ -55,7 +55,7 @@ class CRM_Core_Page_Redirect extends CRM_Core_Page { $urlParts = parse_url($urlString); $url = CRM_Utils_System::url( $urlParts['path'], - CRM_Utils_Array::value('query', $urlParts, NULL), + $urlParts['query'] ?? NULL, $absolute, CRM_Utils_Array::value('fragment', $urlParts, NULL) ); diff --git a/civicrm/CRM/Core/Payment.php b/civicrm/CRM/Core/Payment.php index 0453ac8ad7..9e0f2a33a8 100644 --- a/civicrm/CRM/Core/Payment.php +++ b/civicrm/CRM/Core/Payment.php @@ -591,6 +591,24 @@ abstract class CRM_Core_Payment { case 'contributionPageContinueText': return ts('Click the <strong>Continue</strong> button to proceed with the payment.'); + case 'contributionPageConfirmText': + if ($params['amount'] <= 0.0) { + return ''; + } + if ((int) $this->_paymentProcessor['billing_mode'] !== 4) { + return ts('Your contribution will not be completed until you click the <strong>%1</strong> button. Please click the button one time only.', [1 => ts('Make Contribution')]); + } + return ''; + + case 'contributionPageButtonText': + if ($params['amount'] <= 0.0 || (int) $this->_paymentProcessor['billing_mode'] === 4) { + return ts('Continue'); + } + if ($params['is_payment_to_existing']) { + return ts('Make Payment'); + } + return ts('Make Contribution'); + case 'cancelRecurDetailText': if ($params['mode'] === 'auto_renew') { return ts('Click the button below if you want to cancel the auto-renewal option for your %1 membership. This will not cancel your membership. However you will need to arrange payment for renewal when your membership expires.', diff --git a/civicrm/CRM/Core/Payment/Manual.php b/civicrm/CRM/Core/Payment/Manual.php index 07a008c0ec..26b348638b 100644 --- a/civicrm/CRM/Core/Payment/Manual.php +++ b/civicrm/CRM/Core/Payment/Manual.php @@ -272,13 +272,16 @@ class CRM_Core_Payment_Manual extends CRM_Core_Payment { * * @return string */ - public function getText($context, $params) { + public function getText($context, $params): string { switch ($context) { case 'contributionPageContinueText': - if ($params['amount'] <= 0) { - return ts('To complete this transaction, click the <strong>Continue</strong> button below.'); - } - return ts('To complete your contribution, click the <strong>Continue</strong> button below.'); + return ''; + + case 'contributionPageButtonText': + return ts('Continue'); + + case 'contributionPageConfirmText': + return ''; default: return parent::getText($context, $params); diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index 23be16e1af..232cad6e9f 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -430,7 +430,7 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $this->contribution = new CRM_Contribute_BAO_Contribution(); $this->contribution->id = $this->getContributionID(); if (!$this->contribution->find(TRUE)) { - throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $contribution->id, NULL, ['context' => "Could not find contribution record: {$contribution->id} in IPN request: "]); + throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $this->contribution->id, NULL, ['context' => "Could not find contribution record: {$this->contribution->id} in IPN request: "]); } if ((int) $this->contribution->contact_id !== $this->getContactID()) { CRM_Core_Error::debug_log_message("Contact ID in IPN not found but contact_id found in contribution."); diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 4a86234f1f..73275f3eb5 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -68,12 +68,6 @@ class CRM_Core_PseudoConstant { */ private static $country; - /** - * CountryIsoCode. - * @var array - */ - private static $countryIsoCode; - /** * group * @var array @@ -99,43 +93,6 @@ class CRM_Core_PseudoConstant { */ private static $currencyCode; - /** - * Payment processor - * @var array - */ - private static $paymentProcessor; - - /** - * Payment processor types - * @var array - */ - private static $paymentProcessorType; - - /** - * World Region - * @var array - */ - private static $worldRegions; - - /** - * activity status - * @var array - * @deprecated Please use the buildOptions() method in the appropriate BAO object. - */ - private static $activityStatus; - - /** - * Visibility - * @var array - */ - private static $visibility; - - /** - * Greetings - * @var array - */ - private static $greeting; - /** * Extensions of type module * @var array @@ -466,8 +423,7 @@ class CRM_Core_PseudoConstant { } /** - * Flush given pseudoconstant so it can be reread from db. - * nex time it's requested. + * Flush static array cache. * * @param bool|string $name pseudoconstant to be flushed */ @@ -496,12 +452,12 @@ class CRM_Core_PseudoConstant { */ public static function &activityType() { $args = func_get_args(); - $all = CRM_Utils_Array::value(0, $args, TRUE); - $includeCaseActivities = CRM_Utils_Array::value(1, $args, FALSE); - $reset = CRM_Utils_Array::value(2, $args, FALSE); - $returnColumn = CRM_Utils_Array::value(3, $args, 'label'); - $includeCampaignActivities = CRM_Utils_Array::value(4, $args, FALSE); - $onlyComponentActivities = CRM_Utils_Array::value(5, $args, FALSE); + $all = $args[0] ?? TRUE; + $includeCaseActivities = $args[1] ?? FALSE; + $reset = $args[2] ?? FALSE; + $returnColumn = $args[3] ?? 'label'; + $includeCampaignActivities = $args[4] ?? FALSE; + $onlyComponentActivities = $args[5] ?? FALSE; $index = (int) $all . '_' . $returnColumn . '_' . (int) $includeCaseActivities; $index .= '_' . (int) $includeCampaignActivities; $index .= '_' . (int) $onlyComponentActivities; @@ -668,6 +624,7 @@ WHERE id = %1"; /** * Get all the State/Province abbreviations from the database for the specified country. + * @deprecated * * @param int $countryID * @@ -675,21 +632,24 @@ WHERE id = %1"; * array of all State/Province abbreviations for the given country. */ public static function stateProvinceAbbreviationForCountry($countryID) { - if (!isset(\Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID])) { - \Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID] = []; - } - self::populate(\Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID], 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); - return \Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID]; + CRM_Core_Error::deprecatedFunctionWarning('API'); + $abbrs = []; + self::populate($abbrs, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); + return $abbrs; } /** * Get all the State/Province abbreviations from the database for the default country. + * @deprecated * * @return array * array of all State/Province abbreviations for the given country. */ public static function stateProvinceAbbreviationForDefaultCountry() { - return CRM_Core_PseudoConstant::stateProvinceAbbreviationForCountry(Civi::settings()->get('defaultContactCountry')); + $countryID = Civi::settings()->get('defaultContactCountry'); + $abbrs = []; + self::populate($abbrs, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); + return $abbrs; } /** @@ -754,31 +714,18 @@ WHERE id = %1"; /** * Get all the country ISO Code abbreviations from the database. * - * The static array countryIsoCode is returned, and if it's - * called the first time, the <b>Country DAO</b> is used - * to get all the countries' ISO codes. - * - * Note: any database errors will be trapped by the DAO. - * - * * @param bool $id * * @return array - * array reference of all country ISO codes. */ - public static function &countryIsoCode($id = FALSE) { - if (!self::$countryIsoCode) { - self::populate(self::$countryIsoCode, 'CRM_Core_DAO_Country', TRUE, 'iso_code'); - } + public static function countryIsoCode($id = FALSE) { + $values = []; + self::populate($values, 'CRM_Core_DAO_Country', TRUE, 'iso_code'); + if ($id) { - if (array_key_exists($id, self::$countryIsoCode)) { - return self::$countryIsoCode[$id]; - } - else { - return CRM_Core_DAO::$_nullObject; - } + return $values[$id] ?? NULL; } - return self::$countryIsoCode; + return $values; } /** @@ -803,12 +750,9 @@ WHERE id = %1"; */ public static function allGroup($groupType = NULL, $excludeHidden = TRUE) { $condition = CRM_Contact_BAO_Group::groupTypeCondition($groupType, $excludeHidden); - $groupKey = ($groupType ?: 'null') . !empty($excludeHidden); - - if (!isset(Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey])) { - self::populate(Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey], 'CRM_Contact_DAO_Group', FALSE, 'title', 'is_active', $condition); - } - return Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey]; + $values = []; + self::populate($values, 'CRM_Contact_DAO_Group', FALSE, 'title', 'is_active', $condition); + return $values; } /** @@ -955,9 +899,6 @@ WHERE id = %1"; /** * Get all the ISO 4217 currency codes * - * so far, we use this for validation only, so there's no point of putting this into the database - * - * * @return array * array reference of all currency codes */ @@ -966,7 +907,6 @@ WHERE id = %1"; $query = "SELECT name FROM civicrm_currency"; $dao = CRM_Core_DAO::executeQuery($query); - $currencyCode = []; while ($dao->fetch()) { self::$currencyCode[] = $dao->name; } @@ -1025,8 +965,7 @@ WHERE id = %1"; * array of all payment processors */ public static function paymentProcessor($all = FALSE, $test = FALSE, $additionalCond = NULL) { - $condition = "is_test = "; - $condition .= ($test) ? '1' : '0'; + $condition = 'is_test = ' . ($test ? '1' : '0'); if ($additionalCond) { $condition .= " AND ( $additionalCond ) "; @@ -1035,13 +974,10 @@ WHERE id = %1"; // CRM-7178. Make sure we only include payment processors valid in this // domain $condition .= " AND domain_id = " . CRM_Core_Config::domainID(); + $values = []; + self::populate($values, 'CRM_Financial_DAO_PaymentProcessor', $all, 'name', 'is_active', $condition, 'is_default desc, name'); - $cacheKey = $condition . '_' . (int) $all; - if (!isset(self::$paymentProcessor[$cacheKey])) { - self::populate(self::$paymentProcessor[$cacheKey], 'CRM_Financial_DAO_PaymentProcessor', $all, 'name', 'is_active', $condition, 'is_default desc, name'); - } - - return self::$paymentProcessor[$cacheKey]; + return $values; } /** @@ -1060,40 +996,32 @@ WHERE id = %1"; * array of all payment processor types */ public static function &paymentProcessorType($all = FALSE, $id = NULL, $return = 'title') { - $cacheKey = $id . '_' . $return; - if (empty(self::$paymentProcessorType[$cacheKey])) { - self::populate(self::$paymentProcessorType[$cacheKey], 'CRM_Financial_DAO_PaymentProcessorType', $all, $return, 'is_active', NULL, "is_default, $return", 'id'); - } - if ($id && !empty(self::$paymentProcessorType[$cacheKey][$id])) { - return self::$paymentProcessorType[$cacheKey][$id]; - } - return self::$paymentProcessorType[$cacheKey]; + CRM_Core_Error::deprecatedFunctionWarning('API'); + $values = []; + self::populate($values, 'CRM_Financial_DAO_PaymentProcessorType', $all, $return, 'is_active', NULL, "is_default, $return", 'id'); + // This is incredibly stupid, but the whole function is deprecated anyway... + if ($id && !empty($values[$id])) { + return $values[$id]; + } + return $values; } /** * Get all the World Regions from Database. * - * * @param bool $id * * @return array * array reference of all World Regions */ - public static function &worldRegion($id = FALSE) { - if (!self::$worldRegions) { - self::populate(self::$worldRegions, 'CRM_Core_DAO_Worldregion', TRUE, 'name', NULL, NULL, 'id'); - } + public static function worldRegion($id = FALSE) { + $values = []; + self::populate($values, 'CRM_Core_DAO_Worldregion', TRUE, 'name', NULL, NULL, 'id'); if ($id) { - if (array_key_exists($id, self::$worldRegions)) { - return self::$worldRegions[$id]; - } - else { - return CRM_Core_DAO::$_nullObject; - } + return $values[$id] ?? NULL; } - - return self::$worldRegions; + return $values; } /** @@ -1101,25 +1029,12 @@ WHERE id = %1"; * * Get all Activity Statuses. * - * The static array activityStatus is returned - * - * * @param string $column * * @return array - * array reference of all activity statuses */ public static function &activityStatus($column = 'label') { - if (NULL === self::$activityStatus) { - self::$activityStatus = []; - } - if (!array_key_exists($column, self::$activityStatus)) { - self::$activityStatus[$column] = []; - - self::$activityStatus[$column] = CRM_Core_OptionGroup::values('activity_status', FALSE, FALSE, FALSE, NULL, $column); - } - - return self::$activityStatus[$column]; + return CRM_Core_OptionGroup::values('activity_status', FALSE, FALSE, FALSE, NULL, $column); } /** @@ -1135,16 +1050,8 @@ WHERE id = %1"; * @return array * array reference of all Visibility levels. */ - public static function &visibility($column = 'label') { - if (!isset(self::$visibility)) { - self::$visibility = []; - } - - if (!isset(self::$visibility[$column])) { - self::$visibility[$column] = CRM_Core_OptionGroup::values('visibility', FALSE, FALSE, FALSE, NULL, $column); - } - - return self::$visibility[$column]; + public static function visibility($column = 'label') { + return CRM_Core_OptionGroup::values('visibility', FALSE, FALSE, FALSE, NULL, $column); } /** diff --git a/civicrm/CRM/Core/QuickForm/Action/Upload.php b/civicrm/CRM/Core/QuickForm/Action/Upload.php index c86d0b2f16..9f7089893d 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Upload.php +++ b/civicrm/CRM/Core/QuickForm/Action/Upload.php @@ -77,7 +77,7 @@ class CRM_Core_QuickForm_Action_Upload extends CRM_Core_QuickForm_Action { // rename the uploaded file with a unique number at the end $value = $element->getValue(); - $newName = CRM_Utils_File::makeFileName($value['name']); + $newName = CRM_Utils_File::makeFileName($value['name'], TRUE); $status = $element->moveUploadedFile($this->_uploadDir, $newName); if (!$status) { CRM_Core_Error::statusBounce(ts('We could not move the uploaded file %1 to the upload directory %2. Please verify that the \'Temporary Files\' setting points to a valid path which is writable by your web server.', [ diff --git a/civicrm/CRM/Core/Resources.php b/civicrm/CRM/Core/Resources.php index f1610b35f6..748aaa1c26 100644 --- a/civicrm/CRM/Core/Resources.php +++ b/civicrm/CRM/Core/Resources.php @@ -432,10 +432,47 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface 'contactSearch' => json_encode(!empty($params['includeEmailInName']) ? ts('Search by name/email or id...') : ts('Search by name or id...')), 'otherSearch' => json_encode(ts('Enter search term or id...')), 'entityRef' => self::getEntityRefMetadata(), + 'quickAdd' => self::getQuickAddForms($e->params['cid']), ]; $e->content = CRM_Core_Smarty::singleton()->fetchWith('CRM/common/l10n.js.tpl', $params); } + /** + * Gets links to "Quick Add" forms, for use in Autocomplete widgets + * + * @param int|null $cid + * @return array + */ + private static function getQuickAddForms(?int $cid): array { + $forms = []; + try { + $contactTypes = CRM_Contact_BAO_ContactType::getAllContactTypes(); + $routes = \Civi\Api4\Route::get(FALSE) + ->addSelect('path', 'title', 'access_arguments') + ->addWhere('path', 'LIKE', 'civicrm/quick-add/%') + ->execute(); + foreach ($routes as $route) { + // Ensure user has permission to use the form + if (!empty($route['access_arguments'][0]) && !CRM_Core_Permission::check($route['access_arguments'][0], $cid)) { + continue; + } + // Ensure API entity exists + [, , $entityType] = array_pad(explode('/', $route['path']), 3, '*'); + if (\Civi\Api4\Utils\CoreUtil::entityExists($entityType)) { + $forms[] = [ + 'entity' => $entityType, + 'path' => $route['path'], + 'title' => $route['title'], + 'icon' => \Civi\Api4\Utils\CoreUtil::getInfoItem($entityType, 'icon'), + ]; + } + } + } + catch (CRM_Core_Exception $e) { + } + return $forms; + } + /** * @return bool * is this page request an ajax snippet? diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 374e708edf..1384b0375f 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -219,6 +219,11 @@ class CRM_Core_SelectValues { 'name' => 'Link', 'label' => ts('Link'), ], + [ + 'id' => 'Hidden', + 'name' => 'Hidden', + 'label' => ts('Hidden'), + ], ]; } @@ -634,6 +639,7 @@ class CRM_Core_SelectValues { * @return array */ public static function participantTokens(): array { + CRM_Core_Error::deprecatedFunctionWarning('user TokenProcessor'); $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['participantId']]); $allTokens = $tokenProcessor->listTokens(); foreach (array_keys($allTokens) as $token) { @@ -1159,6 +1165,10 @@ class CRM_Core_SelectValues { 'label' => ts('Postal Code'), 'adv_search_legacy' => 'postal_code', ], + [ + 'key' => 'employer_id.sort_name', + 'label' => ts('Current Employer'), + ], [ 'key' => 'job_title', 'label' => ts('Job Title'), diff --git a/civicrm/CRM/Core/Selector/Controller.php b/civicrm/CRM/Core/Selector/Controller.php index c2cc8d196a..b2d899a305 100644 --- a/civicrm/CRM/Core/Selector/Controller.php +++ b/civicrm/CRM/Core/Selector/Controller.php @@ -325,7 +325,7 @@ class CRM_Core_Selector_Controller { } else { // output requires paging/sorting capability - $rows = self::getRows($this); + $rows = $this->getRows($this); CRM_Utils_Hook::searchColumns($contextName, $columnHeaders, $rows, $this); $reorderedHeaders = []; $noWeightHeaders = []; diff --git a/civicrm/CRM/Core/Smarty.php b/civicrm/CRM/Core/Smarty.php index 41de354b17..60f6cfcb09 100644 --- a/civicrm/CRM/Core/Smarty.php +++ b/civicrm/CRM/Core/Smarty.php @@ -136,6 +136,7 @@ class CRM_Core_Smarty extends CRM_Core_SmartyCompatibility { 'cacheCleanup' => CRM_Utils_Request::retrieveValue('cacheCleanup', 'Integer'), 'configReset' => CRM_Utils_Request::retrieveValue('configReset', 'Integer'), ]); + $this->assign('snippet_type', CRM_Utils_Request::retrieveValue('snippet', 'String')); $tsLocale = CRM_Core_I18n::getLocale(); $this->assign('tsLocale', $tsLocale); diff --git a/civicrm/CRM/Core/Smarty/plugins/block.localize.php b/civicrm/CRM/Core/Smarty/plugins/block.localize.php index 47e64fe6be..6b7f357d85 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.localize.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.localize.php @@ -33,18 +33,19 @@ * @return string * multilingualized query */ -function smarty_block_localize($params, $text, &$smarty, &$repeat) { +function smarty_block_localize($params, $text, $smarty, &$repeat) { if ($repeat) { // For opening tag text is always null return ''; } - - if (!array_key_exists('multilingual', $smarty->_tpl_vars) || !$smarty->_tpl_vars['multilingual']) { + $multiLingual = method_exists($smarty, 'get_template_vars') ? $smarty->get_template_vars('multilingual') : $smarty->getTemplateVars('multilingual'); + if (!$multiLingual) { return $text; } $lines = []; - foreach ($smarty->_tpl_vars['locales'] as $locale) { + $locales = (array) (method_exists($smarty, 'get_template_vars') ? $smarty->get_template_vars('locales') : $smarty->getTemplateVars('locales')); + foreach ($locales as $locale) { $line = $text; if (isset($params['field'])) { $fields = explode(',', $params['field']); diff --git a/civicrm/CRM/Custom/Form/Field.php b/civicrm/CRM/Custom/Form/Field.php index 9a8c2e3d73..ece46e5555 100644 --- a/civicrm/CRM/Custom/Form/Field.php +++ b/civicrm/CRM/Custom/Form/Field.php @@ -58,10 +58,10 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { * @var array[] */ public static $_dataToHTML = [ - 'String' => ['Text', 'Select', 'Radio', 'CheckBox', 'Autocomplete-Select'], - 'Int' => ['Text', 'Select', 'Radio'], - 'Float' => ['Text', 'Select', 'Radio'], - 'Money' => ['Text', 'Select', 'Radio'], + 'String' => ['Text', 'Select', 'Radio', 'CheckBox', 'Autocomplete-Select', 'Hidden'], + 'Int' => ['Text', 'Select', 'Radio', 'Hidden'], + 'Float' => ['Text', 'Select', 'Radio', 'Hidden'], + 'Money' => ['Text', 'Select', 'Radio', 'Hidden'], 'Memo' => ['TextArea', 'RichTextEditor'], 'Date' => ['Select Date'], 'Boolean' => ['Radio'], diff --git a/civicrm/CRM/Custom/Page/Field.php b/civicrm/CRM/Custom/Page/Field.php index 8d6b6aefb6..188e48ed4d 100644 --- a/civicrm/CRM/Custom/Page/Field.php +++ b/civicrm/CRM/Custom/Page/Field.php @@ -133,27 +133,9 @@ class CRM_Custom_Page_Field extends CRM_Core_Page { $action -= CRM_Core_Action::DISABLE; } - switch ($customFieldBAO->data_type) { - case "String": - case "Int": - case "Float": - case "Money": - // if Multi Select field is selected in custom field - if ($customFieldBAO->html_type == 'Text') { - $action -= CRM_Core_Action::BROWSE; - } - break; - - case "ContactReference": - case "Memo": - case "Date": - case "Boolean": - case "StateProvince": - case "Country": - case "File": - case "Link": - $action -= CRM_Core_Action::BROWSE; - break; + // Remove link to edit option group if there isn't one + if (!$customFieldBAO->option_group_id) { + $action -= CRM_Core_Action::BROWSE; } $customFieldDataType = array_column(CRM_Core_BAO_CustomField::dataType(), 'label', 'id'); diff --git a/civicrm/CRM/Dedupe/MergeHandler.php b/civicrm/CRM/Dedupe/MergeHandler.php index 79c296fdcc..cf64201bcd 100644 --- a/civicrm/CRM/Dedupe/MergeHandler.php +++ b/civicrm/CRM/Dedupe/MergeHandler.php @@ -398,7 +398,7 @@ class CRM_Dedupe_MergeHandler { foreach ($block as $blkCount => $values) { $otherBlockId = $migrationInfo['other_details']['location_blocks'][$name][$blkCount]['id'] ?? NULL; - $mainBlockId = CRM_Utils_Array::value('mainContactBlockId', $migrationInfo['location_blocks'][$name][$blkCount], 0); + $mainBlockId = $migrationInfo['location_blocks'][$name][$blkCount]['mainContactBlockId'] ?? 0; if (!$otherBlockId) { continue; } diff --git a/civicrm/CRM/Event/BAO/Event.php b/civicrm/CRM/Event/BAO/Event.php index 4fcbb99cef..6f843c7742 100644 --- a/civicrm/CRM/Event/BAO/Event.php +++ b/civicrm/CRM/Event/BAO/Event.php @@ -2019,7 +2019,7 @@ WHERE ce.loc_block_id = $locBlockId"; $participant = new CRM_Event_DAO_Participant(); $participant->copyValues($params); - $participant->is_test = CRM_Utils_Array::value('is_test', $params, 0); + $participant->is_test = $params['is_test'] ?? 0; $participant->selectAdd(); $participant->selectAdd('status_id'); if ($participant->find(TRUE) && array_key_exists($participant->status_id, $statusTypes)) { diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php index 9018edaec5..e0946b03da 100644 --- a/civicrm/CRM/Event/BAO/Participant.php +++ b/civicrm/CRM/Event/BAO/Participant.php @@ -546,7 +546,7 @@ INNER JOIN civicrm_price_field field ON ( value.price_field_id = field.id if ($lineItem->html_type == 'Text') { $count *= $lineItem->qty; } - $optionsCount[$lineItem->valueId] = $count + CRM_Utils_Array::value($lineItem->valueId, $optionsCount, 0); + $optionsCount[$lineItem->valueId] = $count + ($optionsCount[$lineItem->valueId] ?? 0); } return $optionsCount; @@ -1744,8 +1744,8 @@ WHERE civicrm_participant.contact_id = {$contactID} AND $contactId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantId, 'contact_id'); $date = CRM_Utils_Date::currentDBDate(); - $event = CRM_Event_BAO_Event::getEvents(0, $eventId); - $subject = sprintf("Registration selections changed for %s", CRM_Utils_Array::value($eventId, $event)); + $title = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventId, 'title'); + $subject = ts('Registration selections changed for %1', [1 => $title]); // activity params $activityParams = [ diff --git a/civicrm/CRM/Event/BAO/ParticipantStatusType.php b/civicrm/CRM/Event/BAO/ParticipantStatusType.php index 7176dcc48b..7632f634e7 100644 --- a/civicrm/CRM/Event/BAO/ParticipantStatusType.php +++ b/civicrm/CRM/Event/BAO/ParticipantStatusType.php @@ -17,33 +17,23 @@ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatusType { /** + * @deprecated * @param array $params * * @return self|null */ public static function add(&$params) { - if (empty($params)) { - return NULL; - } - $dao = new CRM_Event_DAO_ParticipantStatusType(); - $dao->copyValues($params); - return $dao->save(); + return self::writeRecord($params); } /** + * @deprecated * @param array $params * * @return self|null */ - public static function &create(&$params) { - $transaction = new CRM_Core_Transaction(); - $statusType = self::add($params); - if (is_a($statusType, 'CRM_Core_Error')) { - $transaction->rollback(); - return $statusType; - } - $transaction->commit(); - return $statusType; + public static function create(&$params) { + return self::writeRecord($params); } /** diff --git a/civicrm/CRM/Event/Form/EventFees.php b/civicrm/CRM/Event/Form/EventFees.php index b0601f014b..32a3f10ead 100644 --- a/civicrm/CRM/Event/Form/EventFees.php +++ b/civicrm/CRM/Event/Form/EventFees.php @@ -55,19 +55,6 @@ class CRM_Event_Form_EventFees { public static function setDefaultValues(&$form) { $defaults = []; - if ($form->_eventId) { - //get receipt text and financial type - $returnProperities = ['confirm_email_text', 'financial_type_id', 'campaign_id', 'start_date']; - $details = []; - CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $form->_eventId, $details, $returnProperities); - if (!empty($details[$form->_eventId]['financial_type_id'])) { - $defaults['financial_type_id'] = $details[$form->_eventId]['financial_type_id']; - } - if (!empty($details[$form->_eventId]['confirm_email_text'])) { - $defaults['receipt_text'] = $details[$form->_eventId]['confirm_email_text']; - } - } - if ($form->_pId) { $ids = []; $params = ['id' => $form->_pId]; @@ -91,23 +78,8 @@ class CRM_Event_Form_EventFees { $form->assign('fee_amount', CRM_Utils_Array::value('fee_amount', $defaults)); $form->assign('fee_level', CRM_Utils_Array::value('fee_level', $defaults)); } - $defaults['send_receipt'] = 0; - } - else { - $defaults['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$form->_eventId])) >= time()) ? 1 : 0; - $defaults['receive_date'] = date('Y-m-d H:i:s'); } - //CRM-11601 we should keep the record contribution - //true by default while adding participant - if ($form->_action == CRM_Core_Action::ADD && !$form->_mode && $form->_isPaidEvent) { - $defaults['record_contribution'] = 1; - } - - //CRM-13420 - if (empty($defaults['payment_instrument_id'])) { - $defaults['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')); - } if ($form->_mode) { $config = CRM_Core_Config::singleton(); // set default country from config if no country set diff --git a/civicrm/CRM/Event/Form/ManageEvent.php b/civicrm/CRM/Event/Form/ManageEvent.php index 10d3018cae..0bd71043f4 100644 --- a/civicrm/CRM/Event/Form/ManageEvent.php +++ b/civicrm/CRM/Event/Form/ManageEvent.php @@ -177,6 +177,9 @@ class CRM_Event_Form_ManageEvent extends CRM_Core_Form { if (CRM_Core_Permission::check($checkPermission) || !empty($ufCreate) || !empty($ufEdit)) { $this->assign('perm', TRUE); } + else { + $this->assign('perm', FALSE); + } // also set up tabs CRM_Event_Form_ManageEvent_TabHeader::build($this); diff --git a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php index c2b896f001..0fd442b025 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php +++ b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php @@ -217,12 +217,12 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { //format params $params['start_date'] = $params['start_date'] ?? NULL; $params['end_date'] = $params['end_date'] ?? NULL; - $params['has_waitlist'] = CRM_Utils_Array::value('has_waitlist', $params, FALSE); - $params['is_map'] = CRM_Utils_Array::value('is_map', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_public'] = CRM_Utils_Array::value('is_public', $params, FALSE); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); - $params['default_role_id'] = CRM_Utils_Array::value('default_role_id', $params, FALSE); + $params['has_waitlist'] = $params['has_waitlist'] ?? FALSE; + $params['is_map'] = $params['is_map'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_public'] = $params['is_public'] ?? FALSE; + $params['is_share'] = $params['is_share'] ?? FALSE; + $params['default_role_id'] = $params['default_role_id'] ?? FALSE; $params['id'] = $this->_id; //merge params with defaults from templates diff --git a/civicrm/CRM/Event/Form/ManageEvent/Fee.php b/civicrm/CRM/Event/Form/ManageEvent/Fee.php index 52eb1eb987..901b1a8c9c 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Fee.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Fee.php @@ -246,14 +246,15 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent { ); // financial type - if (!CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() || - (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && CRM_Core_Permission::check('administer CiviCRM Financial Types'))) { - $this->addSelect('financial_type_id'); - } - else { - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); - $this->addSelect('financial_type_id', ['context' => 'search', 'options' => $financialTypes]); + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); + $financialOptions = [ + 'options' => $financialTypes, + ]; + if (!CRM_Core_Permission::check('administer CiviCRM Financial Types')) { + $financialOptions['context'] = 'search'; } + $this->addSelect('financial_type_id', $financialOptions); + // add pay later options $this->addElement('checkbox', 'is_pay_later', ts('Pay later option'), NULL, ['onclick' => "return showHideByValue('is_pay_later','','payLaterOptions','block','radio',false);"] @@ -550,8 +551,8 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent { $params['payment_processor'] = 'null'; } - $params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, 0); - $params['is_billing_required'] = CRM_Utils_Array::value('is_billing_required', $params, 0); + $params['is_pay_later'] = $params['is_pay_later'] ?? 0; + $params['is_billing_required'] = $params['is_billing_required'] ?? 0; if ($this->_id) { diff --git a/civicrm/CRM/Event/Form/ManageEvent/Registration.php b/civicrm/CRM/Event/Form/ManageEvent/Registration.php index 4d28895320..7b51f7281d 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Registration.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Registration.php @@ -33,10 +33,10 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent * Set variables up before form is built. */ public function preProcess() { - $this->_addProfileBottom = CRM_Utils_Array::value('addProfileBottom', $_GET, FALSE); - $this->_profileBottomNum = CRM_Utils_Array::value('addProfileNum', $_GET, 0); - $this->_addProfileBottomAdd = CRM_Utils_Array::value('addProfileBottomAdd', $_GET, FALSE); - $this->_profileBottomNumAdd = CRM_Utils_Array::value('addProfileNumAdd', $_GET, 0); + $this->_addProfileBottom = $_GET['addProfileBottom'] ?? FALSE; + $this->_profileBottomNum = $_GET['addProfileNum'] ?? 0; + $this->_addProfileBottomAdd = $_GET['addProfileBottomAdd'] ?? FALSE; + $this->_profileBottomNumAdd = $_GET['addProfileNumAdd'] ?? 0; parent::preProcess(); $this->setSelectedChild('registration'); @@ -783,12 +783,12 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent $params['id'] = $this->_id; // format params - $params['is_online_registration'] = CRM_Utils_Array::value('is_online_registration', $params, FALSE); + $params['is_online_registration'] = $params['is_online_registration'] ?? FALSE; // CRM-11182 - $params['is_confirm_enabled'] = CRM_Utils_Array::value('is_confirm_enabled', $params, FALSE); - $params['is_multiple_registrations'] = CRM_Utils_Array::value('is_multiple_registrations', $params, FALSE); - $params['allow_same_participant_emails'] = CRM_Utils_Array::value('allow_same_participant_emails', $params, FALSE); - $params['requires_approval'] = CRM_Utils_Array::value('requires_approval', $params, FALSE); + $params['is_confirm_enabled'] = $params['is_confirm_enabled'] ?? FALSE; + $params['is_multiple_registrations'] = $params['is_multiple_registrations'] ?? FALSE; + $params['allow_same_participant_emails'] = $params['allow_same_participant_emails'] ?? FALSE; + $params['requires_approval'] = $params['requires_approval'] ?? FALSE; // reset is_email confirm if not online reg if (!$params['is_online_registration']) { @@ -922,7 +922,7 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent self::addMultipleProfiles($additionalProfileIds, $params, 'additional_custom_post_id_multiple'); $cantDedupe = FALSE; - $rgId = CRM_Utils_Array::value('dedupe_rule_group_id', $params, 0); + $rgId = $params['dedupe_rule_group_id'] ?? 0; switch (self::canProfilesDedupe($profileIds, $rgId)) { case 0: diff --git a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php index f84c3de494..74c24246df 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php @@ -205,7 +205,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { * * @return array */ - public static function checkRegistrationForEvents($eventID) { + public static function checkRegistrationForEvents($eventID): array { $eventIdsWithNoRegistration = []; if ($eventID) { $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($eventID, 'civicrm_event', TRUE); @@ -218,8 +218,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { } } } - CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted = $eventIdsWithNoRegistration; - return CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted; + return $eventIdsWithNoRegistration; } } diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php index d867ae8b12..b33f7acb45 100644 --- a/civicrm/CRM/Event/Form/Participant.php +++ b/civicrm/CRM/Event/Form/Participant.php @@ -385,15 +385,41 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ public function setDefaultValues(): array { if ($this->isOverloadFeesMode()) { - return CRM_Event_Form_EventFees::setDefaultValues($this); + if ($this->getEventID()) { + //get receipt text and financial type + $returnProperities = ['confirm_email_text', 'financial_type_id', 'campaign_id', 'start_date']; + CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $this->getEventID(), $details, $returnProperities); + if (!empty($details[$this->getEventID()]['financial_type_id'])) { + $defaults['financial_type_id'] = $details[$this->getEventID()]['financial_type_id']; + } + if (!empty($details[$this->getEventID()]['confirm_email_text'])) { + $defaults['receipt_text'] = $details[$this->getEventID()]['confirm_email_text']; + } + if (!$this->getParticipantID()) { + $defaults['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$this->getEventID()])) >= time()) ? 1 : 0; + $defaults['receive_date'] = date('Y-m-d H:i:s'); + } + } + + //CRM-11601 we should keep the record contribution + //true by default while adding participant + if ($this->getAction() === CRM_Core_Action::ADD && !$this->_mode && $this->_isPaidEvent) { + $defaults['record_contribution'] = 1; + } + + //CRM-13420 + if (empty($defaults['payment_instrument_id'])) { + $defaults['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')); + } + return $defaults + CRM_Event_Form_EventFees::setDefaultValues($this); } $defaults = []; - if ($this->_id) { + if ($this->getParticipantID()) { $ids = []; $params = ['id' => $this->_id]; - + $defaults['send_receipt'] = 0; CRM_Event_BAO_Participant::getValues($params, $defaults, $ids); $defaults = $defaults[$this->_id]; $sep = CRM_Core_DAO::VALUE_SEPARATOR; @@ -846,7 +872,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $params['total_amount'] = CRM_Utils_Rule::cleanMoney($params['total_amount']); } if ($this->_isPaidEvent) { - [$contributionParams, $lineItem, $additionalParticipantDetails, $params] = $this->preparePaidEventProcessing($params); + [$contributionParams, $lineItem, $params] = $this->preparePaidEventProcessing($params); } $this->_params = $params; @@ -870,7 +896,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment //participant method (addParticipant) $this->_params['participant_status_id'] = $params['status_id']; $this->_params['participant_role_id'] = $this->getSubmittedValue('role_id'); - $this->assign('participant_status_id', $params['status_id']); $now = date('YmdHis'); @@ -905,7 +930,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $params["address_name-{$this->_bltID}"] = ($params['billing_first_name'] ?? '') . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . - CRM_Utils_Array::value('billing_last_name', $params); + ($params['billing_last_name'] ?? ''); $params["address_name-{$this->_bltID}"] = trim($params["address_name-{$this->_bltID}"]); $fields["address_name-{$this->_bltID}"] = 1; @@ -985,9 +1010,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $this->set('params', $this->_params); - $this->assign('trxn_id', $result['trxn_id']); - $this->assign('receive_date', $this->_params['receive_date']); - //add contribution record $this->_params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['event_id'], 'financial_type_id'); @@ -1089,16 +1111,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment foreach ($recordContribution as $f) { $contributionParams[$f] = $this->_params[$f] ?? NULL; - if ($f === 'trxn_id') { - $this->assign('trxn_id', $contributionParams[$f]); - } } - - //insert financial type name in receipt. - $this->assign('financialTypeName', CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', - $contributionParams['financial_type_id'])); - // legacy support - $this->assign('contributionTypeName', CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $contributionParams['financial_type_id'])); $contributionParams['skipLineItem'] = 1; if ($this->_id) { $contributionParams['contribution_mode'] = 'participant'; @@ -1130,7 +1143,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment // the owed amount $contributionParams['total_amount'] = $amountOwed; $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); - $this->assign('balanceAmount', $amountOwed - $params['total_amount']); $this->storePaymentCreateParams($params); } } @@ -1192,7 +1204,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $lineItem[$this->_priceSetId][$lineKey] = $line; } - CRM_Price_BAO_LineItem::processPriceSet($participants[$num]->id, $lineItem, CRM_Utils_Array::value($num, $contributions, NULL), 'civicrm_participant'); + CRM_Price_BAO_LineItem::processPriceSet($participants[$num]->id, $lineItem, $contributions[$num] ?? NULL, 'civicrm_participant'); } } } @@ -1216,7 +1228,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } if (!empty($params['send_receipt'])) { - $result = $this->sendReceipts($params, $participants, $lineItem[0] ?? [], $additionalParticipantDetails ?? []); + $result = $this->sendReceipts($params, $participants); } // set the participant id if it is not set @@ -1344,13 +1356,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $lineItem = []; $totalTaxAmount = 0; if (!CRM_Utils_System::isNull($form->_values['line_items'] ?? NULL)) { - $lineItem[] = $form->_values['line_items']; foreach ($form->_values['line_items'] as $key => $value) { $totalTaxAmount = $value['tax_amount'] + $totalTaxAmount; } } - $form->assign('totalTaxAmount', Civi::settings()->get('invoicing') ? ($totalTaxAmount ?? NULL) : NULL); - $form->assign('lineItem', empty($lineItem) ? FALSE : $lineItem); $discounts = []; if (!empty($form->_values['discount'])) { foreach ($form->_values['discount'] as $key => $value) { @@ -1496,7 +1505,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment //also add additional participant's fee level/priceset if (CRM_Event_BAO_Participant::isPrimaryParticipant($this->_id)) { $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id); - $hasLineItems = CRM_Utils_Array::value('priceSetId', $params, FALSE); + $hasLineItems = $params['priceSetId'] ?? FALSE; $additionalParticipantDetails = $this->getFeeDetails($additionalIds, $hasLineItems); } } @@ -1545,25 +1554,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $this->_lineItem = $lineItem; $lineItem = array_merge($lineItem, $additionalParticipantDetails); - - $participantCount = []; - foreach ($lineItem as $k) { - foreach ($k as $v) { - if (CRM_Utils_Array::value('participant_count', $v) > 0) { - $participantCount[] = $v['participant_count']; - } - } - } } - if (isset($participantCount)) { - $this->assign('pricesetFieldsCount', $participantCount); - } - $this->assign('lineItem', empty($lineItem[0]) || $this->isQuickConfig() ? FALSE : $lineItem); - } - else { - $this->assign('amount_level', $params['amount_level']); } - return [$contributionParams, $lineItem, $additionalParticipantDetails, $params]; + + return [$contributionParams, $lineItem, $params]; } /** @@ -1574,43 +1568,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment * @throws \CRM_Core_Exception */ protected function assignEventDetailsToTpl($eventID, $participantRoles, $receiptText): void { - //use of the message template below requires variables in different format - $events = []; - $returnProperties = ['event_type_id', 'fee_label', 'start_date', 'end_date', 'is_show_location', 'title']; - - //get all event details. - CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $eventID, $events, $returnProperties); - $event = $events[$eventID]; - unset($event['start_date']); - unset($event['end_date']); - - $role = CRM_Event_PseudoConstant::participantRole(); - - if (is_array($participantRoles)) { - $selectedRoles = []; - foreach ($participantRoles as $roleId) { - $selectedRoles[] = $role[$roleId]; - } - $event['participant_role'] = implode(', ', $selectedRoles); - } - else { - $event['participant_role'] = $role[$participantRoles] ?? NULL; - } - $event['is_monetary'] = $this->_isPaidEvent; - - if ($receiptText) { - $event['confirm_email_text'] = $receiptText; - } - $this->assign('event', $event); - $this->assign('isShowLocation', $event['is_show_location']); - if (($event['is_show_location'] ?? NULL) == 1) { - $locationParams = [ - 'entity_id' => $eventID, - 'entity_table' => 'civicrm_event', - ]; - $location = CRM_Core_BAO_Location::getValues($locationParams, TRUE); - $this->assign('location', $location); - } + $this->assign('event', ['confirm_email_text' => $receiptText]); } /** @@ -1654,7 +1612,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment 'invoice_id' => $params['invoiceID'], 'currency' => $params['currencyID'], 'source' => !empty($params['participant_source']) ? $params['participant_source'] : $params['description'], - 'is_pay_later' => CRM_Utils_Array::value('is_pay_later', $params, 0), + 'is_pay_later' => $params['is_pay_later'] ?? 0, 'campaign_id' => $params['campaign_id'] ?? NULL, 'card_type_id' => $params['card_type_id'] ?? NULL, 'pan_truncation' => $params['pan_truncation'] ?? NULL, @@ -1693,12 +1651,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $contribParams['revenue_recognition_date'] = $this->getRevenueRecognitionDate(); - //create an contribution address - // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although - // currently that is only inherited by back-office forms. - if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) { - $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $form->_bltID); - } + $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); $contribParams['skipLineItem'] = 1; $contribParams['skipCleanMoney'] = 1; @@ -1707,12 +1660,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment // CRM-11124 CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params)); - // process soft credit / pcp pages - if (!empty($params['pcp_made_through_id'])) { - CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form); - CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution); - } - $transaction->commit(); return $contribution; @@ -1746,7 +1693,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $participantFields['participant_source']['maxlength'] ), 'fee_level' => $params['amount_level'] ?? NULL, - 'is_pay_later' => CRM_Utils_Array::value('is_pay_later', $params, 0), + 'is_pay_later' => $params['is_pay_later'] ?? 0, 'fee_amount' => $params['fee_amount'] ?? NULL, 'registered_by_id' => $params['registered_by_id'] ?? NULL, 'discount_id' => $params['discount_id'] ?? NULL, @@ -1966,63 +1913,20 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ /** * @param $params * @param array $participants - * @param $lineItem - * @param $additionalParticipantDetails * * @return array * @throws \CRM_Core_Exception * @throws \Brick\Money\Exception\UnknownCurrencyException */ - protected function sendReceipts($params, array $participants, $lineItem, $additionalParticipantDetails): array { + protected function sendReceipts($params, array $participants): array { $sent = []; $notSent = []; - $this->assign('module', 'Event Registration'); $this->assignEventDetailsToTpl($params['event_id'], CRM_Utils_Array::value('role_id', $params), CRM_Utils_Array::value('receipt_text', $params)); - if ($this->_isPaidEvent) { - $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument(); - if (!$this->_mode) { - if (isset($params['payment_instrument_id'])) { - $this->assign('paidBy', - CRM_Utils_Array::value($params['payment_instrument_id'], - $paymentInstrument - ) - ); - } - } - } - $this->assign('checkNumber', $params['check_number'] ?? NULL); if ($this->_mode) { - $this->assignBillingName($params); - $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters( - $this->_params, - $this->_bltID - )); - $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params); $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); - $this->assign('is_pay_later', 0); - } - - $this->assign('register_date', $params['register_date']); - if (isset($params['receive_date'])) { - $this->assign('receive_date', $params['receive_date']); - } - - $customGroup = []; - $customFieldFilters = [ - 'ParticipantRole' => $this->getSubmittedValue('role_id'), - 'ParticipantEventName' => $this->getEventID(), - 'ParticipantEventType' => $this->getEventValue('event_type_id'), - ]; - $customFields = CRM_Core_BAO_CustomField::getViewableCustomFields('Participant', $customFieldFilters); - foreach ($params['custom'] as $fieldID => $values) { - foreach ($values as $fieldValue) { - $formattedValue = CRM_Core_BAO_CustomField::displayValue($fieldValue['value'], $fieldID, $participants[0]->id); - $customGroup[$customFields[$fieldID]['custom_group_id.title']][$customFields[$fieldID]['label']] = str_replace(' ', '', $formattedValue); - } } - $this->assign('customGroup', $customGroup); $fromEmails = CRM_Event_BAO_Event::getFromEmailIds($this->getEventID()); foreach ($participants as $num => $participant) { @@ -2043,66 +1947,10 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ $this->assign('isOnWaitlist', TRUE); } - $this->assign('contactID', $contactID); - $this->assign('participantID', $participantID); - $contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $participantID, 'contribution_id', 'participant_id' ); - $totalAmount = 0; - if ($contributionID) { - // @todo - this should be temporary - we are looking to remove this variable from the template - // in favour of the {contribution.total_amount} token. - // In case this needs back-porting I have kept it as simple as possible. - $totalAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', - $contributionID, 'id', 'total_amount' - ); - } - $this->assign('totalAmount', $params['total_amount'] ?? $totalAmount); - $this->_id = $participantID; - - if ($this->_isPaidEvent) { - // fix amount for each of participants ( for bulk mode ) - $eventAmount = []; - $totalTaxAmount = 0; - - // add dataArray in the receipts in ADD and UPDATE condition - // dataArray contains the total tax amount for each tax rate, in the form [tax rate => total tax amount] - // include 0% tax rate if it exists because if $dataArray controls if tax is shown for each line item - // in the message templates and we want to show 0% tax if set, even if there is no total tax - $dataArray = []; - if ($this->_action & CRM_Core_Action::ADD) { - $line = $lineItem ?? []; - } - elseif ($this->_action & CRM_Core_Action::UPDATE) { - $line = $this->_values['line_items']; - } - if (Civi::settings()->get('invoicing')) { - foreach ($line as $key => $value) { - if (isset($value['tax_amount']) && isset($value['tax_rate'])) { - $totalTaxAmount += $value['tax_amount']; - if (isset($dataArray[(string) $value['tax_rate']])) { - $dataArray[(string) $value['tax_rate']] += $value['tax_amount']; - } - else { - $dataArray[(string) $value['tax_rate']] = $value['tax_amount']; - } - } - } - $this->assign('taxTerm', $this->getSalesTaxTerm()); - $this->assign('dataArray', $dataArray); - } - $eventAmount[$num] = [ - 'label' => preg_replace('//', '', $params['amount_level']), - 'amount' => $params['fee_amount'], - ]; - //as we are using same template for online & offline registration. - //So we have to build amount as array. - $eventAmount = array_merge($eventAmount, $additionalParticipantDetails); - $this->assign('amount', $eventAmount); - } - $this->assign('totalTaxAmount', $totalTaxAmount ?? 0); $sendTemplateParams = [ 'workflow' => 'event_offline_receipt', 'contactId' => $contactID, diff --git a/civicrm/CRM/Event/Form/Participant/Delete.php b/civicrm/CRM/Event/Form/Participant/Delete.php index e095d80290..f9634ee4e7 100644 --- a/civicrm/CRM/Event/Form/Participant/Delete.php +++ b/civicrm/CRM/Event/Form/Participant/Delete.php @@ -19,7 +19,7 @@ /** * Back office participant delete form. */ -class CRM_Event_Form_Participant_Delete extends CRM_Contribute_Form_AbstractEditPayment { +class CRM_Event_Form_Participant_Delete extends CRM_Core_Form { use CRM_Event_Form_EventFormTrait; use CRM_Contact_Form_ContactFormTrait; diff --git a/civicrm/CRM/Event/Form/Registration.php b/civicrm/CRM/Event/Form/Registration.php index 1553c2b031..f73508bbb4 100644 --- a/civicrm/CRM/Event/Form/Registration.php +++ b/civicrm/CRM/Event/Form/Registration.php @@ -473,8 +473,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, $this->_bltID)); - // The concept of contributeMode is deprecated. - if ($this->_contributeMode === 'direct' && empty($params['is_pay_later'])) { + if ($this->getSubmittedValue('credit_card_number')) { if (isset($params['credit_card_exp_date'])) { $date = CRM_Utils_Date::format($params['credit_card_exp_date']); $date = CRM_Utils_Date::mysqlToIso($date); @@ -631,7 +630,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $count = CRM_Utils_Array::value('count', $option, 0); + $count = $option['count'] ?? 0; $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; } } @@ -646,7 +645,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $maxVal = CRM_Utils_Array::value('max_value', $option, 0); + $maxVal = $option['max_value'] ?? 0; $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; $optionsMaxValueTotal += $maxVal; } diff --git a/civicrm/CRM/Event/Form/Registration/Confirm.php b/civicrm/CRM/Event/Form/Registration/Confirm.php index d23e700252..5d84a66b68 100644 --- a/civicrm/CRM/Event/Form/Registration/Confirm.php +++ b/civicrm/CRM/Event/Form/Registration/Confirm.php @@ -1012,7 +1012,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration { // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although // currently that is only inherited by back-office forms. if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) { - $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $form->_bltID); + $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); } $contribParams['skipLineItem'] = 1; @@ -1022,12 +1022,6 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration { // CRM-11124 CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params)); - // process soft credit / pcp pages - if (!empty($params['pcp_made_through_id'])) { - CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form); - CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution); - } - $transaction->commit(); return $contribution; diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php index faec4b6131..a3614cfba5 100644 --- a/civicrm/CRM/Event/Form/Registration/Register.php +++ b/civicrm/CRM/Event/Form/Registration/Register.php @@ -189,7 +189,26 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { // get the participant values from EventFees.php, CRM-4320 if ($this->_allowConfirmation) { - CRM_Event_Form_EventFees::preProcess($this); + $this->eventFeeWrangling($this); + } + } + + /** + * This is previously shared code which is probably of little value. + * + * @param CRM_Core_Form $form + * + * @throws \CRM_Core_Exception + */ + private function eventFeeWrangling($form) { + $form->_pId = CRM_Utils_Request::retrieve('participantId', 'Positive', $form); + $form->_discountId = CRM_Utils_Request::retrieve('discountId', 'Positive', $form); + + //CRM-6907 set event specific currency. + if ($this->getEventID() && + ($currency = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $form->_eventId, 'currency')) + ) { + CRM_Core_Config::singleton()->defaultCurrency = $currency; } } @@ -310,7 +329,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { if ($this->_allowConfirmation) { $this->_contactId = $contactID; $this->_discountId = $discountId; - $forcePayLater = CRM_Utils_Array::value('is_pay_later', $this->_defaults, FALSE); + $forcePayLater = $this->_defaults['is_pay_later'] ?? FALSE; $this->_defaults = array_merge($this->_defaults, CRM_Event_Form_EventFees::setDefaultValues($this)); $this->_defaults['is_pay_later'] = $forcePayLater; @@ -735,10 +754,10 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } foreach ($field['options'] as & $option) { $optId = $option['id']; - $count = CRM_Utils_Array::value('count', $option, 0); - $maxValue = CRM_Utils_Array::value('max_value', $option, 0); - $dbTotalCount = CRM_Utils_Array::value($optId, $recordedOptionsCount, 0); - $currentTotalCount = CRM_Utils_Array::value($optId, $currentOptionsCount, 0); + $count = $option['count'] ?? 0; + $maxValue = $option['max_value'] ?? 0; + $dbTotalCount = $recordedOptionsCount[$optId] ?? 0; + $currentTotalCount = $currentOptionsCount[$optId] ?? 0; $totalCount = $currentTotalCount + $dbTotalCount; $isFull = FALSE; @@ -750,7 +769,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { $optionFullIds[$optId] = $optId; if ($field['html_type'] != 'Select') { if (in_array($optId, $defaultPricefieldIds)) { - $optionFullTotalAmount += CRM_Utils_Array::value('amount', $option); + $optionFullTotalAmount += $option['amount'] ?? 0; } } else { @@ -969,7 +988,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { $this->set('is_pay_later', $params['is_pay_later']); // assign pay later stuff - $this->_params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, FALSE); + $this->_params['is_pay_later'] = $params['is_pay_later'] ?? FALSE; $this->assign('is_pay_later', $params['is_pay_later']); $this->assign('pay_later_text', $params['is_pay_later'] ? $this->_values['event']['pay_later_text'] : NULL); $this->assign('pay_later_receipt', $params['is_pay_later'] ? $this->_values['event']['pay_later_receipt'] : NULL); diff --git a/civicrm/CRM/Event/Form/SelfSvcUpdate.php b/civicrm/CRM/Event/Form/SelfSvcUpdate.php index 149c880276..ae98507147 100644 --- a/civicrm/CRM/Event/Form/SelfSvcUpdate.php +++ b/civicrm/CRM/Event/Form/SelfSvcUpdate.php @@ -95,6 +95,10 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { * @var bool */ protected $isBackoffice = FALSE; + /** + * @var string + */ + protected $_userContext; /** * Set variables up before form is built based on participant ID from URL diff --git a/civicrm/CRM/Event/ICalendar.php b/civicrm/CRM/Event/ICalendar.php index cb1faa778d..0d16cfe2ad 100644 --- a/civicrm/CRM/Event/ICalendar.php +++ b/civicrm/CRM/Event/ICalendar.php @@ -69,25 +69,7 @@ class CRM_Event_ICalendar { $calendar = $template->fetch('CRM/Core/Calendar/GData.tpl'); } else { - if (count($info) > 0) { - $date_min = min( - array_map(function ($event) { - return strtotime($event['start_date']); - }, $info) - ); - $date_max = max( - array_map(function ($event) { - return strtotime($event['end_date'] ?? $event['start_date']); - }, $info) - ); - $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max)); - } - else { - $template->assign('timezones', NULL); - } - - $calendar = $template->fetch('CRM/Core/Calendar/ICal.tpl'); - $calendar = preg_replace('/(?<!\r)\n/', "\r\n", $calendar); + $calendar = CRM_Utils_ICalendar::createCalendarFile($info); } // Push output for feed or download diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index 871e312586..8f9d9d2e40 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -276,8 +276,8 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { } } } - $this->assign('registerClosed', !empty($values['event']['is_online_registration']) && !$isEventOpenForRegistration); + $this->assign('registerClosed', !empty($values['event']['is_online_registration']) && !$isEventOpenForRegistration && CRM_Core_Permission::check('register for events')); $this->assign('allowRegistration', $allowRegistration); $session = CRM_Core_Session::singleton(); diff --git a/civicrm/CRM/Event/PseudoConstant.php b/civicrm/CRM/Event/PseudoConstant.php index b8bd9f11a6..8a67ed916d 100644 --- a/civicrm/CRM/Event/PseudoConstant.php +++ b/civicrm/CRM/Event/PseudoConstant.php @@ -16,59 +16,10 @@ */ /** - * This class holds all the Pseudo constants that are specific to Event. This avoids - * polluting the core class and isolates the Event + * @deprecated functions. Use the API instead. */ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { - /** - * Event - * - * @var array - */ - private static $event; - - /** - * Participant Status - * - * @var array - */ - private static $participantStatus; - - /** - * Participant Role - * - * @var array - */ - private static $participantRole; - - /** - * Participant Listing - * @var array - * @deprecated - */ - private static $participantListing; - - /** - * Event Type. - * - * @var array - */ - private static $eventType; - - /** - * Event template titles - * @var array - */ - private static $eventTemplates; - - /** - * Personal campaign pages - * @var array - * @deprecated - */ - private static $pcPage; - /** * Get all events * @@ -81,28 +32,16 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * array of all events if any */ public static function event($id = NULL, $all = FALSE, $condition = NULL) { - $key = "{$id}_{$all}_{$condition}"; - - if (!isset(self::$event[$key])) { - self::$event[$key] = []; - } - - if (!self::$event[$key]) { - CRM_Core_PseudoConstant::populate(self::$event[$key], - 'CRM_Event_DAO_Event', - $all, 'title', 'is_active', $condition, NULL - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_Event_DAO_Event', + $all, 'title', 'is_active', $condition, NULL + ); if ($id) { - if (array_key_exists($id, self::$event[$key])) { - return self::$event[$key][$id]; - } - else { - return NULL; - } + return $options[$id] ?? NULL; } - return self::$event[$key]; + return $options; } /** @@ -119,26 +58,17 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all participant statuses if any, or single value if $id was passed */ - public static function &participantStatus($id = NULL, $cond = NULL, $retColumn = 'name') { - if (self::$participantStatus === NULL) { - self::$participantStatus = []; - } - - $index = $cond ?: 'No Condition'; - $index = "{$index}_{$retColumn}"; - if (empty(self::$participantStatus[$index])) { - self::$participantStatus[$index] = []; - CRM_Core_PseudoConstant::populate(self::$participantStatus[$index], - 'CRM_Event_DAO_ParticipantStatusType', - FALSE, $retColumn, 'is_active', $cond, 'weight' - ); - } + public static function participantStatus($id = NULL, $cond = NULL, $retColumn = 'name') { + $statuses = []; + CRM_Core_PseudoConstant::populate($statuses, + 'CRM_Event_DAO_ParticipantStatusType', + FALSE, $retColumn, 'is_active', $cond, 'weight' + ); if ($id) { - return self::$participantStatus[$index][$id]; + return $statuses[$id] ?? NULL; } - - return self::$participantStatus[$index]; + return $statuses; } /** @@ -161,13 +91,9 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array * Array of status classes, keyed by status type */ - public static function &participantStatusClass() { - static $statusClasses = NULL; - - if ($statusClasses === NULL) { - self::populate($statusClasses, 'CRM_Event_DAO_ParticipantStatusType', TRUE, 'class'); - } - + public static function participantStatusClass() { + $statusClasses = []; + self::populate($statusClasses, 'CRM_Event_DAO_ParticipantStatusType', TRUE, 'class'); return $statusClasses; } @@ -182,26 +108,14 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all participant roles if any */ - public static function &participantRole($id = NULL, $cond = NULL) { - $index = $cond ?: 'No Condition'; - if (empty(self::$participantRole[$index])) { - self::$participantRole[$index] = []; - - $condition = NULL; - - if ($cond) { - $condition = "AND $cond"; - } - - self::$participantRole[$index] = CRM_Core_OptionGroup::values('participant_role', FALSE, FALSE, - FALSE, $condition - ); - } + public static function participantRole($id = NULL, $cond = NULL) { + $condition = empty($cond) ? NULL : "AND $cond"; + $options = CRM_Core_OptionGroup::values('participant_role', FALSE, FALSE, FALSE, $condition); if ($id) { - return self::$participantRole[$index][$id]; + return $options[$id] ?? NULL; } - return self::$participantRole[$index]; + return $options; } /** @@ -212,18 +126,14 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all participant listings if any */ - public static function &participantListing($id = NULL) { + public static function participantListing($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Function participantListing will be removed'); - if (!self::$participantListing) { - self::$participantListing = []; - self::$participantListing = CRM_Core_OptionGroup::values('participant_listing'); - } + $options = CRM_Core_OptionGroup::values('participant_listing'); if ($id) { - return self::$participantListing[$id]; + return $options[$id]; } - - return self::$participantListing; + return $options; } /** @@ -234,17 +144,13 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all event types. */ - public static function &eventType($id = NULL) { - if (!self::$eventType) { - self::$eventType = []; - self::$eventType = CRM_Core_OptionGroup::values('event_type'); - } + public static function eventType($id = NULL) { + $options = CRM_Core_OptionGroup::values('event_type'); if ($id) { - return self::$eventType[$id]; + return $options[$id] ?? NULL; } - - return self::$eventType; + return $options; } /** @@ -257,21 +163,20 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * * @deprecated Use the API instead */ - public static function &eventTemplates($id = NULL) { + public static function eventTemplates($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Use the api'); - if (!self::$eventTemplates) { - CRM_Core_PseudoConstant::populate(self::$eventTemplates, - 'CRM_Event_DAO_Event', - FALSE, - 'template_title', - 'is_active', - 'is_template = 1' - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_Event_DAO_Event', + FALSE, + 'template_title', + 'is_active', + 'is_template = 1' + ); if ($id) { - return self::$eventTemplates[$id]; + return $options[$id]; } - return self::$eventTemplates; + return $options; } /** @@ -295,18 +200,17 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array * array reference of all pcp if any */ - public static function &pcPage($id = NULL) { + public static function pcPage($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Function pcPage will be removed'); - if (!self::$pcPage) { - CRM_Core_PseudoConstant::populate(self::$pcPage, - 'CRM_PCP_DAO_PCP', - FALSE, 'title' - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_PCP_DAO_PCP', + FALSE, 'title' + ); if ($id) { - return self::$pcPage[$id] ?? NULL; + return $options[$id] ?? NULL; } - return self::$pcPage; + return $options; } } diff --git a/civicrm/CRM/Event/Tokens.php b/civicrm/CRM/Event/Tokens.php index 2a51923ba0..ed4f806656 100644 --- a/civicrm/CRM/Event/Tokens.php +++ b/civicrm/CRM/Event/Tokens.php @@ -191,6 +191,9 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'loc_block_id.phone_2_id.phone_ext', 'loc_block_id.phone_2_id.phone_type_id:label', 'is_show_location:label', + 'allow_selfcancelxfer', + 'allow_selfcancelxfer:label', + 'selfcancelxfer_time', 'is_public:label', 'is_share', 'is_share:label', @@ -204,11 +207,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'custom.*', ], $this->getExposedFields())) ->execute()->first(); - $addressValues = [ - 'address_name' => $event['loc_block_id.address_id.name'], - 'state_province' => $event['loc_block_id.address_id.state_province_id:label'], - 'country' => $event['loc_block_id.address_id.country_id:label'], - ]; + $addressValues = ['address_name' => $event['loc_block_id.address_id.name']]; foreach ($event as $key => $value) { if (strpos($key, 'loc_block_id.address_id.') === 0) { $addressValues[str_replace('loc_block_id.address_id.', '', $key)] = $value; @@ -267,6 +266,8 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'description', 'is_show_location', 'is_public', + 'allow_selfcancelxfer', + 'selfcancelxfer_time', 'confirm_email_text', 'is_monetary', 'fee_label', @@ -289,6 +290,8 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'is_public' => ['audience' => 'sysadmin'], 'is_show_location' => ['audience' => 'sysadmin'], 'is_monetary' => ['audience' => 'sysadmin'], + 'allow_selfcancelxfer' => ['audience' => 'sysadmin'], + 'selfcancelxfer_time' => ['audience' => 'sysadmin'], ]; } diff --git a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php index e78465af57..9de84306fc 100644 --- a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php +++ b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php @@ -130,6 +130,10 @@ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { $contribution['total_amount'] = $mockOrder->getTotalAmount(); $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; $contribution['tax_exclusive_amount'] = $contribution['total_amount'] - $contribution['tax_amount']; + $contribution['address_id.name'] = 'Barbara Johnson'; + $contribution['address_id.display'] = '790L Lincoln St S +Baltimore, New York 10545 +United States'; $contribution['is_pay_later'] = $example['is_partially_paid'] && $this->lookup('event_' . $example['event_id'], 'is_pay_later'); $contribution['paid_amount'] = $example['is_partially_paid'] ? $contribution['total_amount'] / 2 : 0; $contribution['balance_amount'] = $contribution['total_amount'] - $contribution['paid_amount']; diff --git a/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php b/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php index 38ba48d1e4..1fbec19de2 100644 --- a/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php +++ b/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php @@ -10,6 +10,7 @@ */ use Civi\WorkflowMessage\GenericWorkflowMessage; +use Civi\WorkflowMessage\Traits\CustomFieldTrait; /** * Receipt sent when confirming a back office participation record. @@ -22,7 +23,72 @@ use Civi\WorkflowMessage\GenericWorkflowMessage; class CRM_Event_WorkflowMessage_EventOfflineReceipt extends GenericWorkflowMessage { use CRM_Event_WorkflowMessage_ParticipantTrait; use CRM_Contribute_WorkflowMessage_ContributionTrait; + use CustomFieldTrait; public const WORKFLOW = 'event_offline_receipt'; + /** + * Viewable custom fields for the primary participant. + * + * This array is in the format + * + * ['customGroupLabel' => [['customFieldLabel' => 'customFieldValue'], ['customFieldLabel' => 'customFieldValue']] + * + * It is only added for the primary participant (which reflects historical + * form behaviour) and only fields were the group has is_public = TRUE + * and the field has is_view = FALSE. Fields are restricted to + * those viewable by the logged in user (reflecting the fact this + * is historically triggered by a back office user form submission + * and also preventing using an email to see acl-blocked custom fields). + * + * @var array + * + * @scope tplParams as customGroup + */ + public $customFields; + + /** + * Get the custom fields for display for the participant, if not primary. + * + * @return array + * @throws \CRM_Core_Exception + */ + public function getCustomFields(): array { + // Non-primary custom field info can't be gathered on the back office + // form so historically it has not shown up. This keeps that behaviour + // (although a future person could probably change it if they wanted + // to think through any potential downsides. + if (!$this->getIsPrimary()) { + return []; + } + $participant = $this->getParticipant(); + // We re-filter the custom fields to eliminate any custom groups + // not associated with the role, event_id etc. Realistically participants + // should not have such data. But, out of caution we do this becasue + // historical code did. + $filters = [ + 'ParticipantRole' => $participant['role_id'], + 'ParticipantEventName' => $participant['event_id'], + 'ParticipantEventType' => $participant['event_id.event_type_id'], + ]; + return $this->getCustomFieldDisplay($participant, 'Participant', $filters); + } + + /** + * Get the participant fields we need to load. + * + * @throws \CRM_Core_Exception + */ + protected function getFieldsToLoadForParticipant(): array { + $fields = ['registered_by_id', 'role_id', 'event_id', 'event_id.event_type_id']; + // Request the relevant custom fields. This list is + // restricted by view-ability but we don't have the information + // at this point to filter by the finer tuned entity extends information + // which relies on us knowing role etc. + foreach ($this->getFilteredCustomFields('Participant') as $field) { + $fields[] = $field['custom_group_id.name'] . '.' . $field['name']; + } + return $fields; + } + } diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php index a25d5ac045..22c02d1926 100644 --- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php +++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php @@ -211,11 +211,18 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { if (!$this->participant) { $this->participant = Participant::get(FALSE) ->addWhere('id', '=', $this->participantID) - ->addSelect('registered_by_id')->execute()->first(); + ->setSelect($this->getFieldsToLoadForParticipant())->execute()->first(); } return $this->participant; } + /** + * Get the participant fields we need to load. + */ + protected function getFieldsToLoadForParticipant(): array { + return ['registered_by_id']; + } + /** * Get the line items and tax information indexed by participant. * diff --git a/civicrm/CRM/Financial/BAO/FinancialType.php b/civicrm/CRM/Financial/BAO/FinancialType.php index a8a47383fe..4581140150 100644 --- a/civicrm/CRM/Financial/BAO/FinancialType.php +++ b/civicrm/CRM/Financial/BAO/FinancialType.php @@ -347,6 +347,8 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType im /** * Function to check if lineitems present in a contribution have permissioned FTs. * + * @deprecated since 5.68 not part of core - to be handled within financialacls extension + * * @param int $id * contribution id * @param string $op diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php index ecc528c18f..ca74b7d44c 100644 --- a/civicrm/CRM/Financial/BAO/Order.php +++ b/civicrm/CRM/Financial/BAO/Order.php @@ -78,6 +78,18 @@ class CRM_Financial_BAO_Order { */ protected $overridableFinancialTypeID; + private $isExcludeExpiredFields = FALSE; + + /** + * @param bool $isExcludeExpiredFields + * + * @return CRM_Financial_BAO_Order + */ + public function setIsExcludeExpiredFields(bool $isExcludeExpiredFields): CRM_Financial_BAO_Order { + $this->isExcludeExpiredFields = $isExcludeExpiredFields; + return $this; + } + /** * Get overridable financial type id. * @@ -658,8 +670,30 @@ class CRM_Financial_BAO_Order { * * @param array $metadata */ - protected function setPriceFieldMetadata($metadata) { + protected function setPriceFieldMetadata(array $metadata): void { + foreach ($metadata as $index => $priceField) { + if ($this->isExcludeExpiredFields && !empty($priceField['active_on']) && time() < strtotime($priceField['active_on'])) { + unset($metadata[$index]); + } + elseif ($this->isExcludeExpiredFields && !empty($priceField['expire_on']) && strtotime($priceField['expire_on']) < time()) { + unset($metadata[$index]); + } + elseif (!empty($priceField['options'])) { + foreach ($priceField['options'] as $optionID => $option) { + if (!empty($option['membership_type_id'])) { + $membershipType = CRM_Member_BAO_MembershipType::getMembershipType((int) $option['membership_type_id']); + $metadata[$index]['options'][$optionID]['auto_renew'] = (int) $membershipType['auto_renew']; + if ($membershipType['auto_renew'] && empty($this->priceSetMetadata['auto_renew_membership_field'])) { + // Quick form layer supports one auto-renew membership type per price set. If we + // want more for any reason we can add another array property. + $this->priceSetMetadata['auto_renew_membership_field'] = (int) $option['price_field_id']; + } + } + } + } + } $this->priceFieldMetadata = $metadata; + if ($this->getForm()) { CRM_Utils_Hook::buildAmount($this->form->getFormContext(), $this->form, $this->priceFieldMetadata); } @@ -668,18 +702,18 @@ class CRM_Financial_BAO_Order { /** * Get the metadata for the fields in the price set. * + * @return array + * @throws \CRM_Core_Exception * @internal use in tested core code only. * - * @return array */ public function getPriceSetMetadata(): array { if (empty($this->priceSetMetadata)) { - $priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID()); - // @todo - make sure this is an array - commented out for now as this PR is against the rc. - // $priceSetMetadata['extends'] = explode(CRM_Core_DAO::VALUE_SEPARATOR, $priceSetMetadata['extends']); - $this->setPriceFieldMetadata($priceSetMetadata['fields']); - unset($priceSetMetadata['fields']); - $this->priceSetMetadata = $priceSetMetadata; + $this->priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID()); + $this->priceSetMetadata['id'] = $this->getPriceSetID(); + $this->priceSetMetadata['auto_renew_membership_field'] = NULL; + $this->setPriceFieldMetadata($this->priceSetMetadata['fields']); + unset($this->priceSetMetadata['fields']); } return $this->priceSetMetadata; } @@ -688,8 +722,9 @@ class CRM_Financial_BAO_Order { if (!CRM_Core_Component::isEnabled('CiviMember')) { return FALSE; } - $extends = explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->getPriceSetMetadata()['extends']); - return in_array(CRM_Core_Component::getComponentID('CiviMember'), $extends, FALSE); + // Access the property if set, to avoid a potential loop when the hook is called. + $priceSetMetadata = $this->priceSetMetadata ?: $this->getPriceSetMetadata(); + return in_array(CRM_Core_Component::getComponentID('CiviMember'), $priceSetMetadata['extends'], FALSE); } /** diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php index 0f8cffbc51..82da1f2580 100644 --- a/civicrm/CRM/Financial/BAO/Payment.php +++ b/civicrm/CRM/Financial/BAO/Payment.php @@ -223,7 +223,7 @@ class CRM_Financial_BAO_Payment { // change status to refunded. self::updateContributionStatus($contribution['id'], 'Refunded'); } - CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date); + CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], $params['participant_id'] ?? NULL, $params['total_amount'], $trxn->currency, $trxn->trxn_date); return $trxn; } diff --git a/civicrm/CRM/Financial/Form/BatchTransaction.php b/civicrm/CRM/Financial/Form/BatchTransaction.php index dee4265809..08870c4883 100644 --- a/civicrm/CRM/Financial/Form/BatchTransaction.php +++ b/civicrm/CRM/Financial/Form/BatchTransaction.php @@ -38,7 +38,7 @@ class CRM_Financial_Form_BatchTransaction extends CRM_Contribute_Form_Search { public function preProcess() { // This reuses some styles from search forms CRM_Core_Resources::singleton()->addStyleFile('civicrm', 'css/searchForm.css', 1, 'html-header'); - self::$_entityID = CRM_Utils_Request::retrieve('bid', 'Positive') ? CRM_Utils_Request::retrieve('bid', 'Positive') : CRM_Utils_Array::value('batch_id', $_POST); + self::$_entityID = CRM_Utils_Request::retrieve('bid', 'Positive') ?: $_POST['batch_id'] ?? NULL; $this->assign('entityID', self::$_entityID); if (isset(self::$_entityID)) { $this->_batchStatusId = CRM_Core_DAO::getFieldValue('CRM_Batch_BAO_Batch', self::$_entityID, 'status_id'); diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php index 7878fadb8e..727c2335e3 100644 --- a/civicrm/CRM/Financial/Form/FinancialAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialAccount.php @@ -206,7 +206,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form { 'is_tax', 'is_default', ] as $field) { - $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + $params[$field] = $params[$field] ?? FALSE; } $financialAccount = CRM_Financial_BAO_FinancialAccount::writeRecord($params); CRM_Core_Session::setStatus(ts('The Financial Account \'%1\' has been saved.', [1 => $financialAccount->name]), ts('Saved'), 'success'); diff --git a/civicrm/CRM/Financial/Form/FinancialType.php b/civicrm/CRM/Financial/Form/FinancialType.php index 2b6f1079dd..4521ca3afc 100644 --- a/civicrm/CRM/Financial/Form/FinancialType.php +++ b/civicrm/CRM/Financial/Form/FinancialType.php @@ -122,7 +122,7 @@ class CRM_Financial_Form_FinancialType extends CRM_Core_Form { 'is_reserved', 'is_deductible', ] as $field) { - $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + $params[$field] = $params[$field] ?? FALSE; } $financialType = civicrm_api3('FinancialType', 'create', $params); if ($this->_action & CRM_Core_Action::UPDATE) { diff --git a/civicrm/CRM/Friend/BAO/Friend.php b/civicrm/CRM/Friend/BAO/Friend.php index 6e97730cce..2a0945ea4d 100644 --- a/civicrm/CRM/Friend/BAO/Friend.php +++ b/civicrm/CRM/Friend/BAO/Friend.php @@ -320,7 +320,7 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { public static function addTellAFriend(&$params) { $friendDAO = new CRM_Friend_DAO_Friend(); $friendDAO->copyValues($params); - $friendDAO->is_active = CRM_Utils_Array::value('is_active', $params, FALSE); + $friendDAO->is_active = $params['is_active'] ?? FALSE; $friendDAO->save(); return $friendDAO; diff --git a/civicrm/CRM/Friend/Form/Contribute.php b/civicrm/CRM/Friend/Form/Contribute.php index 0a85b96a1a..5aa5cbcdd7 100644 --- a/civicrm/CRM/Friend/Form/Contribute.php +++ b/civicrm/CRM/Friend/Form/Contribute.php @@ -95,7 +95,7 @@ class CRM_Friend_Form_Contribute extends CRM_Contribute_Form_ContributionPage { $formValues['entity_table'] = 'civicrm_contribution_page'; $formValues['entity_id'] = $this->_id; $formValues['title'] = $formValues['tf_title']; - $formValues['is_active'] = CRM_Utils_Array::value('tf_is_active', $formValues, FALSE); + $formValues['is_active'] = $formValues['tf_is_active'] ?? FALSE; $formValues['thankyou_title'] = $formValues['tf_thankyou_title'] ?? NULL; $formValues['thankyou_text'] = $formValues['tf_thankyou_text'] ?? NULL; diff --git a/civicrm/CRM/Friend/Form/Event.php b/civicrm/CRM/Friend/Form/Event.php index cad46dde25..f87e0c68d5 100644 --- a/civicrm/CRM/Friend/Form/Event.php +++ b/civicrm/CRM/Friend/Form/Event.php @@ -103,7 +103,7 @@ class CRM_Friend_Form_Event extends CRM_Event_Form_ManageEvent { $formValues['entity_table'] = 'civicrm_event'; $formValues['entity_id'] = $this->_id; $formValues['title'] = $formValues['tf_title']; - $formValues['is_active'] = CRM_Utils_Array::value('tf_is_active', $formValues, FALSE); + $formValues['is_active'] = $formValues['tf_is_active'] ?? FALSE; $formValues['thankyou_title'] = $formValues['tf_thankyou_title'] ?? NULL; $formValues['thankyou_text'] = $formValues['tf_thankyou_text'] ?? NULL; diff --git a/civicrm/CRM/Group/Form/Edit.php b/civicrm/CRM/Group/Form/Edit.php index 22e419ea14..a850add6ea 100644 --- a/civicrm/CRM/Group/Form/Edit.php +++ b/civicrm/CRM/Group/Form/Edit.php @@ -331,8 +331,8 @@ WHERE title = %1 $params['group_type'] = []; } - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->_id, 'Group' diff --git a/civicrm/CRM/Import/Form/MapField.php b/civicrm/CRM/Import/Form/MapField.php index cf150e0f23..2c8785d424 100644 --- a/civicrm/CRM/Import/Form/MapField.php +++ b/civicrm/CRM/Import/Form/MapField.php @@ -31,6 +31,11 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { */ protected $_mapperFields; + /** + * @var bool + */ + protected $shouldSortMapperFields = TRUE; + /** * Column headers, if we have them * @@ -72,7 +77,9 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { if (empty($_POST) && count($fieldMappings) > 0 && count($this->getColumnHeaders()) !== count($fieldMappings)) { CRM_Core_Session::singleton()->setStatus(ts('The data columns in this import file appear to be different from the saved mapping. Please verify that you have selected the correct saved mapping before continuing.')); } - asort($this->_mapperFields); + if ($this->shouldSortMapperFields) { + asort($this->_mapperFields); + } parent::preProcess(); } diff --git a/civicrm/CRM/Import/Forms.php b/civicrm/CRM/Import/Forms.php index f1b84b984e..4535fd2121 100644 --- a/civicrm/CRM/Import/Forms.php +++ b/civicrm/CRM/Import/Forms.php @@ -638,6 +638,7 @@ class CRM_Import_Forms extends CRM_Core_Form { /** * Outputs and downloads the csv of outcomes from an import job. + * Function is accessed from civicrm/import/outcome path. * * This gets the rows from the temp table that match the relevant status * and output them as a csv. diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index ff358c3509..ae2037a0b6 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -1019,12 +1019,14 @@ ORDER BY civicrm_email.is_bulkmail DESC $verp['reply'] = "\"{$this->from_name}\" <{$this->from_email}>"; } + // Generating URLs is expensive, so we only call it once for each of these 5 URLs. + $genericURL = CRM_Utils_System::url('civicrm/mailing/genericUrlPath', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE); $urls = [ - 'forward' => CRM_Utils_System::url('civicrm/mailing/forward', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'unsubscribeUrl' => CRM_Utils_System::url('civicrm/mailing/unsubscribe', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'resubscribeUrl' => CRM_Utils_System::url('civicrm/mailing/resubscribe', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'optOutUrl' => CRM_Utils_System::url('civicrm/mailing/optout', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'subscribeUrl' => CRM_Utils_System::url('civicrm/mailing/subscribe', 'reset=1', TRUE, NULL, TRUE, TRUE), + 'forward' => str_replace('genericUrlPath', 'forward', $genericURL), + 'unsubscribeUrl' => str_replace('genericUrlPath', 'unsubscribe', $genericURL), + 'resubscribeUrl' => str_replace('genericUrlPath', 'resubscribe', $genericURL), + 'optOutUrl' => str_replace('genericUrlPath', 'optout', $genericURL), + 'subscribeUrl' => str_replace('genericUrlPath', 'subscribe', $genericURL), ]; $headers = [ @@ -2861,7 +2863,7 @@ ORDER BY civicrm_mailing.id DESC"; $mailing['openstats'] = "Opens: " . CRM_Utils_Array::value($values['mailing_id'], $openCounts, 0) . "<br />Clicks: " . - CRM_Utils_Array::value($values['mailing_id'], $clickCounts, 0); + $clickCounts[$values['mailing_id']] ?? 0; $actionLinks = [ CRM_Core_Action::VIEW => [ diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php index ed18b5ca37..3d75980079 100644 --- a/civicrm/CRM/Mailing/BAO/MailingJob.php +++ b/civicrm/CRM/Mailing/BAO/MailingJob.php @@ -45,7 +45,7 @@ class CRM_Mailing_BAO_MailingJob extends CRM_Mailing_DAO_MailingJob { throw new CRM_Core_Exception("Failed to create job: Unknown mailing ID"); } $op = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($op, 'MailingJob', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($op, 'MailingJob', $params['id'] ?? NULL, $params); $jobDAO = new CRM_Mailing_BAO_MailingJob(); $jobDAO->copyValues($params); diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php index 53d6268386..2bb67e0253 100644 --- a/civicrm/CRM/Mailing/DAO/Mailing.php +++ b/civicrm/CRM/Mailing/DAO/Mailing.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/Mailing.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:813f125fcf0c0253d96f6a0cf158bc15) + * (GenCodeChecksum:62a218e043b9abab2e816bf69272cca1) */ /** @@ -51,8 +51,9 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { * @var string[] */ protected static $_paths = [ - 'add' => 'civicrm/a/#/mailing/new', - 'update' => 'civicrm/a/#/mailing/[id]', + 'add' => 'civicrm/mailing/send', + 'update' => 'civicrm/mailing/send?mid=[id]&continue=true', + 'copy' => 'civicrm/mailing/send?mid=[id]', 'view' => 'civicrm/mailing/report?mid=[id]&reset=1', 'preview' => 'civicrm/mailing/view?id=[id]&reset=1', ]; diff --git a/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php b/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php index 599cda1ef7..985b1cac7d 100644 --- a/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php +++ b/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/MailingTrackableURL.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:5da2465e098de06d8a90975560c1cd91) + * (GenCodeChecksum:f446966734b2d351d7a1f8e7557dc08c) */ /** @@ -136,6 +136,9 @@ class CRM_Mailing_DAO_MailingTrackableURL extends CRM_Core_DAO { 'entity' => 'MailingTrackableURL', 'bao' => 'CRM_Mailing_BAO_MailingTrackableURL', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => NULL, ], 'mailing_id' => [ diff --git a/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php b/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php index 6a5c624024..d3f27f5aad 100644 --- a/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php +++ b/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php @@ -94,33 +94,6 @@ class CRM_Mailing_Event_BAO_MailingEventQueue extends CRM_Mailing_Event_DAO_Mail return $success; } - /** - * Given a queue event ID, find the corresponding email address. - * - * @param int $queue_id - * The queue event ID. - * - * @return string - * The email address - */ - public static function getEmailAddress($queue_id) { - $email = CRM_Core_BAO_Email::getTableName(); - $eq = self::getTableName(); - $query = " SELECT $email.email as email - FROM $email - INNER JOIN $eq - ON $eq.email_id = $email.id - WHERE $eq.id = " . CRM_Utils_Type::rule($queue_id, 'Integer'); - - $q = new CRM_Mailing_Event_BAO_MailingEventQueue(); - $q->query($query); - if (!$q->fetch()) { - return NULL; - } - - return $q->email; - } - /** * Count up events given a mailing id and optional job id. * diff --git a/civicrm/CRM/Mailing/Info.php b/civicrm/CRM/Mailing/Info.php index bffbd7ca79..2eec29a438 100644 --- a/civicrm/CRM/Mailing/Info.php +++ b/civicrm/CRM/Mailing/Info.php @@ -137,14 +137,6 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info { * @see CRM_Utils_Hook::angularModules */ public function getAngularModules() { - // load angular files only if valid permissions are granted to the user - if (!CRM_Core_Permission::check('access CiviMail') - && !CRM_Core_Permission::check('create mailings') - && !CRM_Core_Permission::check('schedule mailings') - && !CRM_Core_Permission::check('approve mailings') - ) { - return []; - } global $civicrm_root; $result = []; diff --git a/civicrm/CRM/Member/Form/MembershipBlock.php b/civicrm/CRM/Member/Form/MembershipBlock.php index 7910ad9d46..72dd3f22c1 100644 --- a/civicrm/CRM/Member/Form/MembershipBlock.php +++ b/civicrm/CRM/Member/Form/MembershipBlock.php @@ -127,6 +127,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa } $membership = $membershipDefault = $params = []; + $renewOption = []; foreach ($membershipTypes as $k => $v) { $membership[] = $this->createElement('advcheckbox', $k, NULL, $v); $membershipDefault[$k] = NULL; @@ -143,7 +144,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa $this->freeze("auto_renew_$k"); $params['id'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipBlock', $this->_id, 'id', 'entity_id'); } - $this->_renewOption[$k] = $autoRenew; + $renewOption[$k] = $autoRenew; } } } @@ -155,9 +156,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa } $this->add('hidden', "mem_price_field_id", '', ['id' => "mem_price_field_id"]); $this->assign('is_recur', $isRecur); - if (isset($this->_renewOption)) { - $this->assign('auto_renew', $this->_renewOption); - } + $this->assign('auto_renew', $renewOption); $this->addGroup($membership, 'membership_type', ts('Membership Types')); $this->addRadio('membership_type_default', ts('Membership Types Default'), $membershipDefault, ['allowClear' => TRUE]); diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index 5c504f8441..3540790485 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -392,7 +392,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; $form->assign('profile', $profile); } - $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, TRUE, ['class' => 'crm-select2']); + $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, FALSE, ['class' => 'crm-select2']); //CRM-15821 - To add new option for PCP "Owner" notification $ownerNotifications = CRM_Core_OptionGroup::values('pcp_owner_notify'); diff --git a/civicrm/CRM/PCP/Form/Contribute.php b/civicrm/CRM/PCP/Form/Contribute.php index 890ffeb13e..86bc12ba79 100644 --- a/civicrm/CRM/PCP/Form/Contribute.php +++ b/civicrm/CRM/PCP/Form/Contribute.php @@ -92,7 +92,7 @@ class CRM_PCP_Form_Contribute extends CRM_Contribute_Form_ContributionPage { */ public static function formRule($params, $files, $self) { $errors = []; - if (!empty($params['is_active'])) { + if (!empty($params['pcp_active'])) { if (!empty($params['is_tellfriend_enabled']) && (CRM_Utils_Array::value('tellfriend_limit', $params) <= 0) @@ -144,9 +144,9 @@ class CRM_PCP_Form_Contribute extends CRM_Contribute_Form_ContributionPage { $dao->entity_id = $this->_id; $dao->find(TRUE); $params['id'] = $dao->id; - $params['is_active'] = CRM_Utils_Array::value('pcp_active', $params, FALSE); - $params['is_approval_needed'] = CRM_Utils_Array::value('is_approval_needed', $params, FALSE); - $params['is_tellfriend_enabled'] = CRM_Utils_Array::value('is_tellfriend_enabled', $params, FALSE); + $params['is_active'] = $params['pcp_active'] ?? FALSE; + $params['is_approval_needed'] = $params['is_approval_needed'] ?? FALSE; + $params['is_tellfriend_enabled'] = $params['is_tellfriend_enabled'] ?? FALSE; CRM_PCP_BAO_PCPBlock::writeRecord($params); diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php index 636968f8a0..5448225acc 100644 --- a/civicrm/CRM/PCP/Form/Event.php +++ b/civicrm/CRM/PCP/Form/Event.php @@ -125,13 +125,19 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent { */ public static function formRule($params, $files, $self) { $errors = []; - if (!empty($params['is_active'])) { + if (!empty($params['pcp_active'])) { - if (!empty($params['is_tellfriend_enabled']) && - (CRM_Utils_Array::value('tellfriend_limit', $params) <= 0) - ) { - $errors['tellfriend_limit'] = ts('if Tell Friend is enable, Maximum recipients limit should be greater than zero.'); + if (!empty($params['is_tellfriend_enabled']) && ($params['is_tellfriend_enabled'] <= 0)) { + $errors['tellfriend_limit'] = ts('If Tell a Friend is enabled, maximum recipients limit should be greater than zero.'); + } + + if (empty($params['target_entity_type'])) { + $errors['target_entity_type'] = ts('Campaign Type is a required field.'); } + elseif (($params['target_entity_type'] === 'contribute') && (empty($params['target_entity_id']))) { + $errors['target_entity_id'] = ts('Online Contribution Page is a required field.'); + } + if (empty($params['supporter_profile_id'])) { $errors['supporter_profile_id'] = ts('Supporter profile is a required field.'); } @@ -181,9 +187,9 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent { $dao->entity_id = $this->_id; $dao->find(TRUE); $params['id'] = $dao->id; - $params['is_active'] = CRM_Utils_Array::value('pcp_active', $params, FALSE); - $params['is_approval_needed'] = CRM_Utils_Array::value('is_approval_needed', $params, FALSE); - $params['is_tellfriend_enabled'] = CRM_Utils_Array::value('is_tellfriend_enabled', $params, FALSE); + $params['is_active'] = $params['pcp_active'] ?? FALSE; + $params['is_approval_needed'] = $params['is_approval_needed'] ?? FALSE; + $params['is_tellfriend_enabled'] = $params['is_tellfriend_enabled'] ?? FALSE; CRM_PCP_BAO_PCPBlock::writeRecord($params); diff --git a/civicrm/CRM/Pledge/BAO/PledgeBlock.php b/civicrm/CRM/Pledge/BAO/PledgeBlock.php index 052a23fbbd..e6e867dfba 100644 --- a/civicrm/CRM/Pledge/BAO/PledgeBlock.php +++ b/civicrm/CRM/Pledge/BAO/PledgeBlock.php @@ -118,8 +118,11 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { * @param CRM_Core_Form $form * * @throws \CRM_Core_Exception + * + * @deprecated since 5.68 will be removed around 5.74 */ public static function buildPledgeBlock($form) { + CRM_Core_Error::deprecatedFunctionWarning('no alternative'); //build pledge payment fields. if (!empty($form->_values['pledge_id'])) { //get all payments required details. diff --git a/civicrm/CRM/Pledge/Form/Pledge.php b/civicrm/CRM/Pledge/Form/Pledge.php index 471faa805d..ab873baa75 100644 --- a/civicrm/CRM/Pledge/Form/Pledge.php +++ b/civicrm/CRM/Pledge/Form/Pledge.php @@ -195,33 +195,28 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $contactField->freeze(); } - $showAdditionalInfo = FALSE; - $formType = CRM_Utils_Request::retrieveValue('form_type', 'String'); - $defaults = []; + $formType = CRM_Utils_Request::retrieveValue('formType', 'String'); - $paneNames = [ - ts('Payment Reminders') => 'PaymentReminders', + $allPanes[ts('Payment Reminders')] = [ + 'open' => 'false', + 'id' => 'PaymentReminders', ]; - foreach ($paneNames as $name => $type) { - $urlParams = "snippet=4&formType={$type}"; - $allPanes[$name] = [ - 'url' => CRM_Utils_System::url('civicrm/contact/view/pledge', $urlParams), - 'open' => 'false', - 'id' => $type, - ]; - // see if we need to include this paneName in the current form - if ($formType == $type || !empty($_POST["hidden_{$type}"]) || - !empty($defaults["hidden_{$type}"]) - ) { - $showAdditionalInfo = TRUE; - $allPanes[$name]['open'] = 'true'; - } - $fnName = "build{$type}"; - CRM_Contribute_Form_AdditionalInfo::$fnName($this); + // see if we need to include this paneName in the current form + if ($formType === 'PaymentReminders' || !empty($_POST['hidden_PaymentReminders']) + ) { + $allPanes[ts('Payment Reminders')]['open'] = 'true'; } + $this->add('hidden', 'hidden_PaymentReminders', 1); + $this->add('text', 'initial_reminder_day', ts('Send Initial Reminder'), ['size' => 3]); + $this->addRule('initial_reminder_day', ts('Please enter a valid reminder day.'), 'positiveInteger'); + $this->add('text', 'max_reminders', ts('Send up to'), ['size' => 3]); + $this->addRule('max_reminders', ts('Please enter a valid No. of reminders.'), 'positiveInteger'); + $this->add('text', 'additional_reminder_day', ts('Send additional reminders'), ['size' => 3]); + $this->addRule('additional_reminder_day', ts('Please enter a valid additional reminder day.'), 'positiveInteger'); + $this->assign('allPanes', $allPanes); - $this->assign('showAdditionalInfo', $showAdditionalInfo); + $this->assign('showAdditionalInfo', TRUE); $this->assign('formType', $formType); if ($formType) { @@ -297,8 +292,8 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $frequencyUnit->freeze(); $frequencyDay->freeze(); $eachPaymentAmount = $this->_values['original_installment_amount']; - $this->assign('eachPaymentAmount', $eachPaymentAmount); } + $this->assign('eachPaymentAmount', $eachPaymentAmount ?? NULL); if (($this->_values['status_id'] ?? NULL) != CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'Cancelled') diff --git a/civicrm/CRM/Pledge/Selector/Search.php b/civicrm/CRM/Pledge/Selector/Search.php index 49b5c25c2b..8dba0e8033 100644 --- a/civicrm/CRM/Pledge/Selector/Search.php +++ b/civicrm/CRM/Pledge/Selector/Search.php @@ -262,8 +262,8 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { * @param string $output * What should the result set include (web/email/csv). * - * @return int - * the total number of rows for this action + * @return array + * Rows number of rows for this action */ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { $result = $this->_query->searchQuery($offset, $rowCount, $sort, @@ -276,9 +276,6 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { // process the result of the query $rows = []; - // get all pledge status - $pledgeStatuses = CRM_Pledge_BAO_Pledge::buildOptions('status_id'); - // get all campaigns. $allCampaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); @@ -302,29 +299,30 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { // the columns we are interested in foreach (self::$_properties as $property) { - if (isset($result->$property)) { - $row[$property] = $result->$property; + if (in_array($property, ['pledge_amount', 'pledge_total_paid', 'pledge_next_pay_amount', 'pledge_outstanding_amount'])) { + $row[$property] = $result->$property ? (float) $result->$property : 0; + } + else { + $row[$property] = $result->$property ?? NULL; } } // carry campaign on selectors. $row['campaign'] = $allCampaigns[$result->pledge_campaign_id] ?? NULL; $row['campaign_id'] = $result->pledge_campaign_id; - - // add pledge status name - if (!empty($row['pledge_status_id'])) { - $row['pledge_status_name'] = CRM_Utils_Array::value($row['pledge_status_id'], - $pledgeStatuses - ); + if (isset($row['pledge_total_paid'])) { + $row['pledge_balance_amount'] = $row['pledge_amount'] - $row['pledge_total_paid']; } + // add pledge status name + $statusID = $row['pledge_status_id'] ?? NULL; + $row['pledge_status_name'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $statusID); + // append (test) to status label if (!empty($row['pledge_is_test'])) { $row['pledge_status'] = CRM_Core_TestEntity::appendTestText($row['pledge_status']); } $hideOption = []; - if (CRM_Utils_Array::key('Cancelled', $row) || - CRM_Utils_Array::key('Completed', $row) - ) { + if (in_array(CRM_Core_PseudoConstant::getName('CRM_Pledge_BAO_Pledge', 'status_id', $statusID), ['Completed', 'Cancelled'])) { $hideOption[] = 'Cancel'; } diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php index 4d4069054a..4a1a81c85a 100644 --- a/civicrm/CRM/Price/BAO/LineItem.php +++ b/civicrm/CRM/Price/BAO/LineItem.php @@ -311,7 +311,7 @@ WHERE li.contribution_id = %1"; $qty = (float) $qty; $price = (float) ($amount_override === NULL ? $options[$oid]['amount'] : $amount_override); - $participantsPerField = (int) CRM_Utils_Array::value('count', $options[$oid], 0); + $participantsPerField = (int) ($options[$oid]['count'] ?? 0); $values[$oid] = [ 'price_field_id' => $fid, @@ -329,7 +329,7 @@ WHERE li.contribution_id = %1"; 'auto_renew' => $options[$oid]['auto_renew'] ?? NULL, 'html_type' => $fields['html_type'], 'financial_type_id' => $options[$oid]['financial_type_id'] ?? NULL, - 'tax_amount' => CRM_Utils_Array::value('tax_amount', $options[$oid], 0), + 'tax_amount' => $options[$oid]['tax_amount'] ?? 0, 'non_deductible_amount' => $options[$oid]['non_deductible_amount'] ?? NULL, ]; diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php index 0fb1c2e609..39803c6d4f 100644 --- a/civicrm/CRM/Price/BAO/PriceField.php +++ b/civicrm/CRM/Price/BAO/PriceField.php @@ -236,6 +236,8 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { * * @param null $fieldOptions * @param array $freezeOptions + * @param array $extra + * Passed through to the add element function, use to add js. * * @return null */ @@ -247,18 +249,20 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $useRequired = TRUE, $label = NULL, $fieldOptions = NULL, - $freezeOptions = [] + $freezeOptions = [], + array $extra = [] ) { - + $incomingExtra = $extra; $field = new CRM_Price_DAO_PriceField(); $field->id = $fieldId; if (!$field->find(TRUE)) { /* FIXME: failure! */ return NULL; } - + $label = $label ?: $field->label; $is_pay_later = 0; $isQuickConfig = CRM_Price_BAO_PriceSet::isQuickConfig($field->price_set_id); + // @todo - pass is_pay_later in rather than checking form properties if (isset($qf->_mode) && empty($qf->_mode)) { $is_pay_later = 1; } @@ -274,10 +278,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { // get currency name for price field and option attributes $currencyName = $config->defaultCurrency; - if (!isset($label)) { - $label = (!empty($qf->_membershipBlock) && $field->name === 'contribution_amount') ? ts('Additional Contribution') : $field->label; - } - + // @todo - pass useRequired in rather than checking form properties if (isset($qf->_online) && $qf->_online) { $useRequired = FALSE; } @@ -310,21 +311,16 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $max_value, ]); - $extra = []; if (!empty($fieldOptions[$optionKey]['label'])) { //check for label. - $label = $fieldOptions[$optionKey]['label']; + $label = CRM_Utils_String::purifyHTML($fieldOptions[$optionKey]['label']); } + // @todo - move this back to the only calling function on Contribution_Form_Main.php if ($isQuickConfig && $field->name === 'other_amount') { if (!empty($qf->_membershipBlock)) { $useRequired = 0; } $label .= ' ' . $currencySymbol; - $qf->assign('priceset', $elementName); - $extra = [ - 'onclick' => 'useAmountOther();', - 'autocomplete' => 'off', - ]; } $element = &$qf->add('text', $elementName, $label, @@ -353,7 +349,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $type = 'money'; } else { - $message = ts('%1 must be a number (with or without decimal point).', [1 => $label]); + $message = ts('%1 must be a number (with or without decimals).', [1 => $label]); $type = 'numeric'; } // integers will have numeric rule applied to them. @@ -363,10 +359,6 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { case 'Radio': $choice = []; - if ($isQuickConfig && $field->name === 'contribution_amount') { - $qf->assign('contriPriceset', $elementName); - } - foreach ($customOption as $opId => $opt) { $priceOptionText = self::buildPriceOptionText($opt, $field->is_display_amounts, $valueFieldName); if (isset($opt['visibility_id'])) { @@ -381,10 +373,8 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { 'data-currency' => $currencyName, 'data-price-field-values' => json_encode($customOption), 'visibility' => $visibility_id, - ]; - if ($isQuickConfig && $field->name == 'contribution_amount') { - $extra += ['onclick' => 'clearAmountOther();']; - } + ] + $incomingExtra; + // @todo - move this back to the only calling function on Contribution_Form_Main.php if ($field->name == 'membership_amount') { $extra += [ 'onclick' => "return showHideAutoRenew({$opt['membership_type_id']});", @@ -393,12 +383,13 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $qf->assign('membershipFieldID', $field->id); } - $choice[$opt['id']] = $priceOptionText['label']; + $choice[$opt['id']] = CRM_Utils_String::purifyHTML($priceOptionText['label']); $choiceAttrs[$opt['id']] = $extra; if ($is_pay_later) { $qf->add('text', 'txt-' . $elementName, $label, ['size' => '4']); } } + // @todo - move this back to the only calling function on Contribution_Form_Main.php if (!empty($qf->_membershipBlock) && $field->name == 'contribution_amount') { $choice['-1'] = ts('No thank you'); $choiceAttrs['-1'] = [ @@ -435,6 +426,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { } // make contribution field required for quick config when membership block is enabled + // @todo - move this back to the only calling function on Contribution_Form_Main.php if (($field->name == 'membership_amount' || $field->name == 'contribution_amount') && !empty($qf->_membershipBlock) && !$field->is_required ) { @@ -528,6 +520,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { } break; } + // @todo - move this action back to the calling function if (isset($qf->_online) && $qf->_online) { $element->freeze(); } @@ -737,11 +730,11 @@ WHERE id IN (" . implode(',', array_keys($priceFields)) . ')'; } } - list($componentName) = explode(':', $fields['_qf_default']); + [$componentName] = explode(':', $fields['_qf_default']); // now we have all selected amount in hand. $totalAmount = array_sum($selectedAmounts); // The form offers a field to enter the amount paid. This may differ from the amount that is due to complete the purchase - $totalPaymentAmountEnteredOnForm = CRM_Utils_Array::value('total_amount', $fields); + $totalPaymentAmountEnteredOnForm = $fields['total_amount'] ?? NULL; if ($totalAmount < 0) { $error['_qf_default'] = ts('%1 amount can not be less than zero. Please select the options accordingly.', [1 => $componentName]); } @@ -778,12 +771,12 @@ WHERE id IN (" . implode(',', array_keys($priceFields)) . ')'; */ public static function buildPriceOptionText($opt, $isDisplayAmounts, $valueFieldName) { $preHelpText = $postHelpText = ''; - $optionLabel = !empty($opt['label']) ? '<span class="crm-price-amount-label">' . $opt['label'] . '</span>' : ''; - if (!empty($opt['help_pre'])) { - $preHelpText = '<span class="crm-price-amount-help-pre description">' . $opt['help_pre'] . '</span><span class="crm-price-amount-help-pre-separator">: </span>'; + $optionLabel = !empty($opt['label']) ? '<span class="crm-price-amount-label">' . CRM_Utils_String::purifyHTML($opt['label']) . '</span>' : ''; + if (CRM_Utils_String::purifyHTML($opt['help_pre'] ?? '')) { + $preHelpText = '<span class="crm-price-amount-help-pre description">' . CRM_Utils_String::purifyHTML($opt['help_pre']) . '</span><span class="crm-price-amount-help-pre-separator">: </span>'; } - if (!empty($opt['help_post'])) { - $postHelpText = '<span class="crm-price-amount-help-post-separator">: </span><span class="crm-price-amount-help-post description">' . $opt['help_post'] . '</span>'; + if (CRM_Utils_String::purifyHTML($opt['help_post'] ?? '')) { + $postHelpText = '<span class="crm-price-amount-help-post-separator">: </span><span class="crm-price-amount-help-post description">' . CRM_Utils_String::purifyHTML($opt['help_post']) . '</span>'; } $invoicing = Civi::settings()->get('invoicing'); diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index 874fcd2085..566ef3287a 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -15,6 +15,10 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\PriceField; +use Civi\Api4\PriceFieldValue; +use Civi\Api4\PriceSet; + /** * Business object for managing price sets. * @@ -449,7 +453,7 @@ AND ( expire_on IS NULL OR expire_on >= {$currentTime} ) $visibility = CRM_Core_PseudoConstant::visibility('name'); while ($dao->fetch()) { - $fieldID = $dao->id; + $fieldID = (int) $dao->id; $setTree[$setID]['fields'][$fieldID] = []; $setTree[$setID]['fields'][$fieldID]['id'] = $fieldID; @@ -459,7 +463,7 @@ AND ( expire_on IS NULL OR expire_on >= {$currentTime} ) continue; } - if ($field == 'visibility_id') { + if ($field === 'visibility_id') { $setTree[$setID]['fields'][$fieldID]['visibility'] = $visibility[$dao->$field]; } $setTree[$setID]['fields'][$fieldID][$field] = $dao->$field; @@ -475,11 +479,11 @@ WHERE id = %1"; $dao = CRM_Core_DAO::executeQuery($sql, $params); if ($dao->fetch()) { $setTree[$setID]['extends'] = $dao->extends; - $setTree[$setID]['financial_type_id'] = $dao->financial_type_id; + $setTree[$setID]['financial_type_id'] = (int) $dao->financial_type_id; $setTree[$setID]['help_pre'] = $dao->help_pre; $setTree[$setID]['help_post'] = $dao->help_post; - $setTree[$setID]['is_quick_config'] = $dao->is_quick_config; - $setTree[$setID]['min_amount'] = $dao->min_amount; + $setTree[$setID]['is_quick_config'] = (bool) $dao->is_quick_config; + $setTree[$setID]['min_amount'] = (float) $dao->min_amount; } return $setTree; } @@ -595,7 +599,7 @@ WHERE id = %1"; if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $count = CRM_Utils_Array::value('count', $option, 0); + $count = $option['count'] ?? 0; $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; } } @@ -610,7 +614,7 @@ WHERE id = %1"; if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $maxVal = CRM_Utils_Array::value('max_value', $option, 0); + $maxVal = $option['max_value'] ?? 0; $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; $optionsMaxValueTotal += $maxVal; } @@ -757,30 +761,57 @@ WHERE id = %1"; } /** - * Wrapper for getSetDetail with caching. + * Get PriceSet + Fields + FieldValues nested, with caching. + * + * This gets the same values as getSet but uses apiv4 for more + * predictability & better variable typing. * * We seem to be passing this array around in a painful way - presumably to avoid the hit * of loading it - so lets make it callable with caching. * - * Why not just add caching to the other function? We could do - it just seemed a bit unclear the best caching pattern - * & the function was already pretty fugly. Also, I feel like we need to migrate the interaction with price-sets into - * a more granular interaction - ie. retrieve specific data using specific functions on this class & have the form - * think less about the price sets. - * * @param int $priceSetID * * @return array + * + * @noinspection PhpUnhandledExceptionInspection */ - public static function getCachedPriceSetDetail($priceSetID) { + public static function getCachedPriceSetDetail(int $priceSetID): array { $cacheKey = __CLASS__ . __FUNCTION__ . '_' . $priceSetID; $cache = CRM_Utils_Cache::singleton(); - $values = $cache->get($cacheKey); - if (empty($values)) { - $data = self::getSetDetail($priceSetID); - $values = $data[$priceSetID]; - $cache->set($cacheKey, $values); + $data = $cache->get($cacheKey); + if (empty($data)) { + $data = PriceSet::get(FALSE) + ->addWhere('id', '=', $priceSetID) + ->addSelect('*', 'visibility_id:name', 'extends:name') + ->execute()->first(); + $data['fields'] = (array) PriceField::get(FALSE) + ->addWhere('price_set_id', '=', $priceSetID) + ->addSelect('*', 'visibility_id:name') + ->execute()->indexBy('id'); + foreach ($data['fields'] as &$field) { + $field['options'] = []; + // Add in visibility because Smarty templates expect it and it is hard to adjust them to colon format. + $field['visibility'] = $field['visibility_id:name']; + } + $select = ['*', 'visibility_id:name']; + if (CRM_Core_Component::isEnabled('CiviMember')) { + $select[] = 'membership_type_id.name'; + } + $options = PriceFieldValue::get(FALSE) + ->addWhere('price_field_id', 'IN', array_keys($data['fields'])) + ->setSelect($select) + ->execute(); + $taxRates = CRM_Core_PseudoConstant::getTaxRates(); + foreach ($options as $option) { + // Add in visibility because Smarty templates expect it and it is hard to adjust them to colon format. + $option['visibility'] = $option['visibility_id:name']; + $option['tax_rate'] = (float) ($taxRates[$option['financial_type_id']] ?? 0); + $option['tax_amount'] = (float) ($option['tax_rate'] ? CRM_Contribute_BAO_Contribution_Utils::calculateTaxAmount($option['amount'], $option['tax_rate'])['tax_amount'] : 0); + $data['fields'][$option['price_field_id']]['options'][$option['id']] = $option; + } + $cache->set($cacheKey, $data); } - return $values; + return $data; } /** @@ -791,7 +822,8 @@ WHERE id = %1"; * @param bool $validFieldsOnly * * @return void - * @throws \CRM_Core_Exception + * + * @deprecated since 5.68. Will be removed around 5.80. */ public static function buildPriceSet(&$form, $component = NULL, $validFieldsOnly = TRUE) { $priceSetId = $form->get('priceSetId'); @@ -840,22 +872,53 @@ WHERE id = %1"; // Call the buildAmount hook. CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); - self::addPriceFieldsToForm($form, $feeBlock, $validFieldsOnly, $className, $validPriceFieldIds); - } + $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($feeBlock as $id => $field) { + if (($field['visibility'] ?? NULL) == 'public' || + (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || + !$validFieldsOnly + ) { + $options = $field['options'] ?? NULL; + if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') { + $contactId = $form->getVar('_membershipContactID'); + if ($contactId && $options) { + $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($contactId, FALSE, TRUE); + $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); + $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); + $isCurrentMember = (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); + $checklifetime = $checklifetime ?: $isCurrentMember; + } + } + + $formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership']; + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + elseif ($hideAdminValues && !in_array($className, $formClasses)) { + foreach ($options as $key => $currentOption) { + if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) { + unset($options[$key]); + } + } + } + if (!empty($options)) { + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $field['id'], + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + NULL, + $options + ); + } + } + } + $form->assign('ispricelifetime', $checklifetime); - /** - * Check for lifetime membership types this contact has that are in this price field. - * - * @param array $options - * @param int $contactId - * - * @return bool - */ - private static function checkCurrentMembership(array $options, int $contactId) : bool { - $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($contactId, FALSE, TRUE); - $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); - $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); - return (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); } /** @@ -1579,7 +1642,7 @@ WHERE ct.id = cp.financial_type_id AND $amount_override = NULL; if ($priceSetID && count(self::filterPriceFieldsFromParams($priceSetID, $params)) === 1) { - $amount_override = CRM_Utils_Array::value('total_amount', $params); + $amount_override = $params['total_amount'] ?? NULL; } CRM_Price_BAO_LineItem::format($id, $params, $field, $lineItem, $amount_override); if (!empty($field['options'][$optionValueId]['tax_rate'])) { @@ -1613,60 +1676,6 @@ WHERE ct.id = cp.financial_type_id AND return [$params, $lineItem]; } - /** - * Add the relevant price fields to the form. - * - * @param \CRM_Core_Form $form - * @param array $feeBlock - * @param bool $validFieldsOnly - * @param string $className - * @param array $validPriceFieldIds - */ - protected static function addPriceFieldsToForm(CRM_Core_Form $form, $feeBlock, bool $validFieldsOnly, string $className, array $validPriceFieldIds) { - $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); - // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions - $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); - $checklifetime = FALSE; - foreach ($feeBlock as $id => $field) { - if (($field['visibility'] ?? NULL) == 'public' || - (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || - !$validFieldsOnly - ) { - $options = $field['options'] ?? NULL; - if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') { - $contactId = $form->getVar('_membershipContactID'); - if ($contactId && $options) { - $checklifetime = $checklifetime ?: self::checkCurrentMembership($options, $contactId); - } - } - - $formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership']; - - if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { - continue; - } - elseif ($hideAdminValues && !in_array($className, $formClasses)) { - foreach ($options as $key => $currentOption) { - if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) { - unset($options[$key]); - } - } - } - if (!empty($options)) { - CRM_Price_BAO_PriceField::addQuickFormElement($form, - 'price_' . $field['id'], - $field['id'], - FALSE, - CRM_Utils_Array::value('is_required', $field, FALSE), - NULL, - $options - ); - } - } - } - $form->assign('ispricelifetime', $checklifetime); - } - /** * Pseudoconstant options for the `extends` field * diff --git a/civicrm/CRM/Price/Form/Field.php b/civicrm/CRM/Price/Form/Field.php index 3f2b2bd6a7..5496fdabd0 100644 --- a/civicrm/CRM/Price/Form/Field.php +++ b/civicrm/CRM/Price/Form/Field.php @@ -666,12 +666,12 @@ class CRM_Price_Form_Field extends CRM_Core_Form { $params['option_amount'][$key] = CRM_Utils_Rule::cleanMoney($amount); } - $params['is_display_amounts'] = CRM_Utils_Array::value('is_display_amounts', $params, FALSE); - $params['is_required'] = CRM_Utils_Array::value('is_required', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params, FALSE); - $params['visibility_id'] = CRM_Utils_Array::value('visibility_id', $params, FALSE); - $params['count'] = CRM_Utils_Array::value('count', $params, FALSE); + $params['is_display_amounts'] = $params['is_display_amounts'] ?? FALSE; + $params['is_required'] = $params['is_required'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['financial_type_id'] = $params['financial_type_id'] ?? FALSE; + $params['visibility_id'] = $params['visibility_id'] ?? FALSE; + $params['count'] = $params['count'] ?? FALSE; // need the FKEY - price set id $params['price_set_id'] = $this->_sid; @@ -689,7 +689,7 @@ class CRM_Price_Form_Field extends CRM_Core_Form { if (isset($params['option_name'])) { $params['option_value'] = $params['option_name']; } - $params['is_enter_qty'] = CRM_Utils_Array::value('is_enter_qty', $params, FALSE); + $params['is_enter_qty'] = $params['is_enter_qty'] ?? FALSE; if ($params['html_type'] === 'Text') { // if html type is Text, force is_enter_qty on diff --git a/civicrm/CRM/Price/Form/Option.php b/civicrm/CRM/Price/Form/Option.php index 94e4f0d9a8..3aeecdc00f 100644 --- a/civicrm/CRM/Price/Form/Option.php +++ b/civicrm/CRM/Price/Form/Option.php @@ -328,9 +328,9 @@ class CRM_Price_Form_Option extends CRM_Core_Form { $params[$field] = CRM_Utils_Rule::cleanMoney(trim($params[$field])); } $params['price_field_id'] = $this->_fid; - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['visibility_id'] = CRM_Utils_Array::value('visibility_id', $params, FALSE); + $params['is_default'] = $params['is_default'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['visibility_id'] = $params['visibility_id'] ?? FALSE; $ids = []; if ($this->_oid) { $params['id'] = $this->_oid; diff --git a/civicrm/CRM/Price/Form/Set.php b/civicrm/CRM/Price/Form/Set.php index 5abbc00ca0..c9e630058a 100644 --- a/civicrm/CRM/Price/Form/Set.php +++ b/civicrm/CRM/Price/Form/Set.php @@ -243,8 +243,8 @@ class CRM_Price_Form_Set extends CRM_Core_Form { // get the submitted form values. $params = $this->controller->exportValues('Set'); $nameLength = CRM_Core_DAO::getAttribute('CRM_Price_DAO_PriceSet', 'name'); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['financial_type_id'] = $params['financial_type_id'] ?? FALSE; $compIds = []; $extends = $params['extends'] ?? NULL; diff --git a/civicrm/CRM/Price/Page/Option.php b/civicrm/CRM/Price/Page/Option.php index c2a6ad7763..b07bf8ccb8 100644 --- a/civicrm/CRM/Price/Page/Option.php +++ b/civicrm/CRM/Price/Page/Option.php @@ -110,6 +110,7 @@ class CRM_Price_Page_Option extends CRM_Core_Page { * @return void */ public function browse(): void { + $this->assign('usedBy', NULL); $priceOptions = civicrm_api3('PriceFieldValue', 'get', [ 'price_field_id' => $this->_fid, // Explicitly do not check permissions so we are not @@ -162,6 +163,8 @@ class CRM_Price_Page_Option extends CRM_Core_Page { } } $customOption[$id]['order'] = $customOption[$id]['weight']; + $customOption[$id]['help_pre'] = $customOption[$id]['help_pre'] ?? NULL; + $customOption[$id]['help_post'] = $customOption[$id]['help_post'] ?? NULL; $customOption[$id]['action'] = CRM_Core_Action::formLink(self::actionLinks(), $action, [ 'oid' => $id, @@ -210,6 +213,7 @@ class CRM_Price_Page_Option extends CRM_Core_Page { $usedBy = CRM_Price_BAO_PriceSet::getUsedBy($sid); } + $this->assign('usedBy', $usedBy ?? NULL); // set the userContext stack $session = CRM_Core_Session::singleton(); @@ -229,7 +233,6 @@ class CRM_Price_Page_Option extends CRM_Core_Page { $url ); $this->assign('usedPriceSetTitle', CRM_Price_BAO_PriceFieldValue::getOptionLabel($oid)); - $this->assign('usedBy', $usedBy); $comps = [ 'Event' => 'civicrm_event', 'Contribution' => 'civicrm_contribution_page', diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php index 80605866ec..e20bd8d40b 100644 --- a/civicrm/CRM/Profile/Form.php +++ b/civicrm/CRM/Profile/Form.php @@ -889,13 +889,10 @@ class CRM_Profile_Form extends CRM_Core_Form { $this->setDefaultsValues(); $action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, NULL); - if ($this->_mode == self::MODE_CREATE || $this->_mode == self::MODE_EDIT) { CRM_Core_BAO_CMSUser::buildForm($this, $this->_gid, $emailPresent, $action); } - else { - $this->assign('showCMS', FALSE); - } + $this->assign('showCMS', FALSE); $this->assign('groupId', $this->_gid); diff --git a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php index 00e507f139..0a2454c1c6 100644 --- a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -228,7 +228,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { if ($returnValues['data_type'] == 'Date') { $dateFields[$fieldIDs[$key]] = 1; $actualPHPFormats = CRM_Utils_Date::datePluginToPHPFormats(); - $dateFormat = (array) CRM_Utils_Array::value($returnValues['date_format'], $actualPHPFormats); + $dateFormat = (array) ($actualPHPFormats[$returnValues['date_format']] ?? []); $timeFormat = $returnValues['time_format'] ?? NULL; } diff --git a/civicrm/CRM/Queue/Runner.php b/civicrm/CRM/Queue/Runner.php index f89e319127..2be2ceed64 100644 --- a/civicrm/CRM/Queue/Runner.php +++ b/civicrm/CRM/Queue/Runner.php @@ -119,7 +119,7 @@ class CRM_Queue_Runner { $this->title = CRM_Utils_Array::value('title', $runnerSpec, ts('Queue Runner')); $this->queue = $runnerSpec['queue']; $this->errorMode = CRM_Utils_Array::value('errorMode', $runnerSpec, $this->pickErrorMode($this->queue)); - $this->isMinimal = CRM_Utils_Array::value('isMinimal', $runnerSpec, FALSE); + $this->isMinimal = $runnerSpec['isMinimal'] ?? FALSE; $this->onEnd = $runnerSpec['onEnd'] ?? NULL; $this->onEndUrl = $runnerSpec['onEndUrl'] ?? NULL; $this->pathPrefix = CRM_Utils_Array::value('pathPrefix', $runnerSpec, 'civicrm/queue'); diff --git a/civicrm/CRM/Report/BAO/ReportInstance.php b/civicrm/CRM/Report/BAO/ReportInstance.php index eb7ff8fd6f..5024788f40 100644 --- a/civicrm/CRM/Report/BAO/ReportInstance.php +++ b/civicrm/CRM/Report/BAO/ReportInstance.php @@ -47,7 +47,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance implem } if (!$instanceID || !isset($params['id'])) { - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; $params['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); // CRM-17256 set created_id on report creation. $params['created_id'] = $params['created_id'] ?? CRM_Core_Session::getLoggedInContactID(); @@ -240,7 +240,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance implem // When deleting a report, also delete from navigation menu $navId = CRM_Core_DAO::getFieldValue('CRM_Report_DAO_ReportInstance', $event->id, 'navigation_id'); if ($navId) { - CRM_Core_BAO_Navigation::processDelete($navId); + CRM_Core_BAO_Navigation::deleteRecord(['id' => $navId]); CRM_Core_BAO_Navigation::resetNavigation(); } } diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 29f0a4dad8..2c2605ce4f 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -1084,7 +1084,7 @@ class CRM_Report_Form extends CRM_Core_Form { $order_by = [ 'column' => $fieldName, 'order' => CRM_Utils_Array::value('default_order', $field, 'ASC'), - 'section' => CRM_Utils_Array::value('default_is_section', $field, 0), + 'section' => $field['default_is_section'] ?? 0, ]; if (!empty($field['default_weight'])) { @@ -3531,8 +3531,9 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND $val[$key] = $options[$valIds]; } } - $pair[$op] = (count($val) == 1) ? (($op == 'notin' || $op == - 'mnot') ? ts('Is Not') : ts('Is')) : CRM_Utils_Array::value($op, $pair); + $pair[$op] = (count($val) == 1) ? + (($op == 'notin' || $op == 'mnot') ? ts('Is Not') : ts('Is')) : + ($pair[$op] ?? ''); $val = implode(', ', $val); $value = "{$pair[$op]} " . $val; } @@ -3540,8 +3541,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND isset($field['options']) && is_array($field['options']) && !empty($field['options']) ) { - $value = ($pair[$op] ?? '') . " " . - CRM_Utils_Array::value($val, $field['options'], $val); + $value = ($pair[$op] ?? '') . ' ' . ($field['options'][$val] ?? $val); } elseif ($val || $val == '0') { $value = ($pair[$op] ?? '') . " " . $val; @@ -3649,8 +3649,8 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND public function compileContent() { $templateFile = $this->getHookedTemplateFileName(); return ($this->_formValues['report_header'] ?? '') . - CRM_Core_Form::$_template->fetch($templateFile) . - CRM_Utils_Array::value('report_footer', $this->_formValues); + CRM_Core_Form::$_template->fetch($templateFile) . + ($this->_formValues['report_footer'] ?? ''); } /** @@ -5038,7 +5038,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'is_deceased' => [ 'title' => ts('Deceased'), 'type' => CRM_Utils_Type::T_BOOLEAN, - 'default' => CRM_Utils_Array::value('deceased', $defaults, 0), + 'default' => $defaults['deceased'] ?? 0, ], 'do_not_email' => [ 'title' => ts('Do not email'), diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php index 0f8cc4fc34..fe56fbdc80 100644 --- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php @@ -318,9 +318,9 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -357,11 +357,11 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { public function compileContent() { $coverSheet = $this->_surveyCoverSheet() . - "<div style=\"page-break-after: always\"></div>"; + "<div style=\"page-break-after: always\"></div>"; $templateFile = $this->getHookedTemplateFileName(); return $coverSheet . CRM_Core_Form::$_template->fetch($templateFile) . - CRM_Utils_Array::value('report_footer', $this->_formValues); + ($this->_formValues['report_footer'] ?? ''); } /** diff --git a/civicrm/CRM/Report/Form/Case/Demographics.php b/civicrm/CRM/Report/Form/Case/Demographics.php index bba34f5810..0ef45be865 100644 --- a/civicrm/CRM/Report/Form/Case/Demographics.php +++ b/civicrm/CRM/Report/Form/Case/Demographics.php @@ -329,9 +329,9 @@ where (cg.extends='Contact' OR cg.extends='Individual' OR cg.extends_entity_colu else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php index f6307b1656..bc90feede7 100644 --- a/civicrm/CRM/Report/Form/Case/Detail.php +++ b/civicrm/CRM/Report/Form/Case/Detail.php @@ -449,8 +449,8 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, CRM_Utils_Array::value("{$fieldName}_max", $this->_params) ); } diff --git a/civicrm/CRM/Report/Form/Case/TimeSpent.php b/civicrm/CRM/Report/Form/Case/TimeSpent.php index 432bf8d706..fb929b7a04 100644 --- a/civicrm/CRM/Report/Form/Case/TimeSpent.php +++ b/civicrm/CRM/Report/Form/Case/TimeSpent.php @@ -262,9 +262,9 @@ class CRM_Report_Form_Case_TimeSpent extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php index be2d0ef48c..d04f9b9a08 100644 --- a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php @@ -249,9 +249,9 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php index ac71cce245..e1348f6c31 100644 --- a/civicrm/CRM/Report/Form/Contact/Detail.php +++ b/civicrm/CRM/Report/Form/Contact/Detail.php @@ -606,9 +606,9 @@ HERESQL; $op = $this->_params["{$fieldName}_op"] ?? NULL; $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } if (!empty($clause)) { diff --git a/civicrm/CRM/Report/Form/Contact/Log.php b/civicrm/CRM/Report/Form/Contact/Log.php index 65589629d7..652b3ad6a0 100644 --- a/civicrm/CRM/Report/Form/Contact/Log.php +++ b/civicrm/CRM/Report/Form/Contact/Log.php @@ -194,9 +194,9 @@ class CRM_Report_Form_Contact_Log extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index 4cc4512c71..62240a6010 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -485,8 +485,8 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $clause = $this->whereClause($field, $op, $contactTypes, - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } @@ -496,8 +496,8 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $subTypeClause = $this->whereClause($field, $op, $contactSubTypes, - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); if ($clause) { $clause = '(' . $clause . ' OR ' . $subTypeClause . ')'; @@ -514,9 +514,9 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/History.php b/civicrm/CRM/Report/Form/Contribute/History.php index fb2141aa22..658db8e0ff 100644 --- a/civicrm/CRM/Report/Form/Contribute/History.php +++ b/civicrm/CRM/Report/Form/Contribute/History.php @@ -424,9 +424,9 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -661,7 +661,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { $total = []; $total['civicrm_contact_sort_name'] = ts('Total'); foreach ($summaryYears as $year) { - $total[$year] = CRM_Utils_Array::value($year, $primaryRow, 0); + $total[$year] = $primaryRow[$year] ?? 0; } $relatedContact = FALSE; @@ -673,7 +673,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { $relatedContact = TRUE; $relatedRow = $relatedContributions[$relcid]; foreach ($summaryYears as $year) { - $total[$year] += CRM_Utils_Array::value($year, $relatedRow, 0); + $total[$year] += $relatedRow[$year] ?? 0; } foreach (array_keys($this->_relationshipColumns) as $col) { diff --git a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php index 474ce68efc..4003b58cee 100644 --- a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php @@ -273,9 +273,9 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/Lybunt.php b/civicrm/CRM/Report/Form/Contribute/Lybunt.php index a8ec850261..ee3c8d808e 100644 --- a/civicrm/CRM/Report/Form/Contribute/Lybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Lybunt.php @@ -644,9 +644,9 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { foreach ($rows as $key => $row) { // The final row contains the totals so we don't need to include it here. if (!empty($row['civicrm_contribution_contact_id'])) { - $display['life_time'] = CRM_Utils_Array::value('life_time', $display) + + $display['life_time'] = ($display['life_time'] ?? 0) + $row['civicrm_contribution_civicrm_life_time_total']; - $display[$previous_year] = CRM_Utils_Array::value($previous_year, $display) + $row['civicrm_contribution_last_year_total_amount']; + $display[$previous_year] = ($display[$previous_year] ?? 0) + $row['civicrm_contribution_last_year_total_amount']; } } diff --git a/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php b/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php index 109eb68841..ad54d42e08 100644 --- a/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php @@ -291,9 +291,9 @@ class CRM_Report_Form_Contribute_OrganizationSummary extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/PCP.php b/civicrm/CRM/Report/Form/Contribute/PCP.php index f3effc38a3..ba48655fa0 100644 --- a/civicrm/CRM/Report/Form/Contribute/PCP.php +++ b/civicrm/CRM/Report/Form/Contribute/PCP.php @@ -259,9 +259,9 @@ LEFT JOIN civicrm_event {$this->_aliases['civicrm_event']} if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index f5e33a14ef..ea83b16e7d 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -407,9 +407,9 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -464,9 +464,9 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } if (!empty($clause)) { @@ -877,15 +877,15 @@ GROUP BY currency // hack to fix title list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), - CRM_Utils_Array::value("receive_date1_from", $this->_params), - CRM_Utils_Array::value("receive_date1_to", $this->_params) + $this->_params["receive_date1_from"] ?? NULL, + $this->_params["receive_date1_to"] ?? NULL ); $from1 = CRM_Utils_Date::customFormat($from1, NULL, ['d']); $to1 = CRM_Utils_Date::customFormat($to1, NULL, ['d']); list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), - CRM_Utils_Array::value("receive_date2_from", $this->_params), - CRM_Utils_Array::value("receive_date2_to", $this->_params) + $this->_params["receive_date2_from"] ?? NULL, + $this->_params["receive_date2_to"] ?? NULL ); $from2 = CRM_Utils_Date::customFormat($from2, NULL, ['d']); $to2 = CRM_Utils_Date::customFormat($to2, NULL, ['d']); @@ -914,13 +914,13 @@ GROUP BY currency * Rows generated by SQL, with an array for each row. */ public function alterDisplay(&$rows) { - list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), - CRM_Utils_Array::value("receive_date1_from", $this->_params), - CRM_Utils_Array::value("receive_date1_to", $this->_params) + [$from1, $to1] = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), + $this->_params["receive_date1_from"] ?? NULL, + $this->_params["receive_date1_to"] ?? NULL ); - list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), - CRM_Utils_Array::value("receive_date2_from", $this->_params), - CRM_Utils_Array::value("receive_date2_to", $this->_params) + [$from2, $to2] = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), + $this->_params["receive_date2_from"] ?? NULL, + $this->_params["receive_date2_to"] ?? NULL ); $dateUrl = ""; diff --git a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php index 3def8e3188..7fa7cee857 100644 --- a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php +++ b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php @@ -308,11 +308,7 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { parent::__construct(); } - public function preProcess() { - parent::preProcess(); - } - - public function select() { + public function select(): void { $select = []; $this->_columnHeaders = []; foreach ($this->_columns as $tableName => $table) { @@ -376,24 +372,12 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { } } } - $this->selectClause = $select; + $this->_selectClauses = $select; $this->_select = 'SELECT ' . implode(', ', $select) . ' '; } - /** - * @param array $fields - * @param array $files - * @param CRM_Core_Form $self - * - * @return array - */ - public static function formRule($fields, $files, $self) { - $errors = $grouping = []; - return $errors; - } - - public function from() { + public function from(): void { $alias_constituent = 'constituentname'; $alias_creditor = 'contact_civireport'; $this->_from = " @@ -457,7 +441,7 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { public function groupBy() { $this->_rollup = 'WITH ROLLUP'; - $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->selectClause, ["{$this->_aliases['civicrm_contribution_soft']}.contact_id", "constituentname.id"]); + $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->_selectClauses, ["{$this->_aliases['civicrm_contribution_soft']}.contact_id", "constituentname.id"]); $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_contribution_soft']}.contact_id, constituentname.id {$this->_rollup}"; } diff --git a/civicrm/CRM/Report/Form/Contribute/Summary.php b/civicrm/CRM/Report/Form/Contribute/Summary.php index 474c4e21da..32b5158656 100644 --- a/civicrm/CRM/Report/Form/Contribute/Summary.php +++ b/civicrm/CRM/Report/Form/Contribute/Summary.php @@ -58,6 +58,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { * Class constructor. */ public function __construct() { + $batches = CRM_Batch_BAO_Batch::getBatches(); $this->_columns = [ 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', @@ -155,12 +156,6 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { 'default' => [1], 'type' => CRM_Utils_Type::T_INT, ], - 'contribution_page_id' => [ - 'title' => ts('Contribution Page'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Contribute_PseudoConstant::contributionPage(), - 'type' => CRM_Utils_Type::T_INT, - ], 'currency' => [ 'title' => ts('Currency'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, @@ -276,7 +271,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { 'batch_id' => [ 'title' => ts('Batch Title'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Batch_BAO_Batch::getBatches(), + 'options' => $batches, 'type' => CRM_Utils_Type::T_INT, ], ], @@ -342,6 +337,9 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { $this->addCampaignFields('civicrm_contribution', TRUE); + if (!$batches) { + unset($this->_columns['civicrm_batch']); + } // Add charts support $this->_charts = [ '' => ts('Tabular'), @@ -383,7 +381,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { case 'FISCALYEAR': $config = CRM_Core_Config::singleton(); $fy = $config->fiscalYearStart; - $fiscal = self::fiscalYearOffset($field['dbAlias']); + $fiscal = $this->fiscalYearOffset($field['dbAlias']); $select[] = "DATE_ADD(MAKEDATE({$fiscal}, 1), INTERVAL ({$fy['M']})-1 MONTH) AS {$tableName}_{$fieldName}_start"; $select[] = "{$fiscal} AS {$tableName}_{$fieldName}_subtotal"; @@ -750,7 +748,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { foreach ($currencies as $currency) { $softTotalAmount[] = CRM_Utils_Money::format($currSoftAmount[$currency], $currency) . - " (" . $currSoftCount[$currency] . ")"; + ' (' . $currSoftCount[$currency] . ')'; $softAverage[] = CRM_Utils_Money::format(($currSoftAverage[$currency] / $averageSoftCount[$currency]), $currency); } } diff --git a/civicrm/CRM/Report/Form/Contribute/Sybunt.php b/civicrm/CRM/Report/Form/Contribute/Sybunt.php index ed9a2080a1..318e007cac 100644 --- a/civicrm/CRM/Report/Form/Contribute/Sybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Sybunt.php @@ -370,9 +370,9 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); if (($fieldName == 'contribution_status_id' || $fieldName == 'financial_type_id') && !empty($clause) @@ -526,13 +526,13 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { foreach ($rows as $key => $row) { $display["upto_{$upto}"] - = CRM_Utils_Array::value("upto_{$upto}", $display) + CRM_Utils_Array::value("civicrm_upto_{$upto}", $row); + = ($display["upto_{$upto}"] ?? 0) + ($row["civicrm_upto_{$upto}"] ?? 0); $display[$previous_year] - = CRM_Utils_Array::value($previous_year, $display) + CRM_Utils_Array::value($previous_year, $row); + = ($display[$previous_year] ?? 0) + ($row[$previous_year] ?? 0); $display[$previous_two_year] - = CRM_Utils_Array::value($previous_two_year, $display) + CRM_Utils_Array::value($previous_two_year, $row); + = ($display[$previous_two_year] ?? 0) + ($row[$previous_two_year] ?? 0); $display[$previous_three_year] - = CRM_Utils_Array::value($previous_three_year, $display) + CRM_Utils_Array::value($previous_three_year, $row); + = ($display[$previous_three_year] ?? 0) + ($row[$previous_three_year] ?? 0); } $graphRows['value'] = $display; diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php index 0dcff4a211..6d2f7beb75 100644 --- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php +++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php @@ -266,9 +266,9 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php index e42e0036fa..d0865aa4ea 100644 --- a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php +++ b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php @@ -218,9 +218,9 @@ class CRM_Report_Form_Event_IncomeCountSummary extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Event/Summary.php b/civicrm/CRM/Report/Form/Event/Summary.php index ca86340dcd..c11d493586 100644 --- a/civicrm/CRM/Report/Form/Event/Summary.php +++ b/civicrm/CRM/Report/Form/Event/Summary.php @@ -132,50 +132,48 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { $this->_select = 'SELECT ' . implode(', ', $select); } - public function from() { + public function from(): void { $this->_from = " FROM civicrm_event {$this->_aliases['civicrm_event']} "; } - public function where() { + public function where(): void { $clauses = []; - $this->_participantWhere = ""; - foreach ($this->_columns as $tableName => $table) { + foreach ($this->_columns as $table) { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { - $clause = NULL; if (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; $to = $this->_params["{$fieldName}_to"] ?? NULL; if ($relative || $from || $to) { - $clause = $this->dateClause($field['name'], $relative, $from, $to, $field['type']); + $clauses[] = $this->dateClause($field['name'], $relative, $from, $to, $field['type']); } } else { $op = $this->_params["{$fieldName}_op"] ?? NULL; if ($op) { - $clause = $this->whereClause($field, + $clauses[] = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL, ); } } - if (!empty($this->_params['id_value'])) { - $idValue = is_array($this->_params['id_value']) ? implode(',', $this->_params['id_value']) : $this->_params['id_value']; - $this->_participantWhere = " AND civicrm_participant.event_id IN ( $idValue ) "; - } - - if (!empty($clause)) { - $clauses[] = $clause; - } } } } $clauses[] = "{$this->_aliases['civicrm_event']}.is_template = 0"; - $this->_where = 'WHERE ' . implode(' AND ', $clauses); + $this->_where = 'WHERE ' . implode(' AND ', array_filter($clauses)); + } + + public function getEventFilter(): string { + $eventID = array_filter((array) $this->_params['id_value']); + if (empty($eventID)) { + return ''; + } + return ' AND civicrm_participant.event_id IN ( ' . implode(',', $eventID) . ') '; } public function groupBy() { @@ -192,7 +190,7 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { $statusType1 = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1'); $statusType2 = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 0'); - $sql = " + $sql = ' SELECT civicrm_participant.event_id AS event_id, civicrm_participant.status_id AS statusId, COUNT( civicrm_participant.id ) AS participant, @@ -202,11 +200,11 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { FROM civicrm_participant WHERE civicrm_participant.is_test = 0 - $this->_participantWhere + ' . $this->getEventFilter() . ' GROUP BY civicrm_participant.event_id, civicrm_participant.status_id, - civicrm_participant.fee_currency"; + civicrm_participant.fee_currency'; $info = CRM_Core_DAO::executeQuery($sql); $participant_data = $participant_info = $currency = []; @@ -306,8 +304,8 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { while ($dao->fetch()) { $row = []; foreach ($this->_columnHeaders as $key => $value) { - if (($key == 'civicrm_event_start_date') || - ($key == 'civicrm_event_end_date') + if (($key === 'civicrm_event_start_date') || + ($key === 'civicrm_event_end_date') ) { //get event start date and end date in custom datetime format $row[$key] = CRM_Utils_Date::customFormat($dao->$key); diff --git a/civicrm/CRM/Report/Form/Instance.php b/civicrm/CRM/Report/Form/Instance.php index ecd3942715..fe77273cfc 100644 --- a/civicrm/CRM/Report/Form/Instance.php +++ b/civicrm/CRM/Report/Form/Instance.php @@ -318,7 +318,7 @@ class CRM_Report_Form_Instance { // Delete navigation if exists. $navId = CRM_Core_DAO::getFieldValue('CRM_Report_DAO_ReportInstance', $instanceID, 'navigation_id', 'id'); if ($navId) { - CRM_Core_BAO_Navigation::processDelete($navId); + CRM_Core_BAO_Navigation::deleteRecord(['id' => $navId]); CRM_Core_BAO_Navigation::resetNavigation(); } } diff --git a/civicrm/CRM/Report/Form/Mailing/Bounce.php b/civicrm/CRM/Report/Form/Mailing/Bounce.php index ebe9d1a846..67bd05b1ad 100644 --- a/civicrm/CRM/Report/Form/Mailing/Bounce.php +++ b/civicrm/CRM/Report/Form/Mailing/Bounce.php @@ -349,9 +349,9 @@ class CRM_Report_Form_Mailing_Bounce extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } diff --git a/civicrm/CRM/Report/Form/Mailing/Summary.php b/civicrm/CRM/Report/Form/Mailing/Summary.php index d2e4e61942..7125920631 100644 --- a/civicrm/CRM/Report/Form/Mailing/Summary.php +++ b/civicrm/CRM/Report/Form/Mailing/Summary.php @@ -436,9 +436,9 @@ class CRM_Report_Form_Mailing_Summary extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Member/Lapse.php b/civicrm/CRM/Report/Form/Member/Lapse.php index 236c4cd309..d2443dd7e3 100644 --- a/civicrm/CRM/Report/Form/Member/Lapse.php +++ b/civicrm/CRM/Report/Form/Member/Lapse.php @@ -232,9 +232,9 @@ class CRM_Report_Form_Member_Lapse extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Membership/Summary.php b/civicrm/CRM/Report/Form/Membership/Summary.php index 4ba26fb9d8..68fc16695c 100644 --- a/civicrm/CRM/Report/Form/Membership/Summary.php +++ b/civicrm/CRM/Report/Form/Membership/Summary.php @@ -197,9 +197,9 @@ LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Walklist/Walklist.php b/civicrm/CRM/Report/Form/Walklist/Walklist.php index 14b40773b3..de15f85827 100644 --- a/civicrm/CRM/Report/Form/Walklist/Walklist.php +++ b/civicrm/CRM/Report/Form/Walklist/Walklist.php @@ -130,9 +130,9 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/SMS/Form/Provider.php b/civicrm/CRM/SMS/Form/Provider.php index 1f5e2313e1..602f0e6847 100644 --- a/civicrm/CRM/SMS/Form/Provider.php +++ b/civicrm/CRM/SMS/Form/Provider.php @@ -157,8 +157,8 @@ class CRM_SMS_Form_Provider extends CRM_Core_Form { } $recData = $values = $this->controller->exportValues($this->_name); - $recData['is_active'] = CRM_Utils_Array::value('is_active', $recData, 0); - $recData['is_default'] = CRM_Utils_Array::value('is_default', $recData, 0); + $recData['is_active'] = $recData['is_active'] ?? 0; + $recData['is_default'] = $recData['is_default'] ?? 0; if ($this->_action && (CRM_Core_Action::UPDATE || CRM_Core_Action::ADD)) { if ($this->_id) { diff --git a/civicrm/CRM/Tag/Form/Edit.php b/civicrm/CRM/Tag/Form/Edit.php index 09d38c00f0..6fa36b90f2 100644 --- a/civicrm/CRM/Tag/Form/Edit.php +++ b/civicrm/CRM/Tag/Form/Edit.php @@ -102,13 +102,9 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { $this->applyFilter('__ALL__', 'trim'); - $this->add('text', 'name', ts('Name'), - CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'name'), TRUE + $this->add('text', 'label', ts('Label'), + CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'label'), TRUE ); - $this->addRule('name', ts('Name already exists in Database.'), 'objectExists', [ - 'CRM_Core_DAO_Tag', - $this->_id, - ]); $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'description') @@ -142,7 +138,7 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { if (empty($this->_id) && $cloneFrom) { $params = ['id' => $cloneFrom]; CRM_Core_BAO_Tag::retrieve($params, $this->_values); - $this->_values['name'] .= ' (' . ts('copy') . ')'; + $this->_values['label'] .= ' (' . ts('copy') . ')'; if (!empty($this->_values['is_reserved']) && !CRM_Core_Permission::check('administer reserved tags')) { $this->_values['is_reserved'] = 0; } @@ -171,10 +167,10 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { } if (count($this->_id) == 1 && $deleted == 1) { if ($tag['is_tagset']) { - CRM_Core_Session::setStatus(ts("The tag set '%1' has been deleted.", [1 => $tag['name']]), ts('Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The tag set '%1' has been deleted.", [1 => $tag['label']]), ts('Deleted'), 'success'); } else { - CRM_Core_Session::setStatus(ts("The tag '%1' has been deleted.", [1 => $tag['name']]), ts('Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The tag '%1' has been deleted.", [1 => $tag['label']]), ts('Deleted'), 'success'); } } else { @@ -211,7 +207,7 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { $params['is_selectable'] = 0; } $tag = CRM_Core_BAO_Tag::add($params); - CRM_Core_Session::setStatus(ts("The tag '%1' has been saved.", [1 => $tag->name]), ts('Saved'), 'success'); + CRM_Core_Session::setStatus(ts("The tag '%1' has been saved.", [1 => $tag->label]), ts('Saved'), 'success'); $this->ajaxResponse['tag'] = $tag->toArray(); } CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/tag')); diff --git a/civicrm/CRM/Tag/Page/Tag.php b/civicrm/CRM/Tag/Page/Tag.php index 772439b7c4..6d4a26c694 100644 --- a/civicrm/CRM/Tag/Page/Tag.php +++ b/civicrm/CRM/Tag/Page/Tag.php @@ -40,7 +40,7 @@ class CRM_Tag_Page_Tag extends CRM_Core_Page { } $result = civicrm_api3('Tag', 'get', [ - 'return' => ["name", "used_for", "description", "created_id.display_name", "created_date", "is_reserved"], + 'return' => ["name", "label", "used_for", "description", "created_id.display_name", "created_date", "is_reserved"], 'is_tagset' => 1, 'options' => ['limit' => 0], ]); diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php index 5e9e87a229..053e61c13a 100644 --- a/civicrm/CRM/UF/Form/Field.php +++ b/civicrm/CRM/UF/Form/Field.php @@ -725,11 +725,11 @@ class CRM_UF_Form_Field extends CRM_Core_Form { * list of errors to be posted back to the form */ public static function formRule($fields, $files, $self) { - $is_required = CRM_Utils_Array::value('is_required', $fields, FALSE); - $is_registration = CRM_Utils_Array::value('is_registration', $fields, FALSE); - $is_view = CRM_Utils_Array::value('is_view', $fields, FALSE); - $in_selector = CRM_Utils_Array::value('in_selector', $fields, FALSE); - $is_active = CRM_Utils_Array::value('is_active', $fields, FALSE); + $is_required = $fields['is_required'] ?? FALSE; + $is_registration = $fields['is_registration'] ?? FALSE; + $is_view = $fields['is_view'] ?? FALSE; + $in_selector = $fields['in_selector'] ?? FALSE; + $is_active = $fields['is_active'] ?? FALSE; $errors = []; if ($is_view && $is_registration) { diff --git a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php index 58e605a1e9..22ae1f1098 100644 --- a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php +++ b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php @@ -359,6 +359,15 @@ class CRM_Upgrade_Incremental_MessageTemplates { ['name' => 'petition_sign', 'type' => 'subject'], ], ], + [ + 'version' => '5.68.alpha1', + 'upgrade_descriptor' => ts('Significant changes to the template and available variables. Text version is discontinued'), + 'templates' => [ + ['name' => 'event_offline_receipt', 'type' => 'text'], + ['name' => 'event_offline_receipt', 'type' => 'html'], + ['name' => 'event_offline_receipt', 'type' => 'subject'], + ], + ], ]; } @@ -572,7 +581,7 @@ class CRM_Upgrade_Incremental_MessageTemplates { continue; } $content = file_get_contents($filePath); - if ($content) { + if ($content !== FALSE) { CRM_Core_DAO::executeQuery( "UPDATE civicrm_msg_template SET msg_{$type} = %1 WHERE id = %2", [ 1 => [$content, 'String'], diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php index b327366a14..07ce677392 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php @@ -69,7 +69,7 @@ class CRM_Upgrade_Incremental_php_FiveFour extends CRM_Upgrade_Incremental_Base 'option_group_id' => 'activity_default_assignee', 'name' => $option['name'], 'label' => $option['label'], - 'is_default' => CRM_Utils_Array::value('is_default', $option, 0), + 'is_default' => $option['is_default'] ?? 0, 'is_active' => TRUE, ]); } diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php new file mode 100644 index 0000000000..c1bedfa946 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php @@ -0,0 +1,44 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Upgrade logic for the 5.68.x series. + * + * Each minor version in the series is handled by either a `5.68.x.mysql.tpl` file, + * or a function in this class named `upgrade_5_68_x`. + * If only a .tpl file exists for a version, it will be run automatically. + * If the function exists, it must explicitly add the 'runSql' task if there is a corresponding .mysql.tpl. + * + * This class may also implement `setPreUpgradeMessage()` and `setPostUpgradeMessage()` functions. + */ +class CRM_Upgrade_Incremental_php_FiveSixtyEight extends CRM_Upgrade_Incremental_Base { + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_68_alpha1($rev): void { + // Add column prior to updating it via runSql + $this->addTask('Add Tag.label field', 'addColumn', 'civicrm_tag', 'label', "varchar(64) NOT NULL COMMENT 'User-facing tag name' AFTER `name`"); + $this->addTask('Update Tag.name field', 'alterColumn', 'civicrm_tag', 'name', "varchar(64) NOT NULL COMMENT 'Unique machine name'"); + $this->addTask('Update Tag.created_date field', 'alterColumn', 'civicrm_tag', 'created_date', "datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.'"); + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Update civicrm_managed.entity_id', 'alterColumn', 'civicrm_managed', 'entity_id', "int unsigned COMMENT 'Soft foreign key to the referenced item.'"); + $this->addTask('Update civicrm_managed.module', 'alterColumn', 'civicrm_managed', 'module', "varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)'"); + $this->addTask('Update civicrm_managed.name', 'alterColumn', 'civicrm_managed', 'name', "varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object'"); + $this->addTask('Update civicrm_managed.cleanup', 'alterColumn', 'civicrm_managed', 'cleanup', "varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)'"); + $this->addTask('Update civicrm_acl.is_active', 'alterColumn', 'civicrm_acl', 'is_active', "tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?'"); + $this->addTask('Update civicrm_dashboard_contact.is_active', 'alterColumn', 'civicrm_dashboard_contact', 'is_active', "tinyint NOT NULL DEFAULT 0 COMMENT 'Is this widget active?'"); + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl new file mode 100644 index 0000000000..ddfb5373fb --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl @@ -0,0 +1,11 @@ +{* file to handle db changes in 5.68.alpha1 during upgrade *} + +UPDATE `civicrm_acl` SET `is_active` = 0 WHERE `is_active` IS NULL; +UPDATE `civicrm_dashboard_contact` SET `is_active` = 0 WHERE `is_active` IS NULL; + +UPDATE `civicrm_tag` SET `label` = `name` WHERE `label` = ''; + +{* This column is now required. Delete any null values; a managed entity without a name is useless *} +DELETE FROM civicrm_managed WHERE name IS NULL; +{* This column is now required. Set to default value if null or invalid *} +UPDATE civicrm_managed SET cleanup = 'always' WHERE cleanup IS NULL OR cleanup NOT IN ('always', 'never', 'unused'); diff --git a/civicrm/CRM/Utils/Address.php b/civicrm/CRM/Utils/Address.php index 3e9b4fe0de..aa0703e518 100644 --- a/civicrm/CRM/Utils/Address.php +++ b/civicrm/CRM/Utils/Address.php @@ -90,11 +90,11 @@ class CRM_Utils_Address { 'contact.supplemental_address_2' => $fields['supplemental_address_2'] ?? NULL, 'contact.supplemental_address_3' => $fields['supplemental_address_3'] ?? NULL, 'contact.city' => $fields['city'] ?? NULL, - 'contact.state_province_name' => $fields['state_province_name'] ?? NULL, - 'contact.county' => $fields['county'] ?? NULL, - 'contact.state_province' => $fields['state_province'] ?? NULL, + 'contact.state_province_name' => $fields['state_province_id:label'] ?? ($fields['state_province_name'] ?? NULL), + 'contact.county' => $fields['county_id:label'] ?? ($fields['county'] ?? NULL), + 'contact.state_province' => $fields['state_province_id:label'] ?? ($fields['state_province'] ?? NULL), 'contact.postal_code' => $fullPostalCode, - 'contact.country' => $fields['country'] ?? NULL, + 'contact.country' => $fields['country_id:label'] ?? ($fields['country'] ?? NULL), 'contact.world_region' => $fields['world_region'] ?? NULL, 'contact.geo_code_1' => $fields['geo_code_1'] ?? NULL, 'contact.geo_code_2' => $fields['geo_code_2'] ?? NULL, diff --git a/civicrm/CRM/Utils/Address/BatchUpdate.php b/civicrm/CRM/Utils/Address/BatchUpdate.php index e00460b990..044c44ceb6 100644 --- a/civicrm/CRM/Utils/Address/BatchUpdate.php +++ b/civicrm/CRM/Utils/Address/BatchUpdate.php @@ -131,6 +131,8 @@ class CRM_Utils_Address_BatchUpdate { if ($processGeocode) { $clause[] = '( a.geo_code_1 is null OR a.geo_code_1 = 0 )'; $clause[] = '( a.geo_code_2 is null OR a.geo_code_2 = 0 )'; + // the scheduled job is ignoring trying to geocode addresses where manual_geocode is 1 + $clause[] = '( a.manual_geo_code = 0 )'; $clause[] = '( a.country_id is not null )'; } @@ -211,6 +213,11 @@ class CRM_Utils_Address_BatchUpdate { $totalGeocoded++; $addressParams = $params; } + else { + // If an address has failed in the geocoding scheduled job i.e. no lat/long is fetched, we will update the manual_geocode field to 1. + $addressParams['manual_geo_code'] = TRUE; + $addressParams['geo_code_1'] = $addressParams['geo_code_2'] = 0; + } } // parse street address diff --git a/civicrm/CRM/Utils/Array.php b/civicrm/CRM/Utils/Array.php index f1e2fd0ada..b4aad583b6 100644 --- a/civicrm/CRM/Utils/Array.php +++ b/civicrm/CRM/Utils/Array.php @@ -43,18 +43,23 @@ class CRM_Utils_Array { } /** - * Returns $list[$key] if such element exists, or a default value otherwise. + * Returns $list[$key] if such element exists, or $default otherwise. * - * If $list is not actually an array at all, then the default value is - * returned. We hope to deprecate this behaviour. + * If $list is not an array or ArrayAccess object, $default is returned. * + * @deprecated + * In most cases this can be replaced with + * $list[$key] ?? $default + * with the minor difference that when $list[$key] exists and is NULL, this function will always + * return NULL. * * @param string $key * Key value to look up in the array. * @param array|ArrayAccess $list * Array from which to look up a value. * @param mixed $default - * (optional) Value to return $list[$key] does not exist. + * (optional) Value to return when $list[$key] does not exist. If $default + * is not specified, NULL is used. * * @return mixed * Can return any type, since $list might contain anything. @@ -64,11 +69,8 @@ class CRM_Utils_Array { return array_key_exists($key, $list) ? $list[$key] : $default; } if ($list instanceof ArrayAccess) { - // ArrayAccess requires offsetExists is implemented for the equivalent to array_key_exists. return $list->offsetExists($key) ? $list[$key] : $default; } - // @todo - eliminate these from core & uncomment this line. - // CRM_Core_Error::deprecatedFunctionWarning('You have passed an invalid parameter for the "list"'); return $default; } diff --git a/civicrm/CRM/Utils/Date.php b/civicrm/CRM/Utils/Date.php index dfcff429c3..4501e3d0e1 100644 --- a/civicrm/CRM/Utils/Date.php +++ b/civicrm/CRM/Utils/Date.php @@ -280,16 +280,16 @@ class CRM_Utils_Date { * @return int */ public static function unixTime($string) { - if (empty($string)) { + if (!$string) { return 0; } $parsedDate = date_parse($string); - return mktime(CRM_Utils_Array::value('hour', $parsedDate), - CRM_Utils_Array::value('minute', $parsedDate), + return mktime($parsedDate['hour'], + $parsedDate['minute'], 59, - CRM_Utils_Array::value('month', $parsedDate), - CRM_Utils_Array::value('day', $parsedDate), - CRM_Utils_Array::value('year', $parsedDate) + $parsedDate['month'], + $parsedDate['day'], + $parsedDate['year'] ); } diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php index 833204adbf..e9d9750530 100644 --- a/civicrm/CRM/Utils/File.php +++ b/civicrm/CRM/Utils/File.php @@ -418,22 +418,29 @@ class CRM_Utils_File { * Make a valid file name. * * @param string $name + * @param bool $unicode * * @return string */ - public static function makeFileName($name) { + public static function makeFileName($name, bool $unicode = FALSE) { $uniqID = md5(uniqid(rand(), TRUE)); $info = pathinfo($name); $basename = substr($info['basename'], 0, -(strlen($info['extension'] ?? '') + (($info['extension'] ?? '') == '' ? 0 : 1)) ); if (!self::isExtensionSafe($info['extension'] ?? '')) { + if ($unicode) { + return self::makeFilenameWithUnicode("{$basename}_" . ($info['extension'] ?? '') . "_{$uniqID}", '_', 240) . ".unknown"; + } // munge extension so it cannot have an embbeded dot in it // The maximum length of a filename for most filesystems is 255 chars. // We'll truncate at 240 to give some room for the extension. return CRM_Utils_String::munge("{$basename}_" . ($info['extension'] ?? '') . "_{$uniqID}", '_', 240) . ".unknown"; } else { + if ($unicode) { + return self::makeFilenameWithUnicode("{$basename}_{$uniqID}", '_', 240) . "." . ($info['extension'] ?? ''); + } return CRM_Utils_String::munge("{$basename}_{$uniqID}", '_', 240) . "." . ($info['extension'] ?? ''); } } diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 91587f9e3a..c15b871519 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -677,7 +677,7 @@ abstract class CRM_Utils_Hook { } /** - * (Experimental) This hook is called when build the menu table. + * This hook is called when building the menu table. * * @param array $items * List of records to include in menu table. @@ -1145,6 +1145,9 @@ abstract class CRM_Utils_Hook { * - title: string * - callback: string|array, the function which starts the setup process. * The function is expected to return a 'url' for the config screen. + * - url: string (optional), a URL which starts the setup process. + * If omitted, then a default URL is generated. The effect of opening the URL is + * to invoke the `callback`. * @return mixed */ public static function mailSetupActions(&$setupActions) { @@ -1176,7 +1179,7 @@ abstract class CRM_Utils_Hook { } /** - * (Experimental) Modify the list of template-types used for CiviMail composition. + * Modify the list of template-types used for CiviMail composition. * * @param array $types * Sequentially indexed list of template types. Each type specifies: @@ -1864,10 +1867,9 @@ abstract class CRM_Utils_Hook { } /** - * (EXPERIMENTAL) Scan extensions for a list of auto-registered interfaces. + * Scan extensions for a list of auto-registered interfaces. * - * This hook is currently experimental. It is a means to implementing `mixin/scan-classes@1`. - * If there are no major difficulties circa 5.55, then it can be marked stable. + * @see mixin/scan-classes@1 * * @param string[] $classes * List of classes which may be of interest to the class-scanner. @@ -2670,7 +2672,7 @@ abstract class CRM_Utils_Hook { } /** - * EXPERIMENTAL: This hook allows one to register additional Angular modules + * Register Angular modules * * @param array $angularModules * List of modules. Each module defines: @@ -3114,7 +3116,7 @@ abstract class CRM_Utils_Hook { */ public static function queueTaskError(CRM_Queue_Queue $queue, $item, &$outcome, ?Throwable $exception) { $null = NULL; - return self::singleton()->invoke(['job', 'params'], $queue, $item, + return self::singleton()->invoke(['queue', 'item', 'outcome', 'exception'], $queue, $item, $outcome, $exception, $null, $null, 'civicrm_queueTaskError' ); diff --git a/civicrm/CRM/Utils/ICalendar.php b/civicrm/CRM/Utils/ICalendar.php index 40707d98c0..fddefbfec8 100644 --- a/civicrm/CRM/Utils/ICalendar.php +++ b/civicrm/CRM/Utils/ICalendar.php @@ -215,4 +215,59 @@ class CRM_Utils_ICalendar { return sprintf('%+03d%02d', $hours, $minutes); } + /** + * @param array|NULL $info + * Information of the events to create an iCal file for, as returned by + * CRM_Event_BAO_Event::getCompleteInfo(). + * + * @return string + * The rendered contents of the iCal file. + */ + public static function createCalendarFile($info) { + $template = \CRM_Core_Smarty::singleton(); + + // Decode HTML entities in relevant fields. + foreach (['title', 'description', 'event_type', 'location', 'contact_email'] as $field) { + if (isset($info[0][$field])) { + $info[0][$field] = html_entity_decode($info[0][$field], ENT_QUOTES | ENT_HTML401, 'UTF-8'); + } + } + + // Calculate timezones. + if (count($info) > 0) { + $date_min = min( + array_map(function ($event) { + return strtotime($event['start_date']); + }, $info) + ); + $date_max = max( + array_map(function ($event) { + return strtotime($event['end_date'] ?? $event['start_date']); + }, $info) + ); + $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max)); + } + else { + $template->assign('timezones', NULL); + } + $template->assign('timezone', @date_default_timezone_get()); + + $template->assign('events', $info); + $ical_data = $template->fetch('CRM/Core/Calendar/ICal.tpl'); + $ical_data = preg_replace('/(?<!\r)\n/', "\r\n", $ical_data); + + return $ical_data; + } + + /** + * @param int|NULL $event_id + * The CiviCRM Event ID of the event to render an iCal file for. + * + * @return string + */ + public static function createCalendarFileForEvent($event_id) { + $info = \CRM_Event_BAO_Event::getCompleteInfo(NULL, NULL, $event_id, NULL, FALSE); + return self::createCalendarFile($info); + } + } diff --git a/civicrm/CRM/Utils/Mail.php b/civicrm/CRM/Utils/Mail.php index 63e14b7000..e58a79af8f 100644 --- a/civicrm/CRM/Utils/Mail.php +++ b/civicrm/CRM/Utils/Mail.php @@ -190,7 +190,7 @@ class CRM_Utils_Mail { $htmlMessage = FALSE; } $attachments = $params['attachments'] ?? NULL; - if (!empty($params['text'])) { + if (!empty($params['text']) && trim($params['text'])) { $textMessage = $params['text']; } else { @@ -276,7 +276,13 @@ class CRM_Utils_Mail { TRUE, 'base64', 'attachment', - (isset($attach['charset']) ? $attach['charset'] : '') + (isset($attach['charset']) ? $attach['charset'] : ''), + '', + '', + NULL, + NULL, + '', + 'utf-8' ); } } diff --git a/civicrm/CRM/Utils/String.php b/civicrm/CRM/Utils/String.php index a00905b238..bb83724dc2 100644 --- a/civicrm/CRM/Utils/String.php +++ b/civicrm/CRM/Utils/String.php @@ -445,8 +445,7 @@ class CRM_Utils_String { */ public static function htmlToText($html) { $token_html = preg_replace('!\{([a-z_.]+)\}!i', 'token:{$1}', $html); - $converter = new \Html2Text\Html2Text($token_html, ['do_links' => 'table', 'width' => 75]); - $token_text = $converter->getText(); + $token_text = \Soundasleep\Html2Text::convert($token_html, ['ignore_errors' => TRUE]); $text = preg_replace('!token\:\{([a-z_.]+)\}!i', '{$1}', $token_text); return $text; } diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php index 03c260f8cc..f3359d58a0 100644 --- a/civicrm/CRM/Utils/System.php +++ b/civicrm/CRM/Utils/System.php @@ -452,12 +452,12 @@ class CRM_Utils_System { return self::url( $p, - CRM_Utils_Array::value('q', $params), - CRM_Utils_Array::value('a', $params, FALSE), - CRM_Utils_Array::value('f', $params), - CRM_Utils_Array::value('h', $params, TRUE), - CRM_Utils_Array::value('fe', $params, FALSE), - CRM_Utils_Array::value('fb', $params, FALSE) + $params['q'] ?? NULL, + $params['a'] ?? FALSE, + $params['f'] ?? NULL, + $params['h'] ?? TRUE, + $params['fe'] ?? FALSE, + $params['fb'] ?? FALSE ); } diff --git a/civicrm/CRM/Utils/System/Joomla.php b/civicrm/CRM/Utils/System/Joomla.php index b7f92257fc..d61d3f4a32 100644 --- a/civicrm/CRM/Utils/System/Joomla.php +++ b/civicrm/CRM/Utils/System/Joomla.php @@ -136,8 +136,8 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base { public function checkUserNameEmailExists(&$params, &$errors, $emailName = 'email') { $config = CRM_Core_Config::singleton(); - $name = CRM_Utils_Array::value('name', $params); - $email = CRM_Utils_Array::value('mail', $params); + $name = $params['name'] ?? NULL; + $email = $params['mail'] ?? NULL; //don't allow the special characters and min. username length is two //regex \\ to match a single backslash would become '/\\\\/' $isNotValid = (bool) preg_match('/[\<|\>|\"|\'|\%|\;|\(|\)|\&|\\\\|\/]/im', $name); diff --git a/civicrm/CRM/Utils/System/Standalone.php b/civicrm/CRM/Utils/System/Standalone.php index 92f5404f64..1a5c7902e7 100644 --- a/civicrm/CRM/Utils/System/Standalone.php +++ b/civicrm/CRM/Utils/System/Standalone.php @@ -285,7 +285,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { // Q. what does this do? Why do we only include this for maintenance? if ($maintenance) { $smarty = CRM_Core_Smarty::singleton(); - echo implode('', $smarty->_tpl_vars['pageHTMLHead']); + echo implode('', $smarty->getTemplateVars('pageHTMLHead')); } // @todo Add variables from the body tag? (for Shoreditch) diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php index 898f0aae13..b7373b897a 100644 --- a/civicrm/CRM/Utils/Token.php +++ b/civicrm/CRM/Utils/Token.php @@ -1764,7 +1764,7 @@ class CRM_Utils_Token { '$display_name' => 'contact.display_name', ], 'contribution_online_receipt' => [ - '$contributeMode' => 'no longer available / relevant', + '$contributeMode' => ts('no longer available / relevant'), '$first_name' => 'contact.first_name', '$last_name' => 'contact.last_name', '$displayName' => 'contact.display_name', @@ -1772,19 +1772,42 @@ class CRM_Utils_Token { 'membership_offline_receipt' => [ // receipt_text_renewal appears to be long gone. 'receipt_text_renewal' => 'receipt_text', - '$isAmountZero' => 'no longer available / relevant', + '$isAmountZero' => ts('no longer available / relevant'), ], 'event_offline_receipt' => [ - '$contributeMode' => 'no longer available / relevant', - '$isAmountZero' => 'no longer available / relevant', + '$contributeMode' => ts('no longer available / relevant'), + '$isAmountZero' => ts('no longer available / relevant'), + '$dataArray' => ts('found within $participants'), + '$paidBy' => 'contribution.payment_instrument_id:label', + '$totalTaxAmount' => 'contribution.tax_amount', + '$amount' => ts('found within $participants'), + '$checkNumber' => 'contribution.check_number', + '$module' => ts('no longer available / relevant'), + '$register_date' => 'participant.register_date', + '$receive_date' => 'contribution.receive_date', + '$is_pay_later' => 'contribution.is_pay_later', + '$totalAmount' => 'contribution.total_amount', + '$location' => 'event.location', + '$isShowLocation' => 'event.is_show_location|boolean', + '$event.participant_role' => 'participant.role_id:label', + '$amount_level' => ts('found within $participants'), + 'balanceAmount' => 'contribution.balance_amount', + '$financialTypeName' => 'contribution.financial_type_id:label', + '$contributionTypeName' => 'contribution.financial_type_id:label', + '$trxn_id' => 'contribution.trxn_id', + '$participant_status_id' => 'participant.status_id', + + ], + 'event_online_receipt' => [ + '`$participant.id`' => 'participant.id', ], 'pledge_acknowledgement' => [ - '$domain' => 'no longer available / relevant', - '$contact' => 'no longer available / relevant', + '$domain' => ts('no longer available / relevant'), + '$contact' => ts('no longer available / relevant'), ], 'pledge_reminder' => [ - '$domain' => 'no longer available / relevant', - '$contact' => 'no longer available / relevant', + '$domain' => ts('no longer available / relevant'), + '$contact' => ts('no longer available / relevant'), ], ], ]; diff --git a/civicrm/CRM/Utils/Wrapper.php b/civicrm/CRM/Utils/Wrapper.php index 5efe9a89b6..3638f75533 100644 --- a/civicrm/CRM/Utils/Wrapper.php +++ b/civicrm/CRM/Utils/Wrapper.php @@ -75,7 +75,7 @@ class CRM_Utils_Wrapper { $sessionVar = $params['sessionVar'] ?? NULL; $type = $params['type'] ?? NULL; $default = $params['default'] ?? NULL; - $abort = CRM_Utils_Array::value('abort', $params, FALSE); + $abort = $params['abort'] ?? FALSE; $value = NULL; $value = CRM_Utils_Request::retrieve( diff --git a/civicrm/Civi/API/Api3SelectQuery.php b/civicrm/Civi/API/Api3SelectQuery.php index 366223290e..66c5a3fa67 100644 --- a/civicrm/Civi/API/Api3SelectQuery.php +++ b/civicrm/Civi/API/Api3SelectQuery.php @@ -157,8 +157,8 @@ class Api3SelectQuery extends SelectQuery { } foreach ($this->apiFieldSpec as $field) { if ( - $fieldName == \CRM_Utils_Array::value('uniqueName', $field) || - array_search($fieldName, \CRM_Utils_Array::value('api.aliases', $field, [])) !== FALSE + $fieldName == ($field['uniqueName'] ?? NULL) || + array_search($fieldName, $field['api.aliases'] ?? []) !== FALSE ) { return $field; } diff --git a/civicrm/Civi/API/SelectQuery.php b/civicrm/Civi/API/SelectQuery.php index f22742e844..b384a0e625 100644 --- a/civicrm/Civi/API/SelectQuery.php +++ b/civicrm/Civi/API/SelectQuery.php @@ -217,7 +217,7 @@ abstract class SelectQuery { } $fieldInfo = $fkField['FKApiSpec'][$fieldName] ?? NULL; - $keyColumn = \CRM_Utils_Array::value('FKKeyColumn', $fkField, 'id'); + $keyColumn = $fkField['FKKeyColumn'] ?? 'id'; if (!$fieldInfo || !isset($fkField['FKApiSpec'][$keyColumn])) { // Join doesn't exist - might be another param with a dot in it for some reason, we'll just ignore it. return NULL; @@ -404,7 +404,7 @@ abstract class SelectQuery { $words = preg_split("/[\s]+/", $item); if ($words) { // Direction defaults to ASC unless DESC is specified - $direction = strtoupper(\CRM_Utils_Array::value(1, $words, '')) == 'DESC' ? ' DESC' : ''; + $direction = strtoupper($words[1] ?? '') === 'DESC' ? ' DESC' : ''; $field = $this->getField($words[0]); if ($field) { $this->query->orderBy(self::MAIN_TABLE_ALIAS . '.' . $field['name'] . $direction, NULL, $index); diff --git a/civicrm/Civi/API/Subscriber/ChainSubscriber.php b/civicrm/Civi/API/Subscriber/ChainSubscriber.php index 84b011eed4..c258c56eef 100644 --- a/civicrm/Civi/API/Subscriber/ChainSubscriber.php +++ b/civicrm/Civi/API/Subscriber/ChainSubscriber.php @@ -162,17 +162,16 @@ class ChainSubscriber implements EventSubscriberInterface { $defaultSubParams[$lowercase_entity . "_id"] = $parentAPIValues['id']; } } - // @todo remove strtolower: $subEntity is already lower case - if ($entity != 'Contact' && \CRM_Utils_Array::value(strtolower($subEntity . "_id"), $parentAPIValues)) { + if ($entity !== 'Contact' && !empty($parentAPIValues[$subEntity . '_id'])) { //e.g. if event_id is in the values returned & subentity is event //then pass in event_id as 'id' don't do this for contact as it //does some weird things like returning primary email & //thus limiting the ability to chain email //TODO - this might need the camel treatment - $defaultSubParams['id'] = $parentAPIValues[$subEntity . "_id"]; + $defaultSubParams['id'] = $parentAPIValues[$subEntity . '_id']; } - if (\CRM_Utils_Array::value('entity_table', $result['values'][$idIndex]) == $subEntity) { + if (($result['values'][$idIndex]['entity_table'] ?? NULL) == $subEntity) { $defaultSubParams['id'] = $result['values'][$idIndex]['entity_id']; } // if we are dealing with the same entity pass 'id' through diff --git a/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php b/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php index e84bbb901d..1a6a684f56 100644 --- a/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php +++ b/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php @@ -177,7 +177,7 @@ class DynamicFKAuthorization implements EventSubscriberInterface { $this->authorizeDelegate( $apiRequest['action'], $apiRequest['params']['entity_table'], - \CRM_Utils_Array::value('entity_id', $apiRequest['params'], NULL), + $apiRequest['params']['entity_id'] ?? NULL, $apiRequest ); return; diff --git a/civicrm/Civi/API/WhitelistRule.php b/civicrm/Civi/API/WhitelistRule.php index 25d5e4f3c3..e23ee655ce 100644 --- a/civicrm/Civi/API/WhitelistRule.php +++ b/civicrm/Civi/API/WhitelistRule.php @@ -181,7 +181,7 @@ class WhitelistRule { // Kind'a silly we need to (re(re))parse here for each rule; would be more // performant if pre-parsed by Request::create(). $options = _civicrm_api3_get_options_from_params($apiRequest['params'], TRUE, $apiRequest['entity'], 'get'); - $return = \CRM_Utils_Array::value('return', $options, []); + $return = $options['return'] ?? []; $activatedFields = array_merge($activatedFields, array_keys($return)); } diff --git a/civicrm/Civi/Angular/Manager.php b/civicrm/Civi/Angular/Manager.php index 1dd3457824..0478345fd9 100644 --- a/civicrm/Civi/Angular/Manager.php +++ b/civicrm/Civi/Angular/Manager.php @@ -355,7 +355,14 @@ class Manager { } /** - * Get resources for one or more modules. + * Get resources for one or more modules, applying any changesets. + * + * NOTE: The output of this function is a little quirky; depending on the type of resource requested, + * the results will either be a non-associative array (for path and url-type resources) + * or an array indexed by moduleName (for pass-thru resources like settingsFactory, requires, permissions, bundles). + * + * Note: ChangeSets will be applied + * @see \CRM_Utils_Hook::alterAngular() * * @param string|array $moduleNames * List of module names. @@ -364,15 +371,20 @@ class Manager { * @param string $refType * Type of reference to the resource ('cacheUrl', 'rawUrl', 'path', 'settings'). * @return array - * List of URLs or paths. + * Indexed or non-associative array, depending on resource requested (see note) * @throws \CRM_Core_Exception */ public function getResources($moduleNames, $resType, $refType) { $result = []; - $moduleNames = (array) $moduleNames; - foreach ($moduleNames as $moduleName) { + // Properties that do not require interpolation - they are added to the output keyed by moduleName + $passThru = ['settings', 'settingsFactory', 'requires', 'permissions', 'bundles']; + + foreach ((array) $moduleNames as $moduleName) { $module = $this->getModule($moduleName); - if (isset($module[$resType])) { + if (isset($module[$resType]) && in_array($resType, $passThru, TRUE)) { + $result[$moduleName] = $module[$resType]; + } + elseif (isset($module[$resType])) { foreach ($module[$resType] as $file) { $refTypeSuffix = ''; if (is_string($file) && preg_match(';^(assetBuilder|ext)://;', $file)) { @@ -419,16 +431,6 @@ class Manager { $result[] = $this->res->getUrl(parse_url($file, PHP_URL_HOST), ltrim(parse_url($file, PHP_URL_PATH), '/'), TRUE); break; - case 'settings': - case 'settingsFactory': - case 'requires': - case 'permissions': - case 'bundles': - if (!empty($module[$resType])) { - $result[$moduleName] = $module[$resType]; - } - break; - default: throw new \CRM_Core_Exception("Unrecognized resource format"); } diff --git a/civicrm/Civi/Angular/Page/Modules.php b/civicrm/Civi/Angular/Page/Modules.php index 39a2e1ccfa..b26c2d54f6 100644 --- a/civicrm/Civi/Angular/Page/Modules.php +++ b/civicrm/Civi/Angular/Page/Modules.php @@ -2,6 +2,8 @@ namespace Civi\Angular\Page; +use Civi\Angular\Manager; + /** * This page aggregates data from Angular modules. * @@ -148,18 +150,17 @@ class Modules extends \CRM_Core_Page { * @param \Civi\Angular\Manager $angular * @return array */ - public function getMetadata($moduleNames, $angular) { - $modules = $angular->getModules(); + public function getMetadata(array $moduleNames, Manager $angular): array { $result = []; foreach ($moduleNames as $moduleName) { - if (isset($modules[$moduleName])) { - $result[$moduleName] = []; - $result[$moduleName]['domain'] = $modules[$moduleName]['ext']; - $result[$moduleName]['js'] = $angular->getResources($moduleName, 'js', 'rawUrl'); - $result[$moduleName]['css'] = $angular->getResources($moduleName, 'css', 'rawUrl'); - $result[$moduleName]['partials'] = $angular->getPartials($moduleName); - $result[$moduleName]['strings'] = $angular->getTranslatedStrings($moduleName); - } + $module = $angular->getModule($moduleName); + $result[$moduleName] = [ + 'domain' => $module['ext'], + 'js' => $angular->getResources($moduleName, 'js', 'rawUrl'), + 'css' => $angular->getResources($moduleName, 'css', 'rawUrl'), + 'partials' => $angular->getPartials($moduleName), + 'strings' => $angular->getTranslatedStrings($moduleName), + ]; } return $result; } diff --git a/civicrm/Civi/Api4/Entity.php b/civicrm/Civi/Api4/Entity.php index 0ceac96d6b..a595df8575 100644 --- a/civicrm/Civi/Api4/Entity.php +++ b/civicrm/Civi/Api4/Entity.php @@ -133,6 +133,11 @@ class Entity extends Generic\AbstractEntity { 'data_type' => 'Array', 'description' => 'When joining entities in the UI, which fields should be presented by default in the ON clause', ], + [ + 'name' => 'match_fields', + 'data_type' => 'Array', + 'description' => 'Combination of fields used for unique matching', + ], [ 'name' => 'group_weights_by', 'data_type' => 'Array', diff --git a/civicrm/Civi/Api4/Generic/AbstractEntity.php b/civicrm/Civi/Api4/Generic/AbstractEntity.php index b1373bd813..432ab7b8d4 100644 --- a/civicrm/Civi/Api4/Generic/AbstractEntity.php +++ b/civicrm/Civi/Api4/Generic/AbstractEntity.php @@ -154,6 +154,15 @@ abstract class AbstractEntity { $info['dao'] = $dao; $info['table_name'] = $dao::$_tableName; $info['icon_field'] = (array) ($dao::fields()['icon']['name'] ?? NULL); + if (method_exists($dao, 'indices')) { + foreach (\CRM_Utils_Array::findAll($dao::indices(FALSE), ['unique' => TRUE, 'localizable' => FALSE]) as $index) { + foreach ($index['field'] as $field) { + // Trim `field(length)` to just `field` + [$field] = explode('(', $field); + $info['match_fields'][] = $field; + } + } + } } foreach (ReflectionUtils::getTraits(static::class) as $trait) { $info['type'][] = CoreUtil::stripNamespace($trait); diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php index d50c62f9f3..183043e3a8 100644 --- a/civicrm/Civi/Api4/Generic/AutocompleteAction.php +++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php @@ -285,20 +285,8 @@ class AutocompleteAction extends AbstractAction { */ private function getKeyField() { $entityName = $this->savedSearch['api_entity']; - // Temp hack for 5.67. Fixed in 5.68. See https://github.com/civicrm/civicrm-core/pull/28283 - if ($entityName === 'OptionValue' && $this->key === 'value') { - return 'value'; - } - if ($this->key) { - /** @var \CRM_Core_DAO $dao */ - $dao = CoreUtil::getInfoItem($entityName, 'dao'); - if ($dao && method_exists($dao, 'indices')) { - foreach ($dao::indices(FALSE) as $index) { - if (!empty($index['unique']) && in_array($this->key, $index['field'], TRUE)) { - return $this->key; - } - } - } + if ($this->key && in_array($this->key, CoreUtil::getInfoItem($entityName, 'match_fields') ?? [], TRUE)) { + return $this->key; } return $this->display['settings']['keyField'] ?? CoreUtil::getIdFieldName($entityName); } diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php index 895701f2ad..07ba072000 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -138,7 +138,7 @@ class BasicGetFieldsAction extends BasicGetAction { if (array_key_exists('label', $fieldDefaults)) { $field['label'] = $field['label'] ?? $field['title'] ?? $field['name']; } - if (!empty($field['options']) && is_array($field['options']) && empty($field['suffixes']) && array_key_exists('suffixes', $field)) { + if (isset($field['options']) && is_array($field['options']) && empty($field['suffixes']) && array_key_exists('suffixes', $field)) { $this->setFieldSuffixes($field); } if (isset($defaults['options'])) { @@ -156,13 +156,14 @@ class BasicGetFieldsAction extends BasicGetAction { * @param array $field */ private function formatOptionList(&$field) { - if (empty($field['options'])) { + $optionsExist = isset($field['options']) && is_array($field['options']); + if (!isset($field['options'])) { $field['options'] = !empty($field['pseudoconstant']); } if (!empty($field['pseudoconstant']['optionGroupName'])) { $field['suffixes'] = CoreUtil::getOptionValueFields($field['pseudoconstant']['optionGroupName']); } - if (!$this->loadOptions || !$field['options']) { + if (!$this->loadOptions || (!$optionsExist && empty($field['pseudoconstant']))) { $field['options'] = (bool) $field['options']; return; } @@ -324,6 +325,7 @@ class BasicGetFieldsAction extends BasicGetAction { 'Email' => ts('Email'), 'EntityRef' => ts('Autocomplete Entity'), 'File' => ts('File'), + 'Hidden' => ts('Hidden'), 'Location' => ts('Address Location'), 'Number' => ts('Number'), 'Radio' => ts('Radio Buttons'), diff --git a/civicrm/Civi/Api4/Generic/ExportAction.php b/civicrm/Civi/Api4/Generic/ExportAction.php index 13b660ec77..4561afa860 100644 --- a/civicrm/Civi/Api4/Generic/ExportAction.php +++ b/civicrm/Civi/Api4/Generic/ExportAction.php @@ -24,7 +24,7 @@ use Civi\Api4\Utils\CoreUtil; * @method $this setId(int $id) * @method int getId() * @method $this setMatch(array $match) Specify fields to match for update. - * @method bool getMatch() + * @method array getMatch() * @method $this setCleanup(string $cleanup) * @method string getCleanup() * @method $this setUpdate(string $update) @@ -40,17 +40,14 @@ class ExportAction extends AbstractAction { protected $id; /** - * Specify fields to match when managed records are being reconciled. + * Fields to match when managed records are being reconciled. * - * To prevent "DB Error: Already Exists" errors, it's generally a good idea to set this - * value to whatever unique fields this entity has (for most entities it's "name"). - * The managed system will then check if a record with that name already exists before - * trying to create a new one. + * By default this will be set automatically based on the entity's unique fields. * * @var array * @optionsCallback getMatchFields */ - protected $match = ['name']; + protected $match; /** * Specify rule for auto-updating managed entity @@ -76,18 +73,17 @@ class ExportAction extends AbstractAction { * @param \Civi\Api4\Generic\Result $result */ public function _run(Result $result) { - $this->exportRecord($this->getEntityName(), $this->id, $result, $this->match); + $this->exportRecord($this->getEntityName(), $this->id, $result); } /** * @param string $entityType * @param int $entityId * @param \Civi\Api4\Generic\Result $result - * @param array $matchFields * @param string $parentName * @param array $excludeFields */ - private function exportRecord(string $entityType, int $entityId, Result $result, array $matchFields, $parentName = NULL, $excludeFields = []) { + private function exportRecord(string $entityType, int $entityId, Result $result, $parentName = NULL, $excludeFields = []) { if (isset($this->exportedEntities[$entityType][$entityId])) { throw new \CRM_Core_Exception("Circular reference detected: attempted to export $entityType id $entityId multiple times."); } @@ -121,27 +117,12 @@ class ExportAction extends AbstractAction { } // The get api always returns ID, but it should not be included in an export unset($record['id']); - // Should references be limited to the current domain? - $limitRefsByDomain = $entityType === 'OptionGroup' && \CRM_Core_OptionGroup::isDomainOptionGroup($record['name']) ? \CRM_Core_BAO_Domain::getDomain()->id : FALSE; - foreach ($allFields as $fieldName => $field) { - if (($field['fk_entity'] ?? NULL) === 'Domain') { - $alias = $fieldName . '.name'; - if (isset($record[$alias])) { - // If this entity is for a specific domain, limit references to that same domain - if ($fieldName === 'domain_id') { - $limitRefsByDomain = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $record[$alias], 'id', 'name'); - } - // Swap current domain for special API keyword - if ($record[$alias] === \CRM_Core_BAO_Domain::getDomain()->name) { - unset($record[$alias]); - $record[$fieldName] = 'current_domain'; - } - } - } - } $name = ($parentName ?? '') . $entityType . '_' . ($record['name'] ?? count($this->exportedEntities[$entityType])); - // Ensure safe characters, max length - $name = \CRM_Utils_String::munge($name, '_', 127); + // Ensure safe characters, max length. + // This is used for the value of `civicrm_managed.name` which has a maxlength of 255, but is also used + // to generate a file by civix, and many filesystems have a maxlength of 255 including the suffix, so + // 255 - strlen('.mgd.php') = 247 + $name = \CRM_Utils_String::munge($name, '_', 247); // Include option group with custom field if ($entityType === 'CustomField') { if ( @@ -149,7 +130,7 @@ class ExportAction extends AbstractAction { // Sometimes fields share an option group; only export it once. empty($this->exportedEntities['OptionGroup'][$record['option_group_id']]) ) { - $this->exportRecord('OptionGroup', $record['option_group_id'], $result, $matchFields); + $this->exportRecord('OptionGroup', $record['option_group_id'], $result); } } // Don't use joins/pseudoconstants if null or if it has the same value as the original @@ -177,8 +158,13 @@ class ExportAction extends AbstractAction { 'values' => $record, ], ]; - foreach (array_unique(array_intersect($matchFields, array_keys($allFields))) as $match) { - $export['params']['match'][] = $match; + $matchFields = $this->match; + // Calculate $match param if not passed explicitly + if (!isset($matchFields)) { + $matchFields = (array) CoreUtil::getInfoItem($entityType, 'match_fields'); + } + if ($matchFields) { + $export['params']['match'] = $matchFields; } $result[] = $export; // Export entities that reference this one @@ -194,15 +180,6 @@ class ExportAction extends AbstractAction { if ($refEntity === 'CustomField' && $entityType === 'OptionGroup') { continue; } - // Limit references by domain - if (property_exists($reference, 'domain_id')) { - if (!isset($reference->domain_id)) { - $reference->find(TRUE); - } - if (isset($reference->domain_id) && $reference->domain_id != $limitRefsByDomain) { - continue; - } - } $references[$refEntity][] = $reference; } foreach ($references as $refEntity => $records) { @@ -225,18 +202,8 @@ class ExportAction extends AbstractAction { return $a->$weightCol < $b->$weightCol ? -1 : 1; }); } - $referenceMatchFields = $matchFields; - // Add back-reference to "match" fields to enforce uniqueness - // See https://lab.civicrm.org/dev/core/-/issues/4286 - if ($referenceMatchFields) { - foreach ($reference::fields() as $field) { - if (($field['FKClassName'] ?? '') === $daoName) { - $referenceMatchFields[] = $field['name']; - } - } - } foreach ($records as $record) { - $this->exportRecord($refEntity, $record->id, $result, $referenceMatchFields, $name . '_', $exclude); + $this->exportRecord($refEntity, $record->id, $result, $name . '_', $exclude); } } } @@ -281,6 +248,8 @@ class ExportAction extends AbstractAction { ['type', 'IN', ['Field', 'Custom']], ['readonly', '!=', TRUE], ]; + // Domains are handled automatically + $excludeFields[] = 'domain_id'; if ($excludeFields) { $conditions[] = ['name', 'NOT IN', $excludeFields]; } diff --git a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php index d0e943a975..eee54e5199 100644 --- a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php @@ -166,8 +166,12 @@ trait ArrayQueryActionTrait { case 'REGEXP': case 'NOT REGEXP': - $pattern = '/' . str_replace('/', '\\/', $expected) . '/'; - return !preg_match($pattern, $value) == ($operator != 'REGEXP'); + case 'REGEXP BINARY': + case 'NOT REGEXP BINARY': + // Perform case-sensitive matching for BINARY operator, otherwise insensitive + $i = str_ends_with($operator, 'BINARY') ? '' : 'i'; + $pattern = '/' . str_replace('/', '\\/', $expected) . "/$i"; + return !preg_match($pattern, $value) == str_starts_with($operator, 'NOT'); case 'IN': return in_array($value, $expected); diff --git a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php index feabd9bc49..3a7d72c4e8 100644 --- a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -102,7 +102,7 @@ trait DAOActionTrait { protected function writeObjects($items) { $updateWeights = FALSE; // Adjust weights for sortable entities - if (in_array('SortableEntity', CoreUtil::getInfoItem($this->getEntityName(), 'type'))) { + if (CoreUtil::isType($this->getEntityName(), 'SortableEntity')) { $weightField = CoreUtil::getInfoItem($this->getEntityName(), 'order_by'); // Only take action if updating a single record, or if no weights are specified in any record // This avoids messing up a bulk update with multiple recalculations diff --git a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php index 92487d91ba..f10c09e818 100644 --- a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php @@ -148,7 +148,7 @@ trait SavedSearchInspectorTrait { */ private function getQuery() { if (!isset($this->_selectQuery) && !empty($this->savedSearch['api_entity'])) { - if (!in_array('DAOEntity', CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'type'), TRUE)) { + if (!CoreUtil::isType($this->savedSearch['api_entity'], 'DAOEntity')) { return $this->_selectQuery = FALSE; } $api = Request::create($this->savedSearch['api_entity'], 'get', $this->savedSearch['api_params']); diff --git a/civicrm/Civi/Api4/Navigation.php b/civicrm/Civi/Api4/Navigation.php index fc1d08e56d..5483dcb55f 100644 --- a/civicrm/Civi/Api4/Navigation.php +++ b/civicrm/Civi/Api4/Navigation.php @@ -16,6 +16,7 @@ namespace Civi\Api4; * @searchable none * @orderBy weight * @groupWeightsBy domain_id,parent_id + * @matchFields name,domain_id * @since 5.19 * @package Civi\Api4 */ diff --git a/civicrm/Civi/Api4/OptionValue.php b/civicrm/Civi/Api4/OptionValue.php index a3486c3e7c..210aa2219e 100644 --- a/civicrm/Civi/Api4/OptionValue.php +++ b/civicrm/Civi/Api4/OptionValue.php @@ -17,6 +17,7 @@ namespace Civi\Api4; * @searchable secondary * @orderBy weight * @groupWeightsBy option_group_id + * @matchFields option_group_id,name,value * @since 5.19 * @package Civi\Api4 */ diff --git a/civicrm/Civi/Api4/Query/Api4Query.php b/civicrm/Civi/Api4/Query/Api4Query.php index a40cfd4a67..73f0e9eb66 100644 --- a/civicrm/Civi/Api4/Query/Api4Query.php +++ b/civicrm/Civi/Api4/Query/Api4Query.php @@ -27,7 +27,8 @@ use Civi\Api4\Utils\FormattingUtil; * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", * * 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', * * 'IS NOT NULL', 'IS NULL', 'CONTAINS', 'NOT CONTAINS', - * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP'. + * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP' + * * 'REGEXP BINARY', 'NOT REGEXP BINARY' */ abstract class Api4Query { @@ -402,8 +403,8 @@ abstract class Api4Query { } } - if ($operator == 'REGEXP' || $operator == 'NOT REGEXP') { - return sprintf('%s %s "%s"', $fieldAlias, $operator, \CRM_Core_DAO::escapeString($value)); + if ($operator == 'REGEXP' || $operator == 'NOT REGEXP' || $operator == 'REGEXP BINARY' || $operator == 'NOT REGEXP BINARY') { + return sprintf('%s %s "%s"', (str_ends_with($operator, 'BINARY') ? 'CAST(' . $fieldAlias . ' AS BINARY)' : $fieldAlias), $operator, \CRM_Core_DAO::escapeString($value)); } if (!$value && ($operator === 'IN' || $operator === 'NOT IN')) { diff --git a/civicrm/Civi/Api4/Query/SqlExpression.php b/civicrm/Civi/Api4/Query/SqlExpression.php index de05876e48..a58a580a73 100644 --- a/civicrm/Civi/Api4/Query/SqlExpression.php +++ b/civicrm/Civi/Api4/Query/SqlExpression.php @@ -68,6 +68,26 @@ abstract class SqlExpression { abstract protected function initialize(); + private static function munge($name, $char = '_', $len = 63) { + // Replace all white space and non-alpha numeric with $char + // we only use the ascii character set since mysql does not create table names / field names otherwise + // CRM-11744 + $name = preg_replace('/[^a-zA-Z0-9_]+/', $char, trim($name)); + + // If there are no ascii characters present. + if (!strlen(trim($name, $char))) { + $name = \CRM_Utils_String::createRandom($len, \CRM_Utils_String::ALPHANUMERIC); + } + + if ($len) { + // lets keep variable names short + return substr($name, 0, $len); + } + else { + return $name; + } + } + /** * Converts a string to a SqlExpression object. * @@ -82,7 +102,7 @@ abstract class SqlExpression { public static function convert(string $expression, $parseAlias = FALSE, $mustBe = []) { $as = $parseAlias ? strrpos($expression, ' AS ') : FALSE; $expr = $as ? substr($expression, 0, $as) : $expression; - $alias = $as ? \CRM_Utils_String::munge(substr($expression, $as + 4), '_', 256) : NULL; + $alias = $as ? self::munge(substr($expression, $as + 4), '_', 256) : NULL; $bracketPos = strpos($expr, '('); $firstChar = substr($expr, 0, 1); $lastChar = substr($expr, -1); diff --git a/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php index 08e327c3bf..1e9ca36f38 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php @@ -47,6 +47,8 @@ class OptionValueAutocompleteProvider extends \Civi\Core\Service\AutoService imp [ 'type' => 'field', 'key' => 'description', + 'rewrite' => '#[value] [description]', + 'empty_value' => '#[value]', ], ], ]; diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php index 576b96ec6e..beb5862c6b 100644 --- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php +++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -41,13 +41,13 @@ class SchemaMapBuilder extends AutoService { */ public function __construct(CiviEventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; - $this->apiEntities = array_keys((array) Entity::get(FALSE)->addSelect('name')->execute()->indexBy('name')); + $this->apiEntities = Entity::get(FALSE)->addSelect('name')->execute()->column('name'); } /** * @return SchemaMap */ - public function build() { + public function build(): SchemaMap { $map = new SchemaMap(); $this->loadTables($map); diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php new file mode 100644 index 0000000000..beb34532fd --- /dev/null +++ b/civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php @@ -0,0 +1,38 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +/** + * @service + * @internal + */ +class DashboardCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + // Arguably this is a bad default in the schema + $spec->getFieldByName('is_active')->setRequired(FALSE)->setDefaultValue(TRUE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return in_array($entity, ['Dashboard', 'DashboardContact'], TRUE) && $action === 'create'; + } + +} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php index 1479819acf..6e733d36c5 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php @@ -77,7 +77,7 @@ class EntityTagFilterSpecProvider extends \Civi\Core\Service\AutoService impleme $value = array_unique(array_merge($value, $tagTree[$tagID])); } } - $tags = \CRM_Utils_Type::validate(implode(',', $value), 'CommaSeparatedIntegers'); + $tags = $value ? \CRM_Utils_Type::validate(implode(',', $value), 'CommaSeparatedIntegers') : '0'; return "$fieldAlias $operator (SELECT entity_id FROM `civicrm_entity_tag` WHERE entity_table = '$tableName' AND tag_id IN ($tags))"; } diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php index dcfaeaff75..dce76d87fc 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php @@ -25,6 +25,8 @@ class TagCreationSpecProvider extends \Civi\Core\Service\AutoService implements */ public function modifySpec(RequestSpec $spec) { $spec->getFieldByName('used_for')->setDefaultValue('civicrm_contact'); + $spec->getFieldByName('name')->setRequired(FALSE)->setRequiredIf('empty($values.label)'); + $spec->getFieldByName('label')->setRequired(FALSE)->setRequiredIf('empty($values.name)'); } /** diff --git a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php index 622a11178b..73bcd7a6cf 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php @@ -164,12 +164,12 @@ class SpecFormatter { $bao = CoreUtil::getBAOFromApiName($spec->getEntity()); $optionLabels = $bao::buildOptions($fieldName, NULL, $values); - if (!is_array($optionLabels) || !$optionLabels) { + if (!is_array($optionLabels)) { $options = FALSE; } else { $options = \CRM_Utils_Array::makeNonAssociative($optionLabels, 'id', 'label'); - if (is_array($returnFormat)) { + if (is_array($returnFormat) && $options) { self::addOptionProps($options, $spec, $bao, $fieldName, $values, $returnFormat); } } diff --git a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php index 0e5225723d..d77e3a8bc4 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php @@ -97,9 +97,6 @@ class SpecGatherer extends AutoService { if (!empty($DAOField['component']) && !\CRM_Core_Component::isEnabled($DAOField['component'])) { continue; } - if ($DAOField['name'] == 'is_active' && empty($DAOField['default'])) { - $DAOField['default'] = '1'; - } $this->setDynamicFk($DAOField, $values); $field = SpecFormatter::arrayToField($DAOField, $entityName); $spec->addFieldSpec($field); diff --git a/civicrm/Civi/Api4/Tag.php b/civicrm/Civi/Api4/Tag.php index 67e54a9fcf..d8dae1953f 100644 --- a/civicrm/Civi/Api4/Tag.php +++ b/civicrm/Civi/Api4/Tag.php @@ -22,5 +22,6 @@ namespace Civi\Api4; * @package Civi\Api4 */ class Tag extends Generic\DAOEntity { + use Generic\Traits\ManagedEntity; } diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php index ccc3ed4557..ad7415ee2e 100644 --- a/civicrm/Civi/Api4/Utils/CoreUtil.php +++ b/civicrm/Civi/Api4/Utils/CoreUtil.php @@ -16,6 +16,7 @@ use Civi\API\Exception\NotImplementedException; use Civi\API\Exception\UnauthorizedException; use Civi\API\Request; use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Service\Schema\SchemaMap; use CRM_Core_DAO_AllCoreTables as AllCoreTables; class CoreUtil { @@ -31,7 +32,7 @@ class CoreUtil { * The BAO name for use in static calls. Return doc block is hacked to allow * auto-completion of static methods */ - public static function getBAOFromApiName($entityName) { + public static function getBAOFromApiName($entityName): ?string { // TODO: It would be nice to just call self::getInfoItem($entityName, 'dao') // but that currently causes test failures, probably due to early-bootstrap issues. if ($entityName === 'CustomValue' || strpos($entityName, 'Custom_') === 0) { @@ -54,16 +55,16 @@ class CoreUtil { * @param $baoClassName * @return string|null */ - public static function getApiNameFromBAO($baoClassName) { + public static function getApiNameFromBAO($baoClassName): ?string { $briefName = AllCoreTables::getBriefName($baoClassName); return $briefName && self::getApiClass($briefName) ? $briefName : NULL; } /** * @param string $entityName - * @return string|\Civi\Api4\Generic\AbstractEntity + * @return string|\Civi\Api4\Generic\AbstractEntity|null */ - public static function getApiClass($entityName) { + public static function getApiClass(string $entityName): ?string { $className = 'Civi\Api4\\' . $entityName; if (class_exists($className)) { return $className; @@ -91,6 +92,20 @@ class CoreUtil { return $entities[$entityName][$keyToReturn] ?? NULL; } + /** + * Check if entity is of given type. + * + * @param string $entityName + * e.g. 'Contact' + * @param string $entityType + * e.g. 'SortableEntity' + * @return bool + */ + public static function isType(string $entityName, string $entityType): bool { + $entityTypes = (array) self::getInfoItem($entityName, 'type'); + return in_array($entityType, $entityTypes, TRUE); + } + /** * Get name of unique identifier, typically "id" * @param string $entityName @@ -114,19 +129,19 @@ class CoreUtil { * * @param string $entityName * - * @return string + * @return string|null */ - public static function getTableName(string $entityName) { + public static function getTableName(string $entityName): ?string { return self::getInfoItem($entityName, 'table_name'); } /** * Given a sql table name, return the name of the api entity. * - * @param $tableName + * @param string $tableName * @return string|NULL */ - public static function getApiNameFromTableName($tableName) { + public static function getApiNameFromTableName($tableName): ?string { $provider = \Civi::service('action_object_provider'); foreach ($provider->getEntities() as $entityName => $info) { if (($info['table_name'] ?? NULL) === $tableName) { @@ -143,7 +158,7 @@ class CoreUtil { /** * @return string[] */ - public static function getOperators() { + public static function getOperators(): array { $operators = \CRM_Core_DAO::acceptedSQLOperators(); $operators[] = 'CONTAINS'; $operators[] = 'NOT CONTAINS'; @@ -151,6 +166,8 @@ class CoreUtil { $operators[] = 'IS NOT EMPTY'; $operators[] = 'REGEXP'; $operators[] = 'NOT REGEXP'; + $operators[] = 'REGEXP BINARY'; + $operators[] = 'NOT REGEXP BINARY'; return $operators; } @@ -163,7 +180,7 @@ class CoreUtil { * @param string $entityName * @return array{extends: array, column: string, grouping: mixed}|null */ - public static function getCustomGroupExtends(string $entityName) { + public static function getCustomGroupExtends(string $entityName): ?array { $contactTypes = \CRM_Contact_BAO_ContactType::basicTypes(); // Custom_group.extends pretty much maps 1-1 with entity names, except for Contact. if (in_array($entityName, $contactTypes, TRUE)) { @@ -207,7 +224,7 @@ class CoreUtil { * @return bool * @throws \CRM_Core_Exception */ - public static function isCustomEntity($customGroupName) { + public static function isCustomEntity($customGroupName): bool { return $customGroupName && \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupName, 'is_multiple', 'name'); } @@ -218,10 +235,10 @@ class CoreUtil { * @param array $record * @param int|null $userID * Contact ID of the user we are testing, 0 for the anonymous user. - * @return bool + * @return bool|null * @throws \CRM_Core_Exception */ - public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL) { + public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL): ?bool { $userID = $userID ?? \CRM_Core_Session::getLoggedInContactID() ?? 0; // Super-admins always have access to everything @@ -284,7 +301,7 @@ class CoreUtil { /** * @return \Civi\Api4\Service\Schema\SchemaMap */ - public static function getSchemaMap() { + public static function getSchemaMap(): SchemaMap { $cache = \Civi::cache('metadata'); $schemaMap = $cache->get('api4.schema.map'); if (!$schemaMap) { @@ -303,7 +320,7 @@ class CoreUtil { * @return array{name: string, type: string, count: int, table: string|null, key: string|null}[] * @throws NotImplementedException */ - public static function getRefCount(string $entityName, $entityId) { + public static function getRefCount(string $entityName, $entityId): array { $daoName = self::getInfoItem($entityName, 'dao'); if (!$daoName) { throw new NotImplementedException("Cannot getRefCount for $entityName - dao not found."); diff --git a/civicrm/Civi/Core/Format.php b/civicrm/Civi/Core/Format.php index d7041e00ef..6531868871 100644 --- a/civicrm/Civi/Core/Format.php +++ b/civicrm/Civi/Core/Format.php @@ -44,10 +44,6 @@ class Format extends \Civi\Core\Service\AutoService { if (!$currency) { $currency = Civi::settings()->get('defaultCurrency'); } - if (!isset($locale)) { - global $civicrmLocale; - $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale()); - } $currencyObject = CRM_Utils_Money::getCurrencyObject($currency); $money = Money::of($amount, $currencyObject, NULL, RoundingMode::HALF_UP); $formatter = $this->getMoneyFormatter($currency, $locale); @@ -92,7 +88,7 @@ class Format extends \Civi\Core\Service\AutoService { * @noinspection PhpDocMissingThrowsInspection * @noinspection PhpUnhandledExceptionInspection */ - public function moneyNumber($amount, string $currency, $locale): string { + public function moneyNumber($amount, string $currency, $locale = NULL): string { if (($amount = $this->checkAndConvertAmount($amount)) === '') { return ''; } @@ -195,9 +191,7 @@ class Format extends \Civi\Core\Service\AutoService { } /** - * Get the money formatter for when we are using configured thousand separators. - * - * Our intent is to phase out these settings in favour of deriving them from the locale. + * Get the cached money formatter. * * @param string|null $currency * @param string|null $locale @@ -215,7 +209,10 @@ class Format extends \Civi\Core\Service\AutoService { if (!$currency) { $currency = Civi::settings()->get('defaultCurrency'); } - $locale = $locale ?: \Civi\Core\Locale::detect()->moneyFormat; + if (!isset($locale)) { + global $civicrmLocale; + $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale()); + } $cacheKey = __CLASS__ . $currency . '_' . $locale . '_' . $style . (!empty($attributes) ? md5(json_encode($attributes)) : ''); if (!isset(\Civi::$statics[$cacheKey])) { diff --git a/civicrm/Civi/Core/SettingsManager.php b/civicrm/Civi/Core/SettingsManager.php index feb3f86f66..6bf667c05c 100644 --- a/civicrm/Civi/Core/SettingsManager.php +++ b/civicrm/Civi/Core/SettingsManager.php @@ -239,7 +239,7 @@ class SettingsManager { */ protected function getMandatory($entity) { if ($this->mandatory === NULL) { - $this->mandatory = self::parseMandatorySettings(\CRM_Utils_Array::value('civicrm_setting', $GLOBALS)); + $this->mandatory = self::parseMandatorySettings($GLOBALS['civicrm_setting'] ?? NULL); } return $this->mandatory[$entity]; } diff --git a/civicrm/Civi/Core/SettingsMetadata.php b/civicrm/Civi/Core/SettingsMetadata.php index 00b8f034f0..4f31a8a53b 100644 --- a/civicrm/Civi/Core/SettingsMetadata.php +++ b/civicrm/Civi/Core/SettingsMetadata.php @@ -155,7 +155,7 @@ class SettingsMetadata { // but it's tightly coupled to DAO/field. However, if you really need to support // more pseudoconstant types, then probably best to refactor it. For now, KISS. if (!empty($pseudoconstant['optionGroupName'])) { - $keyColumn = \CRM_Utils_Array::value('keyColumn', $pseudoconstant, 'value'); + $keyColumn = $pseudoconstant['keyColumn'] ?? 'value'; if (is_array($optionsFormat)) { $optionValues = \CRM_Core_OptionValue::getValues(['name' => $pseudoconstant['optionGroupName']]); foreach ($optionValues as $option) { diff --git a/civicrm/Civi/Managed/MultisiteManaged.php b/civicrm/Civi/Managed/MultisiteManaged.php new file mode 100644 index 0000000000..12e8dd8f6d --- /dev/null +++ b/civicrm/Civi/Managed/MultisiteManaged.php @@ -0,0 +1,107 @@ +<?php + +namespace Civi\Managed; + +use Civi\Api4\Domain; +use Civi\Api4\Setting; +use Civi\Core\Service\AutoService; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * If an extension defines a record that should exist on all domains, replicate it across domains. + * + * @service + * @internal + */ +class MultisiteManaged extends AutoService implements EventSubscriberInterface { + + private $entities = []; + private $domains; + + public static function getSubscribedEvents() { + return [ + '&hook_civicrm_managed' => ['generateDomainEntities', -1000], + ]; + } + + /** + * @implements \CRM_Utils_Hook::managed() + * @param array $managedRecords + */ + public function generateDomainEntities(array &$managedRecords): void { + $multisiteEnabled = Setting::get(FALSE) + ->addSelect('is_enabled') + ->execute()->first(); + if (empty($multisiteEnabled['value'])) { + return; + } + + // array_splice needs array keys to be orderly + $managedRecords = array_values($managedRecords); + // Replace every single-domain record with one record per domain + // Walk the array in reverse order so the keys being processed remain stable even as the length changes. + foreach (array_reverse(array_keys($managedRecords)) as $index) { + if ($this->isCopiable($managedRecords[$index])) { + array_splice($managedRecords, $index, 1, $this->makeCopies($managedRecords[$index])); + } + } + } + + protected function makeCopies(array $managedRecord): array { + $copies = []; + foreach ($this->getDomains() as $index => $domainId) { + $copy = $managedRecord; + // For a smoother transition between enabling/disabling multisite, don't rename the first copy + if ($index) { + $copy['name'] .= '_' . $domainId; + } + $copy['params']['values']['domain_id'] = $domainId; + $copies[] = $copy; + } + return $copies; + } + + /** + * Check if a managed record is an APIv4 Entity that should exist on all domains. + * + * Follows the same logic for determining an entity belongs on multiple domains as `FieldDomainIdSpecProvider` + * @see \Civi\Api4\Service\Spec\Provider\FieldDomainIdSpecProvider + * + * @param array $managedRecord + * @return bool + */ + protected function isCopiable(array $managedRecord): bool { + if ($managedRecord['params']['version'] != 4) { + return FALSE; + } + // Extra guard so that clever extensions (which multiply entities themselves) don't get entities-squared. + if (is_numeric($managedRecord['params']['values']['domain_id'] ?? NULL) || !empty($managedRecord['params']['values']['domain_id.name'])) { + \CRM_Core_Error::deprecatedWarning(sprintf('Module "%s" has self-multiplied managed entity "%s" across domains. This is deprecated.', $managedRecord['module'], $managedRecord['name'])); + return FALSE; + } + if (!isset($this->entities[$managedRecord['entity']])) { + try { + $this->entities[$managedRecord['entity']] = (bool) civicrm_api4($managedRecord['entity'], 'getFields', [ + 'checkPermissions' => FALSE, + 'action' => 'create', + 'where' => [ + ['name', '=', 'domain_id'], + ['default_value', '=', 'current_domain'], + ], + ])->count(); + } + catch (\CRM_Core_Exception $e) { + $this->entities[$managedRecord['entity']] = FALSE; + } + } + return $this->entities[$managedRecord['entity']]; + } + + private function getDomains(): array { + if (!isset($this->domains)) { + $this->domains = Domain::get(FALSE)->addSelect('id')->addOrderBy('id')->execute()->column('id'); + } + return $this->domains; + } + +} diff --git a/civicrm/Civi/Test.php b/civicrm/Civi/Test.php index f5e09b2740..5968f86031 100644 --- a/civicrm/Civi/Test.php +++ b/civicrm/Civi/Test.php @@ -125,7 +125,7 @@ class Test { ->callback(function ($ctx) { \Civi\Test::data()->populate(); }, 'populate'); - $builder->install(['org.civicrm.search_kit']); + $builder->install(['org.civicrm.search_kit', 'org.civicrm.afform', 'authx']); return $builder; } diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php index d12f912bdb..d68b04de11 100644 --- a/civicrm/Civi/Test/Api3TestTrait.php +++ b/civicrm/Civi/Test/Api3TestTrait.php @@ -125,7 +125,7 @@ trait Api3TestTrait { * @param null $extraOutput * @return array|int */ - public function callAPIFailure($entity, $action, $params, $expectedErrorMessage = NULL, $extraOutput = NULL) { + public function callAPIFailure($entity, $action, $params = [], $expectedErrorMessage = NULL, $extraOutput = NULL) { if (is_array($params)) { $params += [ 'version' => $this->_apiversion, diff --git a/civicrm/Civi/Test/Api4TestTrait.php b/civicrm/Civi/Test/Api4TestTrait.php index b78e81c7b2..80ae3c6ecf 100644 --- a/civicrm/Civi/Test/Api4TestTrait.php +++ b/civicrm/Civi/Test/Api4TestTrait.php @@ -130,9 +130,9 @@ trait Api4TestTrait { foreach ($requiredFields as $fieldName => $field) { if ( !isset($values[$fieldName]) && - ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], $values + $extraValues)) + ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], ['values' => $values + $extraValues])) ) { - $extraValues[$fieldName] = $this->getRequiredValue($field, $requiredFields); + $extraValues[$fieldName] = $this->getRequiredValue($field); } } diff --git a/civicrm/Civi/Test/ContributionPageTestTrait.php b/civicrm/Civi/Test/ContributionPageTestTrait.php new file mode 100644 index 0000000000..d20bc0863f --- /dev/null +++ b/civicrm/Civi/Test/ContributionPageTestTrait.php @@ -0,0 +1,113 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Test; + +/** + * Helper for event tests. + * + * WARNING - this trait ships with core from 5.68 but the signatures may not yet be stable + * and it is worth assuming that they will not be stable until 5.72. + * + * This provides functions to set up valid contribution pages + * for unit tests. + * + * The primary functions in this class are + * - `contributionPageCreatePaid` - this is the main function to use + * - `contributionPageCreate` - underlying function, use for non-monetary pages. + * + * Calling these function will create contribution pages with associated + * profiles and price set data as appropriate. + */ +trait ContributionPageTestTrait { + use EntityTrait; + + /** + * Create a contribution page for test purposes. + * + * Only call this directly for unpaid contribution pages. + * Otherwise use contributionPageCreatePaid. + * + * @param array $contributionPageValues + * @param string $identifier + * + * @return array + */ + public function contributionPageCreate(array $contributionPageValues = [], string $identifier = 'ContributionPage'): array { + $contributionPageDefaults = [ + 'frontend_title' => 'Test Frontend title', + 'title' => 'Page Title', + 'name' => 'default_page', + 'financial_type_id:name' => 'Donation', + 'is_email_receipt' => TRUE, + 'is_pay_later' => $contributionPageValues['is_monetary'] ?: FALSE, + 'pay_later_text' => 'Send Money Now', + ]; + $contributionPageValues += $contributionPageDefaults; + return $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier); + } + + /** + * @param array $contributionPageValues + * @param array $priceSetParameters + * Currently if 'id' is passed in then no update is made, but this could change + * @param string $identifier + * + * @return array + */ + public function contributionPageCreatePaid(array $contributionPageValues, array $priceSetParameters = [], string $identifier = 'ContributionPage'): array { + $contributionPageValues['is_monetary'] = TRUE; + $contributionPageResult = $this->contributionPageCreate($contributionPageValues, $identifier); + $priceSetParameters += [ + 'title' => 'Price Set', + 'is_quick_config' => TRUE, + 'extends' => 'CiviContribute', + 'financial_type_id:name' => 'Donation', + 'name' => $identifier, + ]; + if (empty($priceSetParameters['id'])) { + $this->createTestEntity('PriceSet', $priceSetParameters, $identifier); + } + else { + $this->ids['PriceSet'][$identifier] = $priceSetParameters['id']; + // Maybe do update here?? + } + $this->createTestEntity('PriceSetEntity', [ + 'entity_table' => 'civicrm_contribution_page', + 'entity_id' => $contributionPageResult['id'], + 'price_set_id' => $this->ids['PriceSet'][$identifier], + ]); + return $contributionPageResult; + } + + /** + * Get the id of the contribution page created in set up. + * + * If only one has been created it will be selected. Otherwise + * you should pass in the appropriate identifier. + * + * @param string $identifier + * + * @return int + */ + protected function getContributionPageID(string $identifier = 'ContributionPage'): int { + if (isset($this->ids['ContributionPage'][$identifier])) { + return $this->ids['ContributionPage'][$identifier]; + } + if (count($this->ids['ContributionPage']) === 1) { + return reset($this->ids['ContributionPage']); + } + $this->fail('Could not identify ContributionPage ID'); + // Unreachable but reduces IDE noise. + return 0; + } + +} diff --git a/civicrm/Civi/Test/EventTestTrait.php b/civicrm/Civi/Test/EventTestTrait.php index c494e94707..61629d21d5 100644 --- a/civicrm/Civi/Test/EventTestTrait.php +++ b/civicrm/Civi/Test/EventTestTrait.php @@ -22,10 +22,6 @@ use Civi\Api4\UFJoin; /** * Helper for event tests. * - * WARNING - this trait ships with core from 5.63 but I wasn't able to resolve - * all the core tests onto it for 5.63 - hence the signatures may not yet be stable - * and it is worth assuming that they will not be stable until 5.65. - * * This provides functions to set up valid events * for unit tests. * diff --git a/civicrm/Civi/Test/FormTrait.php b/civicrm/Civi/Test/FormTrait.php index 799a586a2b..a194768c15 100644 --- a/civicrm/Civi/Test/FormTrait.php +++ b/civicrm/Civi/Test/FormTrait.php @@ -19,6 +19,11 @@ use Civi\Test\FormWrappers\EventFormParticipant; */ trait FormTrait { + /** + * @var \Civi\Test\FormWrapper + */ + private $form; + /** * @param $formName * @param $submittedValues @@ -27,13 +32,65 @@ trait FormTrait { * @return \Civi\Test\FormWrapper */ public function getTestForm($formName, $submittedValues, array $urlParameters = []) { + $this->form = NULL; if ($formName === 'CRM_Event_Form_Participant') { - return new EventFormParticipant($formName, $submittedValues, $urlParameters); + $this->form = new EventFormParticipant($formName, $submittedValues, $urlParameters); } if ($formName === 'CRM_Event_Form_Registration_Register') { - return new EventFormOnline($formName, $submittedValues, $urlParameters); + $this->form = new EventFormOnline($formName, $submittedValues, $urlParameters); + } + if (!$this->form) { + $this->form = new FormWrapper($formName, $submittedValues, $urlParameters); + } + return $this->form; + } + + /** + * Assert that the sent mail included the supplied strings. + * + * @param array $strings + * @param int $mailIndex + */ + protected function assertMailSentContainingStrings(array $strings, int $mailIndex = 0): void { + foreach ($strings as $string) { + $this->assertMailSentContainingString($string, $mailIndex); } - return new FormWrapper($formName, $submittedValues, $urlParameters); + } + + /** + * Assert that the sent mail included the supplied string. + * + * @param string $string + * @param int $mailIndex + */ + protected function assertMailSentContainingString(string $string, int $mailIndex = 0): void { + $mail = $this->form->getMail()[$mailIndex]; + $this->assertStringContainsString($string, $mail['body']); + } + + /** + * Assert that the sent mail included the supplied strings. + * + * @param array $recipients + * @param int $mailIndex + */ + protected function assertMailSentTo(array $recipients, int $mailIndex = 0): void { + $mail = $this->form->getMail()[$mailIndex]; + foreach ($recipients as $string) { + $this->assertStringContainsString($string, $mail['headers']); + } + } + + /** + * Retrieve a deprecated property, ensuring a deprecation notice is thrown. + * + * @param string $property + * + * @return mixed + * @throws \CRM_Core_Exception + */ + protected function getDeprecatedProperty(string $property) { + return $this->form->getDeprecatedProperty($property); } } diff --git a/civicrm/Civi/Test/FormWrapper.php b/civicrm/Civi/Test/FormWrapper.php index 737ebb9389..e20b031061 100644 --- a/civicrm/Civi/Test/FormWrapper.php +++ b/civicrm/Civi/Test/FormWrapper.php @@ -50,10 +50,26 @@ class FormWrapper { return $this->mail ? (array) reset($this->mail) : []; } + /** + * Get the number of emails sent. + * + * @return int + */ + public function getMailCount(): int { + return count((array) $this->mail); + } + public function getFirstMailBody() : string { return $this->getFirstMail()['body'] ?? ''; } + /** + * @return array + */ + public function getTemplateVariables(): array { + return $this->templateVariables; + } + private $redirects; private $mailSpoolID; @@ -103,6 +119,7 @@ class FormWrapper { if ($state > self::VALIDATED) { $this->postProcess(); } + $this->templateVariables = $this->form->get_template_vars(); return $this; } @@ -182,7 +199,7 @@ class FormWrapper { $_POST = $formValues; $this->form = new $class(); $_SERVER['REQUEST_METHOD'] = 'GET'; - $_REQUEST += $urlParameters; + $_REQUEST = array_merge($_REQUEST, $urlParameters); switch ($class) { case 'CRM_Event_Cart_Form_Checkout_Payment': case 'CRM_Event_Cart_Form_Checkout_ParticipantsAndPrices': @@ -339,4 +356,25 @@ class FormWrapper { \Civi::settings()->set('mailing_backend', $this->originalMailSetting); } + /** + * Retrieve a deprecated property, ensuring a deprecation notice is thrown. + * + * @param string $property + * + * @return mixed + * @throws \CRM_Core_Exception + */ + public function getDeprecatedProperty(string $property) { + try { + $this->form->$property; + } + catch (\Exception $e) { + $oldErrorLevel = error_reporting(0); + $value = $this->form->$property; + error_reporting($oldErrorLevel); + return $value; + } + throw new \CRM_Core_Exception('Deprecation should have been triggered'); + } + } diff --git a/civicrm/Civi/Test/HttpTestTrait.php b/civicrm/Civi/Test/HttpTestTrait.php index e74ccd4241..47e5345170 100644 --- a/civicrm/Civi/Test/HttpTestTrait.php +++ b/civicrm/Civi/Test/HttpTestTrait.php @@ -130,6 +130,37 @@ trait HttpTestTrait { return $this; } + /** + * Assert that the response did NOT produce a normal page-view. + * + * This is basically `assertStatusCode(404)`, except that the local configuration + * (CMS/setings/exts/yaddayadda) may change how the error manifests. + * + * @param $response + * @return void + */ + protected function assertPageNotShown($response = NULL): void { + $response = $this->resolveResponse($response); + $actualCode = $response->getStatusCode(); + switch ($actualCode) { + case 404: /* Good! Right! */ + case 403: /* Maybe request falls through to `/civicrm/dashboard` */ + case 500: /* Maybe request falls through to `/civicrm/dashboard`, and it's weird */ + // OK, close enough. You convinced that the page was not shown to the user. + // Bump the assertion-counter and carry on. + $this->assertTrue(TRUE); + return; + + case 200: + // Hypothetically, you might do extra checks on the body to detected misreported errors. + // But for now, let's pretend that HTTP 200 means "OK, Page Found!"... since that is exactly what it means. + $this->fail("Expected HTTP response to indicate a failure (e.g. 404). Received HTTP response $actualCode.\n" . $this->formatFailure($response)); + + default: + $this->fail("Expected HTTP response, but the status code makes no sense. Received HTTP response $actualCode.\n" . $this->formatFailure($response)); + } + } + /** * @param $expectType * @param \Psr\Http\Message\ResponseInterface|null $response @@ -146,6 +177,8 @@ trait HttpTestTrait { } /** + * Assert that the response body matches a regular-expression. + * * @param string $regexp * @param \Psr\Http\Message\ResponseInterface $response * @param string $message @@ -156,11 +189,29 @@ trait HttpTestTrait { } $response = $this->resolveResponse($response); - $this->assertRegexp($regexp, (string) $response->getBody(), + $this->assertMatchesRegularExpression($regexp, (string) $response->getBody(), $message . 'Response body does not match pattern' . $this->formatFailure($response)); return $this; } + /** + * Assert that the response body DOES NOT match a regular-expression. + * + * @param string $regexp + * @param \Psr\Http\Message\ResponseInterface $response + * @param string $message + */ + protected function assertNotBodyRegexp($regexp, $response = NULL, $message = NULL) { + if ($message) { + $message .= "\n"; + } + + $response = $this->resolveResponse($response); + $this->assertDoesNotMatchRegularExpression($regexp, (string) $response->getBody(), + $message . 'Response body should not match pattern' . $this->formatFailure($response)); + return $this; + } + /** * @param \Psr\Http\Message\ResponseInterface|null $response * @return \Psr\Http\Message\ResponseInterface diff --git a/civicrm/Civi/Token/TokenRow.php b/civicrm/Civi/Token/TokenRow.php index 0379febff2..953154a2fc 100644 --- a/civicrm/Civi/Token/TokenRow.php +++ b/civicrm/Civi/Token/TokenRow.php @@ -187,7 +187,7 @@ class TokenRow { 'return' => $customFieldName, 'id' => $entityID, ]); - $fieldValue = \CRM_Utils_Array::value($customFieldName, $record, ''); + $fieldValue = $record[$customFieldName] ?? ''; $originalValue = $fieldValue; // format the raw custom field value into proper display value if (isset($fieldValue)) { @@ -281,7 +281,7 @@ class TokenRow { if ($entity == 'activity' && $field == 'details') { $htmlTokens[$entity][$field] = $value; } - elseif (\CRM_Utils_Array::value('data_type', \CRM_Utils_Array::value($field, $entityFields['values'])) == 'Memo') { + elseif (($entityFields['values'][$field]['data_type'] ?? NULL) === 'Memo') { // Memo fields aka custom fields of type Note are html. $htmlTokens[$entity][$field] = \CRM_Utils_String::purifyHTML($value); } diff --git a/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php b/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php index ac60155bd5..a1dc7b73bf 100644 --- a/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php +++ b/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php @@ -249,7 +249,7 @@ trait AddressingTrait { * @see \Civi\WorkflowMessage\Traits\ReflectiveWorkflowTrait::import */ protected function importExtraEnvelope_toAddress(array &$values): void { - if (array_key_exists('toEmail', $values) || array_key_exists('toName', $values)) { + if (isset($values['toEmail']) || isset($values['toName'])) { $this->setTo(['name' => $values['toName'] ?? NULL, 'email' => $values['toEmail'] ?? NULL]); unset($values['toName']); unset($values['toEmail']); diff --git a/civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php b/civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php new file mode 100644 index 0000000000..af794d492d --- /dev/null +++ b/civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php @@ -0,0 +1,67 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\WorkflowMessage\Traits; + +/** + * Adds a block of custom fields, as traditionally used in back office receipts. + */ +trait CustomFieldTrait { + + /** + * Get a list of custom fields that are 'viewable'. + * + * Viewable is defined as + * - is_public = TRUE (group level) + * - is_view = FALSE (field level). + * This indicate a calculated field (which could be private fundraising info) + * and has not been historically visible as it is not on the edit form. + * - is not acl blocked for the current user (this is used in back office + * context so the user is an admin not the recipient). + * + * @param string $entity + * @param array $filters + * + * @return array + * @throws \CRM_Core_Exception + */ + protected function getFilteredCustomFields(string $entity, array $filters = []): array { + return \CRM_Core_BAO_CustomField::getViewableCustomFields($entity, $filters); + } + + /** + * Given an entity loaded through apiv4 return an array of custom fields for display. + * + * @param array $entityRecord + * @param string $entity + * @param array $filters + * + * @return array + * @throws \Brick\Money\Exception\UnknownCurrencyException + * @throws \CRM_Core_Exception + */ + protected function getCustomFieldDisplay(array $entityRecord, string $entity, array $filters = []): array { + // Fetch the fields, filtered by the entity_extends values + $viewableFields = $this->getFilteredCustomFields($entity, $filters); + + $fields = []; + foreach ($viewableFields as $fieldSpec) { + $fieldName = $fieldSpec['custom_group_id.name'] . '.' . $fieldSpec['name']; + $value = str_replace(' ', '', \CRM_Core_BAO_CustomField::displayValue($entityRecord[$fieldName], $fieldSpec['id'], $entityRecord['id'])); + // I can't see evidence we have filtered out empty strings here historically + // but maybe we should? + $fields[$fieldSpec['custom_group_id.title']][$fieldSpec['label']] = $value; + } + return $fields; + } + +} diff --git a/civicrm/ang/afform/afformQuickAddIndividual.aff.html b/civicrm/ang/afform/afformQuickAddIndividual.aff.html new file mode 100644 index 0000000000..db7d08d399 --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddIndividual.aff.html @@ -0,0 +1,18 @@ +<af-form ctrl="afform"> + <af-entity type="Individual" name="Individual1" actions="{create: true, update: false}" security="RBAC" /> + <fieldset af-fieldset="Individual1" class="af-container"> + <div class="af-container"> + <div class="af-container af-layout-inline"> + <af-field name="first_name" /> + <af-field name="middle_name" /> + <af-field name="last_name" /> + </div> + <div af-join="Email" data="{is_primary: true}"> + <div class="af-container af-layout-inline"> + <af-field name="email" defn="{required: false}" /> + </div> + </div> + </div> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">{{:: ts('Submit') }}</button> +</af-form> diff --git a/civicrm/ang/afform/afformQuickAddIndividual.aff.php b/civicrm/ang/afform/afformQuickAddIndividual.aff.php new file mode 100644 index 0000000000..15a06fc2ce --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddIndividual.aff.php @@ -0,0 +1,14 @@ +<?php + +return [ + 'type' => 'form', + 'title' => ts('New Individual'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/quick-add/Individual', + 'permission' => [ + 'add contacts', + ], + 'permission_operator' => 'AND', + 'submit_enabled' => TRUE, + 'create_submission' => FALSE, +]; diff --git a/civicrm/ang/afform/afformQuickAddOrganization.aff.html b/civicrm/ang/afform/afformQuickAddOrganization.aff.html new file mode 100644 index 0000000000..50a661f8a6 --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddOrganization.aff.html @@ -0,0 +1,16 @@ +<af-form ctrl="afform"> + <af-entity type="Organization" name="Organization1" actions="{create: true, update: false}" security="RBAC" /> + <fieldset af-fieldset="Organization1" class="af-container"> + <div class="af-container"> + <div class="af-container af-layout-inline"> + <af-field name="organization_name" /> + </div> + <div af-join="Email" data="{is_primary: true}"> + <div class="af-container af-layout-inline"> + <af-field name="email" defn="{required: false}"/> + </div> + </div> + </div> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">{{:: ts('Submit') }}</button> +</af-form> diff --git a/civicrm/ang/afform/afformQuickAddOrganization.aff.php b/civicrm/ang/afform/afformQuickAddOrganization.aff.php new file mode 100644 index 0000000000..70308a2f9f --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddOrganization.aff.php @@ -0,0 +1,14 @@ +<?php + +return [ + 'type' => 'form', + 'title' => ts('New Organization'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/quick-add/Organization', + 'permission' => [ + 'add contacts', + ], + 'permission_operator' => 'AND', + 'submit_enabled' => TRUE, + 'create_submission' => FALSE, +]; diff --git a/civicrm/ang/afform/afsearchTabNote.aff.php b/civicrm/ang/afform/afsearchTabNote.aff.php index c22bf3a049..c2a99ba08f 100644 --- a/civicrm/ang/afform/afsearchTabNote.aff.php +++ b/civicrm/ang/afform/afsearchTabNote.aff.php @@ -4,7 +4,7 @@ return [ 'type' => 'search', 'title' => ts('Notes'), 'description' => '', - 'contact_summary' => 'tab', + 'placement' => ['contact_summary_tab'], 'summary_weight' => 100, 'icon' => 'fa-sticky-note-o', 'summary_contact_type' => NULL, diff --git a/civicrm/ang/afform/afsearchTabRel.aff.php b/civicrm/ang/afform/afsearchTabRel.aff.php index 3eb3cb03ae..43af4f00df 100644 --- a/civicrm/ang/afform/afsearchTabRel.aff.php +++ b/civicrm/ang/afform/afsearchTabRel.aff.php @@ -6,7 +6,7 @@ return [ 'permission' => [ 'access CiviCRM', ], - 'contact_summary' => 'tab', + 'placement' => ['contact_summary_tab'], 'icon' => 'fa-handshake-o', 'summary_weight' => 80, 'permission_operator' => 'AND', diff --git a/civicrm/ang/crmUi.js b/civicrm/ang/crmUi.js index 718bf22b0a..811fd8101b 100644 --- a/civicrm/ang/crmUi.js +++ b/civicrm/ang/crmUi.js @@ -729,6 +729,7 @@ crmAutocompleteParams: '<', multi: '<', autoOpen: '<', + quickAdd: '<', staticOptions: '<' }, link: function(scope, element, attr, ctrl) { @@ -791,6 +792,7 @@ // Only auto-open if there are no static options minimumInputLength: ctrl.autoOpen && _.isEmpty(ctrl.staticOptions) ? 0 : 1, static: ctrl.staticOptions || [], + quickAdd: ctrl.quickAdd, }); }); }; diff --git a/civicrm/api/api.php b/civicrm/api/api.php index 42ebc7e36d..4fd54bcfd9 100644 --- a/civicrm/api/api.php +++ b/civicrm/api/api.php @@ -79,9 +79,9 @@ function civicrm_api4(string $entity, string $action, array $params = [], $index if ($index && is_array($index)) { $indexCol = reset($index); $indexField = key($index); - // Index array indicates only 1 or 2 fields need to be selected (except for oddball "Setting" api) - if ($entity !== 'Setting' && property_exists($apiCall, 'select')) { - $apiCall->setSelect([$indexCol]); + // Automatically add index fields(s) to the SELECT clause + if ($entity !== 'Setting' && method_exists($apiCall, 'addSelect')) { + $apiCall->addSelect($indexCol); if ($indexField && $indexField != $indexCol) { $apiCall->addSelect($indexField); } @@ -135,7 +135,7 @@ function civicrm_api3(string $entity, string $action, array $params = []) { $params['version'] = 3; $result = \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params); if (is_array($result) && !empty($result['is_error'])) { - throw new CRM_Core_Exception($result['error_message'], CRM_Utils_Array::value('error_code', $result, 'undefined'), $result); + throw new CRM_Core_Exception($result['error_message'], $result['error_code'] ?? 'undefined', $result); } return $result; } diff --git a/civicrm/api/v3/Activity.php b/civicrm/api/v3/Activity.php index 415f59876d..0c4f19e5b9 100644 --- a/civicrm/api/v3/Activity.php +++ b/civicrm/api/v3/Activity.php @@ -511,7 +511,7 @@ function _civicrm_api3_activity_get_formatResult($params, $activities, $options) if (!empty($returnProperties) || !empty($params['contact_id'])) { foreach ($activities as $activityId => $values) { //@todo - should possibly load activity type id if not loaded (update with id) - _civicrm_api3_custom_data_get($activities[$activityId], CRM_Utils_Array::value('check_permissions', $params), 'Activity', $activityId, NULL, CRM_Utils_Array::value('activity_type_id', $values)); + _civicrm_api3_custom_data_get($activities[$activityId], $params['check_permissions'] ?? NULL, 'Activity', $activityId, NULL, $values['activity_type_id'] ?? NULL); } } return $activities; diff --git a/civicrm/api/v3/Attachment.php b/civicrm/api/v3/Attachment.php index 5e16486707..2b7f12dcca 100644 --- a/civicrm/api/v3/Attachment.php +++ b/civicrm/api/v3/Attachment.php @@ -207,9 +207,9 @@ function _civicrm_api3_attachment_delete_spec(&$spec) { $spec['entity_table'] = $entityFileFields['entity_table']; // Historically this field had no pseudoconstant and APIv3 can't handle it $spec['entity_table']['pseudoconstant'] = NULL; - $spec['entity_table']['title'] = CRM_Utils_Array::value('title', $spec['entity_table'], 'Entity Table') . ' (write-once)'; + $spec['entity_table']['title'] = ($spec['entity_table']['title'] ?? 'Entity Table') . ' (write-once)'; $spec['entity_id'] = $entityFileFields['entity_id']; - $spec['entity_id']['title'] = CRM_Utils_Array::value('title', $spec['entity_id'], 'Entity ID') . ' (write-once)'; + $spec['entity_id']['title'] = ($spec['entity_id']['title'] ?? 'Entity ID') . ' (write-once)'; } /** @@ -469,10 +469,10 @@ function _civicrm_api3_attachment_getfields() { // Historically this field had no pseudoconstant and APIv3 can't handle it $spec['entity_table']['pseudoconstant'] = NULL; // Would be hard to securely handle changes. - $spec['entity_table']['title'] = CRM_Utils_Array::value('title', $spec['entity_table'], 'Entity Table') . ' (write-once)'; + $spec['entity_table']['title'] = ($spec['entity_table']['title'] ?? 'Entity Table') . ' (write-once)'; $spec['entity_id'] = $entityFileFields['entity_id']; // would be hard to securely handle changes - $spec['entity_id']['title'] = CRM_Utils_Array::value('title', $spec['entity_id'], 'Entity ID') . ' (write-once)'; + $spec['entity_id']['title'] = ($spec['entity_id']['title'] ?? 'Entity ID') . ' (write-once)'; $spec['url'] = [ 'title' => 'URL (read-only)', 'description' => 'URL for downloading the file (not searchable, expire-able)', diff --git a/civicrm/api/v3/Case.php b/civicrm/api/v3/Case.php index 51f021cee6..533ab0c90c 100644 --- a/civicrm/api/v3/Case.php +++ b/civicrm/api/v3/Case.php @@ -571,7 +571,7 @@ function civicrm_api3_case_delete($params) { //check parameters civicrm_api3_verify_mandatory($params, NULL, ['id']); - if (CRM_Case_BAO_Case::deleteCase($params['id'], CRM_Utils_Array::value('move_to_trash', $params, FALSE))) { + if (CRM_Case_BAO_Case::deleteCase($params['id'], $params['move_to_trash'] ?? FALSE)) { return civicrm_api3_create_success($params, $params, 'Case', 'delete'); } else { diff --git a/civicrm/api/v3/Contact.php b/civicrm/api/v3/Contact.php index d3e35192ef..747b62f07e 100644 --- a/civicrm/api/v3/Contact.php +++ b/civicrm/api/v3/Contact.php @@ -35,7 +35,7 @@ * @throws \CRM_Core_Exception */ function civicrm_api3_contact_create($params) { - $contactID = CRM_Utils_Array::value('contact_id', $params, CRM_Utils_Array::value('id', $params)); + $contactID = CRM_Utils_Array::value('contact_id', $params, $params['id'] ?? NULL); if ($contactID && !empty($params['check_permissions']) && !CRM_Contact_BAO_Contact_Permission::allow($contactID, CRM_Core_Permission::EDIT)) { throw new \Civi\API\Exception\UnauthorizedException('Permission denied to modify contact record'); @@ -55,13 +55,14 @@ function civicrm_api3_contact_create($params) { if (!$contactID) { // If we get here, we're ready to create a new contact - if (($email = CRM_Utils_Array::value('email', $params)) && !is_array($params['email'])) { + $email = $params['email'] ?? NULL; + if ($email && !is_array($params['email'])) { $defLocType = CRM_Core_BAO_LocationType::getDefault(); $params['email'] = [ 1 => [ 'email' => $email, 'is_primary' => 1, - 'location_type_id' => ($defLocType->id) ? $defLocType->id : 1, + 'location_type_id' => $defLocType->id ?: 1, ], ]; } @@ -471,8 +472,7 @@ function civicrm_api3_contact_delete($params) { if ($skipUndelete && CRM_Financial_BAO_FinancialItem::checkContactPresent([$contactID], $error)) { throw new CRM_Core_Exception($error['_qf_default']); } - if (CRM_Contact_BAO_Contact::deleteContact($contactID, $restore, $skipUndelete, - CRM_Utils_Array::value('check_permissions', $params))) { + if (CRM_Contact_BAO_Contact::deleteContact($contactID, $restore, $skipUndelete, $params['check_permissions'] ?? FALSE)) { return civicrm_api3_create_success(); } throw new CRM_Core_Exception('Could not delete contact'); @@ -763,7 +763,7 @@ function civicrm_api3_contact_merge($params) { [], $params['mode'], FALSE, - CRM_Utils_Array::value('check_permissions', $params) + $params['check_permissions'] ?? FALSE )) != FALSE) { return civicrm_api3_create_success($result, $params); @@ -1204,9 +1204,9 @@ function civicrm_api3_contact_duplicatecheck($params) { $params['match'], $params['match']['contact_type'], $params['rule_type'] ?? '', - CRM_Utils_Array::value('exclude', $params, []), - CRM_Utils_Array::value('check_permissions', $params), - CRM_Utils_Array::value('dedupe_rule_id', $params) + $params['exclude'] ?? [], + $params['check_permissions'] ?? FALSE, + $params['dedupe_rule_id'] ?? NULL ); $values = []; if ($dupes && !empty($params['return'])) { diff --git a/civicrm/api/v3/ContributionPage.php b/civicrm/api/v3/ContributionPage.php index d744043f71..a6649605be 100644 --- a/civicrm/api/v3/ContributionPage.php +++ b/civicrm/api/v3/ContributionPage.php @@ -103,12 +103,23 @@ function civicrm_api3_contribution_page_validate($params) { // one being generated so we generate one first. $originalRequest = $_REQUEST; $qfKey = $_REQUEST['qfKey'] ?? NULL; + $_REQUEST['id'] = $params['id']; + $requestMethod = $_SERVER['REQUEST_METHOD'] ?? NULL; + // This is set to POST in a test - (probably cos we didn't have full form + // testing when it was written). It needs to be get for long enough to + // get past the constructor. + $_SERVER['REQUEST_METHOD'] = 'GET'; + $form = new CRM_Contribute_Form_Contribution_Main(); + $form->controller = new CRM_Contribute_Controller_Contribution(); + if ($requestMethod) { + $_SERVER['REQUEST_METHOD'] = $requestMethod; + } + $form->controller->setStateMachine(new CRM_Contribute_StateMachine_Contribution($form->controller)); + // The submitted values are on the Main form. + $_SESSION['_' . $form->controller->_name . '_container']['values']['Main'] = $params; if (!$qfKey) { - $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Core_Controller', TRUE); + $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Contribute_Controller_Contribution', TRUE); } - $form = new CRM_Contribute_Form_Contribution_Main(); - $form->controller = new CRM_Core_Controller(); - $form->set('id', $params['id']); $form->preProcess(); $errors = CRM_Contribute_Form_Contribution_Main::formRule($params, [], $form); if ($errors === TRUE) { diff --git a/civicrm/api/v3/CustomValue.php b/civicrm/api/v3/CustomValue.php index f2b7fb3194..40feb5c6d5 100644 --- a/civicrm/api/v3/CustomValue.php +++ b/civicrm/api/v3/CustomValue.php @@ -120,7 +120,7 @@ function civicrm_api3_custom_value_get($params) { $getParams = [ 'entityID' => $params['entity_id'], - 'entityType' => CRM_Utils_Array::value('entity_table', $params, ''), + 'entityType' => $params['entity_table'] ?? '', ]; if (strstr($getParams['entityType'], 'civicrm_')) { $getParams['entityType'] = ucfirst(substr($getParams['entityType'], 8)); diff --git a/civicrm/api/v3/Cxn.php b/civicrm/api/v3/Cxn.php index 8c81f3c394..d306d24615 100644 --- a/civicrm/api/v3/Cxn.php +++ b/civicrm/api/v3/Cxn.php @@ -123,7 +123,7 @@ function civicrm_api3_cxn_unregister($params) { /** @var \Civi\Cxn\Rpc\RegistrationClient $client */ $client = \Civi::service('cxn_reg_client'); - list($cxnId, $result) = $client->unregister($appMeta, CRM_Utils_Array::value('force', $params, FALSE)); + [$cxnId, $result] = $client->unregister($appMeta, $params['force'] ?? FALSE); return $result; } diff --git a/civicrm/api/v3/Dedupe.php b/civicrm/api/v3/Dedupe.php index c83a3c46cc..bc070d8170 100644 --- a/civicrm/api/v3/Dedupe.php +++ b/civicrm/api/v3/Dedupe.php @@ -89,10 +89,10 @@ function civicrm_api3_dedupe_create($params) { function civicrm_api3_dedupe_getstatistics($params) { $stats = CRM_Dedupe_Merger::getMergeStats(CRM_Dedupe_Merger::getMergeCacheKeyString( $params['rule_group_id'], - CRM_Utils_Array::value('group_id', $params), - CRM_Utils_Array::value('criteria', $params, []), + $params['group_id'] ?? NULL, + $params['criteria'] ?? [], !empty($params['check_permissions']), - CRM_Utils_Array::value('search_limit', $params, 0) + $params['search_limit'] ?? 0 )); return civicrm_api3_create_success($stats); } @@ -139,7 +139,7 @@ function _civicrm_api3_dedupe_getstatistics_spec(&$params) { */ function civicrm_api3_dedupe_getduplicates($params) { $options = _civicrm_api3_get_options_from_params($params); - $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], CRM_Utils_Array::value('check_permissions', $params), CRM_Utils_Array::value('search_limit', $params, 0), CRM_Utils_Array::value('is_force_new_search', $params)); + $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], $params['check_permissions'] ?? FALSE, $params['search_limit'] ?? 0, $params['is_force_new_search'] ?? 0); return civicrm_api3_create_success($dupePairs); } diff --git a/civicrm/api/v3/EntityTag.php b/civicrm/api/v3/EntityTag.php index cfc212a328..d50c1e35cc 100644 --- a/civicrm/api/v3/EntityTag.php +++ b/civicrm/api/v3/EntityTag.php @@ -123,8 +123,7 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { if ($op == 'add') { $values['total_count'] = $values['added'] = $values['not_added'] = 0; foreach ($tagIDs as $tagID) { - list($te, $a, $na) = CRM_Core_BAO_EntityTag::addEntitiesToTag($entityIDs, $tagID, $entityTable, - CRM_Utils_Array::value('check_permissions', $params)); + list($te, $a, $na) = CRM_Core_BAO_EntityTag::addEntitiesToTag($entityIDs, $tagID, $entityTable, $params['check_permissions'] ?? FALSE); $values['total_count'] += $te; $values['added'] += $a; $values['not_added'] += $na; @@ -133,7 +132,7 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { else { $values['total_count'] = $values['removed'] = $values['not_removed'] = 0; foreach ($tagIDs as $tagID) { - list($te, $r, $nr) = CRM_Core_BAO_EntityTag::removeEntitiesFromTag($entityIDs, $tagID, $entityTable, CRM_Utils_Array::value('check_permissions', $params)); + list($te, $r, $nr) = CRM_Core_BAO_EntityTag::removeEntitiesFromTag($entityIDs, $tagID, $entityTable, $params['check_permissions'] ?? FALSE); $values['total_count'] += $te; $values['removed'] += $r; $values['not_removed'] += $nr; diff --git a/civicrm/api/v3/Extension.php b/civicrm/api/v3/Extension.php index d70fb5a050..2781612136 100644 --- a/civicrm/api/v3/Extension.php +++ b/civicrm/api/v3/Extension.php @@ -210,6 +210,7 @@ function _civicrm_api3_extension_uninstall_spec(&$fields) { * API result */ function civicrm_api3_extension_download($params) { + $params += ['install' => TRUE]; if (!array_key_exists('url', $params)) { if (!CRM_Extension_System::singleton()->getBrowser()->isEnabled()) { throw new CRM_Core_Exception('Automatic downloading is disabled. Try adding parameter "url"'); @@ -241,7 +242,7 @@ function civicrm_api3_extension_download($params) { } CRM_Extension_System::singleton()->getCache()->flush(); CRM_Extension_System::singleton(TRUE); - if (CRM_Utils_Array::value('install', $params, TRUE)) { + if ($params['install']) { CRM_Extension_System::singleton()->getManager()->install([$params['key']]); } @@ -387,7 +388,7 @@ function civicrm_api3_extension_getremote($params) { $info = array_merge($info, (array) $obj); $result[] = $info; } - return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', CRM_Utils_Array::value('return', $params, [])); + return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', $params['return'] ?? []); } /** diff --git a/civicrm/api/v3/Generic.php b/civicrm/api/v3/Generic.php index 85b44c5bc3..46294f1067 100644 --- a/civicrm/api/v3/Generic.php +++ b/civicrm/api/v3/Generic.php @@ -60,11 +60,11 @@ function civicrm_api3_generic_getfields($apiRequest, $unique = TRUE) { } $entity = $apiRequest['entity']; $lowercase_entity = _civicrm_api_get_entity_name_from_camel($entity); - $subentity = $apiRequest['params']['contact_type'] ?? NULL; + $subentity = $apiRequest['params']['contact_type'] ?? NULL; $action = $apiRequest['params']['action'] ?? NULL; $sequential = empty($apiRequest['params']['sequential']) ? 0 : 1; - $apiRequest['params']['options'] = CRM_Utils_Array::value('options', $apiRequest['params'], []); - $optionsToResolve = (array) CRM_Utils_Array::value('get_options', $apiRequest['params']['options'], []); + $apiRequest['params']['options'] = $apiRequest['params']['options'] ?? []; + $optionsToResolve = (array) ($apiRequest['params']['options']['get_options'] ?? []); if (!$action || $action == 'getvalue' || $action == 'getcount') { $action = 'get'; @@ -477,7 +477,7 @@ function _civicrm_api3_generic_getoptions_spec(&$params, $apiRequest) { $params['field']['options'] = []; foreach ($fields['values'] as $name => $field) { if (isset($field['pseudoconstant']) || CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_BOOLEAN) { - $params['field']['options'][$name] = CRM_Utils_Array::value('title', $field, $name); + $params['field']['options'][$name] = $field['title'] ?? $name; } } } diff --git a/civicrm/api/v3/Generic/Setvalue.php b/civicrm/api/v3/Generic/Setvalue.php index 9445a2862a..4e1f5082ef 100644 --- a/civicrm/api/v3/Generic/Setvalue.php +++ b/civicrm/api/v3/Generic/Setvalue.php @@ -56,7 +56,7 @@ function civicrm_api3_generic_setValue($apiRequest) { } $def = $fields[$fieldKey]; - $title = CRM_Utils_Array::value('title', $def, ts('Field')); + $title = $def['title'] ?? ts('Field'); // Disallow empty values except for the number zero. // TODO: create a utility for this since it's needed in many places if (!empty($def['required']) || !empty($def['is_required'])) { diff --git a/civicrm/api/v3/GroupContact.php b/civicrm/api/v3/GroupContact.php index 1233cbff6c..6db637d709 100644 --- a/civicrm/api/v3/GroupContact.php +++ b/civicrm/api/v3/GroupContact.php @@ -50,7 +50,7 @@ function civicrm_api3_group_contact_get($params) { //ie. id passed in so we have to return something return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } - $status = CRM_Utils_Array::value('status', $params, 'Added'); + $status = $params['status'] ?? 'Added'; $groupId = $params['group_id'] ?? NULL; $values = CRM_Contact_BAO_GroupContact::getContactGroup($params['contact_id'], $status, NULL, FALSE, TRUE, FALSE, TRUE, $groupId); @@ -217,8 +217,8 @@ function _civicrm_api3_group_contact_common($params, $op = 'Added') { } } - $method = CRM_Utils_Array::value('method', $params, 'API'); - $status = CRM_Utils_Array::value('status', $params, $op); + $method = $params['method'] ?? 'API'; + $status = $params['status'] ?? $op; $tracking = $params['tracking'] ?? NULL; if ($op == 'Added' || $op == 'Pending') { @@ -274,9 +274,9 @@ function civicrm_api3_group_contact_update_status($params) { CRM_Contact_BAO_GroupContact::addContactsToGroup( [$params['contact_id']], $params['group_id'], - CRM_Utils_Array::value('method', $params, 'API'), + $params['method'] ?? 'API', 'Added', - CRM_Utils_Array::value('tracking', $params) + $params['tracking'] ?? NULL ); return TRUE; diff --git a/civicrm/api/v3/Job.php b/civicrm/api/v3/Job.php index 0303bc29cc..6da5a32881 100644 --- a/civicrm/api/v3/Job.php +++ b/civicrm/api/v3/Job.php @@ -535,11 +535,10 @@ function civicrm_api3_job_process_batch_merge($params) { 'options' => ['limit' => 1], ]); } - $rgid = $params['rgid'] ?? NULL; $gid = $params['gid'] ?? NULL; - $mode = CRM_Utils_Array::value('mode', $params, 'safe'); + $mode = $params['mode'] ?? 'safe'; - $result = CRM_Dedupe_Merger::batchMerge($rule_group_id, $gid, $mode, 1, 2, CRM_Utils_Array::value('criteria', $params, []), CRM_Utils_Array::value('check_permissions', $params), NULL, $params['search_limit']); + $result = CRM_Dedupe_Merger::batchMerge($rule_group_id, $gid, $mode, 1, 2, $params['criteria'] ?? [], $params['check_permissions'] ?? FALSE, NULL, $params['search_limit']); return civicrm_api3_create_success($result, $params); } @@ -622,15 +621,15 @@ function civicrm_api3_job_run_payment_cron($params) { * @return array */ function civicrm_api3_job_cleanup($params) { - $session = CRM_Utils_Array::value('session', $params, TRUE); - $tempTable = CRM_Utils_Array::value('tempTables', $params, TRUE); - $jobLog = CRM_Utils_Array::value('jobLog', $params, TRUE); - $expired = CRM_Utils_Array::value('expiredDbCache', $params, TRUE); - $prevNext = CRM_Utils_Array::value('prevNext', $params, TRUE); - $dbCache = CRM_Utils_Array::value('dbCache', $params, FALSE); - $memCache = CRM_Utils_Array::value('memCache', $params, FALSE); - $tplCache = CRM_Utils_Array::value('tplCache', $params, FALSE); - $wordRplc = CRM_Utils_Array::value('wordRplc', $params, FALSE); + $session = $params['session'] ?? TRUE; + $tempTable = $params['tempTables'] ?? TRUE; + $jobLog = $params['jobLog'] ?? TRUE; + $expired = $params['expiredDbCache'] ?? TRUE; + $prevNext = $params['prevNext'] ?? TRUE; + $dbCache = $params['dbCache'] ?? FALSE; + $memCache = $params['memCache'] ?? FALSE; + $tplCache = $params['tplCache'] ?? FALSE; + $wordRplc = $params['wordRplc'] ?? FALSE; if ($session || $tempTable || $prevNext || $expired) { CRM_Core_BAO_Cache::cleanup($session, $tempTable, $prevNext, $expired); diff --git a/civicrm/api/v3/LocBlock.php b/civicrm/api/v3/LocBlock.php index b8c1a2d6c6..84cbb22375 100644 --- a/civicrm/api/v3/LocBlock.php +++ b/civicrm/api/v3/LocBlock.php @@ -54,7 +54,7 @@ function civicrm_api3_loc_block_create($params) { } // Bother calling the api. else { - $info['contact_id'] = CRM_Utils_Array::value('contact_id', $info, 'null'); + $info['contact_id'] = $info['contact_id'] ?? 'null'; $result = civicrm_api3($item, 'create', $info); $entities[$key] = $result['values'][$result['id']]; $params[$key . '_id'] = $result['id']; diff --git a/civicrm/api/v3/Logging.php b/civicrm/api/v3/Logging.php index 1401abbb17..69d75bfc10 100644 --- a/civicrm/api/v3/Logging.php +++ b/civicrm/api/v3/Logging.php @@ -27,7 +27,7 @@ */ function civicrm_api3_logging_revert($params) { $schema = new CRM_Logging_Schema(); - $reverter = new CRM_Logging_Reverter($params['log_conn_id'], CRM_Utils_Array::value('log_date', $params)); + $reverter = new CRM_Logging_Reverter($params['log_conn_id'], $params['log_date'] ?? NULL); $tables = !empty($params['tables']) ? (array) $params['tables'] : $schema->getLogTablesForContact(); $reverter->calculateDiffsFromLogConnAndDate($tables); $reverter->revert(); @@ -79,7 +79,7 @@ function _civicrm_api3_logging_revert_spec(&$params) { function civicrm_api3_logging_get($params) { $schema = new CRM_Logging_Schema(); $interval = (empty($params['log_date'])) ? NULL : $params['interval']; - $differ = new CRM_Logging_Differ($params['log_conn_id'], CRM_Utils_Array::value('log_date', $params), $interval); + $differ = new CRM_Logging_Differ($params['log_conn_id'], $params['log_date'] ?? NULL, $interval); $tables = !empty($params['tables']) ? (array) $params['tables'] : $schema->getLogTablesForContact(); return civicrm_api3_create_success($differ->getAllChangesForConnection($tables)); } diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php index bdc80f126c..c26d6b02e5 100644 --- a/civicrm/api/v3/Mailing.php +++ b/civicrm/api/v3/Mailing.php @@ -294,7 +294,7 @@ function civicrm_api3_mailing_submit($params) { if (isset($params['approval_date'])) { $updateParams['approval_date'] = $params['approval_date']; $updateParams['approver_id'] = CRM_Core_Session::getLoggedInContactID(); - $updateParams['approval_status_id'] = CRM_Utils_Array::value('approval_status_id', $updateParams, CRM_Core_OptionGroup::getDefaultValue('mail_approval_status')); + $updateParams['approval_status_id'] = $updateParams['approval_status_id'] ?? CRM_Core_OptionGroup::getDefaultValue('mail_approval_status'); } if (isset($params['approval_note'])) { $updateParams['approval_note'] = $params['approval_note']; diff --git a/civicrm/api/v3/Membership.php b/civicrm/api/v3/Membership.php index 7cb21fee7d..19588a01f1 100644 --- a/civicrm/api/v3/Membership.php +++ b/civicrm/api/v3/Membership.php @@ -95,10 +95,10 @@ function civicrm_api3_membership_create($params) { // This is a new membership, calculate the membership dates. $calcDates = CRM_Member_BAO_MembershipType::getDatesForMembershipType( $params['membership_type_id'], - CRM_Utils_Array::value('join_date', $params), - CRM_Utils_Array::value('start_date', $params), - CRM_Utils_Array::value('end_date', $params), - CRM_Utils_Array::value('num_terms', $params, 1) + $params['join_date'] ?? NULL, + $params['start_date'] ?? NULL, + $params['end_date'] ?? NULL, + $params['num_terms'] ?? 1 ); } else { @@ -108,7 +108,7 @@ function civicrm_api3_membership_create($params) { $calcDates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType( $params['id'], NULL, - CRM_Utils_Array::value('membership_type_id', $params), + $params['membership_type_id'] ?? NULL, $params['num_terms'] ); } @@ -212,7 +212,7 @@ function civicrm_api3_membership_get($params) { $activeOnly = $params['filters']['is_current']; unset($params['filters']['is_current']); } - $activeOnly = CRM_Utils_Array::value('active_only', $params, $activeOnly); + $activeOnly = $params['active_only'] ?? $activeOnly; if ($activeOnly && empty($params['status_id'])) { $params['status_id'] = ['IN' => CRM_Member_BAO_MembershipStatus::getMembershipStatusCurrent()]; } @@ -269,7 +269,7 @@ function _civicrm_api3_membership_relationsship_get_customv2behaviour(&$params, $membershipValues[$membershipId]['relationship_name'] = $relationshipType->name_a_b; } - _civicrm_api3_custom_data_get($membershipValues[$membershipId], CRM_Utils_Array::value('check_permissions', $params), 'Membership', $membershipId, NULL, $values['membership_type_id']); + _civicrm_api3_custom_data_get($membershipValues[$membershipId], $params['check_permissions'] ?? FALSE, 'Membership', $membershipId, NULL, $values['membership_type_id']); } $members = $membershipValues; diff --git a/civicrm/api/v3/MembershipStatus.php b/civicrm/api/v3/MembershipStatus.php index 064c2f7d1f..29d1126518 100644 --- a/civicrm/api/v3/MembershipStatus.php +++ b/civicrm/api/v3/MembershipStatus.php @@ -148,7 +148,7 @@ SELECT start_date, end_date, join_date, membership_type_id $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { $membershipTypeID = empty($membershipParams['membership_type_id']) ? $dao->membership_type_id : $membershipParams['membership_type_id']; - $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'now', CRM_Utils_Array::value('ignore_admin_only', $membershipParams), $membershipTypeID, $membershipParams); + $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'now', $membershipParams['ignore_admin_only'] ?? FALSE, $membershipTypeID, $membershipParams); //make is error zero only when valid status found. if (!empty($result['id'])) { $result['is_error'] = 0; diff --git a/civicrm/api/v3/Participant.php b/civicrm/api/v3/Participant.php index e37625d8a9..8f1076b61c 100644 --- a/civicrm/api/v3/Participant.php +++ b/civicrm/api/v3/Participant.php @@ -151,7 +151,7 @@ function civicrm_api3_participant_get($params) { $query->convertToPseudoNames($dao, FALSE, TRUE); $participant[$dao->participant_id] = $query->store($dao); //@todo - is this required - contribution & pledge use the same query but don't self-retrieve custom data - _civicrm_api3_custom_data_get($participant[$dao->participant_id], CRM_Utils_Array::value('check_permissions', $params), 'Participant', $dao->participant_id, NULL); + _civicrm_api3_custom_data_get($participant[$dao->participant_id], $params['check_permissions'] ?? FALSE, 'Participant', $dao->participant_id, NULL); } return civicrm_api3_create_success($participant, $params, 'Participant', 'get', $dao); diff --git a/civicrm/api/v3/Profile.php b/civicrm/api/v3/Profile.php index c9c0af5960..202ca7fc41 100644 --- a/civicrm/api/v3/Profile.php +++ b/civicrm/api/v3/Profile.php @@ -81,7 +81,7 @@ function civicrm_api3_profile_get($params) { $contactFields = $activityFields = []; foreach ($profileFields as $fieldName => $field) { - if (CRM_Utils_Array::value('field_type', $field) == 'Activity') { + if (($field['field_type'] ?? NULL) === 'Activity') { $activityFields[$fieldName] = $field; } else { @@ -244,7 +244,7 @@ function civicrm_api3_profile_submit($params) { ]; } - $contactParams['contact_id'] = empty($params['contact_id']) ? CRM_Utils_Array::value('id', $params) : $params['contact_id']; + $contactParams['contact_id'] = empty($params['contact_id']) ? ($params['id'] ?? NULL) : $params['contact_id']; $contactParams['profile_id'] = $profileID; $contactParams['skip_custom'] = 1; @@ -298,7 +298,7 @@ function _civicrm_api3_profile_submit_spec(&$params, $apirequest) { // we don't resolve state, country & county for performance reasons $resolveOptions = ($apirequest['params']['get_options'] ?? NULL) == 'all'; $profileID = _civicrm_api3_profile_getProfileID($apirequest['params']['profile_id']); - $params = _civicrm_api3_buildprofile_submitfields($profileID, $resolveOptions, CRM_Utils_Array::value('cache_clear', $params)); + $params = _civicrm_api3_buildprofile_submitfields($profileID, $resolveOptions, $params['cache_clear'] ?? FALSE); } elseif (isset($apirequest['params']['cache_clear'])) { _civicrm_api3_buildprofile_submitfields(FALSE, FALSE, TRUE); @@ -360,10 +360,10 @@ function civicrm_api3_profile_apply($params) { list($data, $contactDetails) = CRM_Contact_BAO_Contact::formatProfileContactParams($params, $profileFields, - CRM_Utils_Array::value('contact_id', $params), + $params['contact_id'] ?? NULL, $params['profile_id'], - CRM_Utils_Array::value('contact_type', $params), - CRM_Utils_Array::value('skip_custom', $params, FALSE) + $params['contact_type'] ?? NULL, + $params['skip_custom'] ?? FALSE ); if (empty($data)) { diff --git a/civicrm/api/v3/Setting.php b/civicrm/api/v3/Setting.php index 2420e65865..a2c422bb71 100644 --- a/civicrm/api/v3/Setting.php +++ b/civicrm/api/v3/Setting.php @@ -45,10 +45,10 @@ function civicrm_api3_setting_getfields($params) { $params['filters']['name'] = $params['name']; } $result = CRM_Core_BAO_Setting::getSettingSpecification( - CRM_Utils_Array::value('component_id', $params), - CRM_Utils_Array::value('filters', $params, []), - CRM_Utils_Array::value('domain_id', $params, NULL), - CRM_Utils_Array::value('profile', $params, NULL) + $params['component_id'] ?? NULL, + $params['filters'] ?? [], + $params['domain_id'] ?? NULL, + $params['profile'] ?? NULL ); // find any supplemental information if (!empty($params['action'])) { @@ -296,7 +296,7 @@ function _civicrm_api3_setting_create_spec(&$params) { */ function civicrm_api3_setting_get($params) { $domains = _civicrm_api3_setting_getDomainArray($params); - $result = CRM_Core_BAO_Setting::getItems($params, $domains, CRM_Utils_Array::value('return', $params, [])); + $result = CRM_Core_BAO_Setting::getItems($params, $domains, $params['return'] ?? []); return civicrm_api3_create_success($result, $params, 'Setting', 'get'); } @@ -338,11 +338,11 @@ function civicrm_api3_setting_getvalue($params) { //} return CRM_Core_BAO_Setting::getItem( NULL, - CRM_Utils_Array::value('name', $params), - CRM_Utils_Array::value('component_id', $params), - CRM_Utils_Array::value('default_value', $params), - CRM_Utils_Array::value('contact_id', $params), - CRM_Utils_Array::value('domain_id', $params) + $params['name'] ?? NULL, + $params['component_id'] ?? NULL, + $params['default_value'] ?? NULL, + $params['contact_id'] ?? NULL, + $params['domain_id'] ?? NULL ); } diff --git a/civicrm/api/v3/System.php b/civicrm/api/v3/System.php index 9ce36d94cf..63078987fa 100644 --- a/civicrm/api/v3/System.php +++ b/civicrm/api/v3/System.php @@ -29,8 +29,8 @@ */ function civicrm_api3_system_flush($params) { CRM_Core_Invoke::rebuildMenuAndCaches( - CRM_Utils_Array::value('triggers', $params, FALSE), - CRM_Utils_Array::value('session', $params, FALSE) + $params['triggers'] ?? FALSE, + $params['session'] ?? FALSE ); return civicrm_api3_create_success(); } diff --git a/civicrm/api/v3/Tag.php b/civicrm/api/v3/Tag.php index 89bc9070ce..57434e4341 100644 --- a/civicrm/api/v3/Tag.php +++ b/civicrm/api/v3/Tag.php @@ -45,7 +45,6 @@ function civicrm_api3_tag_create($params) { */ function _civicrm_api3_tag_create_spec(&$params) { $params['used_for']['api.default'] = 'civicrm_contact'; - $params['name']['api.required'] = 1; $params['id']['api.aliases'] = ['tag']; } diff --git a/civicrm/api/v3/utils.php b/civicrm/api/v3/utils.php index 7dff36515b..189b6efdd6 100644 --- a/civicrm/api/v3/utils.php +++ b/civicrm/api/v3/utils.php @@ -497,12 +497,12 @@ function _civicrm_api3_get_using_query_object($entity, $params, $additional_opti $options = _civicrm_api3_get_options_from_params($params, TRUE); $inputParams = array_merge( - CRM_Utils_Array::value('input_params', $options, []), - CRM_Utils_Array::value('input_params', $additional_options, []) + $options['input_params'] ?? [], + $additional_options['input_params'] ?? [] ); $returnProperties = array_merge( - CRM_Utils_Array::value('return', $options, []), - CRM_Utils_Array::value('return', $additional_options, []) + $options['return'] ?? [], + $additional_options['return'] ?? [] ); if (empty($returnProperties)) { $returnProperties = $defaultReturnProperties; @@ -579,7 +579,7 @@ function _civicrm_api3_get_query_object($params, $mode, $entity) { $sort = $options['sort'] ?? NULL; $offset = $options['offset'] ?? NULL; $rowCount = $options['limit'] ?? NULL; - $inputParams = CRM_Utils_Array::value('input_params', $options, []); + $inputParams = $options['input_params'] ?? []; $returnProperties = $options['return'] ?? NULL; if (empty($returnProperties)) { $returnProperties = CRM_Contribute_BAO_Query::defaultReturnProperties($mode); @@ -767,15 +767,15 @@ function _civicrm_api3_get_options_from_params($params, $queryObject = FALSE, $e $sort = $params['option_sort'] ?? $params['option.sort'] ?? $params['sort'] ?? 0; $offset = $params['option_offset'] ?? $params['option.offset'] ?? $params['offset'] ?? 0; - $limit = CRM_Utils_Array::value('rowCount', $params, 25); - $limit = CRM_Utils_Array::value('option.limit', $params, $limit); - $limit = CRM_Utils_Array::value('option_limit', $params, $limit); + $limit = $params['rowCount'] ?? 25; + $limit = $params['option.limit'] ?? $limit; + $limit = $params['option_limit'] ?? $limit; if (isset($params['options']) && is_array($params['options'])) { // is count is set by generic getcount not user $is_count = $params['options']['is_count'] ?? FALSE; $offset = $params['options']['offset'] ?? $offset; - $limit = CRM_Utils_Array::value('limit', $params['options'], $limit); + $limit = $params['options']['limit'] ?? $limit; $sort = $params['options']['sort'] ?? $sort; } @@ -931,7 +931,7 @@ function _civicrm_api3_build_fields_array(&$bao, $unique = TRUE) { function _civicrm_api3_get_unique_name_array(&$bao) { $fields = $bao->fields(); foreach ($fields as $field => $values) { - $uniqueFields[$field] = CRM_Utils_Array::value('name', $values, $field); + $uniqueFields[$field] = $values['name'] ?? $field; } return $uniqueFields; } @@ -1694,7 +1694,7 @@ function _civicrm_api3_validate_date(&$params, &$fieldName, &$fieldInfo) { if (!empty($params[$fieldInfo['name']])) { $fieldValue = _civicrm_api3_getValidDate($fieldValue, $fieldInfo['name'], $fieldInfo['type']); } - if ((CRM_Utils_Array::value('name', $fieldInfo) != $fieldName) && !empty($fieldValue)) { + if (($fieldInfo['name'] ?? NULL) !== $fieldName && !empty($fieldValue)) { $fieldValue = _civicrm_api3_getValidDate($fieldValue, $fieldName, $fieldInfo['type']); } @@ -1975,7 +1975,7 @@ function _civicrm_api_get_custom_fields($entity, &$params) { FALSE, FALSE, // we could / should probably test for other subtypes here - e.g. activity_type_id - CRM_Utils_Array::value('contact_sub_type', $params), + $params['contact_sub_type'] ?? NULL, NULL, FALSE, FALSE, @@ -1988,7 +1988,7 @@ function _civicrm_api_get_custom_fields($entity, &$params) { // Regular fields have a 'name' property $value['name'] = 'custom_' . $key; $value['title'] = $value['label']; - if ($value['data_type'] == 'Date' && CRM_Utils_Array::value('time_format', $value, 0) > 0) { + if ($value['data_type'] == 'Date' && ($value['time_format'] ?? 0) > 0) { $value['data_type'] = 'DateTime'; } $value['type'] = CRM_Utils_Array::value($value['data_type'], CRM_Core_BAO_CustomField::dataToType()); @@ -2317,7 +2317,7 @@ function _civicrm_api3_api_match_pseudoconstant(&$fieldValue, $entity, $fieldNam } $options = civicrm_api($entity, 'getoptions', $options_lookup_params); - $options = CRM_Utils_Array::value('values', $options, []); + $options = $options['values'] ?? []; } if (is_string($fieldValue) && strpos($fieldValue, CRM_Core_DAO::VALUE_SEPARATOR) !== FALSE) { @@ -2327,12 +2327,12 @@ function _civicrm_api3_api_match_pseudoconstant(&$fieldValue, $entity, $fieldNam if (is_array($fieldValue)) { foreach ($fieldValue as &$value) { if (!is_array($value)) { - _civicrm_api3_api_match_pseudoconstant_value($value, $options, $fieldName, CRM_Utils_Array::value('api.required', $fieldInfo)); + _civicrm_api3_api_match_pseudoconstant_value($value, $options, $fieldName, $fieldInfo['api.required'] ?? FALSE); } } } else { - _civicrm_api3_api_match_pseudoconstant_value($fieldValue, $options, $fieldName, CRM_Utils_Array::value('api.required', $fieldInfo)); + _civicrm_api3_api_match_pseudoconstant_value($fieldValue, $options, $fieldName, $fieldInfo['api.required'] ?? FALSE); } } @@ -2439,10 +2439,10 @@ function _civicrm_api3_api_resolve_alias($entity, $fieldName, $action = 'create' return $meta[$fieldName]['name']; } foreach ($meta as $info) { - if ($fieldName == $info['name'] || $fieldName == CRM_Utils_Array::value('uniqueName', $info)) { + if ($fieldName == $info['name'] || $fieldName == ($info['uniqueName'] ?? NULL)) { return $info['name']; } - if (array_search($fieldName, CRM_Utils_Array::value('api.aliases', $info, [])) !== FALSE) { + if (array_search($fieldName, $info['api.aliases'] ?? []) !== FALSE) { return $info['name']; } } @@ -2615,7 +2615,7 @@ function _civicrm_api3_basic_array_get($entity, $params, $records, $idCol, $filt } } - $return = CRM_Utils_Array::value('return', $options, []); + $return = $options['return'] ?? []; if (!empty($return)) { $return['id'] = 1; $matches = CRM_Utils_Array::filterColumns($matches, array_keys($return)); diff --git a/civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json b/civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json deleted file mode 100644 index 9ae139f2fa..0000000000 --- a/civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "civicrm/civicrm-core:es6-promise", - "url": "https://github.com/components/es6-promise/archive/v4.2.4.zip", - "checksum": "383cbddf53fc4153a2bae1ead8b25d03e86997d09e9f7e4622de6b8a85fe07fc", - "ignore": null -} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/bower.json b/civicrm/bower_components/es6-promise/bower.json deleted file mode 100644 index cd7f4085f6..0000000000 --- a/civicrm/bower_components/es6-promise/bower.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "es6-promise", - "namespace": "Promise", - "description": "A polyfill for ES6-style Promises, tracking rsvp", - "authors": [ - "Stefan Penner <stefan.penner@gmail.com>" - ], - "main": "./es6-promise.js", - "keywords": [ - "promise" - ], - "repository": { - "type": "git", - "url": "git://github.com/stefanpenner/es6-promise.git" - }, - "bugs": { - "url": "https://github.com/stefanpenner/es6-promise/issues" - }, - "license": "MIT" -} diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.js b/civicrm/bower_components/es6-promise/es6-promise.auto.js deleted file mode 100644 index 30d01304f0..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.js +++ /dev/null @@ -1,1181 +0,0 @@ -/*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE - * @version v4.2.4+314e4831 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.ES6Promise = factory()); -}(this, (function () { 'use strict'; - -function objectOrFunction(x) { - var type = typeof x; - return x !== null && (type === 'object' || type === 'function'); -} - -function isFunction(x) { - return typeof x === 'function'; -} - - - -var _isArray = void 0; -if (Array.isArray) { - _isArray = Array.isArray; -} else { - _isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; -} - -var isArray = _isArray; - -var len = 0; -var vertxNext = void 0; -var customSchedulerFn = void 0; - -var asap = function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - // If len is 2, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - if (customSchedulerFn) { - customSchedulerFn(flush); - } else { - scheduleFlush(); - } - } -}; - -function setScheduler(scheduleFn) { - customSchedulerFn = scheduleFn; -} - -function setAsap(asapFn) { - asap = asapFn; -} - -var browserWindow = typeof window !== 'undefined' ? window : undefined; -var browserGlobal = browserWindow || {}; -var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; -var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; - -// test for web worker but not in IE10 -var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; - -// node -function useNextTick() { - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // see https://github.com/cujojs/when/issues/410 for details - return function () { - return process.nextTick(flush); - }; -} - -// vertx -function useVertxTimer() { - if (typeof vertxNext !== 'undefined') { - return function () { - vertxNext(flush); - }; - } - - return useSetTimeout(); -} - -function useMutationObserver() { - var iterations = 0; - var observer = new BrowserMutationObserver(flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function () { - node.data = iterations = ++iterations % 2; - }; -} - -// web worker -function useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function () { - return channel.port2.postMessage(0); - }; -} - -function useSetTimeout() { - // Store setTimeout reference so es6-promise will be unaffected by - // other code modifying setTimeout (like sinon.useFakeTimers()) - var globalSetTimeout = setTimeout; - return function () { - return globalSetTimeout(flush, 1); - }; -} - -var queue = new Array(1000); -function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - - callback(arg); - - queue[i] = undefined; - queue[i + 1] = undefined; - } - - len = 0; -} - -function attemptVertx() { - try { - var vertx = Function('return this')().require('vertx'); - vertxNext = vertx.runOnLoop || vertx.runOnContext; - return useVertxTimer(); - } catch (e) { - return useSetTimeout(); - } -} - -var scheduleFlush = void 0; -// Decide what async method to use to triggering processing of queued callbacks: -if (isNode) { - scheduleFlush = useNextTick(); -} else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); -} else if (isWorker) { - scheduleFlush = useMessageChannel(); -} else if (browserWindow === undefined && typeof require === 'function') { - scheduleFlush = attemptVertx(); -} else { - scheduleFlush = useSetTimeout(); -} - -function then(onFulfillment, onRejection) { - var parent = this; - - var child = new this.constructor(noop); - - if (child[PROMISE_ID] === undefined) { - makePromise(child); - } - - var _state = parent._state; - - - if (_state) { - var callback = arguments[_state - 1]; - asap(function () { - return invokeCallback(_state, child, callback, parent._result); - }); - } else { - subscribe(parent, child, onFulfillment, onRejection); - } - - return child; -} - -/** - `Promise.resolve` returns a promise that will become resolved with the - passed `value`. It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - resolve(1); - }); - - promise.then(function(value){ - // value === 1 - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.resolve(1); - - promise.then(function(value){ - // value === 1 - }); - ``` - - @method resolve - @static - @param {Any} value value that the returned promise will be resolved with - Useful for tooling. - @return {Promise} a promise that will become fulfilled with the given - `value` -*/ -function resolve$1(object) { - /*jshint validthis:true */ - var Constructor = this; - - if (object && typeof object === 'object' && object.constructor === Constructor) { - return object; - } - - var promise = new Constructor(noop); - resolve(promise, object); - return promise; -} - -var PROMISE_ID = Math.random().toString(36).substring(2); - -function noop() {} - -var PENDING = void 0; -var FULFILLED = 1; -var REJECTED = 2; - -var TRY_CATCH_ERROR = { error: null }; - -function selfFulfillment() { - return new TypeError("You cannot resolve a promise with itself"); -} - -function cannotReturnOwn() { - return new TypeError('A promises callback cannot return that same promise.'); -} - -function getThen(promise) { - try { - return promise.then; - } catch (error) { - TRY_CATCH_ERROR.error = error; - return TRY_CATCH_ERROR; - } -} - -function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { - try { - then$$1.call(value, fulfillmentHandler, rejectionHandler); - } catch (e) { - return e; - } -} - -function handleForeignThenable(promise, thenable, then$$1) { - asap(function (promise) { - var sealed = false; - var error = tryThen(then$$1, thenable, function (value) { - if (sealed) { - return; - } - sealed = true; - if (thenable !== value) { - resolve(promise, value); - } else { - fulfill(promise, value); - } - }, function (reason) { - if (sealed) { - return; - } - sealed = true; - - reject(promise, reason); - }, 'Settle: ' + (promise._label || ' unknown promise')); - - if (!sealed && error) { - sealed = true; - reject(promise, error); - } - }, promise); -} - -function handleOwnThenable(promise, thenable) { - if (thenable._state === FULFILLED) { - fulfill(promise, thenable._result); - } else if (thenable._state === REJECTED) { - reject(promise, thenable._result); - } else { - subscribe(thenable, undefined, function (value) { - return resolve(promise, value); - }, function (reason) { - return reject(promise, reason); - }); - } -} - -function handleMaybeThenable(promise, maybeThenable, then$$1) { - if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { - handleOwnThenable(promise, maybeThenable); - } else { - if (then$$1 === TRY_CATCH_ERROR) { - reject(promise, TRY_CATCH_ERROR.error); - TRY_CATCH_ERROR.error = null; - } else if (then$$1 === undefined) { - fulfill(promise, maybeThenable); - } else if (isFunction(then$$1)) { - handleForeignThenable(promise, maybeThenable, then$$1); - } else { - fulfill(promise, maybeThenable); - } - } -} - -function resolve(promise, value) { - if (promise === value) { - reject(promise, selfFulfillment()); - } else if (objectOrFunction(value)) { - handleMaybeThenable(promise, value, getThen(value)); - } else { - fulfill(promise, value); - } -} - -function publishRejection(promise) { - if (promise._onerror) { - promise._onerror(promise._result); - } - - publish(promise); -} - -function fulfill(promise, value) { - if (promise._state !== PENDING) { - return; - } - - promise._result = value; - promise._state = FULFILLED; - - if (promise._subscribers.length !== 0) { - asap(publish, promise); - } -} - -function reject(promise, reason) { - if (promise._state !== PENDING) { - return; - } - promise._state = REJECTED; - promise._result = reason; - - asap(publishRejection, promise); -} - -function subscribe(parent, child, onFulfillment, onRejection) { - var _subscribers = parent._subscribers; - var length = _subscribers.length; - - - parent._onerror = null; - - _subscribers[length] = child; - _subscribers[length + FULFILLED] = onFulfillment; - _subscribers[length + REJECTED] = onRejection; - - if (length === 0 && parent._state) { - asap(publish, parent); - } -} - -function publish(promise) { - var subscribers = promise._subscribers; - var settled = promise._state; - - if (subscribers.length === 0) { - return; - } - - var child = void 0, - callback = void 0, - detail = promise._result; - - for (var i = 0; i < subscribers.length; i += 3) { - child = subscribers[i]; - callback = subscribers[i + settled]; - - if (child) { - invokeCallback(settled, child, callback, detail); - } else { - callback(detail); - } - } - - promise._subscribers.length = 0; -} - -function tryCatch(callback, detail) { - try { - return callback(detail); - } catch (e) { - TRY_CATCH_ERROR.error = e; - return TRY_CATCH_ERROR; - } -} - -function invokeCallback(settled, promise, callback, detail) { - var hasCallback = isFunction(callback), - value = void 0, - error = void 0, - succeeded = void 0, - failed = void 0; - - if (hasCallback) { - value = tryCatch(callback, detail); - - if (value === TRY_CATCH_ERROR) { - failed = true; - error = value.error; - value.error = null; - } else { - succeeded = true; - } - - if (promise === value) { - reject(promise, cannotReturnOwn()); - return; - } - } else { - value = detail; - succeeded = true; - } - - if (promise._state !== PENDING) { - // noop - } else if (hasCallback && succeeded) { - resolve(promise, value); - } else if (failed) { - reject(promise, error); - } else if (settled === FULFILLED) { - fulfill(promise, value); - } else if (settled === REJECTED) { - reject(promise, value); - } -} - -function initializePromise(promise, resolver) { - try { - resolver(function resolvePromise(value) { - resolve(promise, value); - }, function rejectPromise(reason) { - reject(promise, reason); - }); - } catch (e) { - reject(promise, e); - } -} - -var id = 0; -function nextId() { - return id++; -} - -function makePromise(promise) { - promise[PROMISE_ID] = id++; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; -} - -function validationError() { - return new Error('Array Methods must be provided an Array'); -} - -var Enumerator = function () { - function Enumerator(Constructor, input) { - this._instanceConstructor = Constructor; - this.promise = new Constructor(noop); - - if (!this.promise[PROMISE_ID]) { - makePromise(this.promise); - } - - if (isArray(input)) { - this.length = input.length; - this._remaining = input.length; - - this._result = new Array(this.length); - - if (this.length === 0) { - fulfill(this.promise, this._result); - } else { - this.length = this.length || 0; - this._enumerate(input); - if (this._remaining === 0) { - fulfill(this.promise, this._result); - } - } - } else { - reject(this.promise, validationError()); - } - } - - Enumerator.prototype._enumerate = function _enumerate(input) { - for (var i = 0; this._state === PENDING && i < input.length; i++) { - this._eachEntry(input[i], i); - } - }; - - Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { - var c = this._instanceConstructor; - var resolve$$1 = c.resolve; - - - if (resolve$$1 === resolve$1) { - var _then = getThen(entry); - - if (_then === then && entry._state !== PENDING) { - this._settledAt(entry._state, i, entry._result); - } else if (typeof _then !== 'function') { - this._remaining--; - this._result[i] = entry; - } else if (c === Promise$2) { - var promise = new c(noop); - handleMaybeThenable(promise, entry, _then); - this._willSettleAt(promise, i); - } else { - this._willSettleAt(new c(function (resolve$$1) { - return resolve$$1(entry); - }), i); - } - } else { - this._willSettleAt(resolve$$1(entry), i); - } - }; - - Enumerator.prototype._settledAt = function _settledAt(state, i, value) { - var promise = this.promise; - - - if (promise._state === PENDING) { - this._remaining--; - - if (state === REJECTED) { - reject(promise, value); - } else { - this._result[i] = value; - } - } - - if (this._remaining === 0) { - fulfill(promise, this._result); - } - }; - - Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { - var enumerator = this; - - subscribe(promise, undefined, function (value) { - return enumerator._settledAt(FULFILLED, i, value); - }, function (reason) { - return enumerator._settledAt(REJECTED, i, reason); - }); - }; - - return Enumerator; -}(); - -/** - `Promise.all` accepts an array of promises, and returns a new promise which - is fulfilled with an array of fulfillment values for the passed promises, or - rejected with the reason of the first passed promise to be rejected. It casts all - elements of the passed iterable to promises as it runs this algorithm. - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = resolve(2); - let promise3 = resolve(3); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // The array here would be [ 1, 2, 3 ]; - }); - ``` - - If any of the `promises` given to `all` are rejected, the first promise - that is rejected will be given as an argument to the returned promises's - rejection handler. For example: - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = reject(new Error("2")); - let promise3 = reject(new Error("3")); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // Code here never runs because there are rejected promises! - }, function(error) { - // error.message === "2" - }); - ``` - - @method all - @static - @param {Array} entries array of promises - @param {String} label optional string for labeling the promise. - Useful for tooling. - @return {Promise} promise that is fulfilled when all `promises` have been - fulfilled, or rejected if any of them become rejected. - @static -*/ -function all(entries) { - return new Enumerator(this, entries).promise; -} - -/** - `Promise.race` returns a new promise which is settled in the same way as the - first passed promise to settle. - - Example: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 2'); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // result === 'promise 2' because it was resolved before promise1 - // was resolved. - }); - ``` - - `Promise.race` is deterministic in that only the state of the first - settled promise matters. For example, even if other promises given to the - `promises` array argument are resolved, but the first settled promise has - become rejected before the other promises became fulfilled, the returned - promise will become rejected: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - reject(new Error('promise 2')); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // Code here never runs - }, function(reason){ - // reason.message === 'promise 2' because promise 2 became rejected before - // promise 1 became fulfilled - }); - ``` - - An example real-world use case is implementing timeouts: - - ```javascript - Promise.race([ajax('foo.json'), timeout(5000)]) - ``` - - @method race - @static - @param {Array} promises array of promises to observe - Useful for tooling. - @return {Promise} a promise which settles in the same way as the first passed - promise to settle. -*/ -function race(entries) { - /*jshint validthis:true */ - var Constructor = this; - - if (!isArray(entries)) { - return new Constructor(function (_, reject) { - return reject(new TypeError('You must pass an array to race.')); - }); - } else { - return new Constructor(function (resolve, reject) { - var length = entries.length; - for (var i = 0; i < length; i++) { - Constructor.resolve(entries[i]).then(resolve, reject); - } - }); - } -} - -/** - `Promise.reject` returns a promise rejected with the passed `reason`. - It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - reject(new Error('WHOOPS')); - }); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.reject(new Error('WHOOPS')); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - @method reject - @static - @param {Any} reason value that the returned promise will be rejected with. - Useful for tooling. - @return {Promise} a promise rejected with the given `reason`. -*/ -function reject$1(reason) { - /*jshint validthis:true */ - var Constructor = this; - var promise = new Constructor(noop); - reject(promise, reason); - return promise; -} - -function needsResolver() { - throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); -} - -function needsNew() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); -} - -/** - Promise objects represent the eventual result of an asynchronous operation. The - primary way of interacting with a promise is through its `then` method, which - registers callbacks to receive either a promise's eventual value or the reason - why the promise cannot be fulfilled. - - Terminology - ----------- - - - `promise` is an object or function with a `then` method whose behavior conforms to this specification. - - `thenable` is an object or function that defines a `then` method. - - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). - - `exception` is a value that is thrown using the throw statement. - - `reason` is a value that indicates why a promise was rejected. - - `settled` the final resting state of a promise, fulfilled or rejected. - - A promise can be in one of three states: pending, fulfilled, or rejected. - - Promises that are fulfilled have a fulfillment value and are in the fulfilled - state. Promises that are rejected have a rejection reason and are in the - rejected state. A fulfillment value is never a thenable. - - Promises can also be said to *resolve* a value. If this value is also a - promise, then the original promise's settled state will match the value's - settled state. So a promise that *resolves* a promise that rejects will - itself reject, and a promise that *resolves* a promise that fulfills will - itself fulfill. - - - Basic Usage: - ------------ - - ```js - let promise = new Promise(function(resolve, reject) { - // on success - resolve(value); - - // on failure - reject(reason); - }); - - promise.then(function(value) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Advanced Usage: - --------------- - - Promises shine when abstracting away asynchronous interactions such as - `XMLHttpRequest`s. - - ```js - function getJSON(url) { - return new Promise(function(resolve, reject){ - let xhr = new XMLHttpRequest(); - - xhr.open('GET', url); - xhr.onreadystatechange = handler; - xhr.responseType = 'json'; - xhr.setRequestHeader('Accept', 'application/json'); - xhr.send(); - - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200) { - resolve(this.response); - } else { - reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); - } - } - }; - }); - } - - getJSON('/posts.json').then(function(json) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Unlike callbacks, promises are great composable primitives. - - ```js - Promise.all([ - getJSON('/posts'), - getJSON('/comments') - ]).then(function(values){ - values[0] // => postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {Function} resolver - Useful for tooling. - @constructor -*/ - -var Promise$2 = function () { - function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } - } - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - Chaining - -------- - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - Assimilation - ------------ - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - If the assimliated promise rejects, then the downstream promise will also reject. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - Simple Example - -------------- - Synchronous Example - ```javascript - let result; - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - findResult(function(result, err){ - if (err) { - // failure - } else { - // success - } - }); - ``` - Promise Example; - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - Advanced Example - -------------- - Synchronous Example - ```javascript - let author, books; - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - function foundBooks(books) { - } - function failure(reason) { - } - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - Promise Example; - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ - - - Promise.prototype.catch = function _catch(onRejection) { - return this.then(null, onRejection); - }; - - /** - `finally` will be invoked regardless of the promise's fate just as native - try/catch/finally behaves - - Synchronous example: - - ```js - findAuthor() { - if (Math.random() > 0.5) { - throw new Error(); - } - return new Author(); - } - - try { - return findAuthor(); // succeed or fail - } catch(error) { - return findOtherAuther(); - } finally { - // always runs - // doesn't affect the return value - } - ``` - - Asynchronous example: - - ```js - findAuthor().catch(function(reason){ - return findOtherAuther(); - }).finally(function(){ - // author was either found, or not - }); - ``` - - @method finally - @param {Function} callback - @return {Promise} - */ - - - Promise.prototype.finally = function _finally(callback) { - var promise = this; - var constructor = promise.constructor; - - return promise.then(function (value) { - return constructor.resolve(callback()).then(function () { - return value; - }); - }, function (reason) { - return constructor.resolve(callback()).then(function () { - throw reason; - }); - }); - }; - - return Promise; -}(); - -Promise$2.prototype.then = then; -Promise$2.all = all; -Promise$2.race = race; -Promise$2.resolve = resolve$1; -Promise$2.reject = reject$1; -Promise$2._setScheduler = setScheduler; -Promise$2._setAsap = setAsap; -Promise$2._asap = asap; - -/*global self*/ -function polyfill() { - var local = void 0; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; - } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } - } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise$2; -} - -// Strange compat.. -Promise$2.polyfill = polyfill; -Promise$2.Promise = Promise$2; - -Promise$2.polyfill(); - -return Promise$2; - -}))); - - - -//# sourceMappingURL=es6-promise.auto.map diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.map b/civicrm/bower_components/es6-promise/es6-promise.auto.map deleted file mode 100644 index bff203c5fa..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;ACJ1BA,SAAO,CAAC,QAAQ,EAAE,CAAC;;;;;;;;","file":"es6-promise.auto.js"} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.min.js b/civicrm/bower_components/es6-promise/es6-promise.auto.min.js deleted file mode 100644 index fdf8bff267..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var e=this,n=e.constructor;return e.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){throw e})})},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it.polyfill(),it}); \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.min.map b/civicrm/bower_components/es6-promise/es6-promise.auto.min.map deleted file mode 100644 index aaa7536787..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;ACJ1BA,SAAO,CAAC,QAAQ,EAAE,CAAC;;;;;;;;","file":"es6-promise.auto.min.js"} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.js b/civicrm/bower_components/es6-promise/es6-promise.js deleted file mode 100644 index de8392feff..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.js +++ /dev/null @@ -1,1179 +0,0 @@ -/*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE - * @version v4.2.4+314e4831 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.ES6Promise = factory()); -}(this, (function () { 'use strict'; - -function objectOrFunction(x) { - var type = typeof x; - return x !== null && (type === 'object' || type === 'function'); -} - -function isFunction(x) { - return typeof x === 'function'; -} - - - -var _isArray = void 0; -if (Array.isArray) { - _isArray = Array.isArray; -} else { - _isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; -} - -var isArray = _isArray; - -var len = 0; -var vertxNext = void 0; -var customSchedulerFn = void 0; - -var asap = function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - // If len is 2, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - if (customSchedulerFn) { - customSchedulerFn(flush); - } else { - scheduleFlush(); - } - } -}; - -function setScheduler(scheduleFn) { - customSchedulerFn = scheduleFn; -} - -function setAsap(asapFn) { - asap = asapFn; -} - -var browserWindow = typeof window !== 'undefined' ? window : undefined; -var browserGlobal = browserWindow || {}; -var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; -var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; - -// test for web worker but not in IE10 -var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; - -// node -function useNextTick() { - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // see https://github.com/cujojs/when/issues/410 for details - return function () { - return process.nextTick(flush); - }; -} - -// vertx -function useVertxTimer() { - if (typeof vertxNext !== 'undefined') { - return function () { - vertxNext(flush); - }; - } - - return useSetTimeout(); -} - -function useMutationObserver() { - var iterations = 0; - var observer = new BrowserMutationObserver(flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function () { - node.data = iterations = ++iterations % 2; - }; -} - -// web worker -function useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function () { - return channel.port2.postMessage(0); - }; -} - -function useSetTimeout() { - // Store setTimeout reference so es6-promise will be unaffected by - // other code modifying setTimeout (like sinon.useFakeTimers()) - var globalSetTimeout = setTimeout; - return function () { - return globalSetTimeout(flush, 1); - }; -} - -var queue = new Array(1000); -function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - - callback(arg); - - queue[i] = undefined; - queue[i + 1] = undefined; - } - - len = 0; -} - -function attemptVertx() { - try { - var vertx = Function('return this')().require('vertx'); - vertxNext = vertx.runOnLoop || vertx.runOnContext; - return useVertxTimer(); - } catch (e) { - return useSetTimeout(); - } -} - -var scheduleFlush = void 0; -// Decide what async method to use to triggering processing of queued callbacks: -if (isNode) { - scheduleFlush = useNextTick(); -} else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); -} else if (isWorker) { - scheduleFlush = useMessageChannel(); -} else if (browserWindow === undefined && typeof require === 'function') { - scheduleFlush = attemptVertx(); -} else { - scheduleFlush = useSetTimeout(); -} - -function then(onFulfillment, onRejection) { - var parent = this; - - var child = new this.constructor(noop); - - if (child[PROMISE_ID] === undefined) { - makePromise(child); - } - - var _state = parent._state; - - - if (_state) { - var callback = arguments[_state - 1]; - asap(function () { - return invokeCallback(_state, child, callback, parent._result); - }); - } else { - subscribe(parent, child, onFulfillment, onRejection); - } - - return child; -} - -/** - `Promise.resolve` returns a promise that will become resolved with the - passed `value`. It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - resolve(1); - }); - - promise.then(function(value){ - // value === 1 - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.resolve(1); - - promise.then(function(value){ - // value === 1 - }); - ``` - - @method resolve - @static - @param {Any} value value that the returned promise will be resolved with - Useful for tooling. - @return {Promise} a promise that will become fulfilled with the given - `value` -*/ -function resolve$1(object) { - /*jshint validthis:true */ - var Constructor = this; - - if (object && typeof object === 'object' && object.constructor === Constructor) { - return object; - } - - var promise = new Constructor(noop); - resolve(promise, object); - return promise; -} - -var PROMISE_ID = Math.random().toString(36).substring(2); - -function noop() {} - -var PENDING = void 0; -var FULFILLED = 1; -var REJECTED = 2; - -var TRY_CATCH_ERROR = { error: null }; - -function selfFulfillment() { - return new TypeError("You cannot resolve a promise with itself"); -} - -function cannotReturnOwn() { - return new TypeError('A promises callback cannot return that same promise.'); -} - -function getThen(promise) { - try { - return promise.then; - } catch (error) { - TRY_CATCH_ERROR.error = error; - return TRY_CATCH_ERROR; - } -} - -function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { - try { - then$$1.call(value, fulfillmentHandler, rejectionHandler); - } catch (e) { - return e; - } -} - -function handleForeignThenable(promise, thenable, then$$1) { - asap(function (promise) { - var sealed = false; - var error = tryThen(then$$1, thenable, function (value) { - if (sealed) { - return; - } - sealed = true; - if (thenable !== value) { - resolve(promise, value); - } else { - fulfill(promise, value); - } - }, function (reason) { - if (sealed) { - return; - } - sealed = true; - - reject(promise, reason); - }, 'Settle: ' + (promise._label || ' unknown promise')); - - if (!sealed && error) { - sealed = true; - reject(promise, error); - } - }, promise); -} - -function handleOwnThenable(promise, thenable) { - if (thenable._state === FULFILLED) { - fulfill(promise, thenable._result); - } else if (thenable._state === REJECTED) { - reject(promise, thenable._result); - } else { - subscribe(thenable, undefined, function (value) { - return resolve(promise, value); - }, function (reason) { - return reject(promise, reason); - }); - } -} - -function handleMaybeThenable(promise, maybeThenable, then$$1) { - if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { - handleOwnThenable(promise, maybeThenable); - } else { - if (then$$1 === TRY_CATCH_ERROR) { - reject(promise, TRY_CATCH_ERROR.error); - TRY_CATCH_ERROR.error = null; - } else if (then$$1 === undefined) { - fulfill(promise, maybeThenable); - } else if (isFunction(then$$1)) { - handleForeignThenable(promise, maybeThenable, then$$1); - } else { - fulfill(promise, maybeThenable); - } - } -} - -function resolve(promise, value) { - if (promise === value) { - reject(promise, selfFulfillment()); - } else if (objectOrFunction(value)) { - handleMaybeThenable(promise, value, getThen(value)); - } else { - fulfill(promise, value); - } -} - -function publishRejection(promise) { - if (promise._onerror) { - promise._onerror(promise._result); - } - - publish(promise); -} - -function fulfill(promise, value) { - if (promise._state !== PENDING) { - return; - } - - promise._result = value; - promise._state = FULFILLED; - - if (promise._subscribers.length !== 0) { - asap(publish, promise); - } -} - -function reject(promise, reason) { - if (promise._state !== PENDING) { - return; - } - promise._state = REJECTED; - promise._result = reason; - - asap(publishRejection, promise); -} - -function subscribe(parent, child, onFulfillment, onRejection) { - var _subscribers = parent._subscribers; - var length = _subscribers.length; - - - parent._onerror = null; - - _subscribers[length] = child; - _subscribers[length + FULFILLED] = onFulfillment; - _subscribers[length + REJECTED] = onRejection; - - if (length === 0 && parent._state) { - asap(publish, parent); - } -} - -function publish(promise) { - var subscribers = promise._subscribers; - var settled = promise._state; - - if (subscribers.length === 0) { - return; - } - - var child = void 0, - callback = void 0, - detail = promise._result; - - for (var i = 0; i < subscribers.length; i += 3) { - child = subscribers[i]; - callback = subscribers[i + settled]; - - if (child) { - invokeCallback(settled, child, callback, detail); - } else { - callback(detail); - } - } - - promise._subscribers.length = 0; -} - -function tryCatch(callback, detail) { - try { - return callback(detail); - } catch (e) { - TRY_CATCH_ERROR.error = e; - return TRY_CATCH_ERROR; - } -} - -function invokeCallback(settled, promise, callback, detail) { - var hasCallback = isFunction(callback), - value = void 0, - error = void 0, - succeeded = void 0, - failed = void 0; - - if (hasCallback) { - value = tryCatch(callback, detail); - - if (value === TRY_CATCH_ERROR) { - failed = true; - error = value.error; - value.error = null; - } else { - succeeded = true; - } - - if (promise === value) { - reject(promise, cannotReturnOwn()); - return; - } - } else { - value = detail; - succeeded = true; - } - - if (promise._state !== PENDING) { - // noop - } else if (hasCallback && succeeded) { - resolve(promise, value); - } else if (failed) { - reject(promise, error); - } else if (settled === FULFILLED) { - fulfill(promise, value); - } else if (settled === REJECTED) { - reject(promise, value); - } -} - -function initializePromise(promise, resolver) { - try { - resolver(function resolvePromise(value) { - resolve(promise, value); - }, function rejectPromise(reason) { - reject(promise, reason); - }); - } catch (e) { - reject(promise, e); - } -} - -var id = 0; -function nextId() { - return id++; -} - -function makePromise(promise) { - promise[PROMISE_ID] = id++; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; -} - -function validationError() { - return new Error('Array Methods must be provided an Array'); -} - -var Enumerator = function () { - function Enumerator(Constructor, input) { - this._instanceConstructor = Constructor; - this.promise = new Constructor(noop); - - if (!this.promise[PROMISE_ID]) { - makePromise(this.promise); - } - - if (isArray(input)) { - this.length = input.length; - this._remaining = input.length; - - this._result = new Array(this.length); - - if (this.length === 0) { - fulfill(this.promise, this._result); - } else { - this.length = this.length || 0; - this._enumerate(input); - if (this._remaining === 0) { - fulfill(this.promise, this._result); - } - } - } else { - reject(this.promise, validationError()); - } - } - - Enumerator.prototype._enumerate = function _enumerate(input) { - for (var i = 0; this._state === PENDING && i < input.length; i++) { - this._eachEntry(input[i], i); - } - }; - - Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { - var c = this._instanceConstructor; - var resolve$$1 = c.resolve; - - - if (resolve$$1 === resolve$1) { - var _then = getThen(entry); - - if (_then === then && entry._state !== PENDING) { - this._settledAt(entry._state, i, entry._result); - } else if (typeof _then !== 'function') { - this._remaining--; - this._result[i] = entry; - } else if (c === Promise$1) { - var promise = new c(noop); - handleMaybeThenable(promise, entry, _then); - this._willSettleAt(promise, i); - } else { - this._willSettleAt(new c(function (resolve$$1) { - return resolve$$1(entry); - }), i); - } - } else { - this._willSettleAt(resolve$$1(entry), i); - } - }; - - Enumerator.prototype._settledAt = function _settledAt(state, i, value) { - var promise = this.promise; - - - if (promise._state === PENDING) { - this._remaining--; - - if (state === REJECTED) { - reject(promise, value); - } else { - this._result[i] = value; - } - } - - if (this._remaining === 0) { - fulfill(promise, this._result); - } - }; - - Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { - var enumerator = this; - - subscribe(promise, undefined, function (value) { - return enumerator._settledAt(FULFILLED, i, value); - }, function (reason) { - return enumerator._settledAt(REJECTED, i, reason); - }); - }; - - return Enumerator; -}(); - -/** - `Promise.all` accepts an array of promises, and returns a new promise which - is fulfilled with an array of fulfillment values for the passed promises, or - rejected with the reason of the first passed promise to be rejected. It casts all - elements of the passed iterable to promises as it runs this algorithm. - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = resolve(2); - let promise3 = resolve(3); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // The array here would be [ 1, 2, 3 ]; - }); - ``` - - If any of the `promises` given to `all` are rejected, the first promise - that is rejected will be given as an argument to the returned promises's - rejection handler. For example: - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = reject(new Error("2")); - let promise3 = reject(new Error("3")); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // Code here never runs because there are rejected promises! - }, function(error) { - // error.message === "2" - }); - ``` - - @method all - @static - @param {Array} entries array of promises - @param {String} label optional string for labeling the promise. - Useful for tooling. - @return {Promise} promise that is fulfilled when all `promises` have been - fulfilled, or rejected if any of them become rejected. - @static -*/ -function all(entries) { - return new Enumerator(this, entries).promise; -} - -/** - `Promise.race` returns a new promise which is settled in the same way as the - first passed promise to settle. - - Example: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 2'); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // result === 'promise 2' because it was resolved before promise1 - // was resolved. - }); - ``` - - `Promise.race` is deterministic in that only the state of the first - settled promise matters. For example, even if other promises given to the - `promises` array argument are resolved, but the first settled promise has - become rejected before the other promises became fulfilled, the returned - promise will become rejected: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - reject(new Error('promise 2')); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // Code here never runs - }, function(reason){ - // reason.message === 'promise 2' because promise 2 became rejected before - // promise 1 became fulfilled - }); - ``` - - An example real-world use case is implementing timeouts: - - ```javascript - Promise.race([ajax('foo.json'), timeout(5000)]) - ``` - - @method race - @static - @param {Array} promises array of promises to observe - Useful for tooling. - @return {Promise} a promise which settles in the same way as the first passed - promise to settle. -*/ -function race(entries) { - /*jshint validthis:true */ - var Constructor = this; - - if (!isArray(entries)) { - return new Constructor(function (_, reject) { - return reject(new TypeError('You must pass an array to race.')); - }); - } else { - return new Constructor(function (resolve, reject) { - var length = entries.length; - for (var i = 0; i < length; i++) { - Constructor.resolve(entries[i]).then(resolve, reject); - } - }); - } -} - -/** - `Promise.reject` returns a promise rejected with the passed `reason`. - It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - reject(new Error('WHOOPS')); - }); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.reject(new Error('WHOOPS')); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - @method reject - @static - @param {Any} reason value that the returned promise will be rejected with. - Useful for tooling. - @return {Promise} a promise rejected with the given `reason`. -*/ -function reject$1(reason) { - /*jshint validthis:true */ - var Constructor = this; - var promise = new Constructor(noop); - reject(promise, reason); - return promise; -} - -function needsResolver() { - throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); -} - -function needsNew() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); -} - -/** - Promise objects represent the eventual result of an asynchronous operation. The - primary way of interacting with a promise is through its `then` method, which - registers callbacks to receive either a promise's eventual value or the reason - why the promise cannot be fulfilled. - - Terminology - ----------- - - - `promise` is an object or function with a `then` method whose behavior conforms to this specification. - - `thenable` is an object or function that defines a `then` method. - - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). - - `exception` is a value that is thrown using the throw statement. - - `reason` is a value that indicates why a promise was rejected. - - `settled` the final resting state of a promise, fulfilled or rejected. - - A promise can be in one of three states: pending, fulfilled, or rejected. - - Promises that are fulfilled have a fulfillment value and are in the fulfilled - state. Promises that are rejected have a rejection reason and are in the - rejected state. A fulfillment value is never a thenable. - - Promises can also be said to *resolve* a value. If this value is also a - promise, then the original promise's settled state will match the value's - settled state. So a promise that *resolves* a promise that rejects will - itself reject, and a promise that *resolves* a promise that fulfills will - itself fulfill. - - - Basic Usage: - ------------ - - ```js - let promise = new Promise(function(resolve, reject) { - // on success - resolve(value); - - // on failure - reject(reason); - }); - - promise.then(function(value) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Advanced Usage: - --------------- - - Promises shine when abstracting away asynchronous interactions such as - `XMLHttpRequest`s. - - ```js - function getJSON(url) { - return new Promise(function(resolve, reject){ - let xhr = new XMLHttpRequest(); - - xhr.open('GET', url); - xhr.onreadystatechange = handler; - xhr.responseType = 'json'; - xhr.setRequestHeader('Accept', 'application/json'); - xhr.send(); - - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200) { - resolve(this.response); - } else { - reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); - } - } - }; - }); - } - - getJSON('/posts.json').then(function(json) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Unlike callbacks, promises are great composable primitives. - - ```js - Promise.all([ - getJSON('/posts'), - getJSON('/comments') - ]).then(function(values){ - values[0] // => postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {Function} resolver - Useful for tooling. - @constructor -*/ - -var Promise$1 = function () { - function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } - } - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - Chaining - -------- - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - Assimilation - ------------ - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - If the assimliated promise rejects, then the downstream promise will also reject. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - Simple Example - -------------- - Synchronous Example - ```javascript - let result; - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - findResult(function(result, err){ - if (err) { - // failure - } else { - // success - } - }); - ``` - Promise Example; - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - Advanced Example - -------------- - Synchronous Example - ```javascript - let author, books; - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - function foundBooks(books) { - } - function failure(reason) { - } - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - Promise Example; - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ - - - Promise.prototype.catch = function _catch(onRejection) { - return this.then(null, onRejection); - }; - - /** - `finally` will be invoked regardless of the promise's fate just as native - try/catch/finally behaves - - Synchronous example: - - ```js - findAuthor() { - if (Math.random() > 0.5) { - throw new Error(); - } - return new Author(); - } - - try { - return findAuthor(); // succeed or fail - } catch(error) { - return findOtherAuther(); - } finally { - // always runs - // doesn't affect the return value - } - ``` - - Asynchronous example: - - ```js - findAuthor().catch(function(reason){ - return findOtherAuther(); - }).finally(function(){ - // author was either found, or not - }); - ``` - - @method finally - @param {Function} callback - @return {Promise} - */ - - - Promise.prototype.finally = function _finally(callback) { - var promise = this; - var constructor = promise.constructor; - - return promise.then(function (value) { - return constructor.resolve(callback()).then(function () { - return value; - }); - }, function (reason) { - return constructor.resolve(callback()).then(function () { - throw reason; - }); - }); - }; - - return Promise; -}(); - -Promise$1.prototype.then = then; -Promise$1.all = all; -Promise$1.race = race; -Promise$1.resolve = resolve$1; -Promise$1.reject = reject$1; -Promise$1._setScheduler = setScheduler; -Promise$1._setAsap = setAsap; -Promise$1._asap = asap; - -/*global self*/ -function polyfill() { - var local = void 0; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; - } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } - } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise$1; -} - -// Strange compat.. -Promise$1.polyfill = polyfill; -Promise$1.Promise = Promise$1; - -return Promise$1; - -}))); - - - -//# sourceMappingURL=es6-promise.map diff --git a/civicrm/bower_components/es6-promise/es6-promise.map b/civicrm/bower_components/es6-promise/es6-promise.map deleted file mode 100644 index bbe71e43fc..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;;;;;;;","file":"es6-promise.js"} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.min.js b/civicrm/bower_components/es6-promise/es6-promise.min.js deleted file mode 100644 index 1d9dc4877a..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var e=this,n=e.constructor;return e.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){throw e})})},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it}); \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.min.map b/civicrm/bower_components/es6-promise/es6-promise.min.map deleted file mode 100644 index 0488c1d80c..0000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;;;;;;;","file":"es6-promise.min.js"} \ No newline at end of file diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index a7c635d482..4dad4984e4 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.67.3', + return array( 'version' => '5.68.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/composer.json b/civicrm/composer.json index 6c7c18a522..f29ffaa536 100644 --- a/civicrm/composer.json +++ b/civicrm/composer.json @@ -102,7 +102,7 @@ "symfony/polyfill-php80": "^1.0", "symfony/polyfill-php81": "^1.0", "symfony/polyfill-php82": "^1.0", - "html2text/html2text": "^4.3.1", + "soundasleep/html2text": "^2.1", "psr/container": "~1.0 || ~2.0", "ext-fileinfo": "*" }, @@ -202,9 +202,6 @@ "path": "bower_components/es-module-shims/dist/es-module-shims.js", "_comment": "See also https://github.com/guybedford/es-module-shims/. MIT license." }, - "es6-promise": { - "url": "https://github.com/components/es6-promise/archive/v4.2.4.zip" - }, "ext-greenwich-bootstrap3": { "url": "https://github.com/twbs/bootstrap-sass/archive/v{$version}.zip", "path": "ext/greenwich/extern/bootstrap3", @@ -275,9 +272,6 @@ "Update gitignore to ensure that sites that manage via git don't miss out on the important db.json file": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/15.patch", "Apply patch to fix php8.2 deprecation notice on dynamic property $filename": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/17.patch" }, - "html2text/html2text": { - "Fix deprecation warning in php8.1 on html_entity_decode": "https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch" - }, "pear/db": { "Apply patch to ensure that MySQLI reporting remains the same in php8.1": "https://patch-diff.githubusercontent.com/raw/pear/DB/pull/13.patch", "Apply patch to fix deprecations in php8.2": "https://patch-diff.githubusercontent.com/raw/pear/DB/pull/14.patch", diff --git a/civicrm/composer.lock b/civicrm/composer.lock index 9e499313af..2bd8d4e50e 100644 --- a/civicrm/composer.lock +++ b/civicrm/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "11bd73682ccf3e9de1d825ce08bbf371", + "content-hash": "877911b3eb22b827449c0a1b597d2703", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -966,47 +966,6 @@ ], "time": "2023-04-17T16:00:37+00:00" }, - { - "name": "html2text/html2text", - "version": "4.3.1", - "source": { - "type": "git", - "url": "https://github.com/mtibben/html2text.git", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - }, - "type": "library", - "autoload": { - "psr-4": { - "Html2Text\\": [ - "src/", - "test/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Converts HTML to formatted plain text", - "support": { - "issues": "https://github.com/mtibben/html2text/issues", - "source": "https://github.com/mtibben/html2text/tree/4.3.1" - }, - "time": "2020-04-16T23:44:31+00:00" - }, { "name": "laminas/laminas-escaper", "version": "2.6.1", @@ -3414,6 +3373,61 @@ }, "time": "2022-05-16T07:22:18+00:00" }, + { + "name": "soundasleep/html2text", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/soundasleep/html2text.git", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/soundasleep/html2text/zipball/83502b6f8f1aaef8e2e238897199d64f284b4af3", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "description": "A PHP script to convert HTML into a plain text format", + "homepage": "https://github.com/soundasleep/html2text", + "keywords": [ + "email", + "html", + "php", + "text" + ], + "support": { + "email": "support@jevon.org", + "issues": "https://github.com/soundasleep/html2text/issues", + "source": "https://github.com/soundasleep/html2text/tree/2.1.0" + }, + "time": "2023-01-06T09:28:15+00:00" + }, { "name": "symfony/config", "version": "v4.4.42", diff --git a/civicrm/css/joomla.css b/civicrm/css/joomla.css index 7e902f35ba..46eb7ab7d5 100644 --- a/civicrm/css/joomla.css +++ b/civicrm/css/joomla.css @@ -6,11 +6,9 @@ div#toolbar-box .icon-48-generic { display: none; } - div#toolbar-box { height: 26px; } - fieldset { margin-bottom: 1em; padding: .5em; @@ -31,12 +29,10 @@ img { #crm-container tr td { font-size: 1em; } - /* Added in CiviCRM 2.1 to overwrite tiny font in TinyMCE editor. */ #crm-container #content table.mceLayout td { font-size: 0em; } - th { text-align: left; padding-right: 1em; @@ -52,11 +48,9 @@ tr.light { border-bottom: 1px solid #ccc; padding: 0.1em 0.6em; } - td.active { background-color: #ddd; } - td.label { background: none; color: #3e3e3e; @@ -67,7 +61,7 @@ td.label { ** Other common styles */ .breadcrumb { - padding-bottom: .5em + padding-bottom: .5em; } .block ul { margin: 0; @@ -228,19 +222,9 @@ br.clear { border-color: red; color: red; } -#sidebar-left, -#sidebar-right { - background-color: #ddd; - width: 16em; - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 20px; - vertical-align: top; -} - -#content-right { - background-color: #ffffff; +#crm-content { + padding: 1rem; } - #footer { padding: 1em; font-size: 0.8em; @@ -289,7 +273,6 @@ br.clear { .box .title { font-size: 1.1em; } - #module-status, .version { font-size: 11px; @@ -304,19 +287,16 @@ br.clear { /* Joomla Admin Menu alterations */ /* Moved from civicrm.css in v3.2 */ - div#toolbar-box div.m { padding: 0px !important; min-height: 0; border: 0; margin-top: 8px; } - div#toolbar-box, div#toolbar-box div.m { height: auto; } - .crm-tab-button, .ui-tabs .ui-tabs-nav li { border: 1px; @@ -333,9 +313,6 @@ div#toolbar-box div.m { padding-bottom: 0; border: 1px solid #999 !important; } -#crm-container { - font-size: 11px; -} #crm-container .col1 { margin: 0; } @@ -345,11 +322,9 @@ div#toolbar-box div.m { .ac_results .ac_odd { background-color: #444; } - #crm-notification-container { top: 100px; } - .crm-container textarea, .crm-container input, .crm-container select { @@ -369,22 +344,18 @@ div#toolbar-box div.m { .crm-container button[type=submit] { height: auto; } - .crm-container .disabled { font-weight: normal; } - #crm-container .form-layout td.label, .crm-container .form-layout td.label { width: inherit; } - #crm-container .crm-event-form-fee-block .label { background-color: inherit; width: inherit; display: block; } - /* dev/core#874 the width:auto styling above causes the menubar colour picker to be squeezed */ .crm-container input.crm-form-color { width: 3.6em; @@ -405,10 +376,6 @@ body.admin.com_civicrm.task-civicrmupgrade .container-fluid.container-main { body.admin.com_civicrm #crm-nav-menu-container { padding-bottom: 0 !important; } -body.admin.com_civicrm #content-right { - padding: 12px; -} - /* Make footer admin bar hide behind popup windows (CRM-15723) */ body.ui-dialog-open #status { z-index: 100 !important; @@ -416,18 +383,12 @@ body.ui-dialog-open #status { /* Joomla 4 */ -body.admin.com_civicrm.layout-default #content { - padding: 0; -} - body.admin.com_civicrm.layout-default #subhead-container { display: none; } - body.admin.com_civicrm.layout-default .crm-container .crm-dashlet { max-width: 50vw; /* fixes over-wide news dashlet */ } - body.admin.com_civicrm.layout-default .crm-container .content { padding: inherit; /* overrides J4 duplicated padding */ } @@ -437,11 +398,9 @@ body.admin.com_civicrm.layout-default .crm-container .content { body.admin.com_civicrm.layout-default .crm-container.ui-dialog.ui-resizable { z-index: 1021; } - body.admin.com_civicrm.layout-default .ui-widget-overlay { z-index: 1; } - body.admin.com_civicrm.layout-default .crm-container .modal-dialog { max-width: inherit; padding: 0; diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php index cf283b74a7..e1516a21e6 100644 --- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php +++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php @@ -13,6 +13,12 @@ class AfformAdminMeta { * @return array */ public static function getAdminSettings() { + $afformPlacement = \CRM_Utils_Array::formatForSelect2((array) \Civi\Api4\OptionValue::get(FALSE) + ->addSelect('value', 'label', 'icon', 'description') + ->addWhere('is_active', '=', TRUE) + ->addWhere('option_group_id:name', '=', 'afform_placement') + ->addOrderBy('weight') + ->execute(), 'label', 'value'); $afformTypes = (array) \Civi\Api4\OptionValue::get(FALSE) ->addSelect('name', 'label', 'icon') ->addWhere('is_active', '=', TRUE) @@ -31,6 +37,7 @@ class AfformAdminMeta { } return [ 'afform_type' => $afformTypes, + 'afform_placement' => $afformPlacement, 'search_operators' => \Civi\Afform\Utils::getSearchOperators(), ]; } diff --git a/civicrm/ext/afform/admin/ang/afAdmin.js b/civicrm/ext/afform/admin/ang/afAdmin.js index 8d45473732..af06f68e98 100644 --- a/civicrm/ext/afform/admin/ang/afAdmin.js +++ b/civicrm/ext/afform/admin/ang/afAdmin.js @@ -11,7 +11,7 @@ // Load data for lists afforms: function(crmApi4) { return crmApi4('Afform', 'get', { - select: ['name', 'title', 'type', 'server_route', 'is_public', 'submission_count', 'submission_date', 'submit_limit', 'submit_enabled', 'submit_currently_open', 'has_local', 'has_base', 'base_module', 'base_module:label', 'is_dashlet', 'contact_summary:label'] + select: ['name', 'title', 'type', 'server_route', 'is_public', 'submission_count', 'submission_date', 'submit_limit', 'submit_enabled', 'submit_currently_open', 'has_local', 'has_base', 'base_module', 'base_module:label', 'placement:label'] }); } } diff --git a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js index 70c9536f93..621947cf52 100644 --- a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js +++ b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js @@ -24,14 +24,7 @@ this.afforms = _.transform(afforms, function(afforms, afform) { afform.type = afform.type || 'system'; - // Aggregate a couple fields for the "Placement" column - afform.placement = []; - if (afform.is_dashlet) { - afform.placement.push(ts('Dashboard')); - } - if (afform['contact_summary:label']) { - afform.placement.push(afform['contact_summary:label']); - } + afform.placement = afform['placement:label']; if (afform.submission_date) { afform.submission_date = CRM.utils.formatDate(afform.submission_date); } diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.js b/civicrm/ext/afform/admin/ang/afGuiEditor.js index 120798c721..6b52f6228d 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor.js @@ -141,7 +141,7 @@ }); }, - meta: CRM.afGuiEditor, + meta: _.extend(CRM.afGuiEditor, CRM.afAdmin), getEntity: function(entityName) { return CRM.afGuiEditor.entities[entityName]; diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js index 07eb9fabeb..d2279c950f 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js @@ -99,10 +99,10 @@ delete editor.afform.name; delete editor.afform.server_route; delete editor.afform.navigation; - editor.afform.is_dashlet = false; editor.afform.title += ' ' + ts('(copy)'); } editor.afform.icon = editor.afform.icon || 'fa-list-alt'; + editor.afform.placement = editor.afform.placement || []; $scope.canvasTab = 'layout'; $scope.layoutHtml = ''; $scope.entities = {}; @@ -332,14 +332,16 @@ return filter ? _.filter($scope.entities, filter) : _.toArray($scope.entities); }; - this.toggleContactSummary = function() { - if (editor.afform.contact_summary) { - editor.afform.contact_summary = null; + this.isContactSummary = function() { + return editor.afform.placement.includes('contact_summary_block') || editor.afform.placement.includes('contact_summary_tab'); + }; + + this.onChangePlacement = function() { + if (!editor.isContactSummary()) { _.each(editor.searchDisplays, function(searchDisplay) { delete searchDisplay.element.filters; }); } else { - editor.afform.contact_summary = 'block'; _.each(editor.searchDisplays, function(searchDisplay) { var filterOptions = getSearchFilterOptions(searchDisplay.settings); if (filterOptions.length) { diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html index 1d1001f888..4f52e8b0e0 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html @@ -77,4 +77,12 @@ </div> </div> </fieldset> + + <fieldset> + <legend>{{:: ts('Options') }}</legend> + <label>{{:: ts('Remember Filters') }} <input type="checkbox" ng-model="$ctrl.display.fieldset['store-values']"></label> + <p class="help-block"> + {{:: ts('Filter fields will retain their value when the same user revisits the form.') }} + </p> + </fieldset> </div> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html index d18e23cfdc..b439b4c816 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html @@ -43,7 +43,7 @@ <label for="af_config_form_server_route"> {{:: ts('Page Route') }} </label> - <input ng-model="editor.afform.server_route" name="server_route" class="form-control" id="af_config_form_server_route" pattern="^civicrm\/[-0-9a-zA-Z\/_]+$" onfocus="this.value = this.value || 'civicrm/'" onblur="if (this.value === 'civicrm/') this.value = ''" title="{{:: ts('Path must begin with "civicrm/"') }}" ng-model-options="editor.debounceMode"> + <input ng-model="editor.afform.server_route" name="server_route" class="form-control" id="af_config_form_server_route" pattern="^civicrm\/[-0-9a-zA-Z\/_]+$" onfocus="this.value = this.value || 'civicrm/'" onblur="if (this.value === 'civicrm/') this.value = ''" title="{{:: ts('Path must begin with "civicrm/"') }}" placeholder="{{:: ts('None') }}" ng-model-options="editor.debounceMode"> <p class="help-block">{{:: ts('Expose the form as a standalone webpage. (Example: "civicrm/my-form")') }}</p> </div> @@ -54,14 +54,6 @@ </label> </div> - <div class="form-group" ng-if="!!editor.afform.server_route"> - <label> - <input type="checkbox" ng-model="editor.afform.is_token"> - {{:: ts('Provide Email Token') }} - </label> - <p class="help-block">{{:: ts('Allows CiviMail authors to easily link to this page') }}</p> - </div> - <div class="form-group"> <div class="form-inline"> <label ng-class="{disabled: !editor.afform.server_route}"> @@ -92,33 +84,22 @@ </div> <div class="form-group"> + <label for="afform_placement"> + {{:: ts('Expose To') }} + </label> + <input ng-list crm-ui-select="{multiple: true, data: editor.meta.afform_placement, placeholder: ts('None')}" class="form-control" id="afform_placement" ng-model="editor.afform.placement" ng-change="editor.onChangePlacement()"> + <p class="help-block">{{:: ts('Additional contexts in which the form can be embedded') }}</p> + </div> + + <div class="form-group" ng-if="editor.afform.placement.includes('contact_summary_block') || editor.afform.placement.includes('contact_summary_tab')"> <div class="form-inline"> - <label> - <input type="checkbox" ng-checked="editor.afform.contact_summary" ng-click="editor.toggleContactSummary()"> - {{:: ts('Add to Contact Summary Page') }} - </label> - <select class="form-control" ng-model="editor.afform.contact_summary" ng-if="editor.afform.contact_summary"> - <option value="block">{{:: ts('As Block') }}</option> - <option value="tab">{{:: ts('As Tab') }}</option> - </select> + <label for="afform_summary_contact_type">{{:: ts('For') }}</label> + <input class="form-control" crm-autocomplete="'ContactType'" id="afform_summary_contact_type" ng-model="editor.afform.summary_contact_type" auto-open="true" multi="true" crm-autocomplete-params="{key: 'name'}" placeholder="{{:: ts('Any contact type') }}"> </div> - <div class="form-inline" ng-if="editor.afform.contact_summary"> + <div class="form-inline"> <label for="afform_summary_weight">{{:: ts('Position') }}</label> <input class="form-control" type="number" id="afform_summary_weight" ng-model="editor.afform.summary_weight" placeholder="{{:: ts('Auto') }}"> - <label for="afform_summary_contact_type">{{:: ts('For') }}</label> - <input class="form-control" crm-autocomplete="'ContactType'" id="afform_summary_contact_type" ng-model="editor.afform.summary_contact_type" auto-open="true" multi="true" crm-autocomplete-params="{key: 'name'}" placeholder="{{:: ts('Any contact type') }}"> </div> - <p class="help-block" ng-show="editor.afform.contact_summary"> - {{:: ts('Placement can be configured using the Contact Layout Editor.') }} - </p> - </div> - - <div class="form-group"> - <label> - <input type="checkbox" ng-model="editor.afform.is_dashlet"> - {{:: ts('Add to Dashboard') }} - </label> - <p class="help-block">{{:: ts('Allow CiviCRM users to add the form to their home dashboard.') }}</p> </div> </fieldset> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html index 9c49cbcccd..ea4c901693 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html @@ -38,6 +38,11 @@ <input crm-ui-select="{data: $ctrl.editor.securityModes}" ng-model="getSet('security')" ng-model-options="{getterSetter: true}" class="form-control"> </div> </li> +<li ng-if="$ctrl.fieldDefn.input_type === 'EntityRef'" title="{{:: ts('Allow a new entity to be created via quick-add popup') }}"> + <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown"> + <input crm-ui-select="{data: $ctrl.quickAddLinks, multiple: true, placeholder: ts('Quick Add')}" ng-model="getSet('input_attrs.quickAdd')" ng-model-options="{getterSetter: true}" ng-list class="form-control"> + </div> +</li> <li ng-if="$ctrl.fieldDefn.input_type === 'EntityRef'"> <a href ng-click="toggleAttr('input_attrs.autoOpen'); $event.stopPropagation(); $event.target.blur();" title="{{:: ts('Show autocomplete results without typing') }}"> <i class="crm-i fa-{{ getProp('input_attrs.autoOpen') ? 'check-' : '' }}square-o"></i> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js index 8772532e28..9e94963cf5 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js @@ -47,6 +47,19 @@ inputTypes.push(type); } }); + // Quick-add links for autocompletes + this.quickAddLinks = []; + let allowedEntity = (ctrl.getFkEntity() || {}).entity; + let allowedEntities = (allowedEntity === 'Contact') ? ['Individual', 'Household', 'Organization'] : [allowedEntity]; + (CRM.config.quickAdd || []).forEach((link) => { + if (allowedEntities.includes(link.entity)) { + this.quickAddLinks.push({ + id: link.path, + icon: link.icon, + text: link.title, + }); + } + }); this.searchOperators = CRM.afAdmin.search_operators; // If field has limited operators, set appropriately if (ctrl.fieldDefn.operators && ctrl.fieldDefn.operators.length) { @@ -181,6 +194,7 @@ return !(defn.options || defn.data_type === 'Boolean'); case 'DisplayOnly': + case 'Hidden': return true; default: diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html new file mode 100644 index 0000000000..c19e65aec0 --- /dev/null +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html @@ -0,0 +1 @@ +<div class="form-inline"></div> diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml index 0f4080908f..71d5289947 100644 --- a/civicrm/ext/afform/admin/info.xml +++ b/civicrm/ext/afform/admin/info.xml @@ -12,11 +12,11 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>FormBuilder provides a UI to administer and edit forms. It is an optional admin tool and not required for the forms to function.</comments> <requires> diff --git a/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php b/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php index b154173fce..730c3a7db6 100644 --- a/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php +++ b/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php @@ -1,13 +1,9 @@ <?php use CRM_AfformAdmin_ExtensionUtil as E; -$menuItems = []; -$domains = \Civi\Api4\Domain::get(FALSE) - ->addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Navigation_afform_admin_domain_' . $domain['id'], +return [ + [ + 'name' => 'Navigation_afform_admin', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -26,10 +22,8 @@ foreach ($domains as $domain) { 'url' => 'civicrm/admin/afform', 'is_active' => 1, 'icon' => 'crm-i fa-list-alt', - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php index 766b66c1b3..427c255b5f 100644 --- a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php +++ b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php @@ -3,8 +3,8 @@ /** * Class CRM_Afform_AfformScanner * - * The AfformScanner searches the extensions and `civicrm.files` for subfolders - * named `afform`. Each item in there is interpreted as a form instance. + * The AfformScanner searches the `ang` directory of extensions and `civicrm.files` for files + * named `*.aff.*`. Each item is interpreted as a form instance. * * To reduce file-scanning, we keep a cache of file paths. */ @@ -36,7 +36,7 @@ class CRM_Afform_AfformScanner { * Get a list of all forms and their file paths. * * @return array - * Ex: ['view-individual' => ['/var/www/foo/afform/view-individual']] + * Ex: ['afformViewIndividual' => ['/var/www/foo/ang/afformViewIndividual']] */ public function findFilePaths(): array { if ($this->isUseCachedPaths()) { @@ -86,16 +86,16 @@ class CRM_Afform_AfformScanner { } /** - * Get the full path to the given file. + * Get the absolute path to the given file. * * @param string $formName - * Ex: 'view-individual' + * Ex: 'afformViewIndividual' * @param string $suffix * Ex: 'aff.json' * @return string|NULL - * Ex: '/var/www/sites/default/files/civicrm/afform/view-individual.aff.json' + * Ex: '/var/www/sites/default/files/civicrm/ang/afform/afformViewIndividual.aff.json' */ - public function findFilePath($formName, $suffix) { + public function findFilePath(string $formName, string $suffix): ?string { $paths = $this->findFilePaths(); if (isset($paths[$formName])) { @@ -110,21 +110,21 @@ class CRM_Afform_AfformScanner { } /** - * Determine the path where we can write our own customized/overriden + * Determine the path where we can write our own customized/overridden * version of a file. * * @param string $formName - * Ex: 'view-individual' - * @param string $file + * Ex: 'afformViewIndividual' + * @param string $fileType * Ex: 'aff.json' - * @return string|NULL - * Ex: '/var/www/sites/default/files/civicrm/afform/view-individual.aff.json' + * @return string + * Ex: '/var/www/sites/default/files/civicrm/afform/afformViewIndividual.aff.json' */ - public function createSiteLocalPath($formName, $file) { - return $this->getSiteLocalPath() . DIRECTORY_SEPARATOR . $formName . '.' . $file; + public function createSiteLocalPath(string $formName, string $fileType): string { + return $this->getSiteLocalPath() . DIRECTORY_SEPARATOR . $formName . '.' . $fileType; } - public function clear() { + public function clear(): void { $this->cache->delete('afformAllPaths'); } @@ -132,12 +132,12 @@ class CRM_Afform_AfformScanner { * Get the effective metadata for a form. * * @param string $name - * Ex: 'view-individual' + * Ex: 'afformViewIndividual' * @return array * An array with some mix of the following keys: name, title, description, server_route, requires, is_public. * NOTE: This is only data available in *.aff.json. It does *NOT* include layout. * Ex: [ - * 'name' => 'view-individual', + * 'name' => 'afformViewIndividual', * 'title' => 'View an individual contact', * 'server_route' => 'civicrm/view-individual', * 'requires' => ['afform'], @@ -150,9 +150,7 @@ class CRM_Afform_AfformScanner { 'requires' => [], 'title' => '', 'description' => '', - 'is_dashlet' => FALSE, 'is_public' => FALSE, - 'is_token' => FALSE, 'permission' => ['access CiviCRM'], 'type' => 'system', ]; @@ -187,9 +185,9 @@ class CRM_Afform_AfformScanner { * * @param array $record */ - public function addComputedFields(&$record) { + public function addComputedFields(array &$record) { $name = $record['name']; - // Ex: $allPaths['viewIndividual']['org.civicrm.foo'] == '/var/www/foo/afform/view-individual']. + // Ex: $allPaths['viewIndividual']['org.civicrm.foo'] == '/var/www/foo/ang/afformViewIndividual']. $allPaths = $this->findFilePaths()[$name] ?? []; // Empty string key refers to the site local path $record['has_local'] = isset($allPaths['']); @@ -212,14 +210,14 @@ class CRM_Afform_AfformScanner { } /** - * Get the effective metadata for all forms. + * Get the effective metadata for all file-based forms. * * @return array * A list of all forms, keyed by form name. - * NOTE: This is only data available in *.aff.json. It does *NOT* include layout. - * Ex: ['view-individual' => ['title' => 'View an individual contact', ...]] + * NOTE: This is only data available in metadata files. It does *NOT* include layout. + * Ex: ['afformViewIndividual' => ['title' => 'View an individual contact', ...]] */ - public function getMetas() { + public function getMetas(): array { $result = []; foreach (array_keys($this->findFilePaths()) as $name) { $result[$name] = $this->getMeta($name); @@ -228,7 +226,7 @@ class CRM_Afform_AfformScanner { } /** - * @param array $formPaths + * @param array[] $formPaths * List of all form paths. * Ex: ['foo' => [0 => '/var/www/org.example.foobar/ang']] * @param string $parent @@ -236,7 +234,7 @@ class CRM_Afform_AfformScanner { * @param string $module * Name of module or '' empty string for local files. */ - private function appendFilePaths(&$formPaths, $parent, $module) { + private function appendFilePaths(array &$formPaths, string $parent, string $module) { $files = preg_grep(self::FILE_REGEXP, (array) glob("$parent/*")); foreach ($files as $file) { @@ -251,10 +249,10 @@ class CRM_Afform_AfformScanner { /** * Get the path where site-local form customizations are stored. * - * @return mixed|string + * @return string * Ex: '/var/www/sites/default/files/civicrm/afform'. */ - public function getSiteLocalPath() { + public function getSiteLocalPath(): string { // TODO Allow a setting override. // return Civi::paths()->getPath(Civi::settings()->get('afformPath')); return Civi::paths()->getPath('[civicrm.files]/ang'); diff --git a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php index 67ac20c999..692ad8aebf 100644 --- a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php +++ b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php @@ -12,7 +12,7 @@ namespace Civi\Afform; /** - * Class AngularDependencyMapper + * Class used to calculate Afform Angular dependencies. * @package Civi\Afform */ class AngularDependencyMapper { diff --git a/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php b/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php index c1a7d7c2ae..dd0df20911 100644 --- a/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php +++ b/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php @@ -24,33 +24,8 @@ class StatusChecks { public static function hook_civicrm_check($e) { $hasAuthx = \CRM_Extension_System::singleton()->getMapper()->isActiveModule('authx'); $tokenFormCount = count(Tokens::getTokenForms()); - if (!$hasAuthx) { - if ($tokenFormCount) { - $e->messages[] = new \CRM_Utils_Check_Message( - 'afform_token_authx', - E::ts('Email token support has been configured for %2 form(s), which requires extended authentication services. Please enable "AuthX" in <a href="%1">Manage Extensions</a>.', [ - 1 => \CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'), - 2 => $tokenFormCount, - ]), - E::ts('AuthX Required'), - \Psr\Log\LogLevel::ERROR, - 'fa-chain-broken' - ); - } - else { - $e->messages[] = new \CRM_Utils_Check_Message( - 'afform_token_authx', - E::ts('To generate authenticated email links for custom forms, enable extended authentication services (AuthX) in <a href="%1">Manage Extensions</a>.', [ - 1 => \CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'), - ]), - E::ts('AuthX Suggested'), - \Psr\Log\LogLevel::INFO, - 'fa-lightbulb-o' - ); - } - } - if ($hasAuthx && $tokenFormCount > 0 && !in_array('jwt', \Civi::settings()->get('authx_auto_cred'))) { + if ($hasAuthx && $tokenFormCount && !in_array('jwt', \Civi::settings()->get('authx_auto_cred'))) { $e->messages[] = new \CRM_Utils_Check_Message( 'afform_token_authx', E::ts('Email token support has been configured for %1 form(s). This requires JWT authentication, <code>authx_auto_cred</code> does not include JWT. ', [ diff --git a/civicrm/ext/afform/core/Civi/Afform/Tokens.php b/civicrm/ext/afform/core/Civi/Afform/Tokens.php index aa50defa49..8e4e120c33 100644 --- a/civicrm/ext/afform/core/Civi/Afform/Tokens.php +++ b/civicrm/ext/afform/core/Civi/Afform/Tokens.php @@ -176,8 +176,8 @@ class Tokens extends AutoService implements EventSubscriberInterface { */ public static function getTokenForms() { if (!isset(\Civi::$statics[__CLASS__]['tokenForms'])) { - $tokenForms = (array) \Civi\Api4\Afform::get(0) - ->addWhere('is_token', '=', TRUE) + $tokenForms = (array) \Civi\Api4\Afform::get(FALSE) + ->addWhere('placement', 'CONTAINS', 'msg_token') ->addSelect('name', 'title', 'server_route', 'is_public') ->execute() ->indexBy('name'); diff --git a/civicrm/ext/afform/core/Civi/Afform/Utils.php b/civicrm/ext/afform/core/Civi/Afform/Utils.php index 613787f0c6..77e30e9532 100644 --- a/civicrm/ext/afform/core/Civi/Afform/Utils.php +++ b/civicrm/ext/afform/core/Civi/Afform/Utils.php @@ -75,7 +75,29 @@ class Utils { 'NOT LIKE' => E::ts('Not Like'), 'REGEXP' => E::ts('Matches Pattern'), 'NOT REGEXP' => E::ts("Doesn't Match Pattern"), + 'REGEXP BINARY' => E::ts('Matches Pattern (case-sensitive)'), + 'NOT REGEXP BINARY' => E::ts("Doesn't Match Pattern (case-sensitive)"), ]; } + public static function shouldReconcileManaged(array $updatedAfform, array $originalAfform = []): bool { + $isChanged = function($field) use ($updatedAfform, $originalAfform) { + return ($updatedAfform[$field] ?? NULL) !== ($originalAfform[$field] ?? NULL); + }; + + return $isChanged('placement') || + $isChanged('navigation') || + (!empty($updatedAfform['placement']) && $isChanged('title')) || + (!empty($updatedAfform['navigation']) && ($isChanged('title') || $isChanged('permission') || $isChanged('icon') || $isChanged('server_route'))); + } + + public static function shouldClearMenuCache(array $updatedAfform, array $originalAfform = []): bool { + $isChanged = function($field) use ($updatedAfform, $originalAfform) { + return ($updatedAfform[$field] ?? NULL) !== ($originalAfform[$field] ?? NULL); + }; + + return $isChanged('server_route') || + (!empty($updatedAfform['server_route']) && $isChanged('title')); + } + } diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php index 6ee8487073..9559b619ae 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php @@ -91,6 +91,9 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { if ($getSearchDisplays) { $afforms[$name]['search_displays'] = $this->getSearchDisplays($afforms[$name]['layout']); } + if (!isset($afforms[$name]['placement']) && $this->_isFieldSelected('placement')) { + self::convertLegacyPlacement($afforms[$name]); + } } if ($getLayout && $this->layoutFormat !== 'html') { @@ -177,9 +180,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { 'requires' => [], 'title' => E::ts('%1 block', [1 => $custom['title']]), 'description' => '', - 'is_dashlet' => FALSE, 'is_public' => FALSE, - 'is_token' => FALSE, 'permission' => ['access CiviCRM'], 'join_entity' => 'Custom_' . $custom['name'], 'entity_type' => $custom['extends'], @@ -216,4 +217,18 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { return $searchDisplays; } + private static function convertLegacyPlacement(array &$afform): void { + $afform['placement'] = []; + if (!empty($afform['is_dashlet'])) { + $afform['placement'][] = 'dashboard_dashlet'; + } + if (!empty($afform['is_token'])) { + $afform['placement'][] = 'msg_token'; + } + if (!empty($afform['contact_summary'])) { + $afform['placement'][] = 'contact_summary_' . $afform['contact_summary']; + } + unset($afform['is_dashlet'], $afform['is_token'], $afform['contact_summary']); + } + } diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php index a30c2d76b1..d51e39a3b1 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php @@ -2,6 +2,7 @@ namespace Civi\Api4\Action\Afform; +use Civi\Afform\Utils; use Civi\Api4\Generic\Result; use CRM_Afform_ExtensionUtil as E; @@ -65,15 +66,12 @@ class Revert extends \Civi\Api4\Generic\BasicBatchAction { $original = (array) $scanner->getMeta($item['name']); // If the dashlet setting changed, managed entities must be reconciled - if ( - (empty($item['is_dashlet']) !== empty($original['is_dashlet'])) || - ($item['is_dashlet'] && ($item['title'] ?? '') !== ($original['title'] ?? '')) - ) { + if (Utils::shouldReconcileManaged($item, $original)) { $this->flushManaged = TRUE; } // If the server_route changed, reset menu cache - if (($item['server_route'] ?? '') !== ($original['server_route'] ?? '')) { + if (Utils::shouldClearMenuCache($item, $original)) { $this->flushMenu = TRUE; } @@ -86,7 +84,7 @@ class Revert extends \Civi\Api4\Generic\BasicBatchAction { * @return string[] */ protected function getSelect() { - return ['name', 'title', 'is_dashlet', 'server_route']; + return ['name', 'title', 'placement', 'server_route']; } } diff --git a/civicrm/ext/afform/core/Civi/Api4/Afform.php b/civicrm/ext/afform/core/Civi/Api4/Afform.php index 83c481a5bf..214ed88e5a 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Afform.php +++ b/civicrm/ext/afform/core/Civi/Api4/Afform.php @@ -140,6 +140,7 @@ class Afform extends Generic\AbstractEntity { 'name' => 'type', 'title' => E::ts('Type'), 'pseudoconstant' => ['optionGroupName' => 'afform_type'], + 'default_value' => 'form', ], [ 'name' => 'requires', @@ -166,28 +167,10 @@ class Afform extends Generic\AbstractEntity { 'title' => E::ts('Description'), ], [ - 'name' => 'is_dashlet', - 'title' => E::ts('Dashboard Dashlet'), - 'data_type' => 'Boolean', - ], - [ - 'name' => 'is_public', - 'title' => E::ts('Is Public'), - 'data_type' => 'Boolean', - ], - [ - 'name' => 'is_token', - 'title' => E::ts('Generate Tokens'), - 'data_type' => 'Boolean', - ], - [ - 'name' => 'contact_summary', - 'title' => E::ts('Contact Summary'), - 'data_type' => 'String', - 'options' => [ - 'block' => E::ts('Contact Summary Block'), - 'tab' => E::ts('Contact Summary Tab'), - ], + 'name' => 'placement', + 'title' => E::ts('Placement'), + 'pseudoconstant' => ['optionGroupName' => 'afform_placement'], + 'data_type' => 'Array', ], [ 'name' => 'summary_contact_type', @@ -209,15 +192,23 @@ class Afform extends Generic\AbstractEntity { 'name' => 'server_route', 'title' => E::ts('Page Route'), ], + [ + 'name' => 'is_public', + 'title' => E::ts('Is Public'), + 'data_type' => 'Boolean', + 'default_value' => FALSE, + ], [ 'name' => 'permission', 'title' => E::ts('Permission'), 'data_type' => 'Array', + 'default_value' => ['access CiviCRM'], ], [ 'name' => 'permission_operator', 'title' => E::ts('Permission Operator'), 'data_type' => 'String', + 'default_value' => 'AND', 'options' => \CRM_Core_SelectValues::andOr(), ], [ diff --git a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php index 143c7edc0f..4f20d569d3 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php +++ b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php @@ -14,9 +14,9 @@ trait AfformFormatTrait { /** * Controls the return format of the "layout" property - * - html will return layout html as-is. - * - shallow will convert most html to an array, but leave tag attributes and af-markup containers alone. - * - deep will attempt to convert all html to an array, including tag attributes. + * - "html" will return layout html as-is. + * - "shallow" will convert most html to an array, but leave tag attributes and af-markup containers alone. + * - "deep" will attempt to convert all html to an array, including tag attributes. * * @var string * @options html,shallow,deep @@ -26,10 +26,10 @@ trait AfformFormatTrait { /** * Optionally manage whitespace for the "layout" property * - * This option will strip whitepace from the returned layout array for "get" actions, - * and will auto-indent the aff.html for "save" actions. + * This option will strip whitepace from the returned layout array for `get` actions, + * and will auto-indent the aff.html for `save` actions. * - * Note: currently this has no affect on "get" with "html" return format, which returns html as-is. + * Note: Has no effect on `get` with "html" return format, which returns html as-is. * * @var bool */ diff --git a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php index 699f3b6498..aae55b4318 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php +++ b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php @@ -2,6 +2,7 @@ namespace Civi\Api4\Utils; +use Civi\Afform\Utils; use CRM_Afform_ExtensionUtil as E; /** @@ -67,24 +68,12 @@ trait AfformSaveTrait { // We may have changed list of files covered by the cache. _afform_clear(); - $isChanged = function($field) use ($item, $orig) { - return ($item[$field] ?? NULL) !== ($orig[$field] ?? NULL); - }; - // If the dashlet or navigation setting changed, managed entities must be reconciled - // TODO: If this list of conditions gets any longer, then - // maybe we should unconditionally reconcile and accept the small performance drag. - if ( - $isChanged('is_dashlet') || - $isChanged('navigation') || - (!empty($meta['is_dashlet']) && $isChanged('title')) || - (!empty($meta['navigation']) && ($isChanged('title') || $isChanged('permission') || $isChanged('icon') || $isChanged('server_route'))) - ) { + if (Utils::shouldReconcileManaged($item, $orig ?? [])) { \CRM_Core_ManagedEntities::singleton()->reconcile(E::LONG_NAME); } - // Right now, permission-checks are completely on-demand. - if ($isChanged('server_route') /* || $isChanged('permission') */) { + if (Utils::shouldClearMenuCache($item, $orig ?? [])) { \CRM_Core_Menu::store(); } diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php index 674f44be72..e0ecada9c9 100644 --- a/civicrm/ext/afform/core/afform.php +++ b/civicrm/ext/afform/core/afform.php @@ -99,13 +99,16 @@ function afform_civicrm_managed(&$entities, $modules) { // This AfformScanner instance only lives during this method call, and it feeds off the regular cache. $scanner = new CRM_Afform_AfformScanner(); } - $domains = NULL; foreach ($scanner->getMetas() as $afform) { if (empty($afform['name'])) { continue; } + // Backward-compat with legacy `is_dashlet` if (!empty($afform['is_dashlet'])) { + $afform['placement'][] = 'dashboard_dashlet'; + } + if (in_array('dashboard_dashlet', $afform['placement'] ?? [], TRUE)) { $entities[] = [ 'module' => E::LONG_NAME, 'name' => 'afform_dashlet_' . $afform['name'], @@ -116,8 +119,6 @@ function afform_civicrm_managed(&$entities, $modules) { 'params' => [ 'version' => 4, 'values' => [ - // Q: Should we loop through all domains? - 'domain_id' => 'current_domain', 'is_active' => TRUE, 'name' => $afform['name'], 'label' => $afform['title'] ?? E::ts('(Untitled)'), @@ -129,35 +130,30 @@ function afform_civicrm_managed(&$entities, $modules) { ]; } if (!empty($afform['navigation']) && !empty($afform['server_route'])) { - $domains = $domains ?: \Civi\Api4\Domain::get(FALSE)->addSelect('id')->execute(); - foreach ($domains as $domain) { - $params = [ - 'version' => 4, - 'values' => [ - 'name' => $afform['name'], - 'label' => $afform['navigation']['label'] ?: $afform['title'], - 'permission' => $afform['permission'], - 'permission_operator' => $afform['permission_operator'] ?? 'AND', - 'weight' => $afform['navigation']['weight'] ?? 0, - 'url' => $afform['server_route'], - 'is_active' => 1, - 'icon' => 'crm-i ' . $afform['icon'], - 'domain_id' => $domain['id'], - ], - 'match' => ['domain_id', 'name'], - ]; - if (!empty($afform['navigation']['parent'])) { - $params['values']['parent_id.name'] = $afform['navigation']['parent']; - } - $entities[] = [ - 'module' => E::LONG_NAME, - 'name' => 'navigation_' . $afform['name'] . '_' . $domain['id'], - 'cleanup' => 'always', - 'update' => 'unmodified', - 'entity' => 'Navigation', - 'params' => $params, - ]; + $params = [ + 'version' => 4, + 'values' => [ + 'name' => $afform['name'], + 'label' => $afform['navigation']['label'] ?: $afform['title'], + 'permission' => $afform['permission'], + 'permission_operator' => $afform['permission_operator'] ?? 'AND', + 'weight' => $afform['navigation']['weight'] ?? 0, + 'url' => $afform['server_route'], + 'icon' => !empty($afform['icon']) ? 'crm-i ' . $afform['icon'] : '', + ], + 'match' => ['domain_id', 'name'], + ]; + if (!empty($afform['navigation']['parent'])) { + $params['values']['parent_id.name'] = $afform['navigation']['parent']; } + $entities[] = [ + 'module' => E::LONG_NAME, + 'name' => 'navigation_' . $afform['name'], + 'cleanup' => 'always', + 'update' => 'unmodified', + 'entity' => 'Navigation', + 'params' => $params, + ]; } } } @@ -174,7 +170,7 @@ function afform_civicrm_tabset($tabsetName, &$tabs, $context) { $contactTypes = array_merge((array) ($context['contact_type'] ?? []), $context['contact_sub_type'] ?? []); $afforms = Civi\Api4\Afform::get(FALSE) ->addSelect('name', 'title', 'icon', 'module_name', 'directive_name', 'summary_contact_type', 'summary_weight') - ->addWhere('contact_summary', '=', 'tab') + ->addWhere('placement', 'CONTAINS', 'contact_summary_tab') ->addOrderBy('title') ->execute(); $weight = 111; @@ -213,7 +209,7 @@ function afform_civicrm_pageRun(&$page) { } $afforms = Civi\Api4\Afform::get(FALSE) ->addSelect('name', 'title', 'icon', 'module_name', 'directive_name', 'summary_contact_type') - ->addWhere('contact_summary', '=', 'block') + ->addWhere('placement', 'CONTAINS', 'contact_summary_block') ->addOrderBy('summary_weight') ->addOrderBy('title') ->execute(); @@ -257,7 +253,7 @@ function afform_civicrm_pageRun(&$page) { function afform_civicrm_contactSummaryBlocks(&$blocks) { $afforms = \Civi\Api4\Afform::get(FALSE) ->setSelect(['name', 'title', 'directive_name', 'module_name', 'type', 'type:icon', 'type:label', 'summary_contact_type']) - ->addWhere('contact_summary', '=', 'block') + ->addWhere('placement', 'CONTAINS', 'contact_summary_block') ->addOrderBy('title') ->execute(); foreach ($afforms as $index => $afform) { @@ -592,7 +588,6 @@ function afform_civicrm_referenceCounts($dao, &$counts) { try { $displays = civicrm_api4('SearchDisplay', 'get', [ 'where' => [['saved_search_id', '=', $dao->id]], - 'select' => 'name', ], ['name']); foreach ($displays as $displayName) { $clauses[] = ['search_displays', 'CONTAINS', $dao->name . '.' . $displayName]; diff --git a/civicrm/ext/afform/core/ang/af.ang.php b/civicrm/ext/afform/core/ang/af.ang.php index 2bee73c112..8ca6b4a3a5 100644 --- a/civicrm/ext/afform/core/ang/af.ang.php +++ b/civicrm/ext/afform/core/ang/af.ang.php @@ -9,7 +9,6 @@ return [ // 'css' => ['ang/af.css'], 'partials' => ['ang/af'], 'requires' => ['crmUtil'], - 'settings' => [], 'basePages' => [], 'exports' => [ 'af-entity' => 'E', diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js index 8f8c6e3a09..60223ed607 100644 --- a/civicrm/ext/afform/core/ang/af/afField.component.js +++ b/civicrm/ext/afform/core/ang/af/afField.component.js @@ -120,6 +120,9 @@ else if (urlArgs && (ctrl.fieldName in urlArgs)) { setValue(urlArgs[ctrl.fieldName]); } + else if (ctrl.afFieldset.getStoredValue(ctrl.fieldName) !== undefined) { + setValue(ctrl.afFieldset.getStoredValue(ctrl.fieldName)); + } // Set default value based on field defn else if ('afform_default' in ctrl.defn) { setValue(ctrl.defn.afform_default); diff --git a/civicrm/ext/afform/core/ang/af/afFieldset.directive.js b/civicrm/ext/afform/core/ang/af/afFieldset.directive.js index d67216de05..753fd82caa 100644 --- a/civicrm/ext/afform/core/ang/af/afFieldset.directive.js +++ b/civicrm/ext/afform/core/ang/af/afFieldset.directive.js @@ -5,7 +5,8 @@ restrict: 'A', require: ['afFieldset', '?^^afForm'], bindToController: { - modelName: '@afFieldset' + modelName: '@afFieldset', + storeValues: '<' }, link: function($scope, $el, $attr, ctrls) { var self = ctrls[0]; @@ -40,6 +41,26 @@ this.getFormName = function() { return ctrl.afFormCtrl ? ctrl.afFormCtrl.getFormMeta().name : $scope.meta.name; }; + + // If `storeValue` setting is enabled, field values are cached in localStorage + function getCacheKey() { + return 'afform:' + ctrl.getFormName() + ctrl.getName(); + } + this.getStoredValue = function(fieldName) { + if (!this.storeValues) { + return; + } + return CRM.cache.get(getCacheKey(), {})[fieldName]; + }; + this.$onInit = function() { + if (this.storeValues) { + $scope.$watch(ctrl.getFieldData, function(newVal, oldVal) { + if (typeof newVal === 'object' && typeof oldVal === 'object' && Object.keys(newVal).length) { + CRM.cache.set(getCacheKey(), newVal); + } + }, true); + } + }; } }; }); diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js index 00fb929047..e06b79dff0 100644 --- a/civicrm/ext/afform/core/ang/af/afForm.component.js +++ b/civicrm/ext/afform/core/ang/af/afForm.component.js @@ -14,6 +14,7 @@ status, args, submissionResponse, + ts = CRM.ts('org.civicrm.afform'), ctrl = this; this.$onInit = function() { @@ -112,7 +113,8 @@ $element.trigger('crmFormSuccess', { afform: metaData, - data: data + data: data, + submissionResponse: submissionResponse, }); status.resolve(); @@ -197,10 +199,9 @@ } }) .catch(function(error) { - status.resolve(); - status = CRM.status(error.error_message, 'error'); + status.reject(); $element.unblock(); - CRM.alert(error.error_message, ts('Form Error')); + CRM.alert(error.error_message || '', ts('Form Error')); }); }; } diff --git a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html index 38447c8eaf..cd415943b9 100644 --- a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html +++ b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html @@ -8,5 +8,6 @@ crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName}" multi="$ctrl.defn.input_attrs.multiple" auto-open="$ctrl.defn.input_attrs.autoOpen" + quick-add="$ctrl.defn.input_attrs.quickAdd" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" ng-change="$ctrl.onSelectEntity()" > diff --git a/civicrm/ext/afform/core/ang/af/fields/Hidden.html b/civicrm/ext/afform/core/ang/af/fields/Hidden.html new file mode 100644 index 0000000000..3a274235c0 --- /dev/null +++ b/civicrm/ext/afform/core/ang/af/fields/Hidden.html @@ -0,0 +1 @@ +<input type="hidden" id="{{:: fieldId }}" ng-model="getSetValue" ng-model-options="{getterSetter: true}" > diff --git a/civicrm/ext/afform/core/ang/afCore.ang.php b/civicrm/ext/afform/core/ang/afCore.ang.php index 7f2a44691e..eac25ef7d1 100644 --- a/civicrm/ext/afform/core/ang/afCore.ang.php +++ b/civicrm/ext/afform/core/ang/afCore.ang.php @@ -9,6 +9,5 @@ return [ 'css' => ['ang/afCore.css'], 'requires' => ['crmUi', 'crmUtil', 'api4', 'checklist-model', 'angularFileUpload'], 'partials' => ['ang/afCore'], - 'settings' => [], 'basePages' => [], ]; diff --git a/civicrm/ext/afform/core/ang/afformStandalone.ang.php b/civicrm/ext/afform/core/ang/afformStandalone.ang.php index f8b852a5d3..f43e6311a5 100644 --- a/civicrm/ext/afform/core/ang/afformStandalone.ang.php +++ b/civicrm/ext/afform/core/ang/afformStandalone.ang.php @@ -5,6 +5,5 @@ return [ 'ang/afformStandalone.js', ], 'css' => [], - 'settings' => [], 'requires' => [], ]; diff --git a/civicrm/ext/afform/core/api/v3/Afform.php b/civicrm/ext/afform/core/api/v3/Afform.php index fda6038cb5..6c2863cc45 100644 --- a/civicrm/ext/afform/core/api/v3/Afform.php +++ b/civicrm/ext/afform/core/api/v3/Afform.php @@ -65,9 +65,8 @@ function _civicrm_api3_afform_get_spec(&$fields) { 'title' => 'Type', 'type' => CRM_Utils_Type::T_STRING, ]; - $fields['is_dashlet'] = [ - 'title' => 'Dashlet', - 'type' => CRM_Utils_Type::T_BOOLEAN, + $fields['placement'] = [ + 'title' => 'Placement', ]; $fields['is_public'] = [ 'title' => 'Public', diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml index 1d91b558a6..f8ba60bb10 100644 --- a/civicrm/ext/afform/core/info.xml +++ b/civicrm/ext/afform/core/info.xml @@ -12,10 +12,10 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <develStage>stable</develStage> <tags> diff --git a/civicrm/ext/afform/core/managed/AfformPlacement.mgd.php b/civicrm/ext/afform/core/managed/AfformPlacement.mgd.php new file mode 100644 index 0000000000..cd95994c63 --- /dev/null +++ b/civicrm/ext/afform/core/managed/AfformPlacement.mgd.php @@ -0,0 +1,109 @@ +<?php + +use CRM_Afform_ExtensionUtil as E; + +// Option group for Afform.placement field +return [ + [ + 'name' => 'AfformPlacement', + 'entity' => 'OptionGroup', + 'update' => 'always', + 'cleanup' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'afform_placement', + 'title' => E::ts('Afform Placement'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'option_value_fields' => [ + 'name', + 'label', + 'icon', + 'description', + ], + ], + 'match' => ['name'], + ], + ], + [ + 'name' => 'AfformPlacement:dashboard_dashlet', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'dashboard_dashlet', + 'value' => 'dashboard_dashlet', + 'label' => E::ts('Dashboard Dashlet'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-tachometer', + 'description' => E::ts('Allow CiviCRM users to add the form to their home dashboard.'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformPlacement:contact_summary_tab', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'contact_summary_tab', + 'value' => 'contact_summary_tab', + 'label' => E::ts('Contact Summary Tab'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-address-card-o', + 'description' => E::ts('Add tab to contact summary page.'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformPlacement:contact_summary_block', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'contact_summary_block', + 'value' => 'contact_summary_block', + 'label' => E::ts('Contact Summary Block'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-columns', + 'description' => E::ts('Add block to main contact summary tab.'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformPlacement:msg_token', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'msg_token', + 'value' => 'msg_token', + 'label' => E::ts('Message Tokens'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-code', + 'description' => E::ts('Allows CiviMail authors to easily link to this page'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], +]; diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php index 0397eba8ac..3fe58995f4 100644 --- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php +++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php @@ -43,25 +43,25 @@ class AfformContactSummaryTest extends TestCase implements HeadlessInterface { Afform::create() ->addValue('name', $this->formNames[0]) ->addValue('title', 'Test B') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->addValue('summary_contact_type', ['Organization']) ->execute(); Afform::create() ->addValue('name', $this->formNames[1]) ->addValue('title', 'Test C') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->addValue('summary_contact_type', ['FooBar']) ->addValue('icon', 'smiley-face') ->execute(); Afform::create() ->addValue('name', $this->formNames[2]) ->addValue('title', 'Test A') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->execute(); Afform::create() ->addValue('name', $this->formNames[3]) ->addValue('title', 'Test D') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->addValue('summary_contact_type', ['Individual']) ->addValue('summary_weight', 99) ->execute(); @@ -116,14 +116,14 @@ class AfformContactSummaryTest extends TestCase implements HeadlessInterface { ->addValue('name', $this->formNames[0]) ->addValue('title', 'Test B') ->addValue('type', 'search') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->addValue('summary_contact_type', ['Individual', 'Household']) ->execute(); Afform::create() ->addValue('name', $this->formNames[1]) ->addValue('title', 'Test C') ->addValue('type', 'form') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->addValue('summary_contact_type', ['Farm']) ->addValue('icon', 'smiley-face') ->execute(); @@ -131,13 +131,13 @@ class AfformContactSummaryTest extends TestCase implements HeadlessInterface { ->addValue('name', $this->formNames[2]) ->addValue('type', 'form') ->addValue('title', 'Test A') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->execute(); Afform::create() ->addValue('name', $this->formNames[3]) ->addValue('type', 'form') ->addValue('title', 'A Weight Test') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->addValue('summary_weight', 99) ->execute(); diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php index 607ee3851a..ed2b0e251a 100644 --- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php +++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php @@ -21,7 +21,7 @@ class AfformMetadataTest extends \PHPUnit\Framework\TestCase implements Headless $this->assertEquals(['name', 'label', 'icon', 'description'], $fields['type']['suffixes']); $this->assertTrue($fields['base_module']['options']); - $this->assertTrue($fields['contact_summary']['options']); + $this->assertTrue($fields['placement']['options']); } public function testGetEntityFields():void { diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml index f96c034b9d..6a524d6f55 100644 --- a/civicrm/ext/afform/html/info.xml +++ b/civicrm/ext/afform/html/info.xml @@ -12,11 +12,11 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml index b58a1497cd..a563482cbb 100644 --- a/civicrm/ext/afform/mock/info.xml +++ b/civicrm/ext/afform/mock/info.xml @@ -11,14 +11,14 @@ <urls> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php index ade9f0c09c..54c721ef66 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php @@ -1,7 +1,12 @@ <?php +use Civi\Api4\Afform; use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Api4\Group; use Civi\Api4\GroupContact; +use Civi\Api4\SavedSearch; /** * Test case for Afform with autocomplete. @@ -32,7 +37,7 @@ EOHTML; ]); // Saved search for filtering - \Civi\Api4\SavedSearch::create(FALSE) + SavedSearch::create(FALSE) ->setValues([ 'name' => 'the_unit_test_search', 'label' => 'the_unit_test_search', @@ -84,7 +89,7 @@ EOHTML; ], ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -96,7 +101,7 @@ EOHTML; // Submit with a valid ID, it should work $values['Individual1'][0]['fields']['id'] = $contacts['B']; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -126,17 +131,17 @@ EOHTML; ->execute()->indexBy('first_name')->column('id'); // Place contacts A & B in the group, but not contact C - $group = \Civi\Api4\Group::create(FALSE) + $group = Group::create(FALSE) ->addValue('name', $lastName) ->addValue('title', $lastName) ->addChain('A', GroupContact::create()->addValue('group_id', '$id')->addValue('contact_id', $contacts['A'])) ->addChain('B', GroupContact::create()->addValue('group_id', '$id')->addValue('contact_id', $contacts['B'])) ->execute()->single(); - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('title', 'test_af_fields') ->addValue('extends', 'Contact') - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['label' => 'contact_ref', 'data_type' => 'ContactReference', 'html_type' => 'Autocomplete', 'filter' => 'action=get&group=' . $group['id']], @@ -184,7 +189,7 @@ EOHTML; ], ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -196,7 +201,7 @@ EOHTML; // Submit with a valid ID, it should work $values['Individual1'][0]['fields']['test_af_fields.contact_ref'] = $contacts['B']; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -224,10 +229,10 @@ EOHTML; ->setRecords($sampleData) ->execute()->indexBy('first_name')->column('id'); - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('title', 'test_address_fields') ->addValue('extends', 'Address') - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['label' => 'contact_ref', 'data_type' => 'ContactReference', 'html_type' => 'Autocomplete', 'filter' => 'action=get&source=in'], @@ -282,7 +287,7 @@ EOHTML; ], ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -294,7 +299,7 @@ EOHTML; // Submit with a valid ID, it should work $values['Individual1'][0]['joins']['Address'][0]['test_address_fields.contact_ref'] = $contacts['A']; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php index 2457fb510b..b3f8c63075 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php @@ -1,6 +1,6 @@ <?php -require_once __DIR__ . '/AfformTestCase.php'; -require_once __DIR__ . '/AfformUsageTestCase.php'; + +use Civi\Api4\Afform; /** * Test case for Afform.prefill and Afform.submit. @@ -87,7 +87,7 @@ EOHTML; CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp(); // Autofill form with current user. See `Civi\Afform\Behavior\ContactAutofill` - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->execute() ->indexBy('name'); @@ -98,7 +98,7 @@ EOHTML; ['fields' => ['first_name' => 'Firsty', 'last_name' => 'Lasty']], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submission]) ->execute(); @@ -115,7 +115,7 @@ EOHTML; ]); // Get states for USA - $result = Civi\Api4\Afform::getOptions() + $result = Afform::getOptions() ->setName($this->formName) ->setModelName('me') ->setFieldName('state_province_id') @@ -125,7 +125,7 @@ EOHTML; $this->assertEquals('Alabama', $result[0]['label']); // Get states for UK - $result = Civi\Api4\Afform::getOptions() + $result = Afform::getOptions() ->setName($this->formName) ->setModelName('me') ->setFieldName('state_province_id') @@ -165,7 +165,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -208,7 +208,7 @@ EOHTML; CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp(); try { - Civi\Api4\Afform::prefill() + Afform::prefill() ->setName($this->formName) ->setArgs([]) ->execute() @@ -220,7 +220,7 @@ EOHTML; } try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setArgs([]) ->setValues([ @@ -262,7 +262,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -301,7 +301,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -347,7 +347,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -415,7 +415,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -448,7 +448,7 @@ EOHTML; ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -484,7 +484,7 @@ EOHTML; ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -514,26 +514,26 @@ EOHTML; ]; // Submit twice - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); // Autofilling form works because limit hasn't been reached - Civi\Api4\Afform::prefill()->setName($this->formName)->execute(); + Afform::prefill()->setName($this->formName)->execute(); // Last time - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); // Stats should report that we've reached the submission limit - $stats = \Civi\Api4\Afform::get(FALSE) + $stats = Afform::get(FALSE) ->addSelect('submit_enabled', 'submission_count', 'submit_currently_open') ->addWhere('name', '=', $this->formName) ->execute()->single(); @@ -543,13 +543,13 @@ EOHTML; // Prefilling and submitting are no longer allowed. try { - Civi\Api4\Afform::prefill()->setName($this->formName)->execute(); + Afform::prefill()->setName($this->formName)->execute(); $this->fail(); } catch (\Civi\API\Exception\UnauthorizedException $e) { } try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php index e1e848a208..f572a35c35 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php @@ -1,5 +1,10 @@ <?php +use Civi\Api4\Afform; +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; + /** * Test case for Afform.prefill and Afform.submit. * @@ -31,14 +36,14 @@ EOHTML; * which can be submitted multiple times */ public function testMultiRecordCustomBlock(): void { - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('name', 'MyThings') ->addValue('title', 'My Things') ->addValue('style', 'Tab with table') ->addValue('extends', 'Contact') ->addValue('is_multiple', TRUE) ->addValue('max_multiple', 2) - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['name' => 'my_text', 'label' => 'My Text', 'data_type' => 'String', 'html_type' => 'Text'], @@ -48,7 +53,7 @@ EOHTML; ->execute(); // Creating a custom group should automatically create an afform block - $block = \Civi\Api4\Afform::get() + $block = Afform::get() ->addWhere('name', '=', 'afblockCustom_MyThings') ->addSelect('layout', 'directive_name') ->setLayoutFormat('shallow') @@ -83,11 +88,11 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); - $contact = \Civi\Api4\Contact::get(FALSE) + $contact = Contact::get(FALSE) ->addWhere('first_name', '=', $firstName) ->addJoin('Custom_MyThings AS Custom_MyThings', 'LEFT', ['id', '=', 'Custom_MyThings.entity_id']) ->addSelect('Custom_MyThings.my_text', 'Custom_MyThings.my_friend') diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php index fa706c1cb3..cd51151122 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php @@ -5,6 +5,12 @@ * * @group headless */ + +use Civi\Api4\Afform; +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; + require_once __DIR__ . '/AfformTestCase.php'; require_once __DIR__ . '/AfformUsageTestCase.php'; class api_v4_AfformFileUploadTest extends api_v4_AfformUsageTestCase { @@ -38,11 +44,11 @@ EOHTML; */ public function testSubmitFile(): void { // Single-value set - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('name', 'MyInfo') ->addValue('title', 'My Info') ->addValue('extends', 'Contact') - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['name' => 'single_file_field', 'label' => 'A File', 'data_type' => 'File', 'html_type' => 'File'], @@ -51,14 +57,14 @@ EOHTML; ->execute(); // Multi-record set - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('name', 'MyFiles') ->addValue('title', 'My Files') ->addValue('style', 'Tab with table') ->addValue('extends', 'Contact') ->addValue('is_multiple', TRUE) ->addValue('max_multiple', 3) - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['name' => 'my_file', 'label' => 'My File', 'data_type' => 'File', 'html_type' => 'File'], @@ -100,14 +106,14 @@ EOHTML; ], ], ]; - $submission = Civi\Api4\Afform::submit() + $submission = Afform::submit() ->setName($this->formName) ->setValues($values) ->execute()->first(); foreach ([0, 1] as $entityIndex) { $this->mockUploadFile(); - Civi\Api4\Afform::submitFile() + Afform::submitFile() ->setName($this->formName) ->setToken($submission['token']) ->setModelName('Individual1') @@ -117,7 +123,7 @@ EOHTML; foreach ([0, 1] as $joinIndex) { $this->mockUploadFile(); - Civi\Api4\Afform::submitFile() + Afform::submitFile() ->setName($this->formName) ->setToken($submission['token']) ->setModelName('Individual1') @@ -129,7 +135,7 @@ EOHTML; } } - $contacts = \Civi\Api4\Contact::get(FALSE) + $contacts = Contact::get(FALSE) ->addWhere('last_name', '=', $lastName) ->addJoin('Custom_MyFiles AS MyFiles', 'LEFT', ['id', '=', 'MyFiles.entity_id']) ->addSelect('first_name', 'MyInfo.single_file_field', 'MyFiles.my_file') diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php index 936eb8ed56..f99602750f 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php @@ -1,5 +1,7 @@ <?php +use Civi\Api4\Afform; + /** * Test case for Afform with autocomplete. * @@ -55,7 +57,7 @@ EOHTML; ], ]); - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->setArgs(['Individual1' => $cid]) ->execute() @@ -81,7 +83,7 @@ EOHTML; $this->assertEmpty($prefill['Individual1']['values'][1]['joins']['Phone']); // Prefill a specific contact for the af-repeat entity - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->setArgs(['Individual1' => [1 => $cid[3]]]) ->execute() @@ -93,7 +95,7 @@ EOHTML; $this->assertEquals('3-1', $prefill['Individual1']['values'][1]['joins']['Phone'][0]['phone']); // Form entity has `max="3"` so a forth contact (index 3) is out-of-bounds - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->setArgs(['Individual1' => [3 => $cid[0]]]) ->execute(); @@ -144,7 +146,7 @@ EOHTML; civicrm_api4('Relationship', 'create', ['values' => $values]); } - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->execute() ->indexBy('name'); diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php index bb12c0e857..1d6a07b8fa 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php @@ -1,6 +1,9 @@ <?php +use Civi\Api4\Afform; +use Civi\Api4\Contact; use Civi\Api4\Relationship; +use Civi\Api4\RelationshipType; /** * Test case for Afform.prefill and Afform.submit. @@ -46,7 +49,7 @@ EOHTML; ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($submission) ->execute(); @@ -98,7 +101,7 @@ EOHTML; $typeIds = []; foreach ($types as $type) { - $typeIds[] = \Civi\Api4\RelationshipType::create(FALSE) + $typeIds[] = RelationshipType::create(FALSE) ->addValue('contact_type_a', 'Organization') ->addValue('contact_type_b', 'Individual') ->addValue('name_a_b', $type) @@ -121,7 +124,7 @@ EOHTML; ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($submission) ->execute(); @@ -162,7 +165,7 @@ EOHTML; 'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, ]); - $contact = \Civi\Api4\Contact::save(FALSE) + $contact = Contact::save(FALSE) ->addRecord(['first_name' => 'Child1']) ->addRecord(['first_name' => 'Child2', 'is_deleted' => TRUE]) ->addRecord(['first_name' => 'Parent']) @@ -181,7 +184,7 @@ EOHTML; ->addRecord(['contact_id_a' => $contact[6], 'contact_id_b' => $contact[2], 'relationship_type_id:name' => 'Child of']) ->execute(); - $prefill = Civi\Api4\Afform::prefill(FALSE) + $prefill = Afform::prefill(FALSE) ->setName($this->formName) ->setArgs(['Organization1' => $contact[3]]) ->execute() diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php index 9e609605c6..01118ef23e 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php @@ -1,5 +1,7 @@ <?php +use Civi\Api4\Afform; + /** * Ensure that the routes created by Afform are working. * @group e2e @@ -16,7 +18,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C public function setUp(): void { parent::setUp(); - Civi\Api4\Afform::revert() + Afform::revert() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->execute(); @@ -24,7 +26,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C public function tearDown(): void { parent::tearDown(); - Civi\Api4\Afform::revert() + Afform::revert() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->execute(); @@ -39,7 +41,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C $result = $http->get($url('civicrm/mock-page')); $this->assertNotAuthorized($result, 'mock-page'); - Civi\Api4\Afform::update() + Afform::update() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) @@ -55,7 +57,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C return CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE); }; - Civi\Api4\Afform::update() + Afform::update() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) @@ -64,7 +66,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C $this->assertOpensPage($http->get($url('civicrm/mock-page')), 'mock-page'); $this->assertNotAuthorized($http->get($url('civicrm/mock-page-renamed')), 'mock-page'); - Civi\Api4\Afform::update() + Afform::update() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->addValue('server_route', 'civicrm/mock-page-renamed') diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php index 6b381ed1fa..a408249e51 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php @@ -1,4 +1,6 @@ <?php + +use Civi\Api4\Afform; use Civi\Api4\Dashboard; /** @@ -31,8 +33,8 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { public function getBasicDirectives() { return [ - ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => ['access Foobar'], 'is_dashlet' => TRUE, 'submit_enabled' => TRUE]], - ['mockBareFile', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM'], 'is_dashlet' => FALSE, 'submit_enabled' => TRUE]], + ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => ['access Foobar'], 'placement' => ['dashboard_dashlet'], 'submit_enabled' => TRUE]], + ['mockBareFile', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM'], 'placement' => [], 'submit_enabled' => TRUE]], ['mockFoo', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM']], 'submit_enabled' => TRUE], ['mock-weird-name', ['title' => 'Weird Name', 'description' => '', 'permission' => ['access CiviCRM']], 'submit_enabled' => TRUE], ]; @@ -55,7 +57,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $dashlet = Dashboard::get(FALSE) ->addWhere('name', '=', $formName) ->execute(); - if (!empty($afform['is_dashlet'])) { + if (in_array('dashboard_dashlet', $afform['placement'] ?? [], TRUE)) { $this->assertCount(1, $dashlet); } else { @@ -63,17 +65,17 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { } }; - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $message = 'The initial Afform.get should return default data'; - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addSelect('*', 'has_base', 'has_local', 'base_module') ->addWhere('name', '=', $formName)->execute(); $this->assertEquals($formName, $result[0]['name'], $message); $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message); $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); - $this->assertEquals($get($originalMetadata, 'is_dashlet'), $get($result[0], 'is_dashlet'), $message); + $this->assertEquals($get($originalMetadata, 'placement') ?? [], $get($result[0], 'placement'), $message); $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); $this->assertEquals(TRUE, $get($result[0], 'has_base'), $message); @@ -82,23 +84,23 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $checkDashlet($originalMetadata); $message = 'After updating with Afform.create, the revised data should be returned'; - $result = Civi\Api4\Afform::update() + $result = Afform::update() ->addWhere('name', '=', $formName) ->addValue('description', 'The temporary description') ->addValue('permission', ['access foo', 'access bar']) - ->addValue('is_dashlet', empty($originalMetadata['is_dashlet'])) + ->addValue('placement', empty($originalMetadata['placement']) ? ['dashboard_dashlet'] : []) ->execute(); $this->assertEquals($formName, $result[0]['name'], $message); $this->assertEquals('The temporary description', $result[0]['description'], $message); $message = 'After updating, the Afform.get API should return blended data'; - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addSelect('*', 'has_base', 'has_local', 'base_module') ->addWhere('name', '=', $formName)->execute(); $this->assertEquals($formName, $result[0]['name'], $message); $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message); $this->assertEquals('The temporary description', $get($result[0], 'description'), $message); - $this->assertEquals(empty($originalMetadata['is_dashlet']), $get($result[0], 'is_dashlet'), $message); + $this->assertNotEquals($get($originalMetadata, 'placement'), $get($result[0], 'placement'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); $this->assertEquals(['access foo', 'access bar'], $get($result[0], 'permission'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); @@ -107,9 +109,9 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals('org.civicrm.afform-mock', $get($result[0], 'base_module'), $message); $checkDashlet($result[0]); - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $message = 'After reverting, the final Afform.get should return default data'; - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addSelect('*', 'has_base', 'has_local', 'base_module') ->addWhere('name', '=', $formName)->execute(); $this->assertEquals($formName, $result[0]['name'], $message); @@ -117,7 +119,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message); - $this->assertEquals($get($originalMetadata, 'is_dashlet'), $get($result[0], 'is_dashlet'), $message); + $this->assertEquals($get($originalMetadata, 'placement') ?? [], $get($result[0], 'placement'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); $this->assertEquals(TRUE, $get($result[0], 'has_base'), $message); $this->assertEquals(FALSE, $get($result[0], 'has_local'), $message); @@ -162,7 +164,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { * @dataProvider getFormatExamples */ public function testBasicConvert($formName, $updateFormat, $updateLayout, $readFormat, $readLayout, $exampleName): void { - $actual = Civi\Api4\Afform::convert()->setLayout($updateLayout) + $actual = Afform::convert()->setLayout($updateLayout) ->setFrom($updateFormat) ->setTo($readFormat) ->execute(); @@ -205,22 +207,22 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { * @dataProvider getFormatExamples */ public function testUpdateAndGetFormat($formName, $updateFormat, $updateLayout, $readFormat, $readLayout, $exampleName): void { - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); - Civi\Api4\Afform::update() + Afform::update() ->addWhere('name', '=', $formName) ->setLayoutFormat($updateFormat) ->setValues(['layout' => $updateLayout]) ->execute(); - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addWhere('name', '=', $formName) ->setLayoutFormat($readFormat) ->execute(); $this->assertEquals($readLayout, $this->fudgeMarkup($result[0]['layout']), "Based on \"$exampleName\", writing content as \"$updateFormat\" and reading back as \"$readFormat\"."); - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); } public function getWhitespaceExamples() { @@ -241,12 +243,12 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { * @dataProvider getWhitespaceExamples */ public function testWhitespaceFormat($directiveName, $example, $exampleName): void { - Civi\Api4\Afform::save() + Afform::save() ->addRecord(['name' => $directiveName, 'layout' => $example['html']]) ->setLayoutFormat('html') ->execute(); - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addWhere('name', '=', $directiveName) ->setLayoutFormat('shallow') ->setFormatWhitespace(TRUE) @@ -255,13 +257,13 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals($example['stripped'] ?? $example['shallow'], $this->fudgeMarkup($result['layout'])); - Civi\Api4\Afform::save() + Afform::save() ->addRecord(['name' => $directiveName, 'layout' => $result['layout']]) ->setLayoutFormat('shallow') ->setFormatWhitespace(TRUE) ->execute(); - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addWhere('name', '=', $directiveName) ->setLayoutFormat('html') ->execute() @@ -275,25 +277,25 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->createLoggedInUser(); // The default mockPage has 1 explicit requirement + 2 automatic requirements. - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']); - $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); + $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']); // Knock down to 1 explicit + 1 automatic. - Civi\Api4\Afform::update() + Afform::update() ->addWhere('name', '=', $formName) ->setLayoutFormat('html') ->setValues(['layout' => '<div>The bare file says "<mock-bare-file/>"</div>']) ->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile'], $angModule['requires']); - $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); + $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']); // Remove the last explict and implicit requirements. - Civi\Api4\Afform::update() + Afform::update() ->addWhere('name', '=', $formName) ->setLayoutFormat('html') ->setValues([ @@ -303,10 +305,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { ->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore'], $angModule['requires']); - $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); + $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); $this->assertEquals([], $storedRequires[0]['requires']); - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']); } diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php index 9e121c5e72..2e9b7b30bc 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php @@ -1,5 +1,7 @@ <?php +use Civi\Api4\Afform; + /** * Test case for Afform.prefill and Afform.submit. * @@ -15,14 +17,14 @@ abstract class api_v4_AfformUsageTestCase extends api_v4_AfformTestCase { public function setUp(): void { parent::setUp(); - Civi\Api4\Afform::revert(FALSE) + Afform::revert(FALSE) ->addWhere('type', '=', 'block') ->execute(); $this->formName = 'mock' . rand(0, 100000); } public function tearDown(): void { - Civi\Api4\Afform::revert(FALSE) + Afform::revert(FALSE) ->addWhere('name', '=', $this->formName) ->execute(); parent::tearDown(); @@ -34,7 +36,7 @@ abstract class api_v4_AfformUsageTestCase extends api_v4_AfformTestCase { 'name' => $this->formName, ]; $full = array_merge($defaults, $values); - Civi\Api4\Afform::create(FALSE) + Afform::create(FALSE) ->setLayoutFormat('html') ->setValues($full) ->execute(); diff --git a/civicrm/ext/authx/authx.php b/civicrm/ext/authx/authx.php index 2a4e8c0dc8..e468947abd 100644 --- a/civicrm/ext/authx/authx.php +++ b/civicrm/ext/authx/authx.php @@ -127,20 +127,3 @@ function authx_civicrm_permission(&$permissions) { $permissions['generate any authx credential'] = E::ts('Authx: Generate new JWT credentials for other users via the API'); $permissions['validate any authx credential'] = E::ts('Authx: Validate credentials for other users via the API'); } - -/** - * Implements hook_civicrm_navigationMenu(). - * - * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu - */ -function authx_civicrm_navigationMenu(&$menu) { - _authx_civix_insert_navigation_menu($menu, 'Administer/System Settings', [ - 'label' => E::ts('Authentication'), - 'name' => 'authx_admin', - 'url' => 'civicrm/admin/setting/authx', - 'permission' => 'administer CiviCRM', - 'operator' => 'OR', - 'separator' => 0, - ]); - _authx_civix_navigationMenu($menu); -} diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml index 10351571b7..aa50793c74 100644 --- a/civicrm/ext/authx/info.xml +++ b/civicrm/ext/authx/info.xml @@ -2,7 +2,7 @@ <extension key="authx" type="module"> <file>authx</file> <name>AuthX</name> - <description>Extended authentication services</description> + <description>Extended authentication for external systems</description> <license>AGPL-3.0</license> <maintainer> <author>Tim Otten</author> @@ -14,14 +14,14 @@ <url desc="Issues">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-02-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>mgmt:required</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>AuthX enables remote applications to connect to CiviCRM. Use it to enable and disable different forms of authentication (such as username-password, API key, and/or JWT).</comments> <classloader> @@ -32,9 +32,11 @@ <mixin>menu-xml@1.0.0</mixin> <mixin>scan-classes@1.0.0</mixin> <mixin>setting-php@1.0.0</mixin> + <mixin>setting-admin@1.0.0</mixin> </mixins> <civix> <namespace>CRM/Authx</namespace> <format>23.02.1</format> + <setting-page-title>Authentication</setting-page-title> </civix> </extension> diff --git a/civicrm/ext/authx/xml/Menu/authx.xml b/civicrm/ext/authx/xml/Menu/authx.xml index 9247d93a41..1f0e738339 100644 --- a/civicrm/ext/authx/xml/Menu/authx.xml +++ b/civicrm/ext/authx/xml/Menu/authx.xml @@ -21,12 +21,4 @@ <access_arguments>*always allow*</access_arguments> <is_public>true</is_public> </item> - <item> - <path>civicrm/admin/setting/authx</path> - <title>Authentication</title> - <page_callback>CRM_Admin_Form_Generic</page_callback> - <adminGroup>System Settings</adminGroup> - <desc>Configure authentication for external systems</desc> - <access_arguments>administer CiviCRM</access_arguments> - </item> </menu> diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml index f8d41a9135..48d7966f8a 100644 --- a/civicrm/ext/civi_campaign/info.xml +++ b/civicrm/ext/civi_campaign/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/campaign/what-is-civicampaign/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml index 383f0f9cff..8ed73c3f98 100644 --- a/civicrm/ext/civi_case/info.xml +++ b/civicrm/ext/civi_case/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/case-management/what-is-civicase/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml index 9388dd4733..3d9d3975e0 100644 --- a/civicrm/ext/civi_contribute/info.xml +++ b/civicrm/ext/civi_contribute/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/contributions/what-is-civicontribute/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php index 5a31a24193..3b3af3681c 100644 --- a/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php +++ b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php @@ -29,6 +29,8 @@ class EventCreationSpecProvider extends \Civi\Core\Service\AutoService implement $spec->getFieldByName('title')->setRequiredIf('empty($values.is_template)'); $spec->getFieldByName('start_date')->setRequiredIf('empty($values.is_template)'); $spec->getFieldByName('template_title')->setRequiredIf('!empty($values.is_template)'); + // Arguably this is a bad default in the schema + $spec->getFieldByName('is_active')->setRequired(FALSE)->setDefaultValue(TRUE); $template_id = (new FieldSpec('template_id', 'Event', 'Integer')) ->setTitle(ts('Event Template')) diff --git a/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php new file mode 100644 index 0000000000..3c32afc7a9 --- /dev/null +++ b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php @@ -0,0 +1,59 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +/** + * @service + * @internal + */ +class EventGetSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $field = (new FieldSpec('remaining_participants', 'Event', 'Integer')) + ->setTitle(ts('Remaining Participants')) + ->setDescription(ts('Maximum participants minus registered participants')) + ->setInputType('Number') + ->setColumnName('max_participants') + ->setSqlRenderer([__CLASS__, 'getRemainingParticipants']); + $spec->addFieldSpec($field); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Event' && $action === 'get'; + } + + /** + * Subtracts max_participants from number of counted (non-test, non-deleted) participants. + * + * @param array $maxField + * @param \Civi\Api4\Query\Api4SelectQuery $query + * return string + */ + public static function getRemainingParticipants(array $maxField, Api4SelectQuery $query): string { + $statuses = \CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1'); + $statusIds = implode(',', array_keys($statuses)); + $idField = $query->getFieldSibling($maxField, 'id'); + return "IF($maxField[sql_name], (CAST($maxField[sql_name] AS SIGNED) - (SELECT COUNT(`p`.`id`) FROM `civicrm_participant` `p`, `civicrm_contact` `c` WHERE `p`.`event_id` = $idField[sql_name] AND `p`.`contact_id` = `c`.`id` AND `p`.`is_test` = 0 AND `c`.`is_deleted` = 0 AND `p`.status_id IN ($statusIds))), NULL)"; + } + +} diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml index 884b5da286..bb331fbfd9 100644 --- a/civicrm/ext/civi_event/info.xml +++ b/civicrm/ext/civi_event/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/events/what-is-civievent</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_mail/info.xml b/civicrm/ext/civi_mail/info.xml index 0a77c73614..6dc808b134 100644 --- a/civicrm/ext/civi_mail/info.xml +++ b/civicrm/ext/civi_mail/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/email/what-is-civimail/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml index a7744da7ff..28f5705a35 100644 --- a/civicrm/ext/civi_member/info.xml +++ b/civicrm/ext/civi_member/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/membership/what-is-civimember/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml index e69db9bec8..79391ddf0d 100644 --- a/civicrm/ext/civi_pledge/info.xml +++ b/civicrm/ext/civi_pledge/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/pledges/what-is-civipledge/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_report/info.xml b/civicrm/ext/civi_report/info.xml index 52d1fc8119..e7fb0eb996 100644 --- a/civicrm/ext/civi_report/info.xml +++ b/civicrm/ext/civi_report/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/reporting/what-is-civireport/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php index abf4c4fc05..4ac083954a 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php @@ -3,20 +3,8 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Fields'), 'description' => E::ts('Administer custom fields list'), - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/custom/group/fields', 'permission' => ['administer CiviCRM data'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php index 130875c0c7..5a5ab28623 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php @@ -3,20 +3,8 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Custom Field Groups'), 'description' => E::ts('Administer custom field groups list'), - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/custom/group', 'permission' => ['administer CiviCRM data'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php index d2c1f1bf40..962b9b69dd 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php @@ -4,18 +4,6 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Financial Types'), - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/financial/financialType', 'permission' => ['administer CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php index 7f26925bf1..bdab1bcc2b 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php @@ -3,20 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Assign Users to Roles'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/acl/entityrole', 'permission' => ['administer CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php index 3db0ce6bdd..161225a32a 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php @@ -7,15 +7,4 @@ return [ 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/financial/financialType/accounts/list', 'permission' => ['administer CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php index bd5f43e297..b0e774557b 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php @@ -7,16 +7,4 @@ return [ 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/mailSettings', 'permission' => ['administer CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php index 46234e489a..543c71ca77 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php @@ -3,20 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Manage Contribution Pages'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/contribute', 'permission' => ['access CiviContribute'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php index 091156b3d0..fd8f7811c5 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php @@ -4,19 +4,6 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Manage Groups'), - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/group', 'permission' => ['access CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php index eb9054191d..76b7e62090 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php @@ -3,19 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Profile Fields'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/uf/group/field', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php index 6e9bb233fc..2fe4688d38 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php @@ -3,19 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Profiles'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/uf/group', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php index df7f2b4735..69236a7dc2 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php @@ -3,19 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Relationship Types'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/reltype', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php index ce2f09f083..6a8d7b40e0 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php @@ -3,20 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Scheduled Jobs Log'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/joblog', 'permission' => ['admin CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml index 483ccd6c1b..8d7525d00f 100644 --- a/civicrm/ext/civicrm_admin_ui/info.xml +++ b/civicrm/ext/civicrm_admin_ui/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-01-02</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php index c2504145a9..9b8d0ddfd6 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php @@ -241,7 +241,8 @@ return [ 'task' => 'delete', ], ], - 'type' => 'buttons', + 'type' => 'menu', + 'icon' => 'fa-bars', 'alignment' => 'text-right', ], ], diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php b/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php index 802a5ba9e6..4c77d94aff 100644 --- a/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php +++ b/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php @@ -4,19 +4,6 @@ use CRM_CivicrmSearchUi_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Find Contacts'), - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/searchui/contact/search', 'permission' => ['access CiviCRM'], - 'navigation' => NULL, - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, ]; diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php index cc9fd973ff..2d9ee55537 100644 --- a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php +++ b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php @@ -3,21 +3,11 @@ use CRM_CivicrmSearchUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Find Contributions'), 'description' => 'The original searches for Contributions but also can show just soft credits and recurring contributions. Maybe recur is better as a separate search? And soft credits?', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-credit-card', 'server_route' => 'civicrm/sk/contrib', 'permission' => ['access CiviContribute'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Experimental', 'label' => E::ts('Find Contributions'), diff --git a/civicrm/ext/civicrm_search_ui/info.xml b/civicrm/ext/civicrm_search_ui/info.xml index d3dda5733b..c5921bd7da 100644 --- a/civicrm/ext/civicrm_search_ui/info.xml +++ b/civicrm/ext/civicrm_search_ui/info.xml @@ -14,15 +14,15 @@ <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-07-17</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <requires> <ext>org.civicrm.search_kit</ext> <ext>org.civicrm.afform</ext> </requires> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Replacement SearchKit/FormBuilder pages for core Search pages.</comments> <classloader> diff --git a/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php b/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php index 94a6191f3b..c43b0b5623 100644 --- a/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php +++ b/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php @@ -6,7 +6,7 @@ return [ [ 'name' => 'Navigation_Experimental', 'entity' => 'Navigation', - 'cleanup' => 'unused', + 'cleanup' => 'always', 'update' => 'unmodified', 'params' => [ 'version' => 4, @@ -20,7 +20,7 @@ return [ 'access CiviCRM', ], 'permission_operator' => 'AND', - 'parent_id' => NULL, + 'parent_id.name' => 'Search', 'is_active' => TRUE, 'has_separator' => 0, 'weight' => 113, diff --git a/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php b/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php index fda65e11e6..4b2fd2c19d 100644 --- a/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php +++ b/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php @@ -6,7 +6,7 @@ * * Generated from civigrant/xml/schema/CRM/Grant/Grant.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:35a957c6b295a38c1fc0881e57ab1ec4) + * (GenCodeChecksum:8c32dd9b0de6a449d6ee2358a2b043fc) */ use CRM_Grant_ExtensionUtil as E; @@ -45,7 +45,7 @@ class CRM_Grant_DAO_Grant extends CRM_Core_DAO { */ protected static $_paths = [ 'add' => 'civicrm/grant/add?reset=1&action=add&cid=[contact_id]', - 'view' => 'civicrm/grant/add?reset=1&action=view&id=[id]', + 'view' => 'civicrm/grant/view?reset=1&action=view&id=[id]', 'update' => 'civicrm/grant/add?reset=1&action=update&id=[id]', 'delete' => 'civicrm/grant/add?reset=1&action=delete&id=[id]', ]; diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php index 0b640ad2d0..9217a0ccbc 100644 --- a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php +++ b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php @@ -27,7 +27,6 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form { * @return void */ public function preProcess() { - $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this); $this->assign('context', $context); @@ -52,8 +51,10 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form { ]; foreach ($grantTokens as $token) { - $this->assign($token, CRM_Utils_Array::value($token, $values)); + $this->assign($token, $values[$token] ?? NULL); } + $displayName = CRM_Contact_BAO_Contact::displayName($values['contact_id']); + $this->assign('displayName', $displayName); if (isset($this->_id)) { $noteDAO = new CRM_Core_BAO_Note(); @@ -69,8 +70,8 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form { } // add Grant to Recent Items - $url = CRM_Utils_System::url('civicrm/grant/add', - "action=view&reset=1&id={$values['id']}&cid={$values['contact_id']}" + $url = CRM_Utils_System::url('civicrm/grant/view', + "action=view&reset=1&id={$values['id']}" ); $title = CRM_Contact_BAO_Contact::displayName($values['contact_id']) . ' - ' . ts('Grant') . ': ' . CRM_Utils_Money::format($values['amount_total']) . ' (' . $grantType[$values['grant_type_id']] . ')'; diff --git a/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php b/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php index c8252ff8e4..0f5ad52199 100644 --- a/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php +++ b/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php @@ -171,7 +171,7 @@ class CRM_Grant_Selector_Search extends CRM_Core_Selector_Base implements CRM_Co self::$_links = [ CRM_Core_Action::VIEW => [ 'name' => ts('View'), - 'url' => 'civicrm/grant/add', + 'url' => 'civicrm/grant/view', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=view&' . $extraParams, 'title' => ts('View Grant'), 'weight' => -20, diff --git a/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php b/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php index af3297ac2d..ae187701c0 100644 --- a/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php +++ b/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php @@ -4,7 +4,7 @@ use CRM_Grant_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Grants'), - 'contact_summary' => 'tab', + 'placement' => ['contact_summary_tab'], 'summary_weight' => 60, 'icon' => 'fa-money', 'server_route' => '', diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml index bbc993a1aa..5d7cb58545 100644 --- a/civicrm/ext/civigrant/info.xml +++ b/civicrm/ext/civigrant/info.xml @@ -12,11 +12,11 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/grants/what-is-civigrant/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-11-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>CiviGrant was originally a core component before migrating to an extension</comments> <requires> diff --git a/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl b/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl index a5ecc12cce..22d7865e5c 100644 --- a/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl +++ b/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl @@ -16,8 +16,6 @@ {ts}Are you sure you want to delete this Grant?{/ts} {ts}This action cannot be undone.{/ts}</p> <p>{include file="CRM/Grant/Form/Task.tpl"}</p> </div> - {elseif $action eq 4} - {include file="CRM/Grant/Form/GrantView.tpl"} {else} <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> <table class="form-layout-compressed"> diff --git a/civicrm/ext/civigrant/xml/Menu/Grant.xml b/civicrm/ext/civigrant/xml/Menu/Grant.xml index 624b230b2b..c226716a81 100644 --- a/civicrm/ext/civigrant/xml/Menu/Grant.xml +++ b/civicrm/ext/civigrant/xml/Menu/Grant.xml @@ -29,10 +29,9 @@ <access_arguments>access CiviGrant</access_arguments> <page_type>1</page_type> </item> - <!-- Unused/deprecated path redundant with civicrm/grant/add --> <item> - <path>civicrm/contact/view/grant</path> - <page_callback>CRM_Grant_Form_Grant</page_callback> + <path>civicrm/grant/view</path> + <page_callback>CRM_Grant_Form_GrantView</page_callback> <access_arguments>access CiviGrant</access_arguments> </item> </menu> diff --git a/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml b/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml index 843cc499e3..68ca957732 100644 --- a/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml +++ b/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml @@ -10,7 +10,7 @@ <icon>fa-money</icon> <paths> <add>civicrm/grant/add?reset=1&action=add&cid=[contact_id]</add> - <view>civicrm/grant/add?reset=1&action=view&id=[id]</view> + <view>civicrm/grant/view?reset=1&action=view&id=[id]</view> <update>civicrm/grant/add?reset=1&action=update&id=[id]</update> <delete>civicrm/grant/add?reset=1&action=delete&id=[id]</delete> </paths> diff --git a/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php b/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php index b27d9d4470..5709bd5a28 100644 --- a/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php +++ b/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php @@ -226,9 +226,6 @@ class ImportSubscriber extends AutoService implements EventSubscriberInterface { 'type' => 'search', 'title' => $importSearch['label'], 'base_module' => E::LONG_NAME, - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, 'permission' => 'access CiviCRM', 'requires' => ['crmSearchDisplayTable'], 'layout' => '<div af-fieldset=""> diff --git a/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php index 8cf8aa26a5..c2302fb197 100644 --- a/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php +++ b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php @@ -3,21 +3,10 @@ use CRM_Civiimport_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('All Imports'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/imports/all-imports', 'permission' => ['administer queues'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Reports', 'label' => E::ts('All imports'), diff --git a/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php b/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php index 242fd16ab5..9b6c975cb7 100644 --- a/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php +++ b/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php @@ -3,21 +3,9 @@ use CRM_Civiimport_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('My Imports'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/imports/my-listing', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Reports', 'label' => E::ts('My Imports'), diff --git a/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php b/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php index 613380fd7e..d2329bca35 100644 --- a/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php +++ b/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php @@ -3,21 +3,10 @@ use CRM_Civiimport_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Import Templates'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/imports/templates', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Reports', 'label' => E::ts('Import Templates'), diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml index b5776d0199..f6515e68d7 100644 --- a/civicrm/ext/civiimport/info.xml +++ b/civicrm/ext/civiimport/info.xml @@ -14,13 +14,13 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-08-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> - <comments>Core extension for us to start moving import logic into, has more functionality</comments> + <comments>This extension contains import functionality which was previously in CiviCRM Core. If you use the import functionality it is recommended to enable this extension.</comments> <requires> <ext>org.civicrm.afform</ext> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml index aca1ac07fa..1ea33c848e 100644 --- a/civicrm/ext/ckeditor4/info.xml +++ b/civicrm/ext/ckeditor4/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://github.com/civicrm/civicrm-core/</url> <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-05-23</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This is the version of CKEditor that originally shipped with CiviCRM core</comments> <classloader> diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml index 066bf2a825..b521ee7a28 100644 --- a/civicrm/ext/contributioncancelactions/info.xml +++ b/civicrm/ext/contributioncancelactions/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-12</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This code has been moved from core to a separate extension in 5.32. Note that if you disable it failed or cancelled contributions will not cause related memberships and participant records to be updated</comments> <classloader> diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml index 26039e5d1c..0784e9e244 100644 --- a/civicrm/ext/elavon/info.xml +++ b/civicrm/ext/elavon/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-08-05</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments/> <classloader> diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml index 82fa5d4d36..5b907396e1 100644 --- a/civicrm/ext/eventcart/info.xml +++ b/civicrm/ext/eventcart/info.xml @@ -12,14 +12,14 @@ <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/eventcart</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-08-03</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml index 384c99d10f..8c83d9ecbb 100644 --- a/civicrm/ext/ewaysingle/info.xml +++ b/civicrm/ext/ewaysingle/info.xml @@ -14,14 +14,14 @@ <url desc="Support">https://github.com/civicrm/civicrm-core/blob/master/ext/ewaysingle</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-07</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments> <classloader> diff --git a/civicrm/ext/financialacls/financialacls.php b/civicrm/ext/financialacls/financialacls.php index 5696c289f2..334105d92e 100644 --- a/civicrm/ext/financialacls/financialacls.php +++ b/civicrm/ext/financialacls/financialacls.php @@ -201,7 +201,7 @@ function financialacls_civicrm_buildAmount($component, $form, &$feeBlock) { foreach ($feeBlock as $key => $value) { foreach ($value['options'] as $k => $options) { - if (!CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($options['financial_type_id']))) { + if (!CRM_Core_Permission::check('add contributions of type ' . CRM_Core_PseudoConstant::getName('CRM_Contribute_DAO_Contribution', 'financial_type_id', $options['financial_type_id']))) { unset($feeBlock[$key]['options'][$k]); } } @@ -384,6 +384,23 @@ function financialacls_civicrm_alterMenu(array &$menu): void { $menu['civicrm/admin/financial/financialType']['access_arguments'] = [['administer CiviCRM Financial Types']]; } +/** + * @param string $formName + * @param \CRM_Core_Form $form + */ +function financialacls_civicrm_preProcess(string $formName, \CRM_Core_Form $form): void { + if (!financialacls_is_acl_limiting_enabled()) { + return; + } + if (str_starts_with($formName, 'CRM_Contribute_Form_Contribution_')) { + /* @var \CRM_Contribute_Form_Contribution_Main $form */ + if (!CRM_Core_Permission::check('add contributions of type ' . $form->getContributionPageValue('financial_type_id:name'))) { + CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); + } + } + +} + /** * Hide edit/enable/disable links for memberships of a given Financial Type * Note: The $objectID param can be an int, string or null, hence not typed diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml index 52edcd9889..6124da07d4 100644 --- a/civicrm/ext/financialacls/info.xml +++ b/civicrm/ext/financialacls/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://FIXME</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-08-27</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <tags> <tag>mgmt:hidden</tag> diff --git a/civicrm/ext/financialacls/settings/financialacls.setting.php b/civicrm/ext/financialacls/settings/financialacls.setting.php index e6ba889d5c..c90b37b46b 100644 --- a/civicrm/ext/financialacls/settings/financialacls.setting.php +++ b/civicrm/ext/financialacls/settings/financialacls.setting.php @@ -13,7 +13,7 @@ return [ 'is_domain' => 1, 'is_contact' => 0, 'help_text' => NULL, - 'help' => ['id' => 'acl_financial_type'], + 'help' => ['id' => 'acl_financial_type', 'file' => 'CRM/Admin/Form/Preferences/Contribute.hlp'], 'settings_pages' => ['contribute' => ['weight' => 30]], 'on_change' => [ 'financialacls_toggle', diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php index e88e563afe..ef9f5f58cc 100644 --- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php +++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php @@ -3,6 +3,9 @@ namespace Civi\Financialacls; use Civi; +use Civi\Api4\PriceField; +use Civi\Api4\PriceFieldValue; +use Civi\Api4\PriceSet; use CRM_Core_Session; // I fought the Autoloader and the autoloader won. @@ -47,7 +50,10 @@ class FinancialTypeTest extends BaseTestClass { foreach ($actions as $action => $action_ts) { $this->assertEquals( [ - ts('CiviCRM: %1 contributions of type %2', [1 => $action_ts, 2 => $type]), + ts('CiviCRM: %1 contributions of type %2', [ + 1 => $action_ts, + 2 => $type, + ]), ts('%1 contributions of type %2', [1 => $action_ts, 2 => $type]), ], $permissions[$action . ' contributions of type ' . $type] @@ -71,4 +77,84 @@ class FinancialTypeTest extends BaseTestClass { $this->assertEquals([1 => 'Donation'], $type); } + /** + * Check method testCheckPermissionedLineItems() + * + * @throws \CRM_Core_Exception + */ + public function testCheckPermissionedLineItems(): void { + $priceSetID = PriceSet::create()->setValues([ + 'title' => 'Price Set Financial ACLS', + 'name' => 'test_price_set', + 'extends' => 1, + 'financial_type_id:name' => 'Donation', + ])->execute()->first()['id']; + + $paramsField = [ + 'label' => 'Price Field', + 'name' => 'test_price_field', + 'html_type' => 'CheckBox', + 'is_display_amounts' => 1, + 'weight' => 1, + 'options_per_line' => 1, + 'price_set_id' => $priceSetID, + 'is_enter_qty' => 1, + 'financial_type_id:name' => 'Donation', + ]; + $priceFieldID = PriceField::create() + ->setValues($paramsField) + ->execute() + ->first()['id']; + $priceFieldValueID = PriceFieldValue::create()->setValues([ + 'price_field_id' => $priceFieldID, + 'amount' => 100, + 'name' => 'price_field_value', + 'label' => 'Price Field 1', + 'financial_type_id:name' => 'Donation', + 'weight' => 1, + ])->execute()->first()['id']; + $contributionParams = [ + 'total_amount' => 300, + 'currency' => 'USD', + 'contact_id' => $this->individualCreate(), + 'financial_type_id' => 'Donation', + 'line_items' => [ + [ + 'line_item' => [ + [ + 'price_field_id' => $priceFieldID, + 'price_field_value_id' => $priceFieldValueID, + 'qty' => 3, + ], + ], + ], + ], + ]; + + $contribution = $this->callAPISuccess('Order', 'create', $contributionParams); + Civi::settings()->set('acl_financial_type', TRUE); + + $this->setPermissions([ + 'view contributions of type Member Dues', + ]); + + try { + \CRM_Financial_BAO_FinancialType::checkPermissionedLineItems($contribution['id'], 'view'); + $this->fail('Missed expected exception'); + } + catch (\CRM_Core_Exception $e) { + $this->assertEquals('You do not have permission to access this page.', $e->getMessage()); + } + + $this->setPermissions([ + 'view contributions of type Donation', + ]); + try { + \CRM_Financial_BAO_FinancialType::checkPermissionedLineItems($contribution['id'], 'view'); + } + catch (\CRM_Core_Exception $e) { + $this->fail('permissions should be established'); + } + } + } diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml index 07e0853839..1bdc772eb1 100644 --- a/civicrm/ext/flexmailer/info.xml +++ b/civicrm/ext/flexmailer/info.xml @@ -14,8 +14,8 @@ <url desc="Support">http://civicrm.stackexchange.com/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-08-05</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <comments> FlexMailer is an email delivery engine which replaces the internal guts @@ -23,7 +23,7 @@ to provide richer email features. </comments> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <tags> <tag>mgmt:required</tag> diff --git a/civicrm/ext/flexmailer/src/API/MailingPreview.php b/civicrm/ext/flexmailer/src/API/MailingPreview.php index 3d6f1f40f1..448f9b9c09 100644 --- a/civicrm/ext/flexmailer/src/API/MailingPreview.php +++ b/civicrm/ext/flexmailer/src/API/MailingPreview.php @@ -24,7 +24,7 @@ class MailingPreview { /** @var \CRM_Mailing_BAO_Mailing $mailing */ $mailing = new \CRM_Mailing_BAO_Mailing(); - $mailingID = \CRM_Utils_Array::value('id', $params); + $mailingID = $params['id'] ?? NULL; if ($mailingID) { $mailing->id = $mailingID; $mailing->find(TRUE); diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php index a007001c3b..d7df55307d 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php @@ -45,19 +45,14 @@ class TextClickTrackerTest extends \CiviUnitTestCase { '<p><a href=\'tracking(https://sub.example.com/foo.php?whiz=%2Fbang%2F&pie[fruit]=apple)\' rel=\'nofollow\'>Foo</a></p>', ]; $exs[] = [ - // Messy looking URL, designed to trip-up quote handling + // Messy looking URL, designed to trip-up quote handling, no tracking as no http '<p><a href="javascript:alert(\'Cheese\')">Foo</a></p>', - '<p><a href="tracking(javascript:alert(\'Cheese\'))" rel=\'nofollow\'>Foo</a></p>', + '<p><a href="javascript:alert(\'Cheese\')" rel=\'nofollow\'>Foo</a></p>', ]; $exs[] = [ - // Messy looking URL, designed to trip-up quote handling + // Messy looking URL, designed to trip-up quote handling, no tracking as no http '<p><a href=\'javascript:alert("Cheese")\'>Foo</a></p>', - '<p><a href=\'tracking(javascript:alert("Cheese"))\' rel=\'nofollow\'>Foo</a></p>', - ]; - $exs[] = [ - // Messy looking URL, funny whitespace - '<p><a href="http://example.com/' . "\n" . 'weird">Foo</a></p>', - '<p><a href="tracking(http://example.com/' . "\n" . 'weird)" rel=\'nofollow\'>Foo</a></p>', + '<p><a href=\'javascript:alert("Cheese")\' rel=\'nofollow\'>Foo</a></p>', ]; $exs[] = [ // Messy looking URL, funny whitespace diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml index cc4c63e987..38d5d182de 100644 --- a/civicrm/ext/greenwich/info.xml +++ b/civicrm/ext/greenwich/info.xml @@ -14,14 +14,14 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-07-21</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml index d78f71aac9..3aba787a08 100644 --- a/civicrm/ext/legacycustomsearches/info.xml +++ b/civicrm/ext/legacycustomsearches/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://FIXME</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-07-25</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This is our old search system which has limited support. All new effort is on SearchKit</comments> <classloader> diff --git a/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php b/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php index 4175908fb7..1503cbca7b 100644 --- a/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php +++ b/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php @@ -1,15 +1,10 @@ <?php -use Civi\Api4\Domain; use CRM_Legacycustomsearches_ExtensionUtil as E; -$menuItems = []; -$domains = Domain::get(FALSE) - ->addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Custom Searches' . $domain['id'], +return [ + [ + 'name' => 'Custom Searches', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -25,13 +20,12 @@ foreach ($domains as $domain) { 'is_active' => TRUE, 'has_separator' => 2, 'weight' => 15, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; - $menuItems[] = [ - 'name' => 'Manage Custom Searches' . $domain['id'], + ], + [ + 'name' => 'Manage Custom Searches', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -46,10 +40,8 @@ foreach ($domains as $domain) { 'parent_id.name' => 'Customize Data and Screens', 'is_active' => TRUE, 'weight' => 15, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml index dd958f73c0..7394a8acd0 100644 --- a/civicrm/ext/message_admin/info.xml +++ b/civicrm/ext/message_admin/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-06-12</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml index 660ba84a6d..298dcefdd0 100644 --- a/civicrm/ext/oauth-client/info.xml +++ b/civicrm/ext/oauth-client/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-23</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext version="~4.5">org.civicrm.afform</ext> diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml index 5745bc2b59..9e5aa78821 100644 --- a/civicrm/ext/payflowpro/info.xml +++ b/civicrm/ext/payflowpro/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-04-13</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments> <classloader> diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml index edb4b23fbc..9489875fad 100644 --- a/civicrm/ext/recaptcha/info.xml +++ b/civicrm/ext/recaptcha/info.xml @@ -12,21 +12,21 @@ <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/recaptcha</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-04-03</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> <mixins> - <mixin>menu-xml@1.0.0</mixin> + <mixin>setting-admin@1.0.0</mixin> <mixin>setting-php@1.0.0</mixin> <mixin>ang-php@1.0.0</mixin> <mixin>scan-classes@1.0.0</mixin> diff --git a/civicrm/ext/recaptcha/recaptcha.php b/civicrm/ext/recaptcha/recaptcha.php index e959cfb329..49e8e1c7b5 100644 --- a/civicrm/ext/recaptcha/recaptcha.php +++ b/civicrm/ext/recaptcha/recaptcha.php @@ -32,21 +32,6 @@ function recaptcha_civicrm_enable() { _recaptcha_civix_civicrm_enable(); } -/** - * Implements hook_civicrm_navigationMenu(). - */ -function recaptcha_civicrm_navigationMenu(&$menu) { - _recaptcha_civix_insert_navigation_menu($menu, 'Administer/System Settings', [ - 'label' => E::ts('reCAPTCHA Settings'), - 'name' => 'recaptcha_settings', - 'url' => 'civicrm/admin/setting/recaptcha', - 'permission' => 'administer CiviCRM', - 'operator' => 'OR', - 'separator' => 0, - ]); - _recaptcha_civix_navigationMenu($menu); -} - /** * Intercept form functions */ diff --git a/civicrm/ext/recaptcha/xml/Menu/recaptcha.xml b/civicrm/ext/recaptcha/xml/Menu/recaptcha.xml deleted file mode 100644 index 558cefcf2c..0000000000 --- a/civicrm/ext/recaptcha/xml/Menu/recaptcha.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0"?> -<menu> - <item> - <path>civicrm/admin/setting/recaptcha</path> - <title>reCAPTCHA Settings</title> - <desc>Configure anti-abuse/bot-prevention service</desc> - <page_callback>CRM_Admin_Form_Generic</page_callback> - <access_arguments>administer CiviCRM</access_arguments> - <adminGroup>System Settings</adminGroup> - </item> -</menu> diff --git a/civicrm/ext/scheduled_communications/info.xml b/civicrm/ext/scheduled_communications/info.xml index 1280468485..508b7ffb7b 100644 --- a/civicrm/ext/scheduled_communications/info.xml +++ b/civicrm/ext/scheduled_communications/info.xml @@ -12,11 +12,11 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/search-improvements</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-09-04</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments> <classloader> diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php index 02037c290a..69acf8e3ff 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php @@ -1147,7 +1147,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { } // Add primary key field if actions are enabled // (only needed for non-dao entities, as Api4SelectQuery will auto-add the id) - if (!in_array('DAOEntity', CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'type')) && + if (!CoreUtil::isType($this->savedSearch['api_entity'], 'DAOEntity') && (!empty($this->display['settings']['actions']) || !empty($this->display['settings']['draggable'])) ) { $this->addSelectExpression(CoreUtil::getIdFieldName($this->savedSearch['api_entity'])); diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php index b0ebdbfeec..0c4fe3b2f3 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php @@ -65,6 +65,8 @@ class Download extends AbstractRunAction { \CRM_Utils_Array::remove($settings['columns'][$index], 'link', 'editable', 'icons', 'cssClass'); } } + // Reset indexes as some items may have been removed + $settings['columns'] = array_values($settings['columns']); // Displays are only exportable if they have actions enabled if (empty($settings['actions'])) { diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php index 21fdf87428..7c6e9d8b5a 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php @@ -120,7 +120,7 @@ class Run extends AbstractRunAction { $result->setCountMatched($apiResult->countFetched()); $apiResult = array_slice((array) $apiResult, 0, $apiParams['limit'] - 1); } - if ($pagerMode === 'page') { + else { $result->toolbar = $this->formatToolbar(); } $result->exchangeArray($this->formatResult($apiResult)); diff --git a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php index 963e63ef2d..618ecad574 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php +++ b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php @@ -24,8 +24,7 @@ class SearchDisplayCreationSpecProvider extends \Civi\Core\Service\AutoService i * @inheritDoc */ public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('name')->setRequired(FALSE)->setRequiredIf('empty($values.label)'); - $spec->getFieldByName('label')->setRequired(FALSE)->setRequiredIf('empty($values.name)'); + $spec->getFieldByName('name')->setRequired(FALSE); } /** diff --git a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php index 5662d023cd..97f3f2c470 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php +++ b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php @@ -62,6 +62,11 @@ class SearchSegmentExtraFieldProvider implements Generic\SpecProviderInterface { } foreach ($searchSegments as $set) { \Civi::$statics['all_search_segments'][$set['entity_name']]['segment_' . $set['name']] = $set; + if ($set['entity_name'] === 'Contact') { + foreach (\CRM_Contact_BAO_ContactType::basicTypes() as $contactType) { + \Civi::$statics['all_search_segments'][$contactType]['segment_' . $set['name']] = $set; + } + } } } return \Civi::$statics['all_search_segments'][$entity] ?? []; diff --git a/civicrm/ext/search_kit/Civi/Search/Admin.php b/civicrm/ext/search_kit/Civi/Search/Admin.php index 8232f25233..14e4adc539 100644 --- a/civicrm/ext/search_kit/Civi/Search/Admin.php +++ b/civicrm/ext/search_kit/Civi/Search/Admin.php @@ -53,7 +53,7 @@ class Admin { ->setLoadOptions(['id', 'label']) ->execute()->first()['options'], 'tags' => Tag::get() - ->addSelect('id', 'name', 'color', 'is_selectable', 'description') + ->addSelect('id', 'label', 'color', 'is_selectable', 'description') ->addWhere('used_for', 'CONTAINS', 'civicrm_saved_search') ->execute(), ]; @@ -95,6 +95,8 @@ class Admin { 'NOT LIKE' => E::ts('Not Like'), 'REGEXP' => E::ts('Matches Pattern'), 'NOT REGEXP' => E::ts("Doesn't Match Pattern"), + 'REGEXP BINARY' => E::ts('Matches Pattern (case-sensitive)'), + 'NOT REGEXP BINARY' => E::ts("Doesn't Match Pattern (case-sensitive)"), 'BETWEEN' => E::ts('Is Between'), 'NOT BETWEEN' => E::ts('Not Between'), 'IS EMPTY' => E::ts('Is Empty'), diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js index 01947260a0..1b9adf9ffd 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js @@ -55,7 +55,7 @@ modules.push({text: label, id: key}); }, []), 'text'); this.getTags = function() { - return {results: formatForSelect2(CRM.crmSearchAdmin.tags, 'id', 'name', ['color', 'description'])}; + return {results: formatForSelect2(CRM.crmSearchAdmin.tags, 'id', 'label', ['color', 'description'])}; }; this.getPrimaryEntities = function() { diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js index 532541bcc6..ef28cde551 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js @@ -32,8 +32,10 @@ this.getField = searchMeta.getField; this.fields = function() { - var selectFields = ctrl.crmSearchAdmin.getSelectFields(); - var permissionField = [{ + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); + let permissionField = [{ text: ts('Current User Permission'), id: 'check user permission', description: ts('Check permission of logged-in user') diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js index 0527d1a1c4..a17d18c02d 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js @@ -64,9 +64,9 @@ } }; - this.makeTag = function(name) { + this.makeTag = function(label) { crmApi4('Tag', 'create', { - values: {name: name, color: ctrl.color, is_selectable: true, used_for: ['civicrm_saved_search']} + values: {label: label, color: ctrl.color, is_selectable: true, used_for: ['civicrm_saved_search']} }, 0).then(function(tag) { ctrl.allTags.push(tag); ctrl.toggleTag(tag); diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html index 31711443dc..26e52e3bf0 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html @@ -16,14 +16,14 @@ <a href ng-click="$ctrl.makeTag($ctrl.search)">{{ $ctrl.search }}</a> </div> </li> - <li ng-repeat="tag in $ctrl.allTags | filter:{name: $ctrl.search, is_selectable: true}"> + <li ng-repeat="tag in $ctrl.allTags | filter:{label: $ctrl.search, is_selectable: true}"> <a href ng-click="$ctrl.toggleTag(tag)"> <i class="crm-i fa-check" style="visibility: {{ $ctrl.hasTag(tag) ? 'visible' : 'hidden' }}"></i> <span class="crm-search-admin-tag-color" style="background-color: {{:: tag.color }}"></span> - {{:: tag.name }} + {{:: tag.label }} </a> </li> </ul> <span class="badge" ng-repeat="id in $ctrl.tagIds" style="{{:: $ctrl.getStyle(id) }}"> - {{:: $ctrl.getTag(id).name }} + {{:: $ctrl.getTag(id).label }} </span> diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js index bf4e16ab77..366bb69105 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js @@ -161,7 +161,7 @@ this.changeArg = function(index) { var val = ctrl.args[index].value; // Delete empty value - if (index && !val && ctrl.args.length > ctrl.fn.params[0].min_expr) { + if (index && !val && val !== 0 && ctrl.args.length > ctrl.fn.params[0].min_expr) { ctrl.args.splice(index, 1); } ctrl.writeExpr(); @@ -176,7 +176,7 @@ this.writeExpr = function() { if (ctrl.fnName) { var args = _.transform(ctrl.args, function(args, arg, index) { - if (arg.value || arg.flag_before) { + if (arg.value || arg.value === 0 || arg.flag_before) { var prefix = arg.flag_before || arg.name ? (index ? ' ' : '') + (arg.flag_before || arg.name) + (arg.value ? ' ' : '') : (index ? ', ' : ''); args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value)); } diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js index 3111e4a8b5..008b19bb54 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js @@ -28,9 +28,12 @@ this.styles.strikethrough = ts('Strikethrough'); this.fields = function() { - var allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); return { - results: ctrl.crmSearchAdmin.getSelectFields().concat(allFields) + results: selectFields.concat(allFields) }; }; diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js index 6a7d439f9e..323b09c773 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js @@ -16,9 +16,12 @@ this.getField = searchMeta.getField; this.fields = function() { - var allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); return { - results: ctrl.crmSearchAdmin.getSelectFields().concat(allFields) + results: selectFields.concat(allFields) }; }; diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js index 102e2bc36f..8225a2f7e8 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js @@ -125,7 +125,7 @@ this.getTemplate = function() { var field = ctrl.field || {}; - if (_.includes(['LIKE', 'NOT LIKE', 'REGEXP', 'NOT REGEXP'], ctrl.op)) { + if (_.includes(['LIKE', 'NOT LIKE', 'REGEXP', 'NOT REGEXP', 'REGEXP BINARY', 'NOT REGEXP BINARY'], ctrl.op)) { return '~/crmSearchTasks/crmSearchInput/text.html'; } diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html index f5c7508be3..5fdfa72670 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html @@ -10,7 +10,7 @@ <div class="form-group" ng-switch="$ctrl.dateType"> <div class="form-group" ng-switch-when="fixed"> - <input class="form-control" crm-ui-datepicker="{time: $ctrl.field.data_type === 'Timestamp'}" ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" ng-if="!$ctrl.isMulti()"> + <input class="form-control" crm-ui-datepicker="{time: $ctrl.field.data_type === 'Timestamp', start_date_years: 100, end_date_years: 100}" ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" ng-if="!$ctrl.isMulti()"> <input class="form-control" crm-multi-select-date ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" ng-if="$ctrl.isMulti()"> </div> diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js index bace427907..ed1ac2f9c2 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js @@ -14,16 +14,16 @@ crmApi4({ tags: ['Tag', 'get', { - select: ['id', 'name', 'color', 'description', 'is_selectable', 'parent_id'], + select: ['id', 'label', 'color', 'description', 'is_selectable', 'parent_id'], where: [ ['is_tagset', '=', false], ['used_for:name', 'CONTAINS', this.entity], ['OR', [['parent_id', 'IS NULL'], ['parent_id.is_tagset', '=', false]]] ], - orderBy: {name: 'ASC'} + orderBy: {label: 'ASC'} }], tagsets: ['Tag', 'get', { - select: ['id', 'name'], + select: ['id', 'name', 'label'], where: [['is_tagset', '=', true], ['used_for:name', 'CONTAINS', this.entity]] }], }).then(function(result) { @@ -36,7 +36,7 @@ var sorted = _.transform(rawTags, function(sorted, tag) { sorted[tag.id] = { id: tag.id, - text: tag.name, + text: tag.label, description: tag.description, color: tag.color, disabled: !tag.is_selectable, diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html index 51363c6e9d..d1bb6a09d8 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html @@ -28,7 +28,7 @@ > </div> <div ng-repeat="tagset in $ctrl.tagsets" class="form-inline"> - <label>{{:: tagset.name }}</label> + <label>{{:: tagset.label }}</label> <input ng-model="$ctrl.selectedTagsetTags[tagset.name]" ng-list diff --git a/civicrm/ext/search_kit/css/crmSearchAdmin.css b/civicrm/ext/search_kit/css/crmSearchAdmin.css index 375f63358b..02a8e323f6 100644 --- a/civicrm/ext/search_kit/css/crmSearchAdmin.css +++ b/civicrm/ext/search_kit/css/crmSearchAdmin.css @@ -156,7 +156,7 @@ } #bootstrap-theme.crm-search .api4-operator { - width: 110px; + width: 235px; } #bootstrap-theme.crm-search input[type=number] { diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml index 8bcdf3101c..b1280f7000 100644 --- a/civicrm/ext/search_kit/info.xml +++ b/civicrm/ext/search_kit/info.xml @@ -14,14 +14,14 @@ <url desc="Issues">https://lab.civicrm.org/dev/report/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-01-06</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>mgmt:required</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments> <classloader> diff --git a/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php b/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php index e132bcb8aa..dbaaae9add 100644 --- a/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php +++ b/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php @@ -1,13 +1,9 @@ <?php use CRM_Search_ExtensionUtil as E; -$menuItems = []; -$domains = \Civi\Api4\Domain::get(FALSE) - ->addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Navigation_search_kit_domain_' . $domain['id'], +return [ + [ + 'name' => 'Navigation_search_kit', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -27,10 +23,8 @@ foreach ($domains as $domain) { 'is_active' => TRUE, 'has_separator' => 2, 'weight' => 13, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php index a6033fc823..a92c2218cc 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php @@ -74,10 +74,12 @@ class SearchDisplayTest extends \PHPUnit\Framework\TestCase implements HeadlessI ->addValue('label', 'My test search') ->execute()->first(); // Name will be created from munged label - $this->assertEquals('My_test_search', $savedSearch0['name']); - // Name will have _1, _2, etc. appended to ensure it's unique - $this->assertEquals('My_test_search_1', $savedSearch1['name']); - $this->assertEquals('My_test_search_2', $savedSearch2['name']); + $this->assertEquals('My_test_search', $savedSearch0['name'], "SavedSearch 0"); + // Name will have _r appended to ensure it's unique, where r is a string of + // random chars. + $this->assertEquals('My_test_search_', substr($savedSearch1['name'], 0, 15), "SavedSearch 1"); + $this->assertEquals('My_test_search_', substr($savedSearch2['name'], 0, 15), "SavedSearch 2"); + $this->assertNotSame($savedSearch1['name'], $savedSearch2['name'], "SavedSearch 1,2"); $display0 = SearchDisplay::create() ->addValue('saved_search_id', $savedSearch0['id']) @@ -95,11 +97,12 @@ class SearchDisplayTest extends \PHPUnit\Framework\TestCase implements HeadlessI ->addValue('type', 'table') ->execute()->first(); // Name will be created from munged label - $this->assertEquals('My_test_display', $display0['name']); - // Name will have _1 appended to ensure it's unique to savedSearch0 - $this->assertEquals('My_test_display_1', $display1['name']); - // This is for a different saved search so doesn't need a number appended - $this->assertEquals('My_test_display', $display2['name']); + $this->assertEquals('My_test_display', $display0['name'], "SearchDisplay 0"); + // Name will have _r appended (r is random string) to ensure it's unique to + // savedSearch0. + $this->assertEquals('My_test_display_', substr($display1['name'], 0, 16), "SearchDisplay 1"); + // This is for a different saved search so doesn't need a suffix appended + $this->assertEquals('My_test_display', $display2['name'], "SearchDisplay 2"); } } diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php index 6f15b6a4b8..9a1d211b7e 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php @@ -62,6 +62,11 @@ class SearchDownloadTest extends \PHPUnit\Framework\TestCase implements Headless 'type' => 'field', 'rewrite' => '[duration] [subject]', ], + // This column ought to be removed by the download action + [ + 'type' => 'links', + 'links' => [], + ], [ 'key' => 'details', 'label' => 'Details', diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php index 9a90a0910c..9d36159ea8 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php @@ -81,6 +81,10 @@ class SearchExportTest extends \PHPUnit\Framework\TestCase implements HeadlessIn // Readonly fields should not be included $this->assertArrayNotHasKey('created_date', $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['values']); $this->assertArrayNotHasKey('modified_date', $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['values']); + // Match criteria + $this->assertEquals(['name'], $export['SavedSearch_TestSearchToExport']['params']['match']); + sort($export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['match']); + $this->assertEquals(['name', 'saved_search_id'], $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['match']); // Add a second display SearchDisplay::create(FALSE) diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php index 0dba79e959..d25f36ced9 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php @@ -83,7 +83,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -197,7 +197,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -270,7 +270,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -356,7 +356,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -466,7 +466,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -556,7 +556,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => FALSE, @@ -802,7 +802,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { 'saved_search_id' => '$id', 'name' => $displayName, 'type' => 'table', - 'label' => '', + 'label' => 'TestDisplay', 'acl_bypass' => TRUE, 'settings' => [ 'limit' => 20, @@ -979,7 +979,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'list', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -1496,7 +1496,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -1861,7 +1861,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -1914,7 +1914,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -1952,7 +1952,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -2072,7 +2072,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -2162,7 +2162,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php index 2cf32ba633..ac81e735ed 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php @@ -502,4 +502,90 @@ class SearchRunWithCustomFieldTest extends CustomTestBase { $this->assertEquals('Dewey', $result[0]['columns'][0]['val']); } + public function testJoinWithCustomFieldEndingIn_() { + $subject = uniqid(__FUNCTION__); + + $contact = Contact::create(FALSE) + ->execute()->single(); + + // CustomGroup based on Activity Type + CustomGroup::create(FALSE) + ->addValue('extends', 'Activity') + ->addValue('title', 'testactivity2') + ->addChain('field', CustomField::create() + ->addValue('custom_group_id', '$id') + ->addValue('label', 'testactivity_') + ->addValue('data_type', 'Boolean') + ->addValue('html_type', 'Radio') + ) + ->execute(); + + $sampleData = [ + ['activity_type_id:name' => 'Meeting', 'testactivity2.testactivity_' => TRUE], + ]; + $this->saveTestRecords('Activity', [ + 'defaults' => ['subject' => $subject, 'source_contact_id', $contact['id']], + 'records' => $sampleData, + ]); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Contact', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'GROUP_CONCAT(DISTINCT Contact_ActivityContact_Activity_01.testactivity2.testactivity_:label) AS GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', + ], + 'orderBy' => [], + 'where' => [['contact_type:name', '=', 'Individual']], + 'groupBy' => ['id'], + 'join' => [ + ['Activity AS Contact_ActivityContact_Activity_01', 'INNER', 'ActivityContact', + ['id', '=', 'Contact_ActivityContact_Activity_01.contact_id'], + ['Contact_ActivityContact_Activity_01.record_type_id:name', '=', '"Activity Source"'], + ['Contact_ActivityContact_Activity_01.activity_type_id:name', '=', '"Meeting"'], + ], + ], + 'having' => [], + ], + ], + 'display' => [ + 'type' => 'table', + 'label' => '', + 'settings' => [ + 'actions' => TRUE, + 'pager' => [], + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => 'Contact ID', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', + 'dataType' => 'Boolean', + 'label' => '(List) Contact Activities: testactivity2: testactivity_', + 'sortable' => TRUE, + ], + ], + 'sort' => [ + ['id', 'ASC'], + ], + ], + ], + 'afform' => NULL, + ]; + + $result = civicrm_api4('SearchDisplay', 'run', $params); + + $this->assertArrayHasKey('GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', $result[0]['data']); + $this->assertEquals('Yes', $result[0]['data']['GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label'][0]); + } + } diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php index e628fa87c5..feff968ec6 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php @@ -6,6 +6,7 @@ use Civi\Api4\Contact; use Civi\Api4\Contribution; use Civi\Api4\CustomField; use Civi\Api4\CustomGroup; +use Civi\Api4\Individual; use Civi\Api4\Relationship; use Civi\Api4\SearchSegment; use Civi\Test\HeadlessInterface; @@ -245,7 +246,7 @@ class SearchSegmentTest extends \PHPUnit\Framework\TestCase implements HeadlessI ['birth_date' => 'now - 33 year - 1 month'], [], ]; - Contact::save(FALSE) + Individual::save(FALSE) ->setRecords($sampleData) ->addChain('rel', Relationship::create() ->addValue('relationship_type_id', 1) @@ -274,6 +275,11 @@ class SearchSegmentTest extends \PHPUnit\Framework\TestCase implements HeadlessI ]) ->execute(); + $field = Individual::getFields(FALSE) + ->addWhere('name', '=', 'segment_Age_Range') + ->execute()->single(); + $this->assertEquals('Age Range', $field['label']); + $params = [ 'checkPermissions' => FALSE, 'return' => 'page:1', diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml index f4157a5233..14bffbc677 100644 --- a/civicrm/ext/sequentialcreditnotes/info.xml +++ b/civicrm/ext/sequentialcreditnotes/info.xml @@ -14,14 +14,14 @@ <url desc="Support">https://lab.civicrm.org/extensions/sequentialcreditnotes</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-28</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <mixins> <mixin>setting-php@1.0.0</mixin> diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php index d6b7615a10..ff208b3c45 100644 --- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php @@ -63,16 +63,16 @@ class CRM_Standaloneusers_Upgrader extends CRM_Extension_Upgrader_Base { $baseTpl = [ 'workflow_name' => 'password_reset', 'msg_title' => 'Password reset', - 'msg_subject' => 'Password reset link for {domain.name}', + 'msg_subject' => '{ts}Password reset link for{/ts} {domain.name}', 'msg_text' => <<<TXT - A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email. + {ts}A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.{/ts} {\$resetUrlPlaintext} {domain.name} TXT, 'msg_html' => <<<HTML - <p>A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.</p> + <p>{ts}A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.{/ts}</p> <p><a href="{\$resetUrlHtml}">{\$resetUrlHtml}</a></p> diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php index e02928d0e1..6e71dd1cde 100644 --- a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php +++ b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php @@ -20,7 +20,7 @@ class PasswordReset extends AbstractAction { * @var string * @required */ - protected string $token; + protected $token; /** * New password. @@ -28,7 +28,7 @@ class PasswordReset extends AbstractAction { * @var string * @required */ - protected string $password; + protected $password; public function _run(Result $result) { diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php index 101d210675..6205d79078 100644 --- a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php +++ b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php @@ -30,7 +30,7 @@ class SendPasswordReset extends AbstractAction { * @var string * @default '' */ - protected string $identifier; + protected $identifier; public function _run(Result $result) { $endNoSoonerThan = 0.25 + microtime(TRUE); diff --git a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php index 589005d657..07420f89be 100644 --- a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php +++ b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php @@ -8,15 +8,4 @@ return [ 'server_route' => 'civicrm/admin/role', 'permission' => ['access CiviCRM'], 'redirect' => 'civicrm/admin/roles', - 'create_submission' => TRUE, - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php index 40704a85bd..2c8ce2c33b 100644 --- a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php +++ b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php @@ -3,20 +3,9 @@ use CRM_Standaloneusers_ExtensionUtil as E; return [ 'type' => 'form', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Edit User account'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/user', 'permission' => ['cms:administer users'], 'redirect' => '/civicrm/admin/users', - 'create_submission' => TRUE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php index b7226f6d47..c2bf7bc7b7 100644 --- a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php +++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php @@ -3,21 +3,10 @@ use CRM_Standaloneusers_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Administer User Accounts'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-users', 'server_route' => 'civicrm/admin/users', 'permission' => ['cms:administer users'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Users and Permissions', 'label' => E::ts('User Accounts'), diff --git a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php index 2bd4e2da04..85fd811028 100644 --- a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php +++ b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php @@ -13,14 +13,4 @@ return [ 'label' => E::ts('User Roles'), 'weight' => 0, ], - 'requires' => [], - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, ]; diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml index 5598dd1ff1..07a87434b3 100644 --- a/civicrm/ext/standaloneusers/info.xml +++ b/civicrm/ext/standaloneusers/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://FIXME</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-11-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php b/civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php new file mode 100644 index 0000000000..acb8944bc9 --- /dev/null +++ b/civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php @@ -0,0 +1,32 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +$afform = [ + 'type' => 'search', + 'title' => E::ts('User Dashboard'), + 'server_route' => 'civicrm/user', + 'permission' => ['access Contact Dashboard'], + 'layout' => '', + // temporary, remove after merging https://github.com/civicrm/civicrm-core/pull/27783 + 'requires' => ['af', 'afCore', 'crmSearchDisplayTable'], +]; + +// Add displays for every SavedSearch tagged "UserDashboard" +$searchDisplays = civicrm_api4('SearchDisplay', 'get', [ + 'checkPermissions' => FALSE, + 'select' => ['name', 'label', 'type:name', 'saved_search_id.name'], + 'where' => [ + ['saved_search_id.is_current', '=', TRUE], + ['saved_search_id.tags:name', 'IN', ['UserDashboard']], + ], + 'orderBy' => ['name' => 'ASC'], +]); +foreach ($searchDisplays as $display) { + $afform['layout'] .= <<<HTML + <div af-fieldset="" class="af-container-style-pane" af-title="$display[label]"> + <{$display['type:name']} search-name="{$display['saved_search_id.name']}" display-name="$display[name]"></{$display['type:name']}> + </div> + HTML; +} + +return $afform; diff --git a/civicrm/ext/user_dashboard/info.xml b/civicrm/ext/user_dashboard/info.xml new file mode 100644 index 0000000000..e2690a85a1 --- /dev/null +++ b/civicrm/ext/user_dashboard/info.xml @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<extension key="user_dashboard" type="module"> + <file>user_dashboard</file> + <name>User Dashboard</name> + <description>Adds a page for users to see their contributions, memberships, etc.</description> + <license>AGPL-3.0</license> + <maintainer> + <author>CiviCRM</author> + <email>info@civicrm.org</email> + </maintainer> + <urls> + <url desc="Main Extension Page">http://FIXME</url> + <url desc="Documentation">http://FIXME</url> + <url desc="Support">http://FIXME</url> + <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> + </urls> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> + <develStage>alpha</develStage> + <compatibility> + <ver>5.68</ver> + </compatibility> + <comments>This extension is still experimental</comments> + <classloader> + <psr0 prefix="CRM_" path="."/> + <psr4 prefix="Civi\" path="Civi"/> + </classloader> + <civix> + <namespace>CRM/UserDashboard</namespace> + <format>23.02.1</format> + <angularModule>crmUserDashboard</angularModule> + </civix> + <mixins> + <mixin>mgd-php@1.0.0</mixin> + </mixins> +</extension> diff --git a/civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php b/civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php new file mode 100644 index 0000000000..753a40b9e9 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php @@ -0,0 +1,27 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'Dashboard_Tag', + 'entity' => 'Tag', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'label' => E::ts('User Dashboard'), + 'name' => 'UserDashboard', + 'description' => E::ts('Search will appear on the User Dashboard page'), + 'is_reserved' => TRUE, + 'used_for' => [ + 'civicrm_saved_search', + ], + 'color' => '#5d677b', + ], + 'match' => [ + 'name', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php new file mode 100644 index 0000000000..65538659cc --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php @@ -0,0 +1,175 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Activities', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Activities', + 'label' => E::ts('User Dashboard - Activities'), + 'api_entity' => 'Activity', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'subject', + 'activity_type_id:label', + 'GROUP_CONCAT(DISTINCT Activity_ActivityContact_Contact_01.sort_name) AS GROUP_CONCAT_Activity_ActivityContact_Contact_01_sort_name', + 'GROUP_CONCAT(DISTINCT Activity_ActivityContact_Contact_02.sort_name) AS GROUP_CONCAT_Activity_ActivityContact_Contact_02_sort_name', + 'activity_date_time', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + [ + 'status_id:name', + '!=', + 'Completed', + ], + ], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'Contact AS Activity_ActivityContact_Contact_01', + 'LEFT', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_01.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_01.record_type_id:name', + '=', + '"Activity Source"', + ], + ], + [ + 'Contact AS Activity_ActivityContact_Contact_02', + 'LEFT', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_02.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_02.record_type_id:name', + '=', + '"Activity Targets"', + ], + ], + [ + 'Contact AS Activity_ActivityContact_Contact_03', + 'INNER', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_03.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_03.record_type_id:name', + '=', + '"Activity Assignees"', + ], + [ + 'Activity_ActivityContact_Contact_03.id', + '=', + '"user_contact_id"', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Activities_SearchDisplay_UserDashboard_Activities', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Activities', + 'label' => E::ts('Your Assigned Activities'), + 'saved_search_id.name' => 'UserDashboard_Activities', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'expose_limit' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'activity_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'subject', + 'dataType' => 'String', + 'label' => E::ts('Subject'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Activity_ActivityContact_Contact_01_sort_name', + 'dataType' => 'String', + 'label' => E::ts('Added by'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Activity_ActivityContact_Contact_02_sort_name', + 'dataType' => 'String', + 'label' => E::ts('With'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'activity_date_time', + 'dataType' => 'Timestamp', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php new file mode 100644 index 0000000000..34c4d43b31 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php @@ -0,0 +1,149 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Groups', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Groups', + 'label' => E::ts('User Dashboard - Groups'), + 'api_entity' => 'Group', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'frontend_title', + 'Group_GroupContact_Contact_01.status:label', + 'MAX(Group_SubscriptionHistory_group_id_01.date) AS MAX_Group_SubscriptionHistory_group_id_01_date', + ], + 'orderBy' => [], + 'where' => [ + [ + 'Group_GroupContact_Contact_01.id', + '=', + 'user_contact_id', + ], + [ + 'visibility:name', + '=', + 'Public Pages', + ], + [ + 'is_active', + '=', + TRUE, + ], + ], + 'groupBy' => [ + 'id', + 'Group_GroupContact_Contact_01.id', + ], + 'join' => [ + [ + 'Contact AS Group_GroupContact_Contact_01', + 'LEFT', + 'GroupContact', + [ + 'id', + '=', + 'Group_GroupContact_Contact_01.group_id', + ], + ], + [ + 'SubscriptionHistory AS Group_SubscriptionHistory_group_id_01', + 'LEFT', + [ + 'id', + '=', + 'Group_SubscriptionHistory_group_id_01.group_id', + ], + [ + 'Group_SubscriptionHistory_group_id_01.contact_id', + '=', + '"user_contact_id"', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Groups_SearchDisplay_UserDashboard_Groups', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Groups', + 'label' => E::ts('Your Group(s)'), + 'saved_search_id.name' => 'UserDashboard_Groups', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'Group_GroupContact_Contact_01.status', + 'ASC', + ], + ], + 'limit' => 20, + 'pager' => [ + 'expose_limit' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'frontend_title', + 'dataType' => 'String', + 'label' => E::ts('Group'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'Group_GroupContact_Contact_01.status:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MAX_Group_SubscriptionHistory_group_id_01_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Since'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'cssRules' => [ + [ + 'disabled', + 'Group_GroupContact_Contact_01.status', + '=', + 'Removed', + ], + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php new file mode 100644 index 0000000000..9b9f696c7b --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php @@ -0,0 +1,146 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviPledge')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Pledges', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Pledges', + 'label' => E::ts('User Dashboard - Pledges'), + 'api_entity' => 'Pledge', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'amount', + 'SUM(Pledge_PledgePayment_pledge_id_01.actual_amount) AS SUM_Pledge_PledgePayment_pledge_id_01_actual_amount', + 'financial_type_id:label', + 'create_date', + 'MIN(Pledge_PledgePayment_pledge_id_02.scheduled_date) AS MIN_Pledge_PledgePayment_pledge_id_02_scheduled_date', + 'MAX(Pledge_PledgePayment_pledge_id_02.scheduled_amount) AS MAX_Pledge_PledgePayment_pledge_id_02_scheduled_amount', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'PledgePayment AS Pledge_PledgePayment_pledge_id_01', + 'LEFT', + ['id', '=', 'Pledge_PledgePayment_pledge_id_01.pledge_id'], + ['Pledge_PledgePayment_pledge_id_01.status_id:name', '=', '"Completed"'], + ], + [ + 'PledgePayment AS Pledge_PledgePayment_pledge_id_02', + 'LEFT', + ['id', '=', 'Pledge_PledgePayment_pledge_id_02.pledge_id'], + ['Pledge_PledgePayment_pledge_id_02.status_id:name', '!=', '"Completed"'], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Pledges_SearchDisplay_UserDashboard_Pledges', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Pledges', + 'label' => E::ts('Your Pledges'), + 'saved_search_id.name' => 'UserDashboard_Pledges', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'amount', + 'dataType' => 'Money', + 'label' => E::ts('Pledged'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'SUM_Pledge_PledgePayment_pledge_id_01_actual_amount', + 'dataType' => 'Money', + 'label' => E::ts('Total Paid'), + 'sortable' => TRUE, + 'empty_value' => '0', + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Pledged For'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'create_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Pledge Made'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MIN_Pledge_PledgePayment_pledge_id_02_scheduled_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Next Pay Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MAX_Pledge_PledgePayment_pledge_id_02_scheduled_amount', + 'dataType' => 'Money', + 'label' => E::ts('Next Amount'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php new file mode 100644 index 0000000000..d5b5638feb --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php @@ -0,0 +1,114 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviContribute')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Contributions', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Contributions', + 'label' => E::ts('User Dashboard - Contributions'), + 'api_entity' => 'Contribution', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'total_amount', + 'financial_type_id:label', + 'contribution_status_id:label', + 'receive_date', + 'receipt_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Contributions_SearchDisplay_UserDashboard_Contributions', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Contributions', + 'label' => E::ts('Your Contribution(s)'), + 'saved_search_id.name' => 'UserDashboard_Contributions', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'total_amount', + 'dataType' => 'String', + 'label' => E::ts('Total Amount'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'receive_date', + 'dataType' => 'Date', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'receipt_date', + 'dataType' => 'Date', + 'label' => E::ts('Receipt Sent'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'contribution_status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php new file mode 100644 index 0000000000..c1cb1087cd --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php @@ -0,0 +1,106 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviEvent')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Events', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Events', + 'label' => E::ts('User Dashboard - Events'), + 'api_entity' => 'Participant', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'event_id.title', + 'role_id:label', + 'status_id:label', + 'event_id.start_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Events_SearchDisplay_UserDashboard_Events', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Events', + 'label' => E::ts('Your Event(s)'), + 'saved_search_id.name' => 'UserDashboard_Events', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'event_id.title', + 'dataType' => 'String', + 'label' => E::ts('Event'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'event_id.start_date', + 'dataType' => 'Date', + 'label' => E::ts('Event Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'role_id:label', + 'dataType' => 'String', + 'label' => E::ts('Role'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php new file mode 100644 index 0000000000..3604070c83 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php @@ -0,0 +1,114 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviMember')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Memberships', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Memberships', + 'label' => E::ts('User Dashboard - Memberships'), + 'api_entity' => 'Membership', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'membership_type_id:label', + 'status_id:label', + 'start_date', + 'end_date', + 'join_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Memberships_SearchDisplay_UserDashboard_Memberships', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Memberships', + 'label' => E::ts('Your Membership(s)'), + 'saved_search_id.name' => 'UserDashboard_Memberships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'membership_type_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'join_date', + 'dataType' => 'Date', + 'label' => E::ts('Member Since'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => E::ts('Start Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'end_date', + 'dataType' => 'Date', + 'label' => E::ts('End Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php new file mode 100644 index 0000000000..4098795f14 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php @@ -0,0 +1,98 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviContribute')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_PCPs', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_PCPs', + 'label' => E::ts('User Dashboard - PCPs'), + 'api_entity' => 'PCP', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'title', + 'status_id:label', + 'page_id.frontend_title', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_PCPs_SearchDisplay_UserDashboard_PCPs', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_PCPs', + 'label' => E::ts('Personal Campaign Pages'), + 'saved_search_id.name' => 'UserDashboard_PCPs', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'title', + 'dataType' => 'String', + 'label' => E::ts('Title'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'page_id.frontend_title', + 'dataType' => 'String', + 'label' => E::ts('Campaign'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php new file mode 100644 index 0000000000..85c7a653dc --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php @@ -0,0 +1,143 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Relationships', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Relationships', + 'label' => E::ts('User Dashboard - Relationships'), + 'api_entity' => 'RelationshipCache', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'near_relation:label', + 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'start_date', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + ], + 'orderBy' => [], + 'where' => [ + ['near_contact_id', '=', 'user_contact_id'], + ['is_current', '=', TRUE], + ], + 'groupBy' => [], + 'join' => [ + [ + 'Contact AS RelationshipCache_Contact_far_contact_id_01', + 'LEFT', + ['far_contact_id', '=', 'RelationshipCache_Contact_far_contact_id_01.id'], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Relationships_SearchDisplay_UserDashboard_Relationships', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Relationships', + 'label' => E::ts('Your Contacts / Organizations'), + 'saved_search_id.name' => 'UserDashboard_Relationships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'near_relation:label', + 'dataType' => 'String', + 'label' => E::ts('Relationship'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'dataType' => 'String', + 'label' => E::ts('With'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_type:icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => E::ts('Since'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'dataType' => 'String', + 'label' => E::ts('City'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('State/Prov'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'dataType' => 'String', + 'label' => E::ts('Email'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + 'dataType' => 'String', + 'label' => E::ts('Phone'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/user_dashboard.civix.php b/civicrm/ext/user_dashboard/user_dashboard.civix.php new file mode 100644 index 0000000000..3f00bdefde --- /dev/null +++ b/civicrm/ext/user_dashboard/user_dashboard.civix.php @@ -0,0 +1,200 @@ +<?php + +// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file + +/** + * The ExtensionUtil class provides small stubs for accessing resources of this + * extension. + */ +class CRM_UserDashboard_ExtensionUtil { + const SHORT_NAME = 'user_dashboard'; + const LONG_NAME = 'user_dashboard'; + const CLASS_PREFIX = 'CRM_UserDashboard'; + + /** + * Translate a string using the extension's domain. + * + * If the extension doesn't have a specific translation + * for the string, fallback to the default translations. + * + * @param string $text + * Canonical message text (generally en_US). + * @param array $params + * @return string + * Translated text. + * @see ts + */ + public static function ts($text, $params = []): string { + if (!array_key_exists('domain', $params)) { + $params['domain'] = [self::LONG_NAME, NULL]; + } + return ts($text, $params); + } + + /** + * Get the URL of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: 'http://example.org/sites/default/ext/org.example.foo'. + * Ex: 'http://example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function url($file = NULL): string { + if ($file === NULL) { + return rtrim(CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME), '/'); + } + return CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME, $file); + } + + /** + * Get the path of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo'. + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function path($file = NULL) { + // return CRM_Core_Resources::singleton()->getPath(self::LONG_NAME, $file); + return __DIR__ . ($file === NULL ? '' : (DIRECTORY_SEPARATOR . $file)); + } + + /** + * Get the name of a class within this extension. + * + * @param string $suffix + * Ex: 'Page_HelloWorld' or 'Page\\HelloWorld'. + * @return string + * Ex: 'CRM_Foo_Page_HelloWorld'. + */ + public static function findClass($suffix) { + return self::CLASS_PREFIX . '_' . str_replace('\\', '_', $suffix); + } + +} + +use CRM_UserDashboard_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _user_dashboard_civix_civicrm_config($config = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $extRoot = __DIR__ . DIRECTORY_SEPARATOR; + $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); + set_include_path($include_path); + // Based on <compatibility>, this does not currently require mixin/polyfill.php. +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function _user_dashboard_civix_civicrm_install() { + _user_dashboard_civix_civicrm_config(); + // Based on <compatibility>, this does not currently require mixin/polyfill.php. +} + +/** + * (Delegated) Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function _user_dashboard_civix_civicrm_enable(): void { + _user_dashboard_civix_civicrm_config(); + // Based on <compatibility>, this does not currently require mixin/polyfill.php. +} + +/** + * Inserts a navigation menu item at a given place in the hierarchy. + * + * @param array $menu - menu hierarchy + * @param string $path - path to parent of this item, e.g. 'my_extension/submenu' + * 'Mailing', or 'Administer/System Settings' + * @param array $item - the item to insert (parent/child attributes will be + * filled for you) + * + * @return bool + */ +function _user_dashboard_civix_insert_navigation_menu(&$menu, $path, $item) { + // If we are done going down the path, insert menu + if (empty($path)) { + $menu[] = [ + 'attributes' => array_merge([ + 'label' => $item['name'] ?? NULL, + 'active' => 1, + ], $item), + ]; + return TRUE; + } + else { + // Find an recurse into the next level down + $found = FALSE; + $path = explode('/', $path); + $first = array_shift($path); + foreach ($menu as $key => &$entry) { + if ($entry['attributes']['name'] == $first) { + if (!isset($entry['child'])) { + $entry['child'] = []; + } + $found = _user_dashboard_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _user_dashboard_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _user_dashboard_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _user_dashboard_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _user_dashboard_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _user_dashboard_civix_fixNavigationMenuItems(&$nodes, &$maxNavID, $parentID) { + $origKeys = array_keys($nodes); + foreach ($origKeys as $origKey) { + if (!isset($nodes[$origKey]['attributes']['parentID']) && $parentID !== NULL) { + $nodes[$origKey]['attributes']['parentID'] = $parentID; + } + // If no navID, then assign navID and fix key. + if (!isset($nodes[$origKey]['attributes']['navID'])) { + $newKey = ++$maxNavID; + $nodes[$origKey]['attributes']['navID'] = $newKey; + $nodes[$newKey] = $nodes[$origKey]; + unset($nodes[$origKey]); + $origKey = $newKey; + } + if (isset($nodes[$origKey]['child']) && is_array($nodes[$origKey]['child'])) { + _user_dashboard_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} diff --git a/civicrm/ext/user_dashboard/user_dashboard.php b/civicrm/ext/user_dashboard/user_dashboard.php new file mode 100644 index 0000000000..5cd4495aa7 --- /dev/null +++ b/civicrm/ext/user_dashboard/user_dashboard.php @@ -0,0 +1,80 @@ +<?php + +require_once 'user_dashboard.civix.php'; +use CRM_UserDashboard_ExtensionUtil as E; + +/** + * Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ + */ +function user_dashboard_civicrm_config(&$config): void { + _user_dashboard_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function user_dashboard_civicrm_install(): void { + _user_dashboard_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function user_dashboard_civicrm_enable(): void { + _user_dashboard_civix_civicrm_enable(); +} + +/** + * Tag SavedSearches with the "UserDashboard" tag. + * + * The reason for using this hook is that it's write-once (just during insert), + * and after that the user can freely tag and untag searches. + * + * If the tag was part of the .mgd.php file for each search then it would "stick" and + * the user would not be able to remove tags without their changes reverting on every managed reconcile. + * Also, adding it to the .mgd.php file requires hacking the exported api call with a 'chain', etc. + * + * @implements CRM_Utils_Hook::post() + */ +function user_dashboard_civicrm_post($action, $entity, $id, $savedSearch) { + if ($entity !== 'SavedSearch' || $action !== 'create' || !str_starts_with($savedSearch->name, 'UserDashboard_')) { + return; + } + + // Transition note: the legacy dashboard used a setting ('user_dashboard_options') + // to control which panes are enabled. + // This new extension uses a tag. + // For the next year or so, we'll conditionally tag the searches in this extension based on that setting. + // When the transition is complete, the setting can be deleted and this class can be simplified to unconditionally + // tag all SavedSearches in this extension. + $legacySetting = Civi\Api4\Setting::get(FALSE) + ->addSelect('user_dashboard_options:name') + ->execute() + ->first(); + + // If the legacy setting corresponding to this pane is enabled, tag it + $settingNames = [ + 'UserDashboard_Activities' => 'Assigned Activities', + 'UserDashboard_Groups' => 'Groups', + 'UserDashboard_Pledges' => 'CiviPledge', + 'UserDashboard_Contributions' => 'CiviContribute', + 'UserDashboard_Events' => 'CiviEvent', + 'UserDashboard_Memberships' => 'CiviMember', + 'UserDashboard_PCPs' => 'PCP', + 'UserDashboard_Relationships' => 'Permissioned Orgs', + ]; + + $settingName = $settingNames[$savedSearch->name] ?? NULL; + + if (!$settingName || in_array($settingName, $legacySetting['value'], TRUE)) { + Civi\Api4\EntityTag::save(FALSE) + ->addRecord(['entity_table' => 'civicrm_saved_search', 'entity_id' => $id, 'tag_id:name' => 'UserDashboard']) + ->execute(); + } +} diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js index f1bb534944..852540fab8 100644 --- a/civicrm/js/Common.js +++ b/civicrm/js/Common.js @@ -538,7 +538,23 @@ if (!CRM.vars) CRM.vars = {}; }); } - function getStaticOptionMarkup(staticItems) { + function renderQuickAddMarkup(quickAddLinks) { + if (!quickAddLinks || !quickAddLinks.length) { + return ''; + } + let markup = '<div class="crm-entityref-links crm-entityref-quick-add">'; + CRM.config.quickAdd.forEach((link) => { + if (quickAddLinks.includes(link.path)) { + markup += ' <a class="crm-hover-button" href="' + _.escape(CRM.url(link.path)) + '">' + + '<i class="crm-i ' + _.escape(link.icon) + '" aria-hidden="true"></i> ' + + _.escape(link.title) + '</a>'; + } + }); + markup += '</div>'; + return markup; + } + + function renderStaticOptionMarkup(staticItems) { if (!staticItems.length) { return ''; } @@ -559,9 +575,11 @@ if (!CRM.vars) CRM.vars = {}; } select2Options = select2Options || {}; return $(this).each(function() { - var $el = $(this).off('.crmEntity'), - staticItems = getStaticOptions(select2Options.static), - multiple = !!select2Options.multiple; + const $el = $(this).off('.crmEntity'); + let staticItems = getStaticOptions(select2Options.static), + quickAddLinks = select2Options.quickAdd, + multiple = !!select2Options.multiple, + key = apiParams.key || 'id'; $el.crmSelect2(_.extend({ ajax: { @@ -604,18 +622,25 @@ if (!CRM.vars) CRM.vars = {}; } }, formatInputTooShort: function() { - var txt = _.escape($.fn.select2.defaults.formatInputTooShort.call(this)); - txt += getStaticOptionMarkup(staticItems); - return txt; + let html = _.escape($.fn.select2.defaults.formatInputTooShort.call(this)); + html += renderStaticOptionMarkup(staticItems); + html += renderQuickAddMarkup(quickAddLinks); + return html; + }, + formatNoMatches: function() { + let html = _.escape($.fn.select2.defaults.formatNoMatches); + html += renderQuickAddMarkup(quickAddLinks); + return html; } }, select2Options)); - $el.on('select2-open.crmEntity', function() { + $el.on('select2-open.crmEntity', function(){ var $el = $(this); $('#select2-drop') .off('.crmEntity') - .on('click.crmEntity', '.crm-entityref-links-static a', function(e) { - var id = $(this).attr('href').substr(1), + // Add static item to selection when clicking static links + .on('click.crmEntity', '.crm-entityref-links-static a', function() { + let id = $(this).attr('href').substring(1), item = _.findWhere(staticItems, {id: id}); $el.select2('close'); if (multiple) { @@ -628,6 +653,34 @@ if (!CRM.vars) CRM.vars = {}; $el.select2('data', item, true); } return false; + }) + // Pop-up Afform when clicking quick-add links + .on('click.crmEntity', '.crm-entityref-quick-add a', function() { + let url = $(this).attr('href'); + $el.select2('close'); + CRM.loadForm(url).on('crmFormSuccess', (e, data) => { + // Quick-add Afform has been submitted, parse submission data for id of created entity + const response = data.submissionResponse && data.submissionResponse[0]; + let createdId; + if (typeof response === 'object') { + // Loop through entities created by the afform (there should be only one) + Object.keys(response).forEach((entity) => { + if (Array.isArray(response[entity]) && response[entity][0] && response[entity][0][key]) { + createdId = response[entity][0][key]; + } + }); + } + // Update field value with new id and the widget will automatically fetch the label + if (createdId) { + if (multiple && $el.val()) { + // Select2 v3 uses a string instead of array for multiple values + $el.val($el.val() + ',' + createdId).change(); + } else { + $el.val('' + createdId).change(); + } + } + }); + return false; }); }); }); diff --git a/civicrm/mixin/setting-admin@1/mixin.php b/civicrm/mixin/setting-admin@1/mixin.php new file mode 100644 index 0000000000..7cfd42999b --- /dev/null +++ b/civicrm/mixin/setting-admin@1/mixin.php @@ -0,0 +1,214 @@ +<?php + +/** + * The "setting-admin" mixin defines a standard idiom for managing extension settings: + * + * 1. Create a permission "administer {myext}" ("Administer {My Extension}"). + * 2. Create a page "civicrm/admin/setting/{myext}" (via `CRM_Admin_Form_Generic`) + * 3. Assign all settings from "{myext}" to appear on the page. + * 4. Create a link "Administer > System Settings" to "{My Extension} Settings" + * + * (The values of "{myext}" and "{My Extension}" come from info.xml's `<file>` and `<name>`.) + * + * If you don't like the defaults, then there are a few override points: + * + * - If you manually create permission "administer {myext}", then your label/description takes precedence. + * - If you manually register route "civicrm/admin/setting/{myext}", then your definition takes precedence. + * - If you manually configure a setting with `settings_page`, then that setting will move to the other page. + * (To make a hidden setting, specify `settings_page => []`.) + * - If you manually add "civicrm/admin/setting/{myext}" to the menu, then your link takes precedence. + * + * Additionally, there is experimental support for overrides in info.xml. (Respected by v1.0.0 but not guaranteed future.) + * + * <civix><setting-page-title>My Custom Title</setting-page-title></civix> + * + * @mixinName setting-admin + * @mixinVersion 1.1.0 + * @since 5.68 + */ + +namespace Civi\Mixin\SettingAdminV1; + +use Civi; + +class About { + + /** + * @var \CRM_Extension_MixInfo + */ + private $mixInfo; + + /** + * @var \CRM_Extension_Info + */ + private $info; + + /** + * @param \CRM_Extension_MixInfo $mixInfo + */ + public static function instance(\CRM_Extension_MixInfo $mixInfo): About { + $about = new About(); + $about->mixInfo = $mixInfo; + $about->info = \CRM_Extension_System::singleton()->getMapper()->keyToInfo($mixInfo->longName); + return $about; + } + + public function getPath(): string { + return 'civicrm/admin/setting/' . $this->mixInfo->shortName; + } + + public function getPerm(): string { + return 'administer ' . $this->mixInfo->shortName; + } + + public function getLabel(): string { + return $this->info->label ? _ts($this->info->label, ['domain' => $this->info->key]) : $this->info->key; + } + + public function getPageTitle(): string { + // Changing the title any other way is slightly annoying because you have to override both route+nav. + // It might be nice if one (route or menu) reliably inherited its title from the other... + if (!empty($this->info->civix['setting-page-title'])) { + return $this->info->civix['setting-page-title']; + // Could call _ts(..., [domain=>...]), but translation appears to happen at another level, + // and double-translation might confuse multilingual. + } + return ts('%1 Settings', [1 => $this->getLabel()]); + } + + public function getRoute(): array { + return [ + 'title' => $this->getPageTitle(), + 'page_callback' => 'CRM_Admin_Form_Generic', + 'access_arguments' => [['administer CiviCRM', $this->getPerm()], 'or'], + 'adminGroup' => 'System Settings', + 'desc' => _ts($this->info->description ?: ''), + ]; + } + + public function getNavigation(): array { + return [ + 'label' => $this->getPageTitle(), + 'name' => sprintf('%s_setting_admin', $this->mixInfo->shortName), + 'url' => $this->getPath() . '?reset=1', + // 'icon' => 'crm-i fa-wrench', // None of the other "System Settings" have icons, so we don't. + // 'permission' => ['administer CiviCRM', $this->getPerm()], + 'permission' => "administer CiviCRM,{$this->getPerm()}", + 'permission_operator' => 'OR', + ]; + } + +} + +class Nav { + + /** + * Visit all items in the nav-tree. + * + * @param array $items + * @param callable $callback + * function(array &$item): mixed + * To short-circuit execution, the callback should return a non-null value. + * @return string|null + * Return NULL by default. If the walk was short-circuited, then return that value. + */ + public static function walk(&$items, callable $callback) { + foreach ($items as &$item) { + $result = $callback($item); + if ($result !== NULL) { + return $result; + } + if (!empty($item['child'])) { + $result = static::walk($item['child'], $callback); + if ($result !== NULL) { + return $result; + } + } + } + return NULL; + } + +} + +/** + * @param \CRM_Extension_MixInfo $mixInfo + * @param \CRM_Extension_BootCache $bootCache + */ +return function ($mixInfo, $bootCache) { + + // Register the setting page ("civicrm/admin/setting/{myext}"). + Civi::dispatcher()->addListener('&hook_civicrm_alterMenu', function (array &$items) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + if (!isset($items[$about->getPath()])) { + $items[$about->getPath()] = $about->getRoute(); + } + }, -1000); + + // Define a permission "administer {myext}" + Civi::dispatcher()->addListener('&hook_civicrm_permission', function (array &$permissions) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + $perm = 'administer ' . $mixInfo->shortName; + if (!isset($permissions[$perm])) { + $permissions[$perm] = ts('%1: Administer settings', [1 => $about->getLabel()]); + } + }, -1000); + + // Any settings with "group=={myext}" should be added to our setting page (unless overridden). + // By default, 'weight' is based on the order-of-declaration (spaced out with increments of 10). + Civi::dispatcher()->addListener('&hook_civicrm_alterSettingsMetaData', function(array &$settingsMetaData) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $weight = 1000; + $weightInterval = 10; + + foreach ($settingsMetaData as &$setting) { + if (($setting['group'] ?? '') === $mixInfo->shortName) { + if (!array_key_exists('settings_pages', $setting)) { + $setting['settings_pages'][$mixInfo->shortName] = [ + 'weight' => $weight, + ]; + $weight += $weightInterval; + } + } + } + }, -1000); + + // Add navigation-item ('civicrm/admin/setting/{myext}') unless you've already done so. + Civi::dispatcher()->addListener('&hook_civicrm_navigationMenu', function (&$menu) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + $newItem = $about->getNavigation() + ['active' => 1]; + + // Skip if we're already in the menu. (Ignore optional suffix `?reset=1`) + $found = Nav::walk($menu, function(&$item) use ($about) { + if (!isset($item['attributes']['url'])) { + return NULL; + } + return strpos($item['attributes']['url'], $about->getPath()) === 0 ? 'found' : NULL; + }); + if ($found) { + return; + } + + Nav::walk($menu, function(&$item) use ($newItem) { + if ($item['attributes']['name'] === 'System Settings') { + $item['child'][] = ['attributes' => $newItem]; + return 'done'; + } + }); + }, -1000); + +}; diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index 8cf541b3bc..4403e7ec6c 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -15,32 +15,16 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress -## CiviCRM 5.67.3 +## CiviCRM 5.68.0 -Released November 30, 2023 +Released December 6, 2023 -- **[Synopsis](release-notes/5.67.3.md#synopsis)** -- **[Bugs resolved](release-notes/5.67.3.md#bugs)** -- **[Credits](release-notes/5.67.3.md#credits)** -- **[Feedback](release-notes/5.67.3.md#feedback)** - -## CiviCRM 5.67.2 - -Released November 28, 2023 - -- **[Synopsis](release-notes/5.67.2.md#synopsis)** -- **[Bugs resolved](release-notes/5.67.2.md#bugs)** -- **[Credits](release-notes/5.67.2.md#credits)** -- **[Feedback](release-notes/5.67.2.md#feedback)** - -## CiviCRM 5.67.1 - -Released November 15, 2023 - -- **[Synopsis](release-notes/5.67.1.md#synopsis)** -- **[Bugs resolved](release-notes/5.67.1.md#bugs)** -- **[Credits](release-notes/5.67.1.md#credits)** -- **[Feedback](release-notes/5.67.1.md#feedback)** +- **[Synopsis](release-notes/5.68.0.md#synopsis)** +- **[Features](release-notes/5.68.0.md#features)** +- **[Bugs resolved](release-notes/5.68.0.md#bugs)** +- **[Miscellany](release-notes/5.68.0.md#misc)** +- **[Credits](release-notes/5.68.0.md#credits)** +- **[Feedback](release-notes/5.68.0.md#feedback)** ## CiviCRM 5.67.0 diff --git a/civicrm/release-notes/5.67.0.md b/civicrm/release-notes/5.67.0.md index 2bfa4124ad..afc2705a75 100644 --- a/civicrm/release-notes/5.67.0.md +++ b/civicrm/release-notes/5.67.0.md @@ -126,9 +126,8 @@ Released November 1, 2023 - **[PHP 8.1] Registered Templates: Undefined array key "weight" ([dev/core#4716](https://lab.civicrm.org/dev/core/-/issues/4716): - [27939](https://github.com/civicrm/civicrm-core/pull/27939), - [27949](https://github.com/civicrm/civicrm-core/pull/27949), and - [27983](https://github.com/civicrm/civicrm-core/pull/27983))** + [27939](https://github.com/civicrm/civicrm-core/pull/27939) and + [27949](https://github.com/civicrm/civicrm-core/pull/27949))** The action links (e.g. edit, preview, etc.) on price fields, duplicate matching rules, and report templates now have weights assigned in code, @@ -694,9 +693,6 @@ Released November 1, 2023 - **Fix last notices on Online event registration by removing variables ([27489](https://github.com/civicrm/civicrm-core/pull/27489))** -- **(RC Regression) Fix extraneous price-set validation on participant form - ([27965](https://github.com/civicrm/civicrm-core/pull/27965))** - ### CiviGrant - **CiviGrant - Cleanup and simplify grant form, remove unused tab code @@ -980,9 +976,6 @@ Released November 1, 2023 - **PHPStorm - Add PHPSTORM_META about test functions ([27663](https://github.com/civicrm/civicrm-core/pull/27663))** -- **Logging - Prevent new warnings on PHP 8.1.25+ - ([dev/core#4739](https://lab.civicrm.org/dev/core/-/issues/4739): [27981](https://github.com/civicrm/civicrm-core/pull/27981))** - ## <a name="credits"></a>Credits This release was developed by the following code authors: diff --git a/civicrm/release-notes/5.67.1.md b/civicrm/release-notes/5.67.1.md deleted file mode 100644 index 108d92f9f3..0000000000 --- a/civicrm/release-notes/5.67.1.md +++ /dev/null @@ -1,48 +0,0 @@ -# CiviCRM 5.67.1 - -Released November 15, 2023 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -| --------------------------------------------------------------- | -------- | -| Change the database schema? | no | -| **Alter the API?** | **yes** | -| Require attention to configuration options? | no | -| Fix problems installing or upgrading to a previous version? | no | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_APIv3_: Call to "civicrm_api3_create_error" may fail within some Scheduled Jobs ([dev/core#4751](https://lab.civicrm.org/dev/core/-/issues/4751): [#28079](https://github.com/civicrm/civicrm-core/pull/28079))** -* **_APIv4_: Fix filter by "tags" on Contact-related pseudo-entities ("Individual", etc) ([#28103](https://github.com/civicrm/civicrm-core/pull/28103))** -* **_CiviEvent_: Fix validation of checksum on self-service transfers ([dev/core#4768](https://lab.civicrm.org/dev/core/-/issues/4768): [#28128](https://github.com/civicrm/civicrm-core/pull/28128))** -* **_PHP 8_: Fix "TypeError" when using ckeditor4 and other (less common) entry-points ([#27996](https://github.com/civicrm/civicrm-core/pull/27996))** -* **_Quick Search_: Fix redirect to "Advanced Search" (with pre-populated criteria) ([dev/core#4624](https://lab.civicrm.org/dev/core/-/issues/4624): [#28072](https://github.com/civicrm/civicrm-core/pull/28072))** -* **_Quick Search_: Fix support for setting "Autocomplete Contact Search" ([dev/core#4759](https://lab.civicrm.org/dev/core/-/issues/4759): [#28121](https://github.com/civicrm/civicrm-core/pull/28121))** -* **_Search Kit_: Fix error affecting queries with `IN` operator ([dev/core#4773](https://lab.civicrm.org/dev/core/-/issues/4773): [#28124](https://github.com/civicrm/civicrm-core/pull/28124))** -* **_Search Kit_: Fix crash when handling certain entities (ECK) ([#27993](https://github.com/civicrm/civicrm-core/pull/27993))** -* **_Deprecations_: Tweak text of recent notice about old Angular settings ([#28040](https://github.com/civicrm/civicrm-core/pull/28040))** -* **_Deprecations_: Fix new warnings about hyperlink weights in CiviMail ([#28085](https://github.com/civicrm/civicrm-core/pull/28085))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wikimedia Foundation - Eileen McNaughton; Megaphone Technology Consulting - Jon Goldberg; -JMA Consulting - Seamus Lee; Francesc Bassas i Bullich; Dave D; Coop SymbioTIC - Mathieu -Lutfy; CiviCRM - Tim Otten, Coleman Watts; chriscant; angusfretwell; AGH Strategies - -Alice Frumin - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andie Hunt. If you'd like to -provide feedback on them, please login to https://chat.civicrm.org/civicrm and -contact `@agh1`. diff --git a/civicrm/release-notes/5.67.2.md b/civicrm/release-notes/5.67.2.md deleted file mode 100644 index 8e4e81b5d0..0000000000 --- a/civicrm/release-notes/5.67.2.md +++ /dev/null @@ -1,45 +0,0 @@ -# CiviCRM 5.67.2 - -Released November 28, 2023 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -| --------------------------------------------------------------- | -------- | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| Fix problems installing or upgrading to a previous version? | no | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_CiviContribute_: Field "Contribution date" does not appear in "Edit" mode ([dev/financial#221](https://lab.civicrm.org/dev/financial/-/issues/221): [#28243](https://github.com/civicrm/civicrm-core/pull/28243))** -* **_CiviContribute_: With "Admin UI" extension, some actions don't work ([#28189](https://github.com/civicrm/civicrm-core/pull/28189))** -* **_CiviEvent_: Registration screen with multiple profiles does not display correctly ([dev/core#4766](https://lab.civicrm.org/dev/core/-/issues/4766): [#28246](https://github.com/civicrm/civicrm-core/pull/28246))** -* **_CiviMail_: Improper bounce-messages should fail gracefully ([dev/core#4780](https://lab.civicrm.org/dev/core/-/issues/4780): [#28192](https://github.com/civicrm/civicrm-core/pull/28192))** -* **_Custom Fields_: Certain custom fields do not display correctly ([dev/core#4799](https://lab.civicrm.org/dev/core/-/issues/4799): [#28283](https://github.com/civicrm/civicrm-core/pull/28283))** -* **_Import (et al)_: Fix new and extraneous notice for certain users ([#28325](https://github.com/civicrm/civicrm-core/pull/28325))** -* **_Inbound Mail_: Fix new (but inconsistent) metadata ([#28244](https://github.com/civicrm/civicrm-core/pull/28244))** -* **_Search Kit_: Fix missing label for `GROUP_CONCAT` function ([#28187](https://github.com/civicrm/civicrm-core/pull/28187))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wikimedia Foundation - Eileen McNaughton; Squiffle Consulting - Aidan Saunders; Megaphone -Technology Consulting - Brienne Kordis; Lighthouse Consulting and Design - Brian -Shaughnessy; Dave D; CiviCRM - Coleman Watts; Agileware - Justin Freeman - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andie Hunt. If you'd like to -provide feedback on them, please login to https://chat.civicrm.org/civicrm and -contact `@agh1`. diff --git a/civicrm/release-notes/5.67.3.md b/civicrm/release-notes/5.67.3.md deleted file mode 100644 index 1678843f3f..0000000000 --- a/civicrm/release-notes/5.67.3.md +++ /dev/null @@ -1,43 +0,0 @@ -# CiviCRM 5.67.3 - -Released November 30, 2023 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -| --------------------------------------------------------------- | -------- | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| Fix problems installing or upgrading to a previous version? | no | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_CiviMail_: Fix processing of inbound messages (bounces, unsubscribes, etc) ([dev/core#4775](https://lab.civicrm.org/dev/core/-/issues/4775), [dev/core#4816](https://lab.civicrm.org/dev/core/-/issues/4816): [#28355](https://github.com/civicrm/civicrm-core/pull/28355))** - - For mailings sent with 5.67.0-5.67.2, inbound messages may be incorrectly ignored. After upgrading to 5.67.3+, you may reprocess messages: - - * Login to your mail server. - * Move recent messages from the "Ignored" folder to the regular "Inbox" folder. - * Allow scheduled jobs to rerun. - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wikimedia Foundation - Eileen McNaughton; Korlon - Stuart Gaston; Digitalcourage - Detlev -Sieber; CiviCRM - Tim Otten; CiviCoop - Jaap Jansma; Agileware - Justin Freeman - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andie Hunt. If you'd like to -provide feedback on them, please login to https://chat.civicrm.org/civicrm and -contact `@agh1`. diff --git a/civicrm/release-notes/5.68.0.md b/civicrm/release-notes/5.68.0.md new file mode 100644 index 0000000000..6f3da91460 --- /dev/null +++ b/civicrm/release-notes/5.68.0.md @@ -0,0 +1,907 @@ +# CiviCRM 5.68.0 + +Released December 6, 2023 + +- **[Synopsis](#synopsis)** +- **[Security advisories](#security)** +- **[Features](#features)** +- **[Bugs resolved](#bugs)** +- **[Miscellany](#misc)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| **Change the database schema?** | **yes** | +| **Alter the API?** | **yes** | +| **Require attention to configuration options?** | **yes** | +| Fix problems installing or upgrading to a previous version? | no | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Allow blank message templates + ([27806](https://github.com/civicrm/civicrm-core/pull/27806))** + + Makes it so one can have empty message templates. + +- **Blank out the text version of the offline receipt template + ([27733](https://github.com/civicrm/civicrm-core/pull/27733) and + [27739](https://github.com/civicrm/civicrm-core/pull/27739))** + + Discontinues the text version of the offline event receipt. Instead of having + the end user enter an html and text version of the same email, the text + version is now autogenerated based on the html version. Adds a upgrade message + to warn the end user about this change. + +- **Add custom field type Hidden + ([27235](https://github.com/civicrm/civicrm-core/pull/27235))** + + Adds a "hidden" custom field type which can collect data on forms without + being seen (e.g. by storing a value from the url or set by javascript) + +- **QuickSearch - Add Current Employer option + ([27766](https://github.com/civicrm/civicrm-core/pull/27766))** + + Adds a "Current Employer" search option to QuickSearch. + +- **Feature request: New contact buttons on the API 4 autocomplete widget + ([dev/core#4484](https://lab.civicrm.org/dev/core/-/issues/4484): + [27754](https://github.com/civicrm/civicrm-core/pull/27754))** + + Adds the option to include create contact functionality when configuring an + APIv4 autocomplete widget. + +- **Allow to specify API4 job entity in Edit Job form + ([27849](https://github.com/civicrm/civicrm-core/pull/27849))** + + Changes the edit scheduled job form entity field from a magic field to a text + field. + +- **🔡 SearchKit, add case-sensitive pattern matching search operators using + REGEXP BINARY and NOT REGEXP BINARY + ([27511](https://github.com/civicrm/civicrm-core/pull/27511))** + + Makes it so one can use case-sensitive pattern matching search operators in + SearchKit using REGEXP BINARY and NOT REGEXP BINARY. + +- **SearchKit - Optionally remember filter values when user revisits search + ([27737](https://github.com/civicrm/civicrm-core/pull/27737))** + + Adds a "Remember Filters" SearchKit administrator setting which when checked + saves end user filter values. + +- **SearchKit - Increase date range for in-place edit + ([27935](https://github.com/civicrm/civicrm-core/pull/27935))** + + Increases min/max datepicker limits in SearchKit. + +- **Expose URL for mailing trackable link for filters in FormBuilder + ([27723](https://github.com/civicrm/civicrm-core/pull/27723))** + + Improves FormBuilder by exposing the mailing trackable link url. + +- **ManagedEntity - Replicate multi-domain entities when multisite is enabled + ([27876](https://github.com/civicrm/civicrm-core/pull/27876))** + + Makes it easier to add menu items from extensions (multisite or not). + +- **Setting Admin - Add mixin to autogenerate a settings form + ([27569](https://github.com/civicrm/civicrm-core/pull/27569))** + + Makes it easier for extension developers to add a settings form to an + extension. + +- **Update civicrm_state_province.tpl + ([27784](https://github.com/civicrm/civicrm-core/pull/27784) and + [27799](https://github.com/civicrm/civicrm-core/pull/27799))** + + Updates Norwegian provinces. + +- **Add translation tags + ([27767](https://github.com/civicrm/civicrm-core/pull/27767))** + + Adds translation tags to MessageTemplate. + +- **Tags - Add label field, enable tags as Managed Entities + ([27752](https://github.com/civicrm/civicrm-core/pull/27752))** + + Adds a label field to the tag entity. + +- **demo data needs updating for tag changes + ([dev/core#4710](https://lab.civicrm.org/dev/core/-/issues/4710): + [27866](https://github.com/civicrm/civicrm-core/pull/27866))** + + Updates tag demo data to have labels. + +- **Basic/Advanced search and CiviReport filters showing `name` in tag dropdown + instead of `label` + ([dev/core#4727](https://lab.civicrm.org/dev/core/-/issues/4727): + [27924](https://github.com/civicrm/civicrm-core/pull/27924))** + + Ensures search and report filters show tag label instead of name. + +- **Add user_dashboard core extension (alpha) + ([27792](https://github.com/civicrm/civicrm-core/pull/27792))** + + Adds a `user dashboard` extension. If you enable the new "User Dashboard" + extension, `civicrm/user` gives you an Afform of configurable Search Displays. + +- **Civi-Import change the description + ([dev/core#4714](https://lab.civicrm.org/dev/core/-/issues/4714): + [27933](https://github.com/civicrm/civicrm-core/pull/27933))** + + Improves wording of the CiviImport extension description. + +### CiviEvent + +- **Add event.self_cancel_xfer tokens + ([27785](https://github.com/civicrm/civicrm-core/pull/27785))** + + Makes `{event.allow_selfcancelxfer}` token available (can be used as + `{event.allow_selfcancelxfer|boolean}`. + +- **SearchKit - Add Event.remaining_participants calculated field + ([27839](https://github.com/civicrm/civicrm-core/pull/27839))** + + Adds calculated field `Event.remaining_participants` to SearchKit. + +### CiviMail + +- **CiviMail - Speed up generation of VERP URLs + ([27652](https://github.com/civicrm/civicrm-core/pull/27652))** + + Performance improvement when generating VERP urls. + +### CiviPetition + +- **Add label & color to CiviPetition 'Unconfirmed' tag + ([27979](https://github.com/civicrm/civicrm-core/pull/27979))** + + Adds translation and color to CiviPetition 'Unconfirmed' tag. + +- **CRM_Campaign_BAO_Petition::confirmSignature: call pre/post hooks + ([27978](https://github.com/civicrm/civicrm-core/pull/27978))** + + Makes it so extension developers can hook into the `confirmSignature` process. + +### Joomla Integration + +- **Remove sidebar (at least for Joomla 4) + ([dev/joomla#45](https://lab.civicrm.org/dev/joomla/-/issues/45): + [27252](https://github.com/civicrm/civicrm-core/pull/27252))** + + Makes the Joomla sidebar default to closed. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **Number field input validation does not respect decimal separator setting + ([dev/core#4154](https://lab.civicrm.org/dev/core/-/issues/4154): + [28371](https://github.com/civicrm/civicrm-core/pull/28371), + [27958](https://github.com/civicrm/civicrm-core/pull/27958) and + [27917](https://github.com/civicrm/civicrm-core/pull/27917))** + + Fixes locale-formatted number custom field inputs. + +- **Afform: Adding forms to menu is not compatible with Customize Navigation + Menu (Work Towards + [dev/core#4364](https://lab.civicrm.org/dev/core/-/issues/4364): + [27832](https://github.com/civicrm/civicrm-core/pull/27832) and + [27814](https://github.com/civicrm/civicrm-core/pull/27814))** + + Ensure navigation menu weights don't reset weights when updating a managed + entity. + +- **SearchKit - Fix Search Segments for contact type entities + ([28396](https://github.com/civicrm/civicrm-core/pull/28396))** + +- **SearchKit - Fix toolbar display when not using pager + ([28409](https://github.com/civicrm/civicrm-core/pull/28409))** + +- **Searchkit column styles and icons not working properly with all conditionals + for custom fields + ([dev/core#4638](https://lab.civicrm.org/dev/core/-/issues/4638): + [27863](https://github.com/civicrm/civicrm-core/pull/27863))** + +- **Custom Field display code assumes option values are numeric + ([dev/core#4709](https://lab.civicrm.org/dev/core/-/issues/4709): + [27865](https://github.com/civicrm/civicrm-core/pull/27865))** + +- **Menu missing - error in console + ([dev/core#4729](https://lab.civicrm.org/dev/core/-/issues/4729): + [27921](https://github.com/civicrm/civicrm-core/pull/27921))and + [dev/core#4778](https://lab.civicrm.org/dev/core/-/issues/4778): + [28153](https://github.com/civicrm/civicrm-core/pull/28153))** + +- **SearchKit/Form Builder: re-positioning menu links column in table display + breaks csv download + ([dev/core#4731](https://lab.civicrm.org/dev/core/-/issues/4731): + [27943](https://github.com/civicrm/civicrm-core/pull/27943))** + +- **New individual popup to create one on-the-fly is popping up the cms user + account creation form not the usual profile popup + ([dev/core#4736](https://lab.civicrm.org/dev/core/-/issues/4736): + [27960](https://github.com/civicrm/civicrm-core/pull/27960))** + +- **Activity.getFields crashes + ([dev/core#4737](https://lab.civicrm.org/dev/core/-/issues/4737): + [27966](https://github.com/civicrm/civicrm-core/pull/27966))** + + APIv4 getFields crashes with no tags. + +- **Ability to assign a tagset tag to a contact has gone missing if label is + different from name + ([dev/core#4740](https://lab.civicrm.org/dev/core/-/issues/4740): + [28145](https://github.com/civicrm/civicrm-core/pull/28145))** + +- **Activity type label has gone missing when editing case activity + ([dev/core#4755](https://lab.civicrm.org/dev/core/-/issues/4755): + [28036](https://github.com/civicrm/civicrm-core/pull/28036))** + +- **Search Preferences -> Autocomplete Contact Search selections not respected + ([dev/core#4759](https://lab.civicrm.org/dev/core/-/issues/4759): + [28121](https://github.com/civicrm/civicrm-core/pull/28121))** + + Ensures "Autocomplete Contact Search" preferences are respected in menubar + quicksearch. + +- **ACL revamp causes crashes on many SearchKit queries in 5.67 + ([dev/core#4773](https://lab.civicrm.org/dev/core/-/issues/4773): + [28124](https://github.com/civicrm/civicrm-core/pull/28124))** + +- **SearchKit - Fix field transformation UI to handle number 0 + ([28018](https://github.com/civicrm/civicrm-core/pull/28018))** + +- **SearchKit - Fix missing label on group concat distinct dropdown + ([28187](https://github.com/civicrm/civicrm-core/pull/28187))** + +- **APIv4 - Prevent fatal errors when getOptions returns an empty array + ([27793](https://github.com/civicrm/civicrm-core/pull/27793))** + +- **APIv4 - Allow is_active field to default to '0' + ([27853](https://github.com/civicrm/civicrm-core/pull/27853))** + +- **APIv4 - Fix index interfering with HAVING + ([28137](https://github.com/civicrm/civicrm-core/pull/28137))** + +- **APIv4 - Fix missing tag filer on Individual,Organization,Household + ([28103](https://github.com/civicrm/civicrm-core/pull/28103))** + +- **APIv4 - Ensure 'search_fields' defaults to 'label_field' for Entity.get + ([27993](https://github.com/civicrm/civicrm-core/pull/27993))** + +- **APIv4 - Smarter matching params in Managed export action + ([27942](https://github.com/civicrm/civicrm-core/pull/27942))** + + Does a better job of setting the match param when exporting managed + entities. + +- **Afform - Remove redundant status checks + ([27927](https://github.com/civicrm/civicrm-core/pull/27927))** + +- **Afform - Improve error handling during form submission + ([27899](https://github.com/civicrm/civicrm-core/pull/27899))** + +- **Afform - Add default values to metadata + ([27861](https://github.com/civicrm/civicrm-core/pull/27861))** + +- **Update the parameters passed to the hook_QueueTaskError + ([28130](https://github.com/civicrm/civicrm-core/pull/28130))** + +- **Ensure api/v3/utils.php required before civicrm_api3_create_error 5.68 + ([28079](https://github.com/civicrm/civicrm-core/pull/28079))** + +- **Releaser - Only update core extensions for stable versions + ([27922](https://github.com/civicrm/civicrm-core/pull/27922))** + +- **Improve template handling in report + ([27912](https://github.com/civicrm/civicrm-core/pull/27912))** + + xss bug fix. + +- **CustomGroup - Allow increasing max_multiple + ([27916](https://github.com/civicrm/civicrm-core/pull/27916))** + + Fixes a bug in the CustomGroup form code that wouldn't allow max_mutliple to + be increased for multi-record custom groups. + +- **Switch templates to use correctly named variable + ([27498](https://github.com/civicrm/civicrm-core/pull/27498))** + +- **CRM_Core_DAO::copyValues() deduplicate pseudo-constant fields + ([27762](https://github.com/civicrm/civicrm-core/pull/27762))** + +- **Use purify over escape for price set fields + ([27938](https://github.com/civicrm/civicrm-core/pull/27938))** + +- **Tweak money/numeric error messages to not mention point (could be a comma) + ([27881](https://github.com/civicrm/civicrm-core/pull/27881))** + +- **Remove discussion about format from html box on email form + ([27734](https://github.com/civicrm/civicrm-core/pull/27734))** + +- **CRM_Core_BAO_Domain - Deprecate unused functions + ([27875](https://github.com/civicrm/civicrm-core/pull/27875))** + +- **SearchUI - Move 'Experimental' menu from top level to underneath 'Search' + ([27871](https://github.com/civicrm/civicrm-core/pull/27871))** + +- **Make civicrm_acl.is_active required and default=1 + ([27846](https://github.com/civicrm/civicrm-core/pull/27846))** + +- **ManagedEntities - Recreate deleted records at discretion of update policy + ([27844](https://github.com/civicrm/civicrm-core/pull/27844))** + +- **Remove es6 polyfill + ([27648](https://github.com/civicrm/civicrm-core/pull/27648))** + +- **Move assigning customGroup to offline participant template out of the form + layer ([27596](https://github.com/civicrm/civicrm-core/pull/27596))** + +- **Searchdisplay issue with contact join activity and _ on the end of custom + field ([27666](https://github.com/civicrm/civicrm-core/pull/27666))** + +- **Email attachments with unicode filename get munged + ([dev/core#4700](https://lab.civicrm.org/dev/core/-/issues/4700): + [27791](https://github.com/civicrm/civicrm-core/pull/27791))** + +- **Update smarty localize for Smarty3 + ([27776](https://github.com/civicrm/civicrm-core/pull/27776))** + +- **Trim text emails when checking if empty + ([27738](https://github.com/civicrm/civicrm-core/pull/27738))** + +- **Clarify access of `buildComponentForm` + ([27845](https://github.com/civicrm/civicrm-core/pull/27845))** + +- **Managed - Minor schema fixes + ([27835](https://github.com/civicrm/civicrm-core/pull/27835))** + +- **Stop weird action override on confirm form + ([27891](https://github.com/civicrm/civicrm-core/pull/27891))** + +- **Suppress pay now on user dashboard if none configured + ([27954](https://github.com/civicrm/civicrm-core/pull/27954))** + +- **Fix use of `$form` for `$this` in previously shared, previously static + function ([27925](https://github.com/civicrm/civicrm-core/pull/27925))** + +- **Schedule Job fails with a fatal error if configured with an absolute date + ([28113](https://github.com/civicrm/civicrm-core/pull/28113))** + +- **standaloneusers: remove property type declarations to make php7.3 compat + ([27992](https://github.com/civicrm/civicrm-core/pull/27992))** + +- **QuickSearch - Fix redirect to adv search with prepopulated criteria + ([28072](https://github.com/civicrm/civicrm-core/pull/28072))** + +- **Fix Smarty3 support & Smarty-any notices in pledge search/dashboard + ([27963](https://github.com/civicrm/civicrm-core/pull/27963))** + +- **Smarty3 & php8.x fixes on New Contact (organization) + ([27951](https://github.com/civicrm/civicrm-core/pull/27951))** + +- **Smarty3 compatibilty with Contribution Amount tab + ([27782](https://github.com/civicrm/civicrm-core/pull/27782))** + +- **Standalone Smarty3 support + ([27778](https://github.com/civicrm/civicrm-core/pull/27778))** + +- **Smarty3 - fix space breaking syntax + ([28002](https://github.com/civicrm/civicrm-core/pull/28002))** + +- **PHP 8.x: fix TypeError in config hook + ([27996](https://github.com/civicrm/civicrm-core/pull/27996))** + +- **Php 8.2 notice fix on soft credit report + ([27887](https://github.com/civicrm/civicrm-core/pull/27887))** + +- **do not show disabled financial types in select for manage events + ([23299](https://github.com/civicrm/civicrm-core/pull/23299))** + +- **Replace smarty.get with assigned snippet_type in tpl + ([27674](https://github.com/civicrm/civicrm-core/pull/27674))** + +- **Minor variable consolidation, reduce notices + ([27901](https://github.com/civicrm/civicrm-core/pull/27901))** + +- **Stop assigning ispricelifetime - used in previously shared usage + ([27890](https://github.com/civicrm/civicrm-core/pull/27890))** + +- **Report notice fix - batch id + ([27885](https://github.com/civicrm/civicrm-core/pull/27885))** + +- **Switch to a token for billingName & address + ([27692](https://github.com/civicrm/civicrm-core/pull/27692))** + +- **Extract addOnBehalfFields, ensure variables always assigned + ([27851](https://github.com/civicrm/civicrm-core/pull/27851))** + +- **Fix tax total not showing on thank you + ([28171](https://github.com/civicrm/civicrm-core/pull/28171))** + +- **Fix notice on New Pledge form + ([27773](https://github.com/civicrm/civicrm-core/pull/27773))** + +- **Message templates not always sent + ([dev/core#4839](https://lab.civicrm.org/dev/core/-/issues/4839): + [28522](https://github.com/civicrm/civicrm-core/pull/28522))** + +- **Fix reference to wrong value + ([28244](https://github.com/civicrm/civicrm-core/pull/28244))** + +- **Sorting of "matching field" dropdown on contact import is messed up for + "related contact info" + ([dev/core#4563](https://lab.civicrm.org/dev/core/-/issues/4563): + [28375](https://github.com/civicrm/civicrm-core/pull/28375))** + +- **Autocomplete-Select options not saving/displaying properly + ([dev/core#4799](https://lab.civicrm.org/dev/core/-/issues/4799): + [28283](https://github.com/civicrm/civicrm-core/pull/28283))** + +- **UserJob - Fix deprecated syntax in addSelectWhereClause + ([28325](https://github.com/civicrm/civicrm-core/pull/28325))** + +- **On Import in Non English Mode do not import field in saved field mapping is + not correctly set as default when re-using import + ([dev/core#4726](https://lab.civicrm.org/dev/core/-/issues/4726): + [28332](https://github.com/civicrm/civicrm-core/pull/28332))** + +- **Fix incoming bounce processing + ([28354](https://github.com/civicrm/civicrm-core/pull/28354))** + +- **Contact ID is no longer available in Advanced Search + ([dev/core#4820](https://lab.civicrm.org/dev/core/-/issues/4820): + [28378](https://github.com/civicrm/civicrm-core/pull/28378))** + +### CiviCase + +- **Regression - CiviCase and CiviCRM 5.67.0 - Unable to load any Activities + ([dev/core#4769](https://lab.civicrm.org/dev/core/-/issues/4769): + [28133](https://github.com/civicrm/civicrm-core/pull/28133))** + +- **Case tagsets showing name not label + ([dev/core#4730](https://lab.civicrm.org/dev/core/-/issues/4730): + [27968](https://github.com/civicrm/civicrm-core/pull/27968))** + +- **Case Activity: use select2 for Medium field + ([27879](https://github.com/civicrm/civicrm-core/pull/27879))** + +### CiviContribute + +- **Contribution fails mid-donation with geocoding, "on behalf of", and no + state/province + ([dev/core#4724](https://lab.civicrm.org/dev/core/-/issues/4724): + [27896](https://github.com/civicrm/civicrm-core/pull/27896))** + +- **Geocoding failures kill contributions + ([dev/core#2929](https://lab.civicrm.org/dev/core/-/issues/2929): + [27897](https://github.com/civicrm/civicrm-core/pull/27897) and + [27977](https://github.com/civicrm/civicrm-core/pull/27977))** + +- **Supporter Profile is a required field + ([dev/core#4488](https://lab.civicrm.org/dev/core/-/issues/4488): + [27059](https://github.com/civicrm/civicrm-core/pull/27059))** + + Ensures when editing contribution pages, if you click on the personal campaign + tab and save (without changes) you get a warning about supporter profile being + required field. + +- **CiviCRM core exception when trying to import contributions + ([dev/core#4554](https://lab.civicrm.org/dev/core/-/issues/4554): + [28051](https://github.com/civicrm/civicrm-core/pull/28051))** + +- **Clone/ copy contribution page doesn't work when admin UI is enabled + ([dev/core#4783](https://lab.civicrm.org/dev/core/-/issues/4783): + [28189](https://github.com/civicrm/civicrm-core/pull/28189))** + +- **E_WARNING for "file" on civicontribute component settings + ([27969](https://github.com/civicrm/civicrm-core/pull/27969))** + +- **Notice fixes on price field options + ([27984](https://github.com/civicrm/civicrm-core/pull/27984))** + +- **Php8.x fixes on Main online contribution page + ([27836](https://github.com/civicrm/civicrm-core/pull/27836))** + +- **php8.2 fix undeclared properties on backoffice contribution form + ([27829](https://github.com/civicrm/civicrm-core/pull/27829))** + +- **Fix message within exception (PayPalIPN) + ([27759](https://github.com/civicrm/civicrm-core/pull/27759))** + +- **Fix source html displaying when editing price option + ([28090](https://github.com/civicrm/civicrm-core/pull/28090))** + +- **Remove one more ref to undefined property `contributeMode` + ([27884](https://github.com/civicrm/civicrm-core/pull/27884))** + +- **Fix online contribution form Confirm page to get text from processor + ([27848](https://github.com/civicrm/civicrm-core/pull/27848))** + +- **Fix offline contribution page handling of money fields + ([27952](https://github.com/civicrm/civicrm-core/pull/27952))** + +- **Fix recursive display of payment_reminders + ([27774](https://github.com/civicrm/civicrm-core/pull/27774))** + +- **Use api to get price set metadata - Online Contribution Page + ([27902](https://github.com/civicrm/civicrm-core/pull/27902))** + +- **Standardise price field metadata on Main contribution page + ([27889](https://github.com/civicrm/civicrm-core/pull/27889))** + +- **Move financial acl check on Main contribution page to the financial acl + extension ([27797](https://github.com/civicrm/civicrm-core/pull/27797))** + +- **Add ContributionFormTrait + ([27801](https://github.com/civicrm/civicrm-core/pull/27801))** + +- **Add weight to premium config (tab on contribution page edit) + ([28237](https://github.com/civicrm/civicrm-core/pull/28237))** + +- **Contribution date no longer has a time on the form + ([dev/financial#221](https://lab.civicrm.org/dev/financial/-/issues/221): + [28243](https://github.com/civicrm/civicrm-core/pull/28243))** + +### CiviEvent + +- **Event Info displays "registration is closed", but it requires login + ([dev/core#4704](https://lab.civicrm.org/dev/core/-/issues/4704): + [27873](https://github.com/civicrm/civicrm-core/pull/27873))** + + Display 'registration is closed' only if users can register. + +- **Event self-service transfer always gives "You do not have sufficient + permission"([dev/core#4768](https://lab.civicrm.org/dev/core/-/issues/4768): + [28128](https://github.com/civicrm/civicrm-core/pull/28128))** + +- **PHP8.2 undefined property fix event summary report + ([27888](https://github.com/civicrm/civicrm-core/pull/27888))** + +- **Add check for deprecated token in event online receipt + ([28029](https://github.com/civicrm/civicrm-core/pull/28029))** + +- **Move participant-form-specific defaults back to participant form + ([27613](https://github.com/civicrm/civicrm-core/pull/27613))** + +- **Switch all participant token listing to TokenProcessor, add deprecation + ([27543](https://github.com/civicrm/civicrm-core/pull/27543))** + +- **event title xss fix + ([27911](https://github.com/civicrm/civicrm-core/pull/27911))** + +- **Participant - Translate untranslated string + ([27837](https://github.com/civicrm/civicrm-core/pull/27837))** + +- **Fix notice (smarty) in Event fee tab + ([27743](https://github.com/civicrm/civicrm-core/pull/27743))** + +- **Multiple Profiles on an Event registration display incorrectly + ([dev/core#4766](https://lab.civicrm.org/dev/core/-/issues/4766): + [28246](https://github.com/civicrm/civicrm-core/pull/28246))** + +- **Copy event fails with DB Error: already exists; Saving new reminder hangs + ([dev/core#4761](https://lab.civicrm.org/dev/core/-/issues/4761): + [28352](https://github.com/civicrm/civicrm-core/pull/28352))** + +### CiviGrant + +- **Can't view/edit grants + ([dev/core#4828](https://lab.civicrm.org/dev/core/-/issues/4828): + [28437](https://github.com/civicrm/civicrm-core/pull/28437))** + +### CiviMail + +- **when processing bounce emails, don't exit on fatal error if verp unverified + ([dev/core#4780](https://lab.civicrm.org/dev/core/-/issues/4780): + [28192](https://github.com/civicrm/civicrm-core/pull/28192))** + +- **CiviMail - Update path metadata + ([27962](https://github.com/civicrm/civicrm-core/pull/27962))** + +- **Angular - Always load CiviMail modules if component is enabled + ([27857](https://github.com/civicrm/civicrm-core/pull/27857))** + +- **Add weights to CRM_Mailing_BAO_Mailing::getContactMailingSelector + ([28085](https://github.com/civicrm/civicrm-core/pull/28085))** + +### Drupal Integration + +- **Deprecated function: Optional parameter $from declared before required + parameter $element + ([dev/core#4695](https://lab.civicrm.org/dev/core/-/issues/4695): + [675](https://github.com/civicrm/civicrm-drupal/pull/675))** + +- **Fix Deprecated string interpolation issue in civicrm.module + ([674](https://github.com/civicrm/civicrm-drupal/pull/674))** + +## <a name="misc"></a>Miscellany + +- **Tag `getSubmittedValue()` as externally supported + ([27786](https://github.com/civicrm/civicrm-core/pull/27786))** + +- **Extend normal form for delete action + ([27745](https://github.com/civicrm/civicrm-core/pull/27745))** + +- **Core/ext - Update releaseDate when setting new version + ([27914](https://github.com/civicrm/civicrm-core/pull/27914))** + +- **Make function private, non static, after universe search + ([27929](https://github.com/civicrm/civicrm-core/pull/27929))** + +- **Move pledge block function back to the only form that calls it + ([27936](https://github.com/civicrm/civicrm-core/pull/27936))** + +- **karma.conf.js - Switch from PhantomJS to ChromeHeadless + ([27941](https://github.com/civicrm/civicrm-core/pull/27941))** + +- **Move the locale default getting from the money() function to the + getFormatter function + ([27970](https://github.com/civicrm/civicrm-core/pull/27970))** + +- **Provide utility methods for creating an iCal file + ([26980](https://github.com/civicrm/civicrm-core/pull/26980))** + +- **Standardise deprecations + ([27976](https://github.com/civicrm/civicrm-core/pull/27976))** + +- **Afform - Unify 'is_dashlet', 'is_token' & 'contact_summary' as 'placement' + ([27755](https://github.com/civicrm/civicrm-core/pull/27755))** + +- **phpstorm - Generate hints for Civi::paths(), Civi::url(), + CRM_Utils_System::url() + ([27779](https://github.com/civicrm/civicrm-core/pull/27779))** + +- **APIv4 - Add helper function and type hints + ([27864](https://github.com/civicrm/civicrm-core/pull/27864))** + +- **Preliminary cleanup - remove function overrides that do not override + ([27886](https://github.com/civicrm/civicrm-core/pull/27886))** + +- **Stop passing variable no longer in signature + ([27765](https://github.com/civicrm/civicrm-core/pull/27765))** + +- **PHP8.x Stop sharing EventFee::preProcess from Registration form + ([27577](https://github.com/civicrm/civicrm-core/pull/27577))** + +- **Switch from html2text to soundasleep/html2text + ([27694](https://github.com/civicrm/civicrm-core/pull/27694))** + +- **Unshare form function + ([27892](https://github.com/civicrm/civicrm-core/pull/27892))** + +- **delete one more trackingFields reference + ([27726](https://github.com/civicrm/civicrm-core/pull/27726))** + +- **Remove irrelevant code from previously shared form + ([27787](https://github.com/civicrm/civicrm-core/pull/27787))** + +- **Split shared function with mostly unshared code + ([27795](https://github.com/civicrm/civicrm-core/pull/27795))** + +- **Remove non-variable variables from previously-shared code + ([27905](https://github.com/civicrm/civicrm-core/pull/27905))** + +- **Remove unreachable code from previously shared function + ([27906](https://github.com/civicrm/civicrm-core/pull/27906))** + +- **Remove no-longer-used parameters from function signature + ([27831](https://github.com/civicrm/civicrm-core/pull/27831))** + +- **Remove always-true if + ([27919](https://github.com/civicrm/civicrm-core/pull/27919))** + +- **[PHP 8.2] fix undefined property in CRM_Event_Form_SelfSvcUpdate + ([27769](https://github.com/civicrm/civicrm-core/pull/27769))** + +- **CRM_Utils_Array::value - remove "todo" which we don't actually want to do + ([27812](https://github.com/civicrm/civicrm-core/pull/27812))** + +- **Add @deprecated annotation to CRM_Utils_Array::value + ([27959](https://github.com/civicrm/civicrm-core/pull/27959))** + +- **[REF] CRM/Contribute - Refactor unnecessary uses of CRM_Utils_Array::value + ([27820](https://github.com/civicrm/civicrm-core/pull/27820))** + +- **[REF] CRM/Campaign - Refactor unnecessary uses of CRM_Utils_Array::value + ([27822](https://github.com/civicrm/civicrm-core/pull/27822))** + +- **[REF] CRM/Admin - Refactor unnecessary uses of CRM_Utils_Array::value + ([27823](https://github.com/civicrm/civicrm-core/pull/27823))** + +- **[REF] Civi - Refactor unnecessary uses of CRM_Utils_Array::value + ([27895](https://github.com/civicrm/civicrm-core/pull/27895))** + +- **[REF] Apiv3 - Refactor unnecessary uses of CRM_Utils_Array::value + ([27898](https://github.com/civicrm/civicrm-core/pull/27898))** + +- **[REF] CRM/Report - Refactor unnecessary uses of CRM_Utils_Array::value + ([27816](https://github.com/civicrm/civicrm-core/pull/27816))** + +- **[REF] CRM/Event - Refactor unnecessary uses of CRM_Utils_Array::value + ([27821](https://github.com/civicrm/civicrm-core/pull/27821))** + +- **[REF] Flexmailer - Refactor unnecessary use of CRM_Utils_Array::value + ([27828](https://github.com/civicrm/civicrm-core/pull/27828))** + +- **[REF] CRM/Price - Refactor unnecessary uses of CRM_Utils_Array::value + ([27824](https://github.com/civicrm/civicrm-core/pull/27824))** + +- **[REF] CRM/Utils - Refactor unnecessary uses of CRM_Utils_Array::value + ([27819](https://github.com/civicrm/civicrm-core/pull/27819))** + +- **[REF] CRM/Core - Refactor unnecessary uses of CRM_Utils_Array::value + ([27817](https://github.com/civicrm/civicrm-core/pull/27817))** + +- **[REF] CRM/Activity - Refactor unnecessary uses of CRM_Utils_Array::value + ([27825](https://github.com/civicrm/civicrm-core/pull/27825))** + +- **[REF] CRM/Mailing - Refactor unnecessary uses of CRM_Utils_Array::value + ([27826](https://github.com/civicrm/civicrm-core/pull/27826))** + +- **[REF] CRM/Contact - Refactor unnecessary uses of CRM_Utils_Array::value + ([27818](https://github.com/civicrm/civicrm-core/pull/27818))** + +- **[REF] CRM/Misc - Refactor unnecessary uses of CRM_Utils_Array::value + ([27827](https://github.com/civicrm/civicrm-core/pull/27827))** + +- **[REF] Unshared processRecurringContribution + ([27850](https://github.com/civicrm/civicrm-core/pull/27850))** + +- **[REF] ParticipantStatusType - Switch to writeRecord + ([27855](https://github.com/civicrm/civicrm-core/pull/27855))** + +- **[REF] Extract add soft credit fields + ([27847](https://github.com/civicrm/civicrm-core/pull/27847))** + +- **[REF] ManagedEntities - Remove unused function + ([27843](https://github.com/civicrm/civicrm-core/pull/27843))** + +- **[REF] civicrm_admin_ui blocks links from oauth-client + (Work Towards [dev/core#4674](https://lab.civicrm.org/dev/core/-/issues/4674): + [27869](https://github.com/civicrm/civicrm-core/pull/27869))** + +- **[REF] Repeating entity form code cleanup + ([27328](https://github.com/civicrm/civicrm-core/pull/27328))** + +- **[REF] CRM_Core_Pseudoconstant - Cleanup static arrays & functions + ([27840](https://github.com/civicrm/civicrm-core/pull/27840))** + +- **[REF] Remove domain references from managed entities + ([27915](https://github.com/civicrm/civicrm-core/pull/27915))** + +- **[REF] CRM_Event_PseudoConstant - Cleanup redundant caching + ([27838](https://github.com/civicrm/civicrm-core/pull/27838))** + +- **[REF] AngularManager - Skip extra lookups. Document function. + ([27807](https://github.com/civicrm/civicrm-core/pull/27807))** + +- **[REF] AfformScanner - Update code comments & type hints + ([27808](https://github.com/civicrm/civicrm-core/pull/27808))** + +- **[REF] Fix Smarty Notices on Dedupe Rules screen by setting weight + ([27804](https://github.com/civicrm/civicrm-core/pull/27804))** + +- **[REF] testRegexpOperators fails on `max` + ([dev/core#4747](https://lab.civicrm.org/dev/core/-/issues/4747): + [27990](https://github.com/civicrm/civicrm-core/pull/27990))** + +- **[REF] Fix notice error on undefined array key perm + ([27796](https://github.com/civicrm/civicrm-core/pull/27796))** + +- **[REF] Remove getEmailAddress method which cannot work + ([27757](https://github.com/civicrm/civicrm-core/pull/27757))** + +- **[REF][PHP8.2] Replace dynmaic property with variable + ([27756](https://github.com/civicrm/civicrm-core/pull/27756))** + +- **[REF] Fix up Message template gencode to work with Smarty 3 + ([27727](https://github.com/civicrm/civicrm-core/pull/27727))** + +- **[NFC] Docblocks - Remove 'experimental' comments and other copy-edits + ([27802](https://github.com/civicrm/civicrm-core/pull/27802))** + +- **(NFC) MenuXmlTest - Improve debug output. Use richer helpers. + ([28073](https://github.com/civicrm/civicrm-core/pull/28073))** + +- **[NFC] More descriptive deprecation notice for Angular settings + ([28040](https://github.com/civicrm/civicrm-core/pull/28040))** + +- **(NFC) phpunit.xml.dist - Drop stale reference to old suite + ([27859](https://github.com/civicrm/civicrm-core/pull/27859))** + +- **[NFC] Cleanup array syntax in tests directory + ([27809](https://github.com/civicrm/civicrm-core/pull/27809))** + +- **[NFC] Afform - Test cleanup + ([27803](https://github.com/civicrm/civicrm-core/pull/27803))** + +- **[NFC] Make null really null + ([27758](https://github.com/civicrm/civicrm-core/pull/27758))** + +- **[NFC] Remove unused var + ([27751](https://github.com/civicrm/civicrm-core/pull/27751))** + +- **(NFC) setting-admin@1 - Fix the `@since` metadata + ([28170](https://github.com/civicrm/civicrm-core/pull/28170))** + +- **Update the list of required extensions to install during test db populate + ([27961](https://github.com/civicrm/civicrm-core/pull/27961))** + +- **Further fixes to ContributionPageTest + ([27948](https://github.com/civicrm/civicrm-core/pull/27948))** + +- **Smarty3 Clean up test class - remove ref to internal tplParams + ([27775](https://github.com/civicrm/civicrm-core/pull/27775))** + +- **Minor clean up in test class, add initial ContributionFormTrait + ([27947](https://github.com/civicrm/civicrm-core/pull/27947))** + +- **Fix test on secondary membership contribution to use full form flow + ([27928](https://github.com/civicrm/civicrm-core/pull/27928))** + +- **Remove test call to PaypalPro sandbox from tests + ([27953](https://github.com/civicrm/civicrm-core/pull/27953))** + +- **Fix MainTest to test form metadata function, not old unused function + ([27900](https://github.com/civicrm/civicrm-core/pull/27900))** + +- **Declare strict types in CiviUnitTestCase + ([26002](https://github.com/civicrm/civicrm-core/pull/26002))** + +- **Fix Contribution MainTest to set payment processor properties better + ([27893](https://github.com/civicrm/civicrm-core/pull/27893))** + +- **Document and test unique behavior of CRM_Utils_Array::value() + ([27830](https://github.com/civicrm/civicrm-core/pull/27830))** + +- **Move financial acl test to extension + ([27810](https://github.com/civicrm/civicrm-core/pull/27810))** + +- **Stop calling `CRM_Contribute_Form_Contribution::testSubmit()`, quiet + deprecation ([27811](https://github.com/civicrm/civicrm-core/pull/27811))** + +- **Fix Participant form test to correctly test html version + ([27763](https://github.com/civicrm/civicrm-core/pull/27763))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Artful Robot - Rich +Lott; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; +BrightMinded Ltd - Bradley Taylor; CiviCoop - Jaap Jansma; CiviCRM - Coleman +Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, +Samuel Vanhove; Dave D; Erik Midtsveen; Freeform Solutions - Herb van den Dool; +Fuzion - Jitendra Purohit; Jens Schuppe; JMA Consulting - Monish Deb, Seamus +Lee; Lemniscus - Noah Miller; Lighthouse Consulting and Design - Brian +Shaughnessy; Luna Design - Andrew Wasson; Megaphone Technology Consulting - Jon +Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; PHD Computer +Consultants Ltd - Chris Cant; ranjit-git; Reflexive Communications - Sandor +Semsey; Squiffle Consulting - Aidan Saunders; SYSTOPIA - Johannes Franz; Third +Sector Design - Kurund Jalmi; Wikimedia Foundation - Damilare Adedoyin, Eileen +McNaughton; Wildsight - Lars Sander-Green + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +AGH Strategies - Alice Frumin; ALL IN APPLI admin; Andrew Thompson; Benjamin W; +Davis Media Access - Darrick Servis; Francesc Bassas i Bullich; Fuzion - Peter +Davis; Jens Schuppe; OPEN - dewy; Semper IT - Karin Gerritsen; Third Sector +Design - William Mortada; Tom Rosenbloom; WebmasterBouclier; + +## <a name="feedback"></a>Feedback + +These release notes are edited by Alice Frumin and Andie Hunt. If you'd like +to provide feedback on them, please log in to https://chat.civicrm.org/civicrm +and contact `@agh1`. diff --git a/civicrm/setup/src/Setup/SmartyUtil.php b/civicrm/setup/src/Setup/SmartyUtil.php index ec0e775b52..a076ddb32f 100644 --- a/civicrm/setup/src/Setup/SmartyUtil.php +++ b/civicrm/setup/src/Setup/SmartyUtil.php @@ -27,7 +27,8 @@ class SmartyUtil { require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'Smarty', 'plugins', 'block.localize.php']); $smarty->register_block('localize', 'smarty_block_localize'); $smarty->assign('gencodeXmlDir', "$srcPath/xml"); - + require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'CodeGen', 'Util', 'MessageTemplates.php']); + \CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty); return $smarty; } diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index 866689384b..31c74fb7dc 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -238,11 +238,11 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA -- *******************************************************/ CREATE TABLE `civicrm_managed` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Surrogate Key', - `module` varchar(127) NOT NULL COMMENT 'Name of the module which declared this object', - `name` varchar(127) COMMENT 'Symbolic name used by the module to identify the object', + `module` varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)', + `name` varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object', `entity_type` varchar(64) NOT NULL COMMENT 'API entity type', - `entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.', - `cleanup` varchar(32) COMMENT 'Policy on when to cleanup entity (always, never, unused)', + `entity_id` int unsigned COMMENT 'Soft foreign key to the referenced item.', + `cleanup` varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)', `entity_modified_date` timestamp NULL DEFAULT NULL COMMENT 'When the managed entity was changed from its original settings.', PRIMARY KEY (`id`), INDEX `UI_managed_module_name`(module, name), @@ -446,7 +446,7 @@ CREATE TABLE `civicrm_acl` ( `object_id` int unsigned COMMENT 'The ID of the object controlled by this ACL entry', `acl_table` varchar(64) COMMENT 'If this is a grant/revoke entry, what table are we granting?', `acl_id` int unsigned COMMENT 'ID of the ACL or ACL group being granted/revoked', - `is_active` tinyint COMMENT 'Is this property active?', + `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?', `priority` int NOT NULL DEFAULT 0, PRIMARY KEY (`id`), INDEX `index_acl_id`(acl_id) @@ -1864,7 +1864,8 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA -- *******************************************************/ CREATE TABLE `civicrm_tag` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Tag ID', - `name` varchar(64) NOT NULL COMMENT 'Name of Tag.', + `name` varchar(64) NOT NULL COMMENT 'Unique machine name', + `label` varchar(64) NOT NULL COMMENT 'User-facing tag name', `description` varchar(255) COMMENT 'Optional verbose description of the tag.', `parent_id` int unsigned DEFAULT NULL COMMENT 'Optional parent id for this tag.', `is_selectable` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this tag selectable / displayed', @@ -1873,7 +1874,7 @@ CREATE TABLE `civicrm_tag` ( `used_for` varchar(64) DEFAULT NULL, `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this tag', `color` varchar(255) DEFAULT NULL COMMENT 'Hex color value e.g. #ffffff', - `created_date` datetime COMMENT 'Date and time that tag was created.', + `created_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.', PRIMARY KEY (`id`), UNIQUE INDEX `UI_name`(name), CONSTRAINT FK_civicrm_tag_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_tag`(`id`), @@ -2982,7 +2983,7 @@ CREATE TABLE `civicrm_dashboard_contact` ( `dashboard_id` int unsigned NOT NULL COMMENT 'Dashboard ID', `contact_id` int unsigned NOT NULL COMMENT 'Contact ID', `column_no` int DEFAULT 0 COMMENT 'column no for this widget', - `is_active` tinyint DEFAULT 0 COMMENT 'Is this widget active?', + `is_active` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this widget active?', `weight` int DEFAULT 0 COMMENT 'Ordering of the widgets.', PRIMARY KEY (`id`), UNIQUE INDEX `index_dashboard_id_contact_id`(dashboard_id, contact_id), diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 3e45b5714f..1409daaf07 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -2665,19 +2665,18 @@ INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (3947, 1161, "06", "Buskerud"), (3948, 1161, "20", "Finnmark"), (3949, 1161, "04", "Hedmark"), -(3950, 1161, "12", "Hordaland"), (3951, 1161, "15", "Møre og Romsdal"), (3952, 1161, "18", "Nordland"), (3953, 1161, "17", "Nord-Trøndelag"), (3954, 1161, "05", "Oppland"), (3955, 1161, "03", "Oslo"), (3956, 1161, "11", "Rogaland"), -(3957, 1161, "14", "Sogn og Fjordane"), -(3958, 1161, "16", "Sør-Trøndelag"), -(3959, 1161, "06", "Telemark"), -(3960, 1161, "19", "Troms"), -(3961, 1161, "10", "Vest-Agder"), -(3962, 1161, "07", "Vestfold"), +(3957, 1161, "16", "Sør-Trøndelag"), +(3958, 1161, "06", "Telemark"), +(3959, 1161, "19", "Troms"), +(3960, 1161, "10", "Vest-Agder"), +(3961, 1161, "07", "Vestfold"), +(3962, 1161, "46", "Vestland"), (3963, 1161, "01", "Østfold"), (3964, 1161, "22", "Jan Mayen"), (3965, 1161, "21", "Svalbard"), @@ -4712,12 +4711,12 @@ INSERT INTO civicrm_relationship_type (`contact_type_a`,`contact_type_b`,`descri ("Individual","Individual","Immediate workplace supervisor","0","Supervised by","Supervisor","Supervised by","Supervisor") ; -INSERT INTO civicrm_tag (`description`,`name`,`parent_id`,`used_for`) VALUES -("Any not-for-profit organization.","Non-profit",NULL,"civicrm_contact"), -("For-profit organization.","Company",NULL,"civicrm_contact"), -("Any governmental entity.","Government Entity",NULL,"civicrm_contact"), -("High-value supporter of our organization.","Major Donor",NULL,"civicrm_contact"), -("Active volunteers.","Volunteer",NULL,"civicrm_contact") +INSERT INTO civicrm_tag (`color`,`description`,`label`,`name`,`parent_id`,`used_for`) VALUES +("#0bcb21","Any not-for-profit organization.","Non-profit","Non_profit",NULL,"civicrm_contact"), +("#2260c3","For-profit organization.","Company","Company",NULL,"civicrm_contact"), +("#cd4b13","Any governmental entity.","Government Entity","Government_Entity",NULL,"civicrm_contact"), +("#0cdae9","High-value supporter of our organization.","Major Donor","Major_Donor",NULL,"civicrm_contact"), +("#f0dc00","Active volunteers.","Volunteer","Volunteer",NULL,"civicrm_contact") ; INSERT INTO civicrm_mailing_component (`body_html`,`body_text`,`component_type`,`is_active`,`is_default`,`name`,`subject`) VALUES @@ -6913,7 +6912,7 @@ INSERT INTO civicrm_option_value INSERT INTO civicrm_msg_template (msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved) VALUES - + ('Cases - Send Copy of an Activity', '{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject} @@ -7205,7 +7204,7 @@ INSERT INTO civicrm_msg_template </table> </body> </html> -', 'case_activity', @tpl_ovid_case_activity, 0, 1) , +', 'case_activity', @tpl_ovid_case_activity, 0, 1) , ('Contributions - Duplicate Organization Alert', '{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name} @@ -7411,7 +7410,7 @@ INSERT INTO civicrm_msg_template </table> </body> </html> -', 'contribution_dupalert', @tpl_ovid_contribution_dupalert, 0, 1) , +', 'contribution_dupalert', @tpl_ovid_contribution_dupalert, 0, 1) , ('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name} @@ -8281,7 +8280,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_offline_receipt', @tpl_ovid_contribution_offline_receipt, 0, 1) , +', 'contribution_offline_receipt', @tpl_ovid_contribution_offline_receipt, 0, 1) , ('Contributions - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name} @@ -9577,7 +9576,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 0, 1) , +', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 0, 1) , ('Contributions - Invoice', '{if $title} @@ -10357,7 +10356,7 @@ INSERT INTO civicrm_msg_template </div> </body> </html> -', 'contribution_invoice_receipt', @tpl_ovid_contribution_invoice_receipt, 0, 1) , +', 'contribution_invoice_receipt', @tpl_ovid_contribution_invoice_receipt, 0, 1) , ('Contributions - Recurring Start and End Notification', '{ts}Recurring Contribution Notification{/ts} - {contact.display_name} @@ -10757,7 +10756,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_notify', @tpl_ovid_contribution_recurring_notify, 0, 1) , +', 'contribution_recurring_notify', @tpl_ovid_contribution_recurring_notify, 0, 1) , ('Contributions - Recurring Cancellation Notification', '{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name} @@ -10831,7 +10830,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_cancelled', @tpl_ovid_contribution_recurring_cancelled, 0, 1) , +', 'contribution_recurring_cancelled', @tpl_ovid_contribution_recurring_cancelled, 0, 1) , ('Contributions - Recurring Billing Updates', '{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name} @@ -11009,7 +11008,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_billing', @tpl_ovid_contribution_recurring_billing, 0, 1) , +', 'contribution_recurring_billing', @tpl_ovid_contribution_recurring_billing, 0, 1) , ('Contributions - Recurring Updates', '{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name} @@ -11099,7 +11098,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_edit', @tpl_ovid_contribution_recurring_edit, 0, 1) , +', 'contribution_recurring_edit', @tpl_ovid_contribution_recurring_edit, 0, 1) , ('Personal Campaign Pages - Admin Notification', '{ts}Personal Campaign Page Notification{/ts} - {contact.display_name} @@ -11333,7 +11332,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'pcp_notify', @tpl_ovid_pcp_notify, 0, 1) , +', 'pcp_notify', @tpl_ovid_pcp_notify, 0, 1) , ('Personal Campaign Pages - Supporter Status Change Notification', '{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name} @@ -11539,7 +11538,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'pcp_status_change', @tpl_ovid_pcp_status_change, 0, 1) , +', 'pcp_status_change', @tpl_ovid_pcp_status_change, 0, 1) , ('Personal Campaign Pages - Supporter Welcome', '{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name} @@ -11855,7 +11854,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'pcp_supporter_notify', @tpl_ovid_pcp_supporter_notify, 0, 1) , +', 'pcp_supporter_notify', @tpl_ovid_pcp_supporter_notify, 0, 1) , ('Personal Campaign Pages - Owner Notification', '{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name} @@ -11961,7 +11960,7 @@ INSERT INTO civicrm_msg_template </table> </body> </html> -', 'pcp_owner_notify', @tpl_ovid_pcp_owner_notify, 0, 1) , +', 'pcp_owner_notify', @tpl_ovid_pcp_owner_notify, 0, 1) , ('Additional Payment Receipt or Refund Notification', '{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name} @@ -12691,244 +12690,11 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0, 1) , +', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0, 1) , ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name} -', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} -{$event.confirm_email_text} -{/if} - -{if !empty($isOnWaitlist)} -=============================================================================== - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -=============================================================================== - -{elseif !empty($isRequireApproval)} -=============================================================================== - -{ts}Your registration has been submitted.{/ts} - -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -=============================================================================== - -{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} - -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - - -=============================================================================== - -{ts}Event Information and Location{/ts} - -=============================================================================== - -{event.title} -{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if} - -{if "{participant.role_id:label}" neq \'Attendee\'} -{ts}Participant Role{/ts}: {participant.role_id:label} -{/if} - -{if !empty($isShowLocation)} -{event.location} -{/if}{*End of isShowLocation condition*} - -{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} -{ts}Event Contacts:{/ts} - -{if {event.loc_block_id.phone_id.phone|boolean}} -{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.phone_2_id.phone|boolean}} -{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.email_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_id.email} -{/if} -{if {event.loc_block_id.email_2_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if} -{/if} - - -{if {event.is_public|boolean}} -{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar entry for this event.{/ts} {$icalFeed} -{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Add event to Google Calendar{/ts} {$gCalendar} -{/if} - -{if {contact.email_primary.email|boolean}} - -=============================================================================== - -{ts}Registered Email{/ts} - -=============================================================================== - -{contact.email_primary.email} -{/if} -{if {event.is_monetary|boolean}} {* This section for Paid events only.*} - -=============================================================================== - -{event.fee_label} -=============================================================================== - -{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} - -{if $value neq \'skip\'} -{if {event.is_monetary|boolean}} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ------------------------------------------------------------------------------ - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{if $isShowTax && {contribution.tax_amount|boolean}} -{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} -{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} -{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} -{/if} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:"%10s"}{/if} - -{foreach from=$value item=line} -{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} -{/foreach} -{/if} -{/foreach} - -{if $isShowTax && {contribution.tax_amount|boolean}} -{if $totalAmount and $totalTaxAmount} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{/if} -{/foreach} -{/if} -{/if} - -{if !empty($amount) && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} - -{if {contribution.tax_amount|boolean}} -{ts}Total Tax Amount{/ts}: {contribution.tax_amount} -{/if} -{if {event.is_monetary|boolean}} - -{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{ts}Balance{/ts}: {contribution.balance_amount} -{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{/if} - -{if !empty($pricesetFieldsCount)} - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq \'skip\'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1} - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - -{if {participant.register_date|boolean}} -{ts}Registration Date{/ts}: {participant.register_date} -{/if} -{if {contribution.receive_date|boolean}} -{ts}Transaction Date{/ts}: {contribution.receive_date} -{/if} -{if {contribution.financial_type_id|boolean}} -{ts}Financial Type{/ts}: {contribution.financial_type_id:label} -{/if} -{if {contribution.trxn_id|boolean}} -{ts}Transaction #{/ts}: {contribution.trxn_id} -{/if} -{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}} -{ts}Paid By{/ts}: {contribution.payment_instrument_id:label} -{/if} -{if {contribution.check_number|boolean}} -{ts}Check Number{/ts}: {contribution.check_number} -{/if} -{if !empty($billingName)} - -=============================================================================== - -{ts}Billing Name and Address{/ts} - -=============================================================================== - -{$billingName} -{$address} -{/if} - -{if !empty($credit_card_type)} -=========================================================== -{ts}Credit Card Information{/ts} - -=============================================================================== - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if !empty($customGroup)} -{foreach from=$customGroup item=value key=customName} -============================================================================== - -{$customName} -============================================================================== - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - -', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> @@ -13310,7 +13076,7 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -13318,8 +13084,8 @@ INSERT INTO civicrm_msg_template </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -13371,240 +13137,7 @@ INSERT INTO civicrm_msg_template </html> ', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 1, 0), ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name} -', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} -{$event.confirm_email_text} -{/if} - -{if !empty($isOnWaitlist)} -=============================================================================== - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -=============================================================================== - -{elseif !empty($isRequireApproval)} -=============================================================================== - -{ts}Your registration has been submitted.{/ts} - -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -=============================================================================== - -{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} - -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - - -=============================================================================== - -{ts}Event Information and Location{/ts} - -=============================================================================== - -{event.title} -{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if} - -{if "{participant.role_id:label}" neq \'Attendee\'} -{ts}Participant Role{/ts}: {participant.role_id:label} -{/if} - -{if !empty($isShowLocation)} -{event.location} -{/if}{*End of isShowLocation condition*} - -{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} -{ts}Event Contacts:{/ts} - -{if {event.loc_block_id.phone_id.phone|boolean}} -{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.phone_2_id.phone|boolean}} -{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.email_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_id.email} -{/if} -{if {event.loc_block_id.email_2_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if} -{/if} - - -{if {event.is_public|boolean}} -{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar entry for this event.{/ts} {$icalFeed} -{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Add event to Google Calendar{/ts} {$gCalendar} -{/if} - -{if {contact.email_primary.email|boolean}} - -=============================================================================== - -{ts}Registered Email{/ts} - -=============================================================================== - -{contact.email_primary.email} -{/if} -{if {event.is_monetary|boolean}} {* This section for Paid events only.*} - -=============================================================================== - -{event.fee_label} -=============================================================================== - -{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} - -{if $value neq \'skip\'} -{if {event.is_monetary|boolean}} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ------------------------------------------------------------------------------ - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{if $isShowTax && {contribution.tax_amount|boolean}} -{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} -{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} -{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} -{/if} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:"%10s"}{/if} - -{foreach from=$value item=line} -{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} -{/foreach} -{/if} -{/foreach} - -{if $isShowTax && {contribution.tax_amount|boolean}} -{if $totalAmount and $totalTaxAmount} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{/if} -{/foreach} -{/if} -{/if} - -{if !empty($amount) && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} - -{if {contribution.tax_amount|boolean}} -{ts}Total Tax Amount{/ts}: {contribution.tax_amount} -{/if} -{if {event.is_monetary|boolean}} - -{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{ts}Balance{/ts}: {contribution.balance_amount} -{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{/if} - -{if !empty($pricesetFieldsCount)} - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq \'skip\'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1} - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - -{if {participant.register_date|boolean}} -{ts}Registration Date{/ts}: {participant.register_date} -{/if} -{if {contribution.receive_date|boolean}} -{ts}Transaction Date{/ts}: {contribution.receive_date} -{/if} -{if {contribution.financial_type_id|boolean}} -{ts}Financial Type{/ts}: {contribution.financial_type_id:label} -{/if} -{if {contribution.trxn_id|boolean}} -{ts}Transaction #{/ts}: {contribution.trxn_id} -{/if} -{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}} -{ts}Paid By{/ts}: {contribution.payment_instrument_id:label} -{/if} -{if {contribution.check_number|boolean}} -{ts}Check Number{/ts}: {contribution.check_number} -{/if} -{if !empty($billingName)} - -=============================================================================== - -{ts}Billing Name and Address{/ts} - -=============================================================================== - -{$billingName} -{$address} -{/if} - -{if !empty($credit_card_type)} -=========================================================== -{ts}Credit Card Information{/ts} - -=============================================================================== - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if !empty($customGroup)} -{foreach from=$customGroup item=value key=customName} -============================================================================== - -{$customName} -============================================================================== - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - -', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> @@ -13986,7 +13519,7 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -13994,8 +13527,8 @@ INSERT INTO civicrm_msg_template </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -14045,7 +13578,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 0, 1) , +', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 0, 1) , ('Events - Registration Confirmation and Receipt (on-line)', '{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name} @@ -14235,7 +13768,7 @@ You were registered by: {$payer.name} {if !empty($checkNumber)} {ts}Check Number{/ts}: {$checkNumber} {/if} -{if !empty($billingName)} +{if {contribution.address_id.display|boolean}} =============================================================================== @@ -14243,8 +13776,8 @@ You were registered by: {$payer.name} =============================================================================== -{$billingName} -{$address} +{contribution.address_id.name} +{contribution.address_id.display} {/if} {if !empty($credit_card_type)} @@ -14706,7 +14239,7 @@ You were registered by: {$payer.name} </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -14714,8 +14247,8 @@ You were registered by: {$payer.name} </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -14989,7 +14522,7 @@ You were registered by: {$payer.name} {if !empty($checkNumber)} {ts}Check Number{/ts}: {$checkNumber} {/if} -{if !empty($billingName)} +{if {contribution.address_id.display|boolean}} =============================================================================== @@ -14997,8 +14530,8 @@ You were registered by: {$payer.name} =============================================================================== -{$billingName} -{$address} +{contribution.address_id.name} +{contribution.address_id.display} {/if} {if !empty($credit_card_type)} @@ -15460,7 +14993,7 @@ You were registered by: {$payer.name} </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -15468,8 +15001,8 @@ You were registered by: {$payer.name} </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -15555,7 +15088,7 @@ You were registered by: {$payer.name} </body> </html> -', 'event_online_receipt', @tpl_ovid_event_online_receipt, 0, 1) , +', 'event_online_receipt', @tpl_ovid_event_online_receipt, 0, 1) , ('Events - Receipt only', 'Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name} @@ -16071,7 +15604,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"} If you have questions about the status of your registration or purchase please feel free to contact us. </body> </html> -', 'event_registration_receipt', @tpl_ovid_event_registration_receipt, 0, 1) , +', 'event_registration_receipt', @tpl_ovid_event_registration_receipt, 0, 1) , ('Events - Registration Cancellation Notice', '{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name} @@ -16425,7 +15958,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"} </body> </html> -', 'participant_cancelled', @tpl_ovid_participant_cancelled, 0, 1) , +', 'participant_cancelled', @tpl_ovid_participant_cancelled, 0, 1) , ('Events - Registration Confirmation Invite', '{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name} @@ -16903,7 +16436,7 @@ Click this link to go to a web page where you can confirm your registration onli </body> </html> -', 'participant_confirm', @tpl_ovid_participant_confirm, 0, 1) , +', 'participant_confirm', @tpl_ovid_participant_confirm, 0, 1) , ('Events - Pending Registration Expiration Notice', '{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name} @@ -17271,7 +16804,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'participant_expired', @tpl_ovid_participant_expired, 0, 1) , +', 'participant_expired', @tpl_ovid_participant_expired, 0, 1) , ('Events - Registration Transferred Notice', '{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name} @@ -17621,7 +17154,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'participant_transferred', @tpl_ovid_participant_transferred, 0, 1) , +', 'participant_transferred', @tpl_ovid_participant_transferred, 0, 1) , ('Tell-a-Friend Email', '{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts} @@ -17733,7 +17266,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'friend', @tpl_ovid_friend, 0, 1) , +', 'friend', @tpl_ovid_friend, 0, 1) , ('Memberships - Signup and Renewal Receipts (off-line)', '{if $receiptType EQ \'membership signup\'} @@ -18521,7 +18054,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_offline_receipt', @tpl_ovid_membership_offline_receipt, 0, 1) , +', 'membership_offline_receipt', @tpl_ovid_membership_offline_receipt, 0, 1) , ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name} @@ -19294,7 +18827,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -19303,7 +18835,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -20082,7 +19613,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -20091,7 +19621,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -20099,7 +19628,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 0, 1) , +', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 0, 1) , ('Memberships - Auto-renew Cancellation Notification', '{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name} @@ -20269,7 +19798,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_autorenew_cancelled', @tpl_ovid_membership_autorenew_cancelled, 0, 1) , +', 'membership_autorenew_cancelled', @tpl_ovid_membership_autorenew_cancelled, 0, 1) , ('Memberships - Auto-renew Billing Updates', '{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name} @@ -20449,7 +19978,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_autorenew_billing', @tpl_ovid_membership_autorenew_billing, 0, 1) , +', 'membership_autorenew_billing', @tpl_ovid_membership_autorenew_billing, 0, 1) , ('Test-drive - Receipt Header', '[TEST] @@ -20485,7 +20014,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </td> </tr> </table> -', 'test_preview', @tpl_ovid_test_preview, 0, 1) , +', 'test_preview', @tpl_ovid_test_preview, 0, 1) , ('Pledges - Acknowledgement', '{ts}Thank you for your Pledge{/ts} - {contact.display_name} @@ -20811,7 +20340,7 @@ or need to modify your payment schedule.{/ts}</p> </body> </html> -', 'pledge_acknowledge', @tpl_ovid_pledge_acknowledge, 0, 1) , +', 'pledge_acknowledge', @tpl_ovid_pledge_acknowledge, 0, 1) , ('Pledges - Payment Reminder', '{ts}Pledge Payment Reminder{/ts} - {contact.display_name} @@ -21093,7 +20622,7 @@ or need to modify your payment schedule.{/ts}</p> </body> </html> -', 'pledge_reminder', @tpl_ovid_pledge_reminder, 0, 1) , +', 'pledge_reminder', @tpl_ovid_pledge_reminder, 0, 1) , ('Profiles - Admin Notification', '{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name} @@ -21265,7 +20794,7 @@ or need to modify your payment schedule.{/ts}</p> </body> </html> -', 'uf_notify', @tpl_ovid_uf_notify, 0, 1) , +', 'uf_notify', @tpl_ovid_uf_notify, 0, 1) , ('Petition - signature added', 'Thank you for signing {survey.title} - {contact.display_name} @@ -21289,7 +20818,7 @@ Thank you for signing {survey.title}. {capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q="sid={survey.id}" a=1 fe=1 h=1}{/capture} {include file="CRM/common/SocialNetwork.tpl" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true} -', 'petition_sign', @tpl_ovid_petition_sign, 0, 1) , +', 'petition_sign', @tpl_ovid_petition_sign, 0, 1) , ('Petition - need verification', 'Confirmation of signature needed for {$petition.title} - {contact.display_name} @@ -21340,7 +20869,6 @@ Email confirmation page: <a href="{$petition.confirmUrl}">{$petition.confirmUrl} <p>If you did not sign this petition, please ignore this message.</p> ', 'petition_confirmation_needed', @tpl_ovid_petition_confirmation_needed, 0, 1) ; - INSERT INTO civicrm_msg_template (msg_title, msg_subject, msg_text, msg_html, workflow_id, is_default, is_reserved) VALUES @@ -23580,4 +23108,4 @@ INSERT INTO `civicrm_report_instance` ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`) VALUES ( @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}'); -UPDATE civicrm_domain SET version = '5.67.3'; +UPDATE civicrm_domain SET version = '5.68.0'; diff --git a/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php b/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php index 974fba7f4f..4811b8825a 100644 --- a/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php @@ -6,23 +6,33 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_tag') ]) ->addValues([ [ - 'name' => ts('Non-profit'), + 'label' => ts('Non-profit'), + 'name' => 'Non_profit', 'description' => ts('Any not-for-profit organization.'), + 'color' => '#0bcb21', ], [ - 'name' => ts('Company'), + 'label' => ts('Company'), + 'name' => 'Company', 'description' => ts('For-profit organization.'), + 'color' => '#2260c3', ], [ - 'name' => ts('Government Entity'), + 'label' => ts('Government Entity'), + 'name' => 'Government_Entity', 'description' => ts('Any governmental entity.'), + 'color' => '#cd4b13', ], [ - 'name' => ts('Major Donor'), + 'label' => ts('Major Donor'), + 'name' => 'Major_Donor', 'description' => ts('High-value supporter of our organization.'), + 'color' => '#0cdae9', ], [ - 'name' => ts('Volunteer'), + 'label' => ts('Volunteer'), + 'name' => 'Volunteer', 'description' => ts('Active volunteers.'), + 'color' => '#f0dc00', ], ]); diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 809bc86cc1..a8088ebac8 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,15 +1,16 @@ --- MariaDB dump 10.19 Distrib 10.5.19-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.13 Distrib 5.7.37, for Linux (x86_64) -- --- Host: database Database: dmastercivicrm +-- Host: 127.0.0.1 Database: dmastercivi_ssc8b -- ------------------------------------------------------ --- Server version 10.4.20-MariaDB-1:10.4.20+maria~focal +-- Server version 5.7.37 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; @@ -81,647 +82,647 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity` WRITE; /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */; INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES - (1,NULL,1,'Subject for Meeting','2023-01-10 03:50:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (2,NULL,2,'Subject for Phone Call','2023-03-17 02:02:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (3,NULL,2,'Subject for Phone Call','2023-06-13 07:07:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (4,NULL,1,'Subject for Meeting','2022-10-15 22:22:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (5,NULL,1,'Subject for Meeting','2023-06-30 02:06:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (6,NULL,22,'Subject for Print/Merge Document','2023-04-03 03:22:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (7,NULL,22,'Subject for Print/Merge Document','2022-11-11 21:57:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (8,NULL,1,'Subject for Meeting','2022-12-24 17:58:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (9,NULL,1,'Subject for Meeting','2023-02-03 17:52:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (10,NULL,1,'Subject for Meeting','2022-11-30 04:08:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (11,NULL,22,'Subject for Print/Merge Document','2023-06-03 13:25:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (12,NULL,22,'Subject for Print/Merge Document','2023-07-22 02:54:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (13,NULL,1,'Subject for Meeting','2023-06-16 08:28:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (14,NULL,9,'Subject for Tell a Friend','2023-03-20 23:03:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (15,NULL,9,'Subject for Tell a Friend','2023-10-06 05:34:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (16,NULL,22,'Subject for Print/Merge Document','2022-10-14 07:05:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (17,NULL,2,'Subject for Phone Call','2023-06-01 12:32:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (18,NULL,9,'Subject for Tell a Friend','2023-06-15 02:38:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (19,NULL,2,'Subject for Phone Call','2023-08-24 05:51:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (20,NULL,22,'Subject for Print/Merge Document','2023-02-12 19:22:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (21,NULL,2,'Subject for Phone Call','2023-09-07 19:42:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (22,NULL,22,'Subject for Print/Merge Document','2023-06-30 00:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (23,NULL,9,'Subject for Tell a Friend','2023-07-18 19:55:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (24,NULL,56,'Subject for Interview','2022-10-22 03:58:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (25,NULL,9,'Subject for Tell a Friend','2023-01-03 18:44:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (26,NULL,2,'Subject for Phone Call','2023-05-09 10:43:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (27,NULL,2,'Subject for Phone Call','2023-06-06 18:07:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (28,NULL,9,'Subject for Tell a Friend','2023-08-16 04:18:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (29,NULL,2,'Subject for Phone Call','2023-01-05 23:52:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (30,NULL,9,'Subject for Tell a Friend','2023-07-06 08:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (31,NULL,22,'Subject for Print/Merge Document','2022-12-19 09:47:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (32,NULL,9,'Subject for Tell a Friend','2023-07-21 13:08:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (33,NULL,22,'Subject for Print/Merge Document','2023-08-31 07:34:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (34,NULL,56,'Subject for Interview','2023-04-10 13:06:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (35,NULL,9,'Subject for Tell a Friend','2023-07-10 22:10:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (36,NULL,2,'Subject for Phone Call','2023-01-18 07:01:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (37,NULL,1,'Subject for Meeting','2023-09-29 02:04:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (38,NULL,9,'Subject for Tell a Friend','2023-02-25 02:46:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (39,NULL,1,'Subject for Meeting','2023-06-06 02:54:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (40,NULL,22,'Subject for Print/Merge Document','2023-05-20 22:16:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (41,NULL,1,'Subject for Meeting','2022-10-16 04:38:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (42,NULL,56,'Subject for Interview','2022-12-07 00:18:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (43,NULL,56,'Subject for Interview','2022-11-21 11:23:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (44,NULL,56,'Subject for Interview','2022-10-20 01:00:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (45,NULL,9,'Subject for Tell a Friend','2023-08-24 19:31:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (46,NULL,9,'Subject for Tell a Friend','2023-05-16 13:18:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (47,NULL,2,'Subject for Phone Call','2023-08-23 02:30:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (48,NULL,9,'Subject for Tell a Friend','2023-03-24 02:03:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (49,NULL,22,'Subject for Print/Merge Document','2023-08-28 10:03:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (50,NULL,1,'Subject for Meeting','2023-05-19 17:32:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (51,NULL,2,'Subject for Phone Call','2023-08-26 17:28:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (52,NULL,56,'Subject for Interview','2023-06-12 05:52:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (53,NULL,2,'Subject for Phone Call','2023-01-13 21:06:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (54,NULL,9,'Subject for Tell a Friend','2023-09-20 07:02:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (55,NULL,56,'Subject for Interview','2023-05-14 06:32:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (56,NULL,22,'Subject for Print/Merge Document','2023-07-14 20:47:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (57,NULL,22,'Subject for Print/Merge Document','2023-02-05 02:12:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (58,NULL,22,'Subject for Print/Merge Document','2022-12-12 03:01:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (59,NULL,56,'Subject for Interview','2023-07-22 22:20:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (60,NULL,9,'Subject for Tell a Friend','2023-05-13 22:19:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (61,NULL,22,'Subject for Print/Merge Document','2023-08-04 11:31:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (62,NULL,22,'Subject for Print/Merge Document','2023-04-21 13:57:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (63,NULL,9,'Subject for Tell a Friend','2023-08-15 03:16:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (64,NULL,56,'Subject for Interview','2023-03-17 10:02:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (65,NULL,9,'Subject for Tell a Friend','2023-03-28 09:31:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (66,NULL,56,'Subject for Interview','2023-02-01 21:30:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (67,NULL,56,'Subject for Interview','2022-10-23 23:14:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (68,NULL,9,'Subject for Tell a Friend','2023-01-10 23:06:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (69,NULL,56,'Subject for Interview','2023-04-23 14:00:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (70,NULL,56,'Subject for Interview','2023-06-16 14:53:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (71,NULL,9,'Subject for Tell a Friend','2023-06-21 07:01:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (72,NULL,56,'Subject for Interview','2023-09-11 20:35:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (73,NULL,56,'Subject for Interview','2023-02-11 21:25:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (74,NULL,1,'Subject for Meeting','2023-08-28 21:56:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (75,NULL,2,'Subject for Phone Call','2023-04-30 06:35:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (76,NULL,22,'Subject for Print/Merge Document','2023-05-26 19:24:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (77,NULL,22,'Subject for Print/Merge Document','2023-08-06 02:33:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (78,NULL,56,'Subject for Interview','2022-11-25 02:25:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (79,NULL,56,'Subject for Interview','2023-06-04 01:51:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (80,NULL,56,'Subject for Interview','2023-01-13 03:17:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (81,NULL,2,'Subject for Phone Call','2022-11-03 17:45:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (82,NULL,2,'Subject for Phone Call','2023-07-14 07:20:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (83,NULL,1,'Subject for Meeting','2023-06-30 03:22:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (84,NULL,9,'Subject for Tell a Friend','2023-01-03 18:11:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (85,NULL,1,'Subject for Meeting','2023-03-17 14:25:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (86,NULL,2,'Subject for Phone Call','2023-03-17 01:53:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (87,NULL,56,'Subject for Interview','2023-02-20 08:15:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (88,NULL,22,'Subject for Print/Merge Document','2023-01-30 07:27:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (89,NULL,22,'Subject for Print/Merge Document','2023-05-26 20:25:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (90,NULL,56,'Subject for Interview','2023-08-11 03:36:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (91,NULL,2,'Subject for Phone Call','2023-05-25 03:46:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (92,NULL,2,'Subject for Phone Call','2023-05-09 14:06:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (93,NULL,22,'Subject for Print/Merge Document','2023-10-01 02:26:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (94,NULL,56,'Subject for Interview','2023-09-14 04:28:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (95,NULL,1,'Subject for Meeting','2023-05-20 01:23:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (96,NULL,2,'Subject for Phone Call','2023-01-29 16:39:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (97,NULL,2,'Subject for Phone Call','2023-06-05 22:23:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (98,NULL,22,'Subject for Print/Merge Document','2022-12-31 15:48:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (99,NULL,2,'Subject for Phone Call','2023-04-21 22:30:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (100,NULL,9,'Subject for Tell a Friend','2022-12-08 10:36:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (101,NULL,1,'Subject for Meeting','2022-10-31 11:07:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (102,NULL,22,'Subject for Print/Merge Document','2023-03-08 06:30:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (103,NULL,2,'Subject for Phone Call','2022-10-08 09:27:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (104,NULL,56,'Subject for Interview','2022-11-24 21:30:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (105,NULL,2,'Subject for Phone Call','2023-09-15 05:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (106,NULL,56,'Subject for Interview','2023-05-24 05:31:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (107,NULL,2,'Subject for Phone Call','2023-06-17 02:48:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (108,NULL,9,'Subject for Tell a Friend','2023-08-07 23:09:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (109,NULL,2,'Subject for Phone Call','2023-07-10 06:46:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (110,NULL,9,'Subject for Tell a Friend','2023-04-23 12:10:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (111,NULL,56,'Subject for Interview','2022-10-24 22:12:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (112,NULL,9,'Subject for Tell a Friend','2023-03-30 06:56:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (113,NULL,1,'Subject for Meeting','2023-05-05 02:34:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (114,NULL,9,'Subject for Tell a Friend','2023-06-21 21:57:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (115,NULL,9,'Subject for Tell a Friend','2023-07-10 19:33:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (116,NULL,56,'Subject for Interview','2023-10-02 09:03:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (117,NULL,2,'Subject for Phone Call','2022-11-18 03:35:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (118,NULL,56,'Subject for Interview','2022-12-12 04:18:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (119,NULL,22,'Subject for Print/Merge Document','2023-08-19 21:00:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (120,NULL,22,'Subject for Print/Merge Document','2022-12-02 15:10:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (121,NULL,1,'Subject for Meeting','2023-01-13 07:04:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (122,NULL,2,'Subject for Phone Call','2023-06-14 13:40:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (123,NULL,1,'Subject for Meeting','2023-01-25 23:52:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (124,NULL,56,'Subject for Interview','2023-09-23 00:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (125,NULL,22,'Subject for Print/Merge Document','2022-10-31 03:46:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (126,NULL,22,'Subject for Print/Merge Document','2023-09-25 11:43:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (127,NULL,9,'Subject for Tell a Friend','2022-10-30 22:24:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (128,NULL,9,'Subject for Tell a Friend','2023-02-09 16:57:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (129,NULL,56,'Subject for Interview','2023-10-03 13:17:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (130,NULL,56,'Subject for Interview','2023-05-08 15:01:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (131,NULL,2,'Subject for Phone Call','2022-10-22 03:07:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (132,NULL,9,'Subject for Tell a Friend','2023-04-18 11:30:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (133,NULL,56,'Subject for Interview','2023-05-13 01:52:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (134,NULL,9,'Subject for Tell a Friend','2023-02-17 08:34:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (135,NULL,22,'Subject for Print/Merge Document','2023-09-10 22:43:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (136,NULL,2,'Subject for Phone Call','2023-02-01 08:18:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (137,NULL,1,'Subject for Meeting','2022-11-27 22:01:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (138,NULL,9,'Subject for Tell a Friend','2023-03-27 12:51:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (139,NULL,9,'Subject for Tell a Friend','2022-10-18 01:21:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (140,NULL,9,'Subject for Tell a Friend','2023-05-17 14:45:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (141,NULL,9,'Subject for Tell a Friend','2023-07-20 07:28:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (142,NULL,22,'Subject for Print/Merge Document','2023-09-19 20:49:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (143,NULL,22,'Subject for Print/Merge Document','2023-02-02 00:55:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (144,NULL,9,'Subject for Tell a Friend','2023-05-11 00:28:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (145,NULL,2,'Subject for Phone Call','2023-07-08 19:50:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (146,NULL,9,'Subject for Tell a Friend','2023-09-16 02:39:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (147,NULL,56,'Subject for Interview','2023-09-16 14:45:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (148,NULL,56,'Subject for Interview','2023-05-09 00:36:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (149,NULL,2,'Subject for Phone Call','2023-09-17 12:23:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (150,NULL,9,'Subject for Tell a Friend','2023-05-07 05:21:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (151,NULL,9,'Subject for Tell a Friend','2023-05-19 21:37:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (152,NULL,9,'Subject for Tell a Friend','2023-07-18 21:31:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (153,NULL,22,'Subject for Print/Merge Document','2023-07-20 05:36:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (154,NULL,22,'Subject for Print/Merge Document','2023-03-11 11:16:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (155,NULL,2,'Subject for Phone Call','2023-03-07 14:30:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (156,NULL,1,'Subject for Meeting','2022-11-25 15:02:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (157,NULL,2,'Subject for Phone Call','2022-12-10 13:52:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (158,NULL,2,'Subject for Phone Call','2023-08-04 09:03:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (159,NULL,2,'Subject for Phone Call','2023-03-29 20:31:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (160,NULL,1,'Subject for Meeting','2023-08-05 20:27:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (161,NULL,56,'Subject for Interview','2023-06-26 10:23:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (162,NULL,1,'Subject for Meeting','2023-01-08 13:10:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (163,NULL,56,'Subject for Interview','2023-04-17 06:42:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (164,NULL,22,'Subject for Print/Merge Document','2022-12-10 18:51:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (165,NULL,2,'Subject for Phone Call','2022-12-22 14:29:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (166,NULL,1,'Subject for Meeting','2023-04-21 15:00:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (167,NULL,56,'Subject for Interview','2023-07-18 11:00:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (168,NULL,1,'Subject for Meeting','2022-12-14 09:15:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (169,NULL,22,'Subject for Print/Merge Document','2022-10-11 18:59:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (170,NULL,2,'Subject for Phone Call','2022-12-20 11:57:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (171,NULL,9,'Subject for Tell a Friend','2022-11-27 20:00:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (172,NULL,2,'Subject for Phone Call','2023-07-25 20:03:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (173,NULL,9,'Subject for Tell a Friend','2023-05-03 09:10:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (174,NULL,56,'Subject for Interview','2023-01-18 04:24:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (175,NULL,9,'Subject for Tell a Friend','2023-02-22 20:05:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (176,NULL,22,'Subject for Print/Merge Document','2023-04-11 15:48:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (177,NULL,22,'Subject for Print/Merge Document','2023-09-20 17:13:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (178,NULL,22,'Subject for Print/Merge Document','2022-12-19 06:09:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (179,NULL,22,'Subject for Print/Merge Document','2022-12-13 09:34:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (180,NULL,1,'Subject for Meeting','2023-01-03 15:17:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (181,NULL,9,'Subject for Tell a Friend','2022-12-11 00:38:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (182,NULL,56,'Subject for Interview','2023-07-19 08:42:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (183,NULL,2,'Subject for Phone Call','2023-04-20 14:41:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (184,NULL,1,'Subject for Meeting','2023-07-17 07:13:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (185,NULL,56,'Subject for Interview','2022-12-10 04:38:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (186,NULL,9,'Subject for Tell a Friend','2023-10-06 08:33:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (187,NULL,9,'Subject for Tell a Friend','2023-09-14 04:39:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (188,NULL,22,'Subject for Print/Merge Document','2023-08-30 17:08:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (189,NULL,22,'Subject for Print/Merge Document','2022-12-31 05:31:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (190,NULL,1,'Subject for Meeting','2023-02-17 17:29:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (191,NULL,9,'Subject for Tell a Friend','2023-02-28 21:15:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (192,NULL,56,'Subject for Interview','2023-05-02 15:24:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (193,NULL,1,'Subject for Meeting','2023-02-13 16:10:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (194,NULL,22,'Subject for Print/Merge Document','2023-08-12 18:32:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (195,NULL,9,'Subject for Tell a Friend','2023-02-14 03:08:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (196,NULL,1,'Subject for Meeting','2023-06-23 20:50:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (197,NULL,56,'Subject for Interview','2023-07-23 12:25:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (198,NULL,2,'Subject for Phone Call','2023-04-15 05:57:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (199,NULL,9,'Subject for Tell a Friend','2023-04-21 22:47:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (200,NULL,9,'Subject for Tell a Friend','2023-04-20 21:33:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (201,NULL,1,'Subject for Meeting','2022-12-02 17:58:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (202,NULL,9,'Subject for Tell a Friend','2023-03-25 03:45:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (203,NULL,1,'Subject for Meeting','2023-07-30 16:26:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (204,NULL,56,'Subject for Interview','2023-06-18 21:21:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (205,NULL,56,'Subject for Interview','2023-06-22 21:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (206,NULL,2,'Subject for Phone Call','2023-04-09 17:24:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (207,NULL,2,'Subject for Phone Call','2023-01-29 22:01:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (208,NULL,22,'Subject for Print/Merge Document','2023-07-17 11:12:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (209,NULL,1,'Subject for Meeting','2023-01-11 08:49:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (210,NULL,1,'Subject for Meeting','2023-07-12 01:18:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (211,NULL,9,'Subject for Tell a Friend','2023-01-10 06:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (212,NULL,1,'Subject for Meeting','2023-08-18 07:17:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (213,NULL,1,'Subject for Meeting','2023-01-28 11:50:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (214,NULL,1,'Subject for Meeting','2022-12-30 21:42:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (215,NULL,1,'Subject for Meeting','2022-11-21 05:17:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (216,NULL,22,'Subject for Print/Merge Document','2022-12-22 15:31:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (217,NULL,22,'Subject for Print/Merge Document','2023-03-11 10:13:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (218,NULL,22,'Subject for Print/Merge Document','2023-07-20 14:29:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (219,NULL,1,'Subject for Meeting','2023-09-19 14:45:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (220,NULL,9,'Subject for Tell a Friend','2023-01-11 23:35:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (221,NULL,22,'Subject for Print/Merge Document','2023-03-01 03:26:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (222,NULL,1,'Subject for Meeting','2023-05-20 13:41:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (223,NULL,22,'Subject for Print/Merge Document','2023-02-14 16:33:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (224,NULL,9,'Subject for Tell a Friend','2023-04-04 21:04:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (225,NULL,22,'Subject for Print/Merge Document','2023-06-09 01:49:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (226,NULL,9,'Subject for Tell a Friend','2022-11-14 09:42:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (227,NULL,2,'Subject for Phone Call','2023-04-11 00:14:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (228,NULL,1,'Subject for Meeting','2023-01-07 22:36:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (229,NULL,2,'Subject for Phone Call','2023-07-29 21:15:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (230,NULL,56,'Subject for Interview','2023-04-19 06:54:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (231,NULL,56,'Subject for Interview','2023-01-15 10:26:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (232,NULL,22,'Subject for Print/Merge Document','2023-09-29 18:45:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (233,NULL,22,'Subject for Print/Merge Document','2022-10-20 12:16:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (234,NULL,1,'Subject for Meeting','2022-10-17 00:22:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (235,NULL,56,'Subject for Interview','2023-05-08 17:32:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (236,NULL,22,'Subject for Print/Merge Document','2022-11-05 00:48:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (237,NULL,1,'Subject for Meeting','2022-10-30 16:57:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (238,NULL,9,'Subject for Tell a Friend','2023-08-18 00:01:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (239,NULL,56,'Subject for Interview','2023-09-23 08:23:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (240,NULL,9,'Subject for Tell a Friend','2023-09-09 15:04:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (241,NULL,9,'Subject for Tell a Friend','2023-08-10 10:29:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (242,NULL,9,'Subject for Tell a Friend','2023-06-03 16:43:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (243,NULL,56,'Subject for Interview','2023-05-24 03:12:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (244,NULL,1,'Subject for Meeting','2023-08-29 09:08:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (245,NULL,1,'Subject for Meeting','2023-03-17 03:44:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (246,NULL,9,'Subject for Tell a Friend','2023-05-30 08:24:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (247,NULL,56,'Subject for Interview','2023-03-11 14:57:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (248,NULL,1,'Subject for Meeting','2023-08-23 14:34:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (249,NULL,56,'Subject for Interview','2023-05-20 18:36:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (250,NULL,1,'Subject for Meeting','2022-12-15 20:59:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (251,NULL,1,'Subject for Meeting','2023-07-11 13:59:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (252,NULL,2,'Subject for Phone Call','2023-09-13 16:52:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (253,NULL,9,'Subject for Tell a Friend','2023-10-06 06:15:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (254,NULL,2,'Subject for Phone Call','2023-03-26 15:09:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (255,NULL,22,'Subject for Print/Merge Document','2023-04-29 20:07:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (256,NULL,22,'Subject for Print/Merge Document','2023-04-13 15:32:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (257,NULL,2,'Subject for Phone Call','2023-10-05 15:04:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (258,NULL,9,'Subject for Tell a Friend','2022-10-13 23:50:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (259,NULL,22,'Subject for Print/Merge Document','2022-10-12 13:01:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (260,NULL,9,'Subject for Tell a Friend','2023-09-05 19:37:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (261,NULL,2,'Subject for Phone Call','2023-06-17 02:25:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (262,NULL,1,'Subject for Meeting','2022-10-23 16:24:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (263,NULL,22,'Subject for Print/Merge Document','2023-07-05 07:47:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (264,NULL,9,'Subject for Tell a Friend','2022-12-01 15:53:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (265,NULL,22,'Subject for Print/Merge Document','2023-07-15 03:55:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (266,NULL,1,'Subject for Meeting','2022-10-23 10:16:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (267,NULL,22,'Subject for Print/Merge Document','2023-10-06 13:55:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (268,NULL,2,'Subject for Phone Call','2023-06-28 03:05:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (269,NULL,2,'Subject for Phone Call','2023-02-12 07:57:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (270,NULL,22,'Subject for Print/Merge Document','2023-01-04 09:47:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (271,NULL,9,'Subject for Tell a Friend','2023-05-31 09:06:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (272,NULL,56,'Subject for Interview','2022-10-09 15:18:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (273,NULL,56,'Subject for Interview','2023-01-02 15:11:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (274,NULL,9,'Subject for Tell a Friend','2022-11-29 05:37:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (275,NULL,2,'Subject for Phone Call','2022-12-24 23:34:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (276,NULL,2,'Subject for Phone Call','2023-08-17 02:46:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (277,NULL,9,'Subject for Tell a Friend','2023-07-11 03:48:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (278,NULL,56,'Subject for Interview','2023-07-26 04:03:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (279,NULL,2,'Subject for Phone Call','2023-01-31 22:16:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (280,NULL,56,'Subject for Interview','2023-01-01 00:36:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (281,NULL,9,'Subject for Tell a Friend','2023-09-13 10:19:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (282,NULL,9,'Subject for Tell a Friend','2023-02-01 16:20:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (283,NULL,1,'Subject for Meeting','2022-12-17 16:05:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (284,NULL,22,'Subject for Print/Merge Document','2023-02-24 18:58:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (285,NULL,56,'Subject for Interview','2023-04-10 08:57:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (286,NULL,2,'Subject for Phone Call','2022-10-29 23:44:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (287,NULL,9,'Subject for Tell a Friend','2023-05-26 01:20:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (288,NULL,2,'Subject for Phone Call','2023-04-08 07:39:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (289,NULL,9,'Subject for Tell a Friend','2022-12-31 15:27:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (290,NULL,22,'Subject for Print/Merge Document','2023-03-24 11:57:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (291,NULL,22,'Subject for Print/Merge Document','2023-08-15 19:23:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (292,NULL,2,'Subject for Phone Call','2022-11-21 07:28:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (293,NULL,56,'Subject for Interview','2023-02-24 15:46:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (294,NULL,1,'Subject for Meeting','2022-12-15 16:09:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (295,NULL,22,'Subject for Print/Merge Document','2023-03-31 02:08:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (296,NULL,1,'Subject for Meeting','2022-10-26 01:37:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (297,NULL,9,'Subject for Tell a Friend','2023-08-06 04:52:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (298,NULL,56,'Subject for Interview','2023-08-22 11:51:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (299,NULL,2,'Subject for Phone Call','2022-11-30 05:11:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (300,NULL,2,'Subject for Phone Call','2023-09-21 17:55:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (301,NULL,1,'Subject for Meeting','2023-03-24 02:46:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (302,NULL,9,'Subject for Tell a Friend','2022-11-01 23:14:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (303,NULL,56,'Subject for Interview','2023-09-06 12:26:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (304,NULL,56,'Subject for Interview','2023-03-01 01:06:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (305,NULL,9,'Subject for Tell a Friend','2023-08-24 21:53:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (306,NULL,1,'Subject for Meeting','2023-03-13 07:22:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (307,NULL,56,'Subject for Interview','2023-08-29 06:57:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (308,NULL,22,'Subject for Print/Merge Document','2023-01-10 13:39:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (309,NULL,2,'Subject for Phone Call','2023-03-11 22:47:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (310,NULL,56,'Subject for Interview','2023-03-16 19:54:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (311,NULL,56,'Subject for Interview','2023-09-10 18:44:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (312,NULL,9,'Subject for Tell a Friend','2023-04-30 11:17:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (313,NULL,22,'Subject for Print/Merge Document','2023-05-16 09:24:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (314,NULL,22,'Subject for Print/Merge Document','2023-08-02 05:20:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (315,NULL,9,'Subject for Tell a Friend','2022-10-20 03:49:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (316,NULL,56,'Subject for Interview','2023-06-06 01:04:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (317,NULL,2,'Subject for Phone Call','2022-11-01 04:50:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (318,NULL,22,'Subject for Print/Merge Document','2022-10-17 15:08:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (319,NULL,2,'Subject for Phone Call','2023-09-17 23:48:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (320,NULL,9,'Subject for Tell a Friend','2023-04-05 09:42:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (321,NULL,56,'Subject for Interview','2023-03-03 19:55:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (322,NULL,9,'Subject for Tell a Friend','2023-05-10 19:20:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (323,NULL,2,'Subject for Phone Call','2023-01-31 18:23:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (324,NULL,9,'Subject for Tell a Friend','2023-09-19 02:32:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (325,NULL,56,'Subject for Interview','2023-05-16 21:52:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (326,NULL,56,'Subject for Interview','2023-07-19 03:20:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (327,NULL,56,'Subject for Interview','2023-08-21 23:06:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (328,NULL,22,'Subject for Print/Merge Document','2023-06-23 09:14:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (329,NULL,1,'Subject for Meeting','2023-04-15 18:21:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (330,NULL,1,'Subject for Meeting','2023-07-17 20:34:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (331,NULL,2,'Subject for Phone Call','2022-12-27 12:52:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (332,NULL,22,'Subject for Print/Merge Document','2022-10-28 17:28:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (333,NULL,1,'Subject for Meeting','2023-04-19 22:28:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (334,NULL,56,'Subject for Interview','2023-04-06 16:27:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (335,NULL,56,'Subject for Interview','2023-09-26 15:29:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (336,NULL,22,'Subject for Print/Merge Document','2023-10-02 01:11:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (337,NULL,56,'Subject for Interview','2022-10-15 21:25:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (338,NULL,1,'Subject for Meeting','2023-09-08 21:51:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (339,NULL,22,'Subject for Print/Merge Document','2023-06-30 18:19:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (340,NULL,9,'Subject for Tell a Friend','2023-06-24 10:38:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (341,NULL,22,'Subject for Print/Merge Document','2023-03-01 07:04:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (342,NULL,22,'Subject for Print/Merge Document','2022-10-27 16:53:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (343,NULL,1,'Subject for Meeting','2023-09-09 23:16:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (344,NULL,9,'Subject for Tell a Friend','2023-01-10 19:58:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (345,NULL,2,'Subject for Phone Call','2023-05-04 14:07:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (346,NULL,56,'Subject for Interview','2022-12-06 22:35:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (347,NULL,9,'Subject for Tell a Friend','2023-09-13 06:08:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (348,NULL,1,'Subject for Meeting','2023-07-29 21:36:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (349,NULL,1,'Subject for Meeting','2023-03-25 08:54:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (350,NULL,1,'Subject for Meeting','2022-12-12 07:41:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (351,NULL,1,'Subject for Meeting','2023-01-18 03:58:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (352,NULL,22,'Subject for Print/Merge Document','2023-09-10 09:28:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (353,NULL,56,'Subject for Interview','2022-10-28 02:06:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (354,NULL,2,'Subject for Phone Call','2023-03-26 20:22:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (355,NULL,56,'Subject for Interview','2023-06-23 01:36:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (356,NULL,22,'Subject for Print/Merge Document','2023-03-31 14:47:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (357,NULL,9,'Subject for Tell a Friend','2023-08-15 11:19:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (358,NULL,9,'Subject for Tell a Friend','2023-08-06 22:23:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (359,NULL,22,'Subject for Print/Merge Document','2022-12-13 01:47:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (360,NULL,2,'Subject for Phone Call','2023-02-26 10:44:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (361,NULL,2,'Subject for Phone Call','2023-01-24 04:48:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (362,NULL,1,'Subject for Meeting','2023-01-18 02:49:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (363,NULL,2,'Subject for Phone Call','2023-07-28 16:07:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (364,NULL,1,'Subject for Meeting','2023-04-12 02:18:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (365,NULL,22,'Subject for Print/Merge Document','2023-04-13 07:06:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (366,NULL,9,'Subject for Tell a Friend','2023-04-08 20:35:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (367,NULL,22,'Subject for Print/Merge Document','2022-10-29 23:48:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (368,NULL,9,'Subject for Tell a Friend','2022-11-26 03:34:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (369,NULL,9,'Subject for Tell a Friend','2023-05-21 08:46:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (370,NULL,9,'Subject for Tell a Friend','2023-03-09 05:15:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (371,NULL,56,'Subject for Interview','2022-11-18 18:25:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (372,NULL,56,'Subject for Interview','2023-04-25 02:58:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (373,NULL,1,'Subject for Meeting','2022-10-14 00:33:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (374,NULL,2,'Subject for Phone Call','2023-06-03 05:03:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (375,NULL,1,'Subject for Meeting','2022-11-21 10:32:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (376,NULL,9,'Subject for Tell a Friend','2023-05-22 10:36:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (377,NULL,22,'Subject for Print/Merge Document','2023-07-13 20:35:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (378,NULL,2,'Subject for Phone Call','2023-06-07 06:28:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (379,NULL,9,'Subject for Tell a Friend','2023-07-12 19:59:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (380,NULL,22,'Subject for Print/Merge Document','2023-01-31 12:58:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (381,NULL,2,'Subject for Phone Call','2023-08-11 06:17:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (382,NULL,9,'Subject for Tell a Friend','2023-06-07 03:35:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (383,NULL,56,'Subject for Interview','2023-06-17 11:05:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (384,NULL,56,'Subject for Interview','2023-09-19 04:32:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (385,NULL,56,'Subject for Interview','2023-09-22 01:29:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (386,NULL,56,'Subject for Interview','2023-03-12 09:47:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (387,NULL,1,'Subject for Meeting','2022-12-08 19:07:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (388,NULL,56,'Subject for Interview','2023-05-29 13:24:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (389,NULL,56,'Subject for Interview','2023-02-26 06:41:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (390,NULL,1,'Subject for Meeting','2023-07-26 21:55:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (391,NULL,56,'Subject for Interview','2023-10-02 14:03:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (392,NULL,2,'Subject for Phone Call','2023-05-11 07:46:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (393,NULL,22,'Subject for Print/Merge Document','2023-02-28 19:40:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (394,NULL,56,'Subject for Interview','2022-12-21 07:53:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (395,NULL,56,'Subject for Interview','2023-08-31 00:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (396,NULL,2,'Subject for Phone Call','2023-09-14 00:51:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (397,NULL,22,'Subject for Print/Merge Document','2023-05-03 09:32:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (398,NULL,22,'Subject for Print/Merge Document','2023-07-07 14:21:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (399,NULL,2,'Subject for Phone Call','2023-02-18 20:22:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (400,NULL,9,'Subject for Tell a Friend','2023-05-31 03:16:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (401,NULL,22,'Subject for Print/Merge Document','2023-06-01 02:25:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (402,NULL,1,'Subject for Meeting','2023-06-20 14:38:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (403,NULL,56,'Subject for Interview','2023-03-27 08:55:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (404,NULL,2,'Subject for Phone Call','2022-10-12 07:39:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (405,NULL,9,'Subject for Tell a Friend','2023-09-12 03:08:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (406,NULL,9,'Subject for Tell a Friend','2023-03-17 00:00:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (407,NULL,9,'Subject for Tell a Friend','2023-06-18 16:43:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (408,NULL,2,'Subject for Phone Call','2023-01-30 07:12:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (409,NULL,22,'Subject for Print/Merge Document','2023-05-13 13:10:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (410,NULL,56,'Subject for Interview','2022-10-17 21:09:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (411,NULL,1,'Subject for Meeting','2023-04-17 06:20:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (412,NULL,56,'Subject for Interview','2023-05-31 07:24:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (413,NULL,56,'Subject for Interview','2023-03-24 12:29:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (414,NULL,56,'Subject for Interview','2023-05-25 06:47:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (415,NULL,1,'Subject for Meeting','2023-07-10 23:56:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (416,NULL,9,'Subject for Tell a Friend','2023-02-28 03:48:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (417,NULL,22,'Subject for Print/Merge Document','2023-02-16 02:51:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (418,NULL,9,'Subject for Tell a Friend','2023-04-28 14:15:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (419,NULL,56,'Subject for Interview','2022-11-17 23:20:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (420,NULL,2,'Subject for Phone Call','2022-12-09 14:15:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (421,NULL,2,'Subject for Phone Call','2023-03-16 18:08:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (422,NULL,1,'Subject for Meeting','2023-09-16 15:39:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (423,NULL,1,'Subject for Meeting','2022-11-10 11:59:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (424,NULL,22,'Subject for Print/Merge Document','2023-07-25 09:36:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (425,NULL,9,'Subject for Tell a Friend','2023-03-17 05:16:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (426,NULL,1,'Subject for Meeting','2023-09-18 17:29:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (427,NULL,22,'Subject for Print/Merge Document','2023-09-07 12:12:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (428,NULL,56,'Subject for Interview','2023-08-16 11:14:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (429,NULL,56,'Subject for Interview','2022-11-25 05:37:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (430,NULL,22,'Subject for Print/Merge Document','2023-07-18 06:57:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (431,NULL,1,'Subject for Meeting','2023-04-14 21:49:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (432,NULL,22,'Subject for Print/Merge Document','2023-06-17 16:53:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (433,NULL,22,'Subject for Print/Merge Document','2023-03-21 06:42:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (434,NULL,9,'Subject for Tell a Friend','2023-05-28 22:47:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (435,NULL,9,'Subject for Tell a Friend','2023-06-13 07:17:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (436,NULL,9,'Subject for Tell a Friend','2023-05-23 22:34:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (437,NULL,9,'Subject for Tell a Friend','2023-05-08 03:13:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (438,NULL,9,'Subject for Tell a Friend','2023-07-04 00:37:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (439,NULL,1,'Subject for Meeting','2023-01-31 02:41:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (440,NULL,56,'Subject for Interview','2023-05-31 14:56:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (441,NULL,56,'Subject for Interview','2022-12-18 02:21:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (442,NULL,9,'Subject for Tell a Friend','2023-04-30 04:59:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (443,NULL,9,'Subject for Tell a Friend','2023-08-20 03:46:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (444,NULL,22,'Subject for Print/Merge Document','2023-03-09 13:26:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (445,NULL,22,'Subject for Print/Merge Document','2023-06-30 04:29:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (446,NULL,22,'Subject for Print/Merge Document','2023-05-05 11:16:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (447,NULL,1,'Subject for Meeting','2023-04-10 22:39:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (448,NULL,22,'Subject for Print/Merge Document','2022-10-23 23:52:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (449,NULL,9,'Subject for Tell a Friend','2023-07-12 15:21:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (450,NULL,1,'Subject for Meeting','2023-01-26 20:43:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (451,1,6,'$ 125 April Mailer 1','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (452,2,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (453,3,6,'£ 25 April Mailer 1','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (454,4,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (455,5,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (456,6,6,'$ 500 April Mailer 1','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (458,8,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (461,11,6,'Â¥ 500 ','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (462,12,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (463,13,6,'$ 50 ','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (464,14,6,'$ 50 ','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (465,15,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (466,16,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (467,17,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (468,18,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (469,19,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (470,20,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (471,21,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (472,22,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (473,23,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (474,24,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (475,25,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (476,26,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (477,27,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (478,28,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (479,29,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (480,30,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (481,31,6,'€ 5 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (482,1,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (483,2,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (484,3,7,'General','2023-10-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (485,4,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (486,5,7,'Student','2022-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (487,6,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (488,7,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (489,8,7,'Student','2023-09-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (490,9,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (491,10,7,'General','2021-07-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (492,11,7,'Lifetime','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (493,12,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (494,13,7,'General','2023-09-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (495,14,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (496,15,7,'General','2021-06-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (497,16,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (498,17,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (499,18,7,'Student','2023-09-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (500,19,7,'General','2023-09-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (501,20,7,'General','2021-05-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (502,21,7,'General','2023-09-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (503,22,7,'Lifetime','2023-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (504,23,7,'General','2023-09-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (505,24,7,'Student','2023-09-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (506,25,7,'General','2021-03-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (507,26,7,'Student','2023-09-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (508,27,7,'General','2023-09-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (509,28,7,'Student','2023-09-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (510,29,7,'General','2023-09-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (511,30,7,'Student','2022-09-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (516,36,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (531,51,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (536,56,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (541,61,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (602,72,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (605,75,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (606,76,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (614,84,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (620,90,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (621,91,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (625,95,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (627,97,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (628,98,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (640,110,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (641,111,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'); + (1,NULL,56,'Subject for Interview','2023-01-28 07:18:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (2,NULL,2,'Subject for Phone Call','2022-11-20 11:02:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (3,NULL,56,'Subject for Interview','2023-08-12 12:22:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (4,NULL,9,'Subject for Tell a Friend','2023-04-08 21:35:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (5,NULL,56,'Subject for Interview','2023-02-10 15:32:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (6,NULL,22,'Subject for Print/Merge Document','2023-08-18 18:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (7,NULL,2,'Subject for Phone Call','2023-07-04 18:36:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (8,NULL,1,'Subject for Meeting','2023-01-10 01:20:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (9,NULL,56,'Subject for Interview','2023-07-13 16:12:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (10,NULL,9,'Subject for Tell a Friend','2023-01-03 03:32:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (11,NULL,56,'Subject for Interview','2023-09-24 11:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (12,NULL,22,'Subject for Print/Merge Document','2023-04-05 10:50:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (13,NULL,2,'Subject for Phone Call','2023-01-11 06:46:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (14,NULL,2,'Subject for Phone Call','2023-04-24 05:54:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (15,NULL,9,'Subject for Tell a Friend','2023-01-27 11:35:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (16,NULL,22,'Subject for Print/Merge Document','2023-05-11 06:04:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (17,NULL,56,'Subject for Interview','2023-01-07 04:56:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (18,NULL,9,'Subject for Tell a Friend','2023-07-25 18:23:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (19,NULL,22,'Subject for Print/Merge Document','2023-08-11 13:34:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (20,NULL,56,'Subject for Interview','2023-07-18 06:51:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (21,NULL,9,'Subject for Tell a Friend','2023-05-13 21:41:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (22,NULL,2,'Subject for Phone Call','2023-02-01 08:50:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (23,NULL,22,'Subject for Print/Merge Document','2022-11-10 01:22:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (24,NULL,2,'Subject for Phone Call','2022-12-25 06:38:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (25,NULL,22,'Subject for Print/Merge Document','2022-11-17 02:00:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (26,NULL,1,'Subject for Meeting','2023-04-18 02:08:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (27,NULL,1,'Subject for Meeting','2022-12-24 01:00:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (28,NULL,56,'Subject for Interview','2022-10-25 16:52:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (29,NULL,1,'Subject for Meeting','2023-03-28 07:38:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (30,NULL,1,'Subject for Meeting','2023-02-02 08:32:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (31,NULL,22,'Subject for Print/Merge Document','2023-04-10 19:32:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (32,NULL,2,'Subject for Phone Call','2023-06-04 02:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (33,NULL,56,'Subject for Interview','2023-08-05 07:39:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (34,NULL,56,'Subject for Interview','2023-08-15 07:38:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (35,NULL,9,'Subject for Tell a Friend','2022-12-10 19:32:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (36,NULL,1,'Subject for Meeting','2023-04-27 05:55:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (37,NULL,56,'Subject for Interview','2023-05-20 09:05:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (38,NULL,56,'Subject for Interview','2023-08-18 15:55:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (39,NULL,1,'Subject for Meeting','2023-07-11 19:34:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (40,NULL,56,'Subject for Interview','2023-06-02 18:40:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (41,NULL,1,'Subject for Meeting','2023-04-13 14:53:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (42,NULL,56,'Subject for Interview','2023-03-28 17:34:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (43,NULL,1,'Subject for Meeting','2023-04-05 05:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (44,NULL,9,'Subject for Tell a Friend','2023-07-06 13:57:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (45,NULL,9,'Subject for Tell a Friend','2023-01-31 09:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (46,NULL,9,'Subject for Tell a Friend','2023-04-25 16:17:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (47,NULL,9,'Subject for Tell a Friend','2023-05-30 05:53:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (48,NULL,56,'Subject for Interview','2023-10-10 17:41:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (49,NULL,9,'Subject for Tell a Friend','2023-07-17 21:39:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (50,NULL,56,'Subject for Interview','2022-11-25 16:55:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (51,NULL,2,'Subject for Phone Call','2023-03-11 04:03:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (52,NULL,2,'Subject for Phone Call','2023-04-05 07:44:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (53,NULL,56,'Subject for Interview','2022-11-18 19:31:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (54,NULL,2,'Subject for Phone Call','2023-09-24 16:24:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (55,NULL,56,'Subject for Interview','2023-03-19 13:52:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (56,NULL,2,'Subject for Phone Call','2023-08-05 08:56:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (57,NULL,1,'Subject for Meeting','2022-11-24 17:31:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (58,NULL,1,'Subject for Meeting','2023-06-19 05:08:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (59,NULL,9,'Subject for Tell a Friend','2023-04-30 14:26:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (60,NULL,9,'Subject for Tell a Friend','2023-01-06 06:12:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (61,NULL,22,'Subject for Print/Merge Document','2023-07-06 00:30:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (62,NULL,22,'Subject for Print/Merge Document','2023-04-15 07:38:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (63,NULL,1,'Subject for Meeting','2023-10-05 10:45:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (64,NULL,56,'Subject for Interview','2022-12-05 10:31:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (65,NULL,22,'Subject for Print/Merge Document','2023-07-24 15:11:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (66,NULL,9,'Subject for Tell a Friend','2023-03-18 19:51:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (67,NULL,56,'Subject for Interview','2022-11-02 04:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (68,NULL,1,'Subject for Meeting','2023-03-30 17:13:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (69,NULL,9,'Subject for Tell a Friend','2022-10-29 01:38:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (70,NULL,9,'Subject for Tell a Friend','2023-06-16 20:18:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (71,NULL,56,'Subject for Interview','2023-07-07 21:11:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (72,NULL,2,'Subject for Phone Call','2023-07-20 12:28:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (73,NULL,1,'Subject for Meeting','2022-11-20 11:28:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (74,NULL,1,'Subject for Meeting','2023-08-22 10:20:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (75,NULL,56,'Subject for Interview','2023-05-30 15:20:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (76,NULL,9,'Subject for Tell a Friend','2023-01-20 20:14:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (77,NULL,22,'Subject for Print/Merge Document','2023-02-22 22:30:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (78,NULL,2,'Subject for Phone Call','2023-04-27 15:51:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (79,NULL,22,'Subject for Print/Merge Document','2023-04-12 11:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (80,NULL,2,'Subject for Phone Call','2023-01-13 18:53:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (81,NULL,9,'Subject for Tell a Friend','2022-12-06 12:21:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (82,NULL,2,'Subject for Phone Call','2023-07-11 09:11:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (83,NULL,1,'Subject for Meeting','2023-01-10 18:04:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (84,NULL,9,'Subject for Tell a Friend','2023-02-23 03:27:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (85,NULL,1,'Subject for Meeting','2022-10-20 07:12:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (86,NULL,22,'Subject for Print/Merge Document','2023-09-20 09:49:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (87,NULL,9,'Subject for Tell a Friend','2023-07-02 01:53:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (88,NULL,1,'Subject for Meeting','2023-02-23 15:55:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (89,NULL,9,'Subject for Tell a Friend','2023-09-30 05:08:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (90,NULL,2,'Subject for Phone Call','2023-06-21 10:13:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (91,NULL,9,'Subject for Tell a Friend','2023-06-07 10:29:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (92,NULL,56,'Subject for Interview','2023-04-13 12:15:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (93,NULL,2,'Subject for Phone Call','2023-08-06 10:00:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (94,NULL,1,'Subject for Meeting','2023-09-02 20:56:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (95,NULL,22,'Subject for Print/Merge Document','2023-09-22 17:25:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (96,NULL,22,'Subject for Print/Merge Document','2023-06-20 22:56:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (97,NULL,9,'Subject for Tell a Friend','2023-04-07 04:20:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (98,NULL,9,'Subject for Tell a Friend','2022-12-28 20:40:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (99,NULL,22,'Subject for Print/Merge Document','2023-05-22 12:18:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (100,NULL,9,'Subject for Tell a Friend','2023-04-22 12:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (101,NULL,9,'Subject for Tell a Friend','2023-07-30 02:38:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (102,NULL,1,'Subject for Meeting','2023-02-05 15:02:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (103,NULL,2,'Subject for Phone Call','2023-10-05 19:01:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (104,NULL,22,'Subject for Print/Merge Document','2022-12-15 14:17:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (105,NULL,56,'Subject for Interview','2023-08-06 05:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (106,NULL,1,'Subject for Meeting','2023-06-28 12:13:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (107,NULL,9,'Subject for Tell a Friend','2023-06-18 05:01:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (108,NULL,2,'Subject for Phone Call','2023-01-17 20:31:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (109,NULL,2,'Subject for Phone Call','2023-02-22 07:30:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (110,NULL,1,'Subject for Meeting','2023-01-12 22:14:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (111,NULL,2,'Subject for Phone Call','2022-10-27 21:05:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (112,NULL,9,'Subject for Tell a Friend','2022-11-24 01:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (113,NULL,22,'Subject for Print/Merge Document','2023-08-23 04:50:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (114,NULL,22,'Subject for Print/Merge Document','2023-06-10 11:07:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (115,NULL,1,'Subject for Meeting','2022-12-29 18:56:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (116,NULL,56,'Subject for Interview','2023-07-09 19:12:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (117,NULL,2,'Subject for Phone Call','2023-03-31 20:50:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (118,NULL,22,'Subject for Print/Merge Document','2023-06-11 15:03:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (119,NULL,2,'Subject for Phone Call','2023-09-15 06:13:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (120,NULL,56,'Subject for Interview','2022-11-22 03:03:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (121,NULL,9,'Subject for Tell a Friend','2023-04-12 15:52:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (122,NULL,9,'Subject for Tell a Friend','2023-09-15 22:56:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (123,NULL,1,'Subject for Meeting','2022-11-13 13:46:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (124,NULL,9,'Subject for Tell a Friend','2022-11-28 15:24:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (125,NULL,22,'Subject for Print/Merge Document','2022-10-29 13:57:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (126,NULL,1,'Subject for Meeting','2023-01-18 09:48:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (127,NULL,9,'Subject for Tell a Friend','2023-08-10 19:20:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (128,NULL,22,'Subject for Print/Merge Document','2023-01-17 11:26:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (129,NULL,56,'Subject for Interview','2023-06-23 12:17:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (130,NULL,2,'Subject for Phone Call','2022-12-02 03:08:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (131,NULL,2,'Subject for Phone Call','2022-12-29 13:20:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (132,NULL,9,'Subject for Tell a Friend','2023-08-02 20:11:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (133,NULL,1,'Subject for Meeting','2023-03-22 16:57:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (134,NULL,9,'Subject for Tell a Friend','2023-04-17 15:37:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (135,NULL,1,'Subject for Meeting','2023-03-08 17:15:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (136,NULL,22,'Subject for Print/Merge Document','2023-10-11 21:48:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (137,NULL,1,'Subject for Meeting','2022-11-17 22:03:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (138,NULL,1,'Subject for Meeting','2022-11-04 12:09:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (139,NULL,9,'Subject for Tell a Friend','2023-09-14 02:11:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (140,NULL,9,'Subject for Tell a Friend','2023-06-28 15:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (141,NULL,9,'Subject for Tell a Friend','2023-04-16 14:15:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (142,NULL,2,'Subject for Phone Call','2023-01-16 19:23:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (143,NULL,2,'Subject for Phone Call','2023-04-28 06:08:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (144,NULL,22,'Subject for Print/Merge Document','2023-04-13 21:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (145,NULL,22,'Subject for Print/Merge Document','2023-02-03 15:37:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (146,NULL,56,'Subject for Interview','2023-10-13 19:47:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (147,NULL,2,'Subject for Phone Call','2022-10-31 05:23:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (148,NULL,1,'Subject for Meeting','2022-12-25 10:29:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (149,NULL,9,'Subject for Tell a Friend','2023-05-05 12:11:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (150,NULL,56,'Subject for Interview','2023-02-05 16:40:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (151,NULL,22,'Subject for Print/Merge Document','2023-04-30 21:22:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (152,NULL,9,'Subject for Tell a Friend','2022-11-27 00:25:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (153,NULL,9,'Subject for Tell a Friend','2023-03-15 12:18:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (154,NULL,56,'Subject for Interview','2023-08-09 21:15:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (155,NULL,56,'Subject for Interview','2023-06-11 02:19:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (156,NULL,1,'Subject for Meeting','2023-08-12 20:43:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (157,NULL,9,'Subject for Tell a Friend','2023-04-18 10:13:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (158,NULL,22,'Subject for Print/Merge Document','2023-10-11 14:43:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (159,NULL,22,'Subject for Print/Merge Document','2022-12-18 18:44:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (160,NULL,56,'Subject for Interview','2023-01-29 07:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (161,NULL,1,'Subject for Meeting','2023-03-28 17:25:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (162,NULL,56,'Subject for Interview','2023-06-06 05:10:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (163,NULL,56,'Subject for Interview','2023-05-31 15:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (164,NULL,1,'Subject for Meeting','2023-09-09 23:05:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (165,NULL,2,'Subject for Phone Call','2023-01-18 21:13:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (166,NULL,9,'Subject for Tell a Friend','2022-11-07 03:35:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (167,NULL,1,'Subject for Meeting','2023-09-27 21:37:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (168,NULL,22,'Subject for Print/Merge Document','2023-03-20 19:33:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (169,NULL,1,'Subject for Meeting','2023-05-22 07:09:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (170,NULL,1,'Subject for Meeting','2023-01-31 20:37:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (171,NULL,56,'Subject for Interview','2023-03-27 22:15:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (172,NULL,56,'Subject for Interview','2023-09-10 00:35:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (173,NULL,2,'Subject for Phone Call','2023-01-18 10:22:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (174,NULL,2,'Subject for Phone Call','2023-09-30 10:05:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (175,NULL,22,'Subject for Print/Merge Document','2023-08-04 09:39:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (176,NULL,2,'Subject for Phone Call','2023-10-04 22:34:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (177,NULL,9,'Subject for Tell a Friend','2023-01-18 01:38:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (178,NULL,1,'Subject for Meeting','2023-01-13 03:05:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (179,NULL,1,'Subject for Meeting','2023-02-27 08:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (180,NULL,22,'Subject for Print/Merge Document','2023-03-22 06:23:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (181,NULL,22,'Subject for Print/Merge Document','2023-05-28 17:07:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (182,NULL,9,'Subject for Tell a Friend','2023-06-29 04:23:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (183,NULL,9,'Subject for Tell a Friend','2023-03-10 17:42:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (184,NULL,1,'Subject for Meeting','2023-07-21 14:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (185,NULL,2,'Subject for Phone Call','2023-08-25 09:42:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (186,NULL,22,'Subject for Print/Merge Document','2023-06-09 21:22:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (187,NULL,2,'Subject for Phone Call','2023-02-17 05:11:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (188,NULL,22,'Subject for Print/Merge Document','2023-01-20 14:56:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (189,NULL,2,'Subject for Phone Call','2023-02-18 04:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (190,NULL,56,'Subject for Interview','2023-09-15 04:51:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (191,NULL,56,'Subject for Interview','2023-05-18 10:15:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (192,NULL,2,'Subject for Phone Call','2023-08-24 14:18:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (193,NULL,56,'Subject for Interview','2023-07-24 17:06:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (194,NULL,22,'Subject for Print/Merge Document','2023-01-11 22:31:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (195,NULL,1,'Subject for Meeting','2023-07-20 21:50:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (196,NULL,2,'Subject for Phone Call','2022-12-23 09:49:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (197,NULL,1,'Subject for Meeting','2023-04-03 03:48:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (198,NULL,22,'Subject for Print/Merge Document','2023-10-05 00:47:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (199,NULL,2,'Subject for Phone Call','2022-12-21 22:57:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (200,NULL,1,'Subject for Meeting','2023-03-18 18:10:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (201,NULL,22,'Subject for Print/Merge Document','2022-11-03 12:41:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (202,NULL,1,'Subject for Meeting','2023-04-12 11:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (203,NULL,9,'Subject for Tell a Friend','2022-12-11 19:13:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (204,NULL,2,'Subject for Phone Call','2023-08-30 16:45:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (205,NULL,1,'Subject for Meeting','2022-12-09 17:17:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (206,NULL,56,'Subject for Interview','2023-04-19 10:23:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (207,NULL,1,'Subject for Meeting','2023-10-11 04:54:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (208,NULL,2,'Subject for Phone Call','2023-03-21 08:37:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (209,NULL,22,'Subject for Print/Merge Document','2023-10-19 11:38:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (210,NULL,9,'Subject for Tell a Friend','2023-09-04 13:22:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (211,NULL,56,'Subject for Interview','2022-11-27 20:44:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (212,NULL,9,'Subject for Tell a Friend','2023-07-18 23:16:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (213,NULL,9,'Subject for Tell a Friend','2023-03-09 01:27:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (214,NULL,22,'Subject for Print/Merge Document','2023-07-14 10:44:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (215,NULL,56,'Subject for Interview','2023-02-14 13:52:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (216,NULL,2,'Subject for Phone Call','2023-05-14 01:19:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (217,NULL,9,'Subject for Tell a Friend','2023-08-20 00:24:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (218,NULL,2,'Subject for Phone Call','2023-10-08 12:40:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (219,NULL,22,'Subject for Print/Merge Document','2023-09-27 08:07:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (220,NULL,22,'Subject for Print/Merge Document','2023-06-15 22:18:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (221,NULL,2,'Subject for Phone Call','2023-07-26 10:30:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (222,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:47:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (223,NULL,56,'Subject for Interview','2023-06-06 11:19:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (224,NULL,2,'Subject for Phone Call','2023-09-28 21:58:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (225,NULL,2,'Subject for Phone Call','2023-05-01 14:42:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (226,NULL,2,'Subject for Phone Call','2023-04-27 15:47:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (227,NULL,2,'Subject for Phone Call','2023-07-15 16:21:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (228,NULL,22,'Subject for Print/Merge Document','2022-12-18 21:57:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (229,NULL,2,'Subject for Phone Call','2023-03-30 16:21:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (230,NULL,56,'Subject for Interview','2023-05-17 20:25:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (231,NULL,2,'Subject for Phone Call','2023-07-01 09:12:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (232,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:23:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (233,NULL,2,'Subject for Phone Call','2023-03-13 01:16:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (234,NULL,2,'Subject for Phone Call','2023-03-14 01:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (235,NULL,22,'Subject for Print/Merge Document','2022-11-23 06:12:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (236,NULL,22,'Subject for Print/Merge Document','2022-12-07 23:01:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (237,NULL,2,'Subject for Phone Call','2023-01-15 06:14:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (238,NULL,56,'Subject for Interview','2023-01-16 08:23:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (239,NULL,9,'Subject for Tell a Friend','2022-12-07 10:43:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (240,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:39:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (241,NULL,2,'Subject for Phone Call','2023-10-10 02:46:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (242,NULL,2,'Subject for Phone Call','2023-05-18 21:32:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (243,NULL,56,'Subject for Interview','2023-10-13 02:52:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (244,NULL,9,'Subject for Tell a Friend','2023-06-27 21:02:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (245,NULL,22,'Subject for Print/Merge Document','2023-04-12 21:44:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (246,NULL,9,'Subject for Tell a Friend','2023-10-14 10:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (247,NULL,1,'Subject for Meeting','2023-04-03 17:03:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (248,NULL,56,'Subject for Interview','2023-01-22 22:01:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (249,NULL,1,'Subject for Meeting','2023-04-26 08:05:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (250,NULL,56,'Subject for Interview','2023-08-11 04:25:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (251,NULL,1,'Subject for Meeting','2022-12-30 21:51:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (252,NULL,1,'Subject for Meeting','2023-01-25 10:14:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (253,NULL,2,'Subject for Phone Call','2022-11-01 18:09:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (254,NULL,56,'Subject for Interview','2023-06-12 16:29:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (255,NULL,22,'Subject for Print/Merge Document','2023-02-28 03:19:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (256,NULL,2,'Subject for Phone Call','2022-10-21 00:42:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (257,NULL,56,'Subject for Interview','2023-07-14 18:30:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (258,NULL,1,'Subject for Meeting','2022-10-25 15:02:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (259,NULL,2,'Subject for Phone Call','2023-02-26 01:39:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (260,NULL,22,'Subject for Print/Merge Document','2023-09-17 11:38:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (261,NULL,56,'Subject for Interview','2023-04-16 00:07:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (262,NULL,9,'Subject for Tell a Friend','2023-08-28 14:11:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (263,NULL,2,'Subject for Phone Call','2022-12-27 01:04:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (264,NULL,1,'Subject for Meeting','2023-02-27 01:06:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (265,NULL,22,'Subject for Print/Merge Document','2023-09-12 12:49:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (266,NULL,1,'Subject for Meeting','2023-08-30 05:46:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (267,NULL,1,'Subject for Meeting','2023-01-01 15:56:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (268,NULL,56,'Subject for Interview','2023-06-08 03:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (269,NULL,22,'Subject for Print/Merge Document','2023-01-31 08:43:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (270,NULL,2,'Subject for Phone Call','2023-08-19 09:42:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (271,NULL,1,'Subject for Meeting','2023-04-12 17:16:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (272,NULL,1,'Subject for Meeting','2023-03-17 07:33:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (273,NULL,22,'Subject for Print/Merge Document','2023-08-05 04:42:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (274,NULL,2,'Subject for Phone Call','2023-02-05 15:55:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (275,NULL,56,'Subject for Interview','2023-06-27 05:26:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (276,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:00:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (277,NULL,56,'Subject for Interview','2022-12-22 19:24:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (278,NULL,9,'Subject for Tell a Friend','2023-02-25 12:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (279,NULL,56,'Subject for Interview','2023-03-01 22:20:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (280,NULL,56,'Subject for Interview','2023-03-23 11:08:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (281,NULL,22,'Subject for Print/Merge Document','2023-03-19 15:41:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (282,NULL,2,'Subject for Phone Call','2023-06-02 15:40:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (283,NULL,56,'Subject for Interview','2023-09-06 16:30:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (284,NULL,22,'Subject for Print/Merge Document','2023-10-10 16:32:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (285,NULL,9,'Subject for Tell a Friend','2023-02-28 19:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (286,NULL,22,'Subject for Print/Merge Document','2022-12-26 02:09:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (287,NULL,22,'Subject for Print/Merge Document','2023-07-13 21:30:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (288,NULL,9,'Subject for Tell a Friend','2023-07-16 01:07:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (289,NULL,1,'Subject for Meeting','2023-08-13 21:27:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (290,NULL,22,'Subject for Print/Merge Document','2023-03-02 19:56:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (291,NULL,2,'Subject for Phone Call','2023-01-01 14:09:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (292,NULL,22,'Subject for Print/Merge Document','2023-10-16 22:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (293,NULL,9,'Subject for Tell a Friend','2023-05-05 13:31:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (294,NULL,2,'Subject for Phone Call','2023-10-03 22:00:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (295,NULL,9,'Subject for Tell a Friend','2023-01-11 13:50:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (296,NULL,56,'Subject for Interview','2023-01-16 19:28:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (297,NULL,22,'Subject for Print/Merge Document','2023-06-15 12:50:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (298,NULL,2,'Subject for Phone Call','2023-04-29 20:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (299,NULL,2,'Subject for Phone Call','2023-10-15 18:59:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (300,NULL,56,'Subject for Interview','2023-10-13 22:52:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (301,NULL,9,'Subject for Tell a Friend','2023-09-27 00:31:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (302,NULL,9,'Subject for Tell a Friend','2023-07-15 16:34:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (303,NULL,1,'Subject for Meeting','2023-04-28 02:22:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (304,NULL,1,'Subject for Meeting','2023-10-03 04:09:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (305,NULL,22,'Subject for Print/Merge Document','2023-09-21 21:04:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (306,NULL,2,'Subject for Phone Call','2023-06-28 08:32:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (307,NULL,2,'Subject for Phone Call','2023-08-14 03:30:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (308,NULL,1,'Subject for Meeting','2023-08-24 07:35:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (309,NULL,1,'Subject for Meeting','2023-03-31 17:30:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (310,NULL,9,'Subject for Tell a Friend','2023-03-18 03:05:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (311,NULL,56,'Subject for Interview','2023-09-14 11:25:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (312,NULL,1,'Subject for Meeting','2022-12-03 09:06:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (313,NULL,2,'Subject for Phone Call','2022-11-10 18:33:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (314,NULL,1,'Subject for Meeting','2023-06-24 17:25:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (315,NULL,9,'Subject for Tell a Friend','2023-04-16 13:23:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (316,NULL,1,'Subject for Meeting','2023-01-08 21:38:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (317,NULL,22,'Subject for Print/Merge Document','2023-09-15 04:05:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (318,NULL,22,'Subject for Print/Merge Document','2022-11-05 22:37:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (319,NULL,56,'Subject for Interview','2023-02-18 23:04:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (320,NULL,2,'Subject for Phone Call','2023-04-13 05:04:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (321,NULL,1,'Subject for Meeting','2022-12-23 14:36:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (322,NULL,2,'Subject for Phone Call','2023-03-27 13:06:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (323,NULL,22,'Subject for Print/Merge Document','2023-10-13 13:41:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (324,NULL,1,'Subject for Meeting','2022-12-18 06:44:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (325,NULL,9,'Subject for Tell a Friend','2023-09-27 09:17:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (326,NULL,2,'Subject for Phone Call','2022-11-25 00:12:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (327,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (328,NULL,22,'Subject for Print/Merge Document','2023-03-04 08:35:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (329,NULL,2,'Subject for Phone Call','2023-07-17 20:37:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (330,NULL,2,'Subject for Phone Call','2023-05-18 15:25:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (331,NULL,1,'Subject for Meeting','2023-08-28 20:59:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (332,NULL,56,'Subject for Interview','2023-02-02 10:27:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (333,NULL,2,'Subject for Phone Call','2023-05-08 12:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (334,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:57:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (335,NULL,9,'Subject for Tell a Friend','2023-04-22 00:38:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (336,NULL,22,'Subject for Print/Merge Document','2023-09-18 03:30:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (337,NULL,1,'Subject for Meeting','2023-05-27 13:34:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (338,NULL,1,'Subject for Meeting','2023-10-07 12:37:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (339,NULL,56,'Subject for Interview','2023-08-19 11:51:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (340,NULL,22,'Subject for Print/Merge Document','2022-12-07 15:32:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (341,NULL,56,'Subject for Interview','2022-12-26 16:49:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (342,NULL,1,'Subject for Meeting','2023-10-17 16:01:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (343,NULL,1,'Subject for Meeting','2023-03-08 02:19:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (344,NULL,1,'Subject for Meeting','2022-12-03 10:41:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (345,NULL,56,'Subject for Interview','2023-07-17 02:33:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (346,NULL,9,'Subject for Tell a Friend','2023-08-09 00:03:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (347,NULL,22,'Subject for Print/Merge Document','2022-12-23 20:14:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (348,NULL,2,'Subject for Phone Call','2022-11-26 17:02:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (349,NULL,1,'Subject for Meeting','2023-01-06 13:45:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (350,NULL,9,'Subject for Tell a Friend','2023-01-07 04:38:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (351,NULL,9,'Subject for Tell a Friend','2022-11-17 20:19:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (352,NULL,1,'Subject for Meeting','2023-06-13 01:46:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (353,NULL,9,'Subject for Tell a Friend','2023-07-15 01:01:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (354,NULL,22,'Subject for Print/Merge Document','2022-11-26 12:28:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (355,NULL,56,'Subject for Interview','2023-09-24 01:51:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (356,NULL,56,'Subject for Interview','2023-03-09 21:25:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (357,NULL,56,'Subject for Interview','2023-08-31 17:13:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (358,NULL,9,'Subject for Tell a Friend','2023-01-25 06:43:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (359,NULL,9,'Subject for Tell a Friend','2023-07-09 15:00:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (360,NULL,2,'Subject for Phone Call','2023-03-24 13:07:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (361,NULL,2,'Subject for Phone Call','2023-01-06 00:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (362,NULL,22,'Subject for Print/Merge Document','2023-02-28 14:22:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (363,NULL,1,'Subject for Meeting','2023-07-16 22:37:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (364,NULL,2,'Subject for Phone Call','2023-02-27 03:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (365,NULL,9,'Subject for Tell a Friend','2023-03-09 07:05:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (366,NULL,9,'Subject for Tell a Friend','2022-11-25 06:45:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (367,NULL,56,'Subject for Interview','2022-10-23 21:44:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (368,NULL,56,'Subject for Interview','2023-02-15 20:58:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (369,NULL,2,'Subject for Phone Call','2023-07-05 12:36:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (370,NULL,56,'Subject for Interview','2023-01-30 04:14:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (371,NULL,56,'Subject for Interview','2023-02-04 00:39:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (372,NULL,2,'Subject for Phone Call','2023-01-22 17:08:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (373,NULL,56,'Subject for Interview','2023-09-08 17:44:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (374,NULL,2,'Subject for Phone Call','2023-06-08 10:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (375,NULL,9,'Subject for Tell a Friend','2023-05-22 12:06:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (376,NULL,1,'Subject for Meeting','2023-06-26 15:56:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (377,NULL,56,'Subject for Interview','2023-04-09 02:38:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (378,NULL,1,'Subject for Meeting','2023-06-13 08:39:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (379,NULL,9,'Subject for Tell a Friend','2023-10-04 01:52:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (380,NULL,2,'Subject for Phone Call','2023-04-22 17:07:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (381,NULL,1,'Subject for Meeting','2023-04-11 06:02:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (382,NULL,9,'Subject for Tell a Friend','2023-08-31 12:23:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (383,NULL,1,'Subject for Meeting','2023-05-13 06:14:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (384,NULL,56,'Subject for Interview','2022-11-18 20:29:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (385,NULL,1,'Subject for Meeting','2022-11-25 17:43:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (386,NULL,56,'Subject for Interview','2023-03-11 23:21:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (387,NULL,22,'Subject for Print/Merge Document','2023-08-14 20:54:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (388,NULL,9,'Subject for Tell a Friend','2023-04-29 19:20:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (389,NULL,56,'Subject for Interview','2022-11-08 09:06:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (390,NULL,56,'Subject for Interview','2022-11-06 00:01:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (391,NULL,1,'Subject for Meeting','2023-06-22 20:01:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (392,NULL,2,'Subject for Phone Call','2022-11-11 00:49:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (393,NULL,56,'Subject for Interview','2023-01-13 17:40:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (394,NULL,9,'Subject for Tell a Friend','2022-10-24 14:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (395,NULL,56,'Subject for Interview','2023-04-13 12:59:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (396,NULL,9,'Subject for Tell a Friend','2022-11-08 09:12:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (397,NULL,9,'Subject for Tell a Friend','2023-09-11 05:18:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (398,NULL,2,'Subject for Phone Call','2023-01-01 21:32:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (399,NULL,1,'Subject for Meeting','2023-08-14 15:06:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (400,NULL,1,'Subject for Meeting','2023-08-27 23:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (401,NULL,22,'Subject for Print/Merge Document','2023-08-01 13:19:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (402,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:21:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (403,NULL,2,'Subject for Phone Call','2023-10-06 13:00:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (404,NULL,9,'Subject for Tell a Friend','2023-09-26 09:13:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (405,NULL,2,'Subject for Phone Call','2022-11-15 13:35:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (406,NULL,56,'Subject for Interview','2023-08-25 03:26:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (407,NULL,2,'Subject for Phone Call','2022-12-08 23:34:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (408,NULL,2,'Subject for Phone Call','2023-05-06 20:50:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (409,NULL,2,'Subject for Phone Call','2023-09-24 15:02:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (410,NULL,56,'Subject for Interview','2023-04-21 22:45:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (411,NULL,2,'Subject for Phone Call','2022-11-01 08:39:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (412,NULL,2,'Subject for Phone Call','2022-12-07 11:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (413,NULL,2,'Subject for Phone Call','2023-04-15 21:27:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (414,NULL,9,'Subject for Tell a Friend','2023-07-27 13:46:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (415,NULL,9,'Subject for Tell a Friend','2022-12-12 21:57:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (416,NULL,1,'Subject for Meeting','2023-03-20 22:51:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (417,NULL,2,'Subject for Phone Call','2023-01-05 11:13:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (418,NULL,1,'Subject for Meeting','2023-02-26 07:15:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (419,NULL,9,'Subject for Tell a Friend','2023-09-06 21:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (420,NULL,56,'Subject for Interview','2023-08-04 14:49:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (421,NULL,22,'Subject for Print/Merge Document','2022-12-18 22:31:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (422,NULL,9,'Subject for Tell a Friend','2023-05-05 15:54:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (423,NULL,22,'Subject for Print/Merge Document','2023-10-06 16:01:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (424,NULL,22,'Subject for Print/Merge Document','2023-09-17 17:41:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (425,NULL,1,'Subject for Meeting','2023-07-27 15:31:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (426,NULL,2,'Subject for Phone Call','2022-12-29 04:01:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (427,NULL,2,'Subject for Phone Call','2023-03-18 03:08:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (428,NULL,1,'Subject for Meeting','2023-01-07 19:33:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (429,NULL,9,'Subject for Tell a Friend','2023-02-09 06:51:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (430,NULL,1,'Subject for Meeting','2023-03-21 08:02:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (431,NULL,9,'Subject for Tell a Friend','2023-08-26 02:15:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (432,NULL,22,'Subject for Print/Merge Document','2023-01-24 03:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (433,NULL,56,'Subject for Interview','2023-06-28 04:52:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (434,NULL,22,'Subject for Print/Merge Document','2023-07-01 19:22:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (435,NULL,1,'Subject for Meeting','2022-12-22 01:36:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (436,NULL,56,'Subject for Interview','2023-09-05 08:47:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (437,NULL,22,'Subject for Print/Merge Document','2023-04-26 21:27:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (438,NULL,9,'Subject for Tell a Friend','2023-04-27 17:26:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (439,NULL,22,'Subject for Print/Merge Document','2022-12-15 06:05:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (440,NULL,1,'Subject for Meeting','2023-08-09 02:06:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (441,NULL,2,'Subject for Phone Call','2023-08-29 10:06:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (442,NULL,1,'Subject for Meeting','2023-09-28 05:02:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (443,NULL,9,'Subject for Tell a Friend','2023-02-04 21:14:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (444,NULL,56,'Subject for Interview','2023-09-05 14:01:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (445,NULL,1,'Subject for Meeting','2023-09-19 00:06:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (446,NULL,1,'Subject for Meeting','2023-01-14 07:13:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (447,NULL,2,'Subject for Phone Call','2022-12-15 22:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (448,NULL,9,'Subject for Tell a Friend','2023-06-25 08:38:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (449,NULL,56,'Subject for Interview','2023-05-30 00:30:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (450,NULL,22,'Subject for Print/Merge Document','2023-02-23 12:29:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (451,1,6,'$ 125 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (452,2,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (453,3,6,'£ 25 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (454,4,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (455,5,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (456,6,6,'$ 500 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (458,8,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (461,11,6,'Â¥ 500 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (462,12,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (463,13,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (464,14,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (465,15,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (466,16,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (467,17,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (468,18,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (469,19,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (470,20,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (471,21,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (472,22,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (473,23,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (474,24,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (475,25,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (476,26,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (477,27,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (478,28,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (479,29,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (480,30,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (481,31,6,'€ 5 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (482,1,7,'General','2023-10-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (483,2,7,'Student','2023-10-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (484,3,7,'General','2023-10-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (485,4,7,'Student','2023-10-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (486,5,7,'Student','2022-10-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (487,6,7,'Student','2023-10-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (488,7,7,'General','2023-10-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (489,8,7,'Student','2023-10-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (490,9,7,'General','2023-10-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (491,10,7,'Student','2022-10-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (492,11,7,'Lifetime','2023-10-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (493,12,7,'Student','2023-10-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (494,13,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (495,14,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (496,15,7,'General','2021-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (497,16,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (498,17,7,'General','2023-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (499,18,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (500,19,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (501,20,7,'General','2021-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (502,21,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (503,22,7,'Lifetime','2023-09-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (504,23,7,'General','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (505,24,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (506,25,7,'General','2021-04-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (507,26,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (508,27,7,'General','2023-09-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (509,28,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (510,29,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (511,30,7,'General','2021-03-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (513,33,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (515,35,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (517,37,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (519,39,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (522,42,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (523,43,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (525,45,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (528,48,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (530,50,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (532,52,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (533,53,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (534,54,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (538,58,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (540,60,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (541,61,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (626,96,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (627,97,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (631,101,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (635,105,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (637,107,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -732,953 +733,964 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity_contact` WRITE; /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */; INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES - (97,54,1,3), - (241,134,1,3), - (274,152,1,3), - (916,560,1,2), - (128,72,2,3), - (203,113,2,3), - (239,133,2,3), - (445,248,2,3), - (637,355,2,3), - (678,378,2,3), - (729,406,2,3), - (807,451,2,2), - (252,140,3,3), - (294,163,3,3), - (642,358,3,3), - (689,384,3,3), - (757,421,3,3), - (796,443,3,3), - (401,224,4,3), - (582,324,4,3), - (727,405,4,3), - (808,452,4,2), - (811,455,4,2), - (152,85,5,3), - (420,235,5,3), - (640,357,5,3), - (398,222,6,3), - (647,361,6,3), - (746,415,6,3), - (809,453,6,2), - (659,368,7,3), - (936,580,7,2), - (591,329,8,3), - (605,337,8,3), - (759,422,8,3), - (810,454,8,2), - (116,66,9,3), - (332,185,9,3), - (365,203,9,3), - (607,338,9,3), - (630,351,9,3), - (65,37,10,3), - (262,146,10,3), - (373,207,10,3), - (538,300,10,3), - (933,577,10,2), - (552,307,11,3), - (1,1,12,2), - (3,2,12,2), - (5,3,12,2), - (7,4,12,2), - (9,5,12,2), - (11,6,12,2), - (12,7,12,2), - (13,8,12,2), - (15,9,12,2), - (17,10,12,2), - (19,11,12,2), - (20,12,12,2), - (21,13,12,2), - (23,14,12,2), - (25,15,12,2), - (27,16,12,2), - (28,17,12,2), - (30,18,12,2), - (32,19,12,2), - (34,20,12,2), - (35,21,12,2), - (37,22,12,2), - (38,23,12,2), - (40,24,12,2), - (42,25,12,2), - (44,26,12,2), - (46,27,12,2), - (48,28,12,2), - (50,29,12,2), - (52,30,12,2), - (54,31,12,2), - (55,32,12,2), - (57,33,12,2), - (58,34,12,2), - (60,35,12,2), - (62,36,12,2), - (64,37,12,2), - (66,38,12,2), - (68,39,12,2), - (70,40,12,2), - (71,41,12,2), - (73,42,12,2), - (75,43,12,2), - (77,44,12,2), - (79,45,12,2), - (81,46,12,2), - (83,47,12,2), - (85,48,12,2), - (87,49,12,2), - (88,50,12,2), - (90,51,12,2), - (92,52,12,2), - (94,53,12,2), - (96,54,12,2), - (98,55,12,2), - (100,56,12,2), - (101,57,12,2), - (102,58,12,2), - (103,59,12,2), - (105,60,12,2), - (107,61,12,2), - (108,62,12,2), - (109,63,12,2), - (111,64,12,2), - (113,65,12,2), - (115,66,12,2), - (117,67,12,2), - (119,68,12,2), - (121,69,12,2), - (123,70,12,2), - (125,71,12,2), - (127,72,12,2), - (129,73,12,2), - (131,74,12,2), - (133,75,12,2), - (135,76,12,2), - (136,77,12,2), - (137,78,12,2), - (139,79,12,2), - (141,80,12,2), - (143,81,12,2), - (145,82,12,2), - (147,83,12,2), - (149,84,12,2), - (151,85,12,2), - (153,86,12,2), - (155,87,12,2), - (157,88,12,2), - (158,89,12,2), - (159,90,12,2), - (161,91,12,2), - (163,92,12,2), - (165,93,12,2), - (166,94,12,2), - (168,95,12,2), - (170,96,12,2), - (172,97,12,2), - (174,98,12,2), - (175,99,12,2), - (177,100,12,2), - (179,101,12,2), - (181,102,12,2), - (182,103,12,2), - (184,104,12,2), - (186,105,12,2), - (188,106,12,2), - (190,107,12,2), - (192,108,12,2), - (194,109,12,2), - (196,110,12,2), - (198,111,12,2), - (200,112,12,2), - (202,113,12,2), - (204,114,12,2), - (206,115,12,2), - (208,116,12,2), - (210,117,12,2), - (212,118,12,2), - (214,119,12,2), - (215,120,12,2), - (216,121,12,2), - (218,122,12,2), - (220,123,12,2), - (222,124,12,2), - (224,125,12,2), - (225,126,12,2), - (226,127,12,2), - (228,128,12,2), - (230,129,12,2), - (232,130,12,2), - (234,131,12,2), - (236,132,12,2), - (238,133,12,2), - (240,134,12,2), - (242,135,12,2), - (243,136,12,2), - (245,137,12,2), - (247,138,12,2), - (249,139,12,2), - (251,140,12,2), - (253,141,12,2), - (255,142,12,2), - (256,143,12,2), - (257,144,12,2), - (259,145,12,2), - (261,146,12,2), - (263,147,12,2), - (265,148,12,2), - (267,149,12,2), - (269,150,12,2), - (508,283,12,3), - (211,117,13,3), - (780,435,13,3), - (911,555,13,2), - (233,130,14,3), - (742,413,14,3), - (943,587,14,2), - (104,59,15,3), - (316,175,15,3), - (423,237,15,3), - (527,294,15,3), - (649,362,15,3), - (685,382,15,3), - (748,416,15,3), - (863,507,15,2), - (868,537,15,2), - (138,78,16,3), - (154,86,16,3), - (574,320,16,3), - (812,456,16,2), - (61,35,17,3), - (412,230,17,3), - (740,412,17,3), - (948,592,17,2), - (10,5,18,3), - (134,75,18,3), - (546,304,18,3), - (565,315,18,3), - (624,348,18,3), - (846,490,18,2), - (869,520,18,2), - (45,26,19,3), - (63,36,19,3), - (306,170,19,3), - (517,288,19,3), - (813,457,19,2), - (346,193,20,3), - (588,327,20,3), - (723,403,20,3), - (792,441,20,3), - (36,21,21,3), - (408,228,21,3), - (498,278,21,3), - (616,344,21,3), - (695,387,21,3), - (764,425,21,3), - (118,67,22,3), - (404,226,22,3), - (266,148,23,3), - (441,246,23,3), - (755,420,23,3), - (848,492,23,2), - (870,522,23,2), - (8,4,24,3), - (167,94,24,3), - (31,18,25,3), - (326,182,25,3), - (336,187,25,3), - (494,276,25,3), - (534,298,25,3), - (786,438,25,3), - (22,13,26,3), - (51,29,26,3), - (130,73,26,3), - (246,137,26,3), - (330,184,26,3), - (431,241,26,3), - (502,280,26,3), - (523,292,26,3), - (544,303,26,3), - (626,349,26,3), - (126,71,27,3), - (308,171,27,3), - (367,204,27,3), - (378,210,27,3), - (697,388,27,3), - (784,437,27,3), - (945,589,27,2), - (290,161,28,3), - (342,191,28,3), - (344,192,28,3), - (602,335,28,3), - (114,65,29,3), - (178,100,29,3), - (189,106,29,3), - (268,149,29,3), - (371,206,29,3), - (427,239,29,3), - (470,262,29,3), - (909,553,29,2), - (49,28,30,3), - (388,215,30,3), - (406,227,30,3), - (451,251,30,3), - (699,389,30,3), - (782,436,30,3), - (806,450,30,3), - (867,511,30,2), - (871,541,30,2), - (93,52,31,3), - (340,190,31,3), - (540,301,31,3), - (525,293,32,3), - (819,463,32,2), - (820,464,32,2), - (843,487,32,2), - (872,517,32,2), - (904,548,32,2), - (6,3,33,3), - (209,116,33,3), - (490,274,33,3), - (270,150,34,3), - (693,386,34,3), - (816,460,34,2), - (479,268,36,3), - (513,286,36,3), - (671,374,36,3), - (683,381,36,3), - (862,506,36,2), - (873,536,36,2), - (511,285,37,3), - (859,503,37,2), - (874,533,37,2), - (901,545,37,2), - (197,110,38,3), - (231,129,38,3), - (433,242,38,3), - (673,375,38,3), - (733,408,38,3), - (39,23,39,3), - (91,51,39,3), - (463,258,39,3), - (567,316,39,3), - (584,325,39,3), - (418,234,40,3), - (14,8,41,3), - (29,17,41,3), - (74,42,41,3), - (146,82,41,3), - (176,99,41,3), - (280,156,41,3), - (288,160,41,3), - (201,112,42,3), - (496,277,42,3), - (593,330,42,3), - (324,181,43,3), - (382,212,43,3), - (620,346,43,3), - (771,429,43,3), - (818,462,43,2), - (69,39,44,3), - (86,48,44,3), - (303,168,44,3), - (410,229,44,3), - (569,317,44,3), - (618,345,44,3), - (633,353,44,3), - (769,428,44,3), - (254,141,45,3), - (357,199,45,3), - (361,201,45,3), - (106,60,46,3), - (162,91,46,3), - (310,172,46,3), - (429,240,46,3), - (753,419,47,3), - (59,34,48,3), - (457,254,48,3), - (667,372,48,3), - (95,53,49,3), - (380,211,49,3), - (578,322,49,3), - (16,9,50,3), - (47,27,50,3), - (645,360,50,3), - (929,573,50,2), - (665,371,52,3), - (122,69,53,3), - (164,92,53,3), - (425,238,53,3), - (905,549,53,2), - (132,74,54,3), - (447,249,54,3), - (449,250,54,3), - (610,340,54,3), - (687,383,54,3), - (913,557,54,2), - (160,90,55,3), - (221,123,55,3), - (353,197,55,3), - (703,391,55,3), - (851,495,55,2), - (875,525,55,2), - (112,64,56,3), - (506,282,56,3), - (18,10,57,3), - (187,105,57,3), - (286,159,57,3), - (595,331,57,3), - (710,395,57,3), - (169,95,58,3), - (297,165,58,3), - (359,200,58,3), - (548,305,58,3), - (708,394,58,3), - (788,439,58,3), - (519,289,59,3), - (675,376,59,3), - (691,385,59,3), - (821,465,59,2), - (822,466,59,2), - (823,467,59,2), - (824,468,59,2), - (825,469,59,2), - (826,470,59,2), - (827,471,59,2), - (828,472,59,2), - (829,473,59,2), - (830,474,59,2), - (831,475,59,2), - (193,108,60,3), - (492,275,60,3), - (515,287,60,3), - (468,261,61,3), - (555,309,61,3), - (919,563,61,2), - (72,41,62,3), - (84,47,62,3), - (229,128,62,3), - (264,147,62,3), - (328,183,62,3), - (376,209,62,3), - (453,252,62,3), - (561,312,62,3), - (738,411,62,3), - (926,570,63,2), - (124,70,64,3), - (156,87,64,3), - (248,138,64,3), - (622,347,64,3), - (680,379,64,3), - (918,562,64,2), - (144,81,65,3), - (183,103,65,3), - (301,167,65,3), - (349,195,65,3), - (576,321,65,3), - (600,334,65,3), - (614,343,65,3), - (766,426,65,3), - (205,114,66,3), - (369,205,66,3), - (804,449,66,3), - (4,2,67,3), - (150,84,67,3), - (292,162,67,3), - (393,219,67,3), - (718,400,67,3), - (314,174,68,3), - (33,19,69,3), - (223,124,69,3), - (455,253,69,3), - (840,484,69,2), - (876,514,69,2), - (930,574,69,2), - (716,399,70,3), - (774,431,70,3), - (355,198,71,3), - (635,354,71,3), - (817,461,71,2), - (24,14,72,3), - (43,25,72,3), - (120,68,72,3), - (312,173,72,3), - (476,266,72,3), - (26,15,73,3), - (89,50,73,3), - (110,63,73,3), - (148,83,73,3), - (282,157,73,3), - (384,213,73,3), - (481,269,73,3), - (669,373,73,3), - (180,101,74,3), - (191,107,74,3), - (731,407,74,3), - (530,296,75,3), - (651,363,75,3), - (661,369,75,3), - (744,414,75,3), - (484,271,76,3), - (56,32,77,3), - (76,43,77,3), - (173,97,77,3), - (237,132,78,3), - (244,136,78,3), - (947,591,78,2), - (414,231,79,3), - (559,311,79,3), - (751,418,79,3), - (914,558,79,2), - (443,247,80,3), - (504,281,80,3), - (705,392,80,3), - (712,396,80,3), - (258,144,81,3), - (363,202,81,3), - (500,279,81,3), - (761,423,81,3), - (790,440,81,3), - (860,504,81,2), - (877,534,81,2), - (921,565,81,2), - (814,458,82,2), - (536,299,83,3), - (778,434,83,3), - (80,45,84,3), - (185,104,84,3), - (271,151,84,2), - (273,152,84,2), - (275,153,84,2), - (276,154,84,2), - (277,155,84,2), - (279,156,84,2), - (281,157,84,2), - (283,158,84,2), - (285,159,84,2), - (287,160,84,2), - (289,161,84,2), - (291,162,84,2), - (293,163,84,2), - (295,164,84,2), - (296,165,84,2), - (298,166,84,2), - (300,167,84,2), - (302,168,84,2), - (304,169,84,2), - (305,170,84,2), - (307,171,84,2), - (309,172,84,2), - (311,173,84,2), - (313,174,84,2), - (315,175,84,2), - (317,176,84,2), - (318,177,84,2), - (319,178,84,2), - (320,179,84,2), - (321,180,84,2), - (323,181,84,2), - (325,182,84,2), - (327,183,84,2), - (329,184,84,2), - (331,185,84,2), - (333,186,84,2), - (335,187,84,2), - (337,188,84,2), - (338,189,84,2), - (339,190,84,2), - (341,191,84,2), - (343,192,84,2), - (345,193,84,2), - (347,194,84,2), - (348,195,84,2), - (350,196,84,2), - (352,197,84,2), - (354,198,84,2), - (356,199,84,2), - (358,200,84,2), - (360,201,84,2), - (362,202,84,2), - (364,203,84,2), - (366,204,84,2), - (368,205,84,2), - (370,206,84,2), - (372,207,84,2), - (374,208,84,2), - (375,209,84,2), - (377,210,84,2), - (379,211,84,2), - (381,212,84,2), - (383,213,84,2), - (385,214,84,2), - (387,215,84,2), - (389,216,84,2), - (390,217,84,2), - (391,218,84,2), - (392,219,84,2), - (394,220,84,2), - (396,221,84,2), - (397,222,84,2), - (399,223,84,2), - (400,224,84,2), - (402,225,84,2), - (403,226,84,2), - (405,227,84,2), - (407,228,84,2), - (409,229,84,2), - (411,230,84,2), - (413,231,84,2), - (415,232,84,2), - (416,233,84,2), - (417,234,84,2), - (419,235,84,2), - (421,236,84,2), - (422,237,84,2), - (424,238,84,2), - (426,239,84,2), - (428,240,84,2), - (430,241,84,2), - (432,242,84,2), - (434,243,84,2), - (436,244,84,2), - (438,245,84,2), - (440,246,84,2), - (442,247,84,2), - (444,248,84,2), - (446,249,84,2), - (448,250,84,2), - (450,251,84,2), - (452,252,84,2), - (454,253,84,2), - (456,254,84,2), - (458,255,84,2), - (459,256,84,2), - (460,257,84,2), - (462,258,84,2), - (464,259,84,2), - (465,260,84,2), - (467,261,84,2), - (469,262,84,2), - (471,263,84,2), - (472,264,84,2), - (474,265,84,2), - (475,266,84,2), - (477,267,84,2), - (478,268,84,2), - (480,269,84,2), - (482,270,84,2), - (483,271,84,2), - (485,272,84,2), - (487,273,84,2), - (489,274,84,2), - (491,275,84,2), - (493,276,84,2), - (495,277,84,2), - (497,278,84,2), - (499,279,84,2), - (501,280,84,2), - (503,281,84,2), - (505,282,84,2), - (507,283,84,2), - (509,284,84,2), - (510,285,84,2), - (512,286,84,2), - (514,287,84,2), - (516,288,84,2), - (518,289,84,2), - (520,290,84,2), - (521,291,84,2), - (522,292,84,2), - (524,293,84,2), - (526,294,84,2), - (528,295,84,2), - (529,296,84,2), - (531,297,84,2), - (532,297,84,3), - (533,298,84,2), - (535,299,84,2), - (537,300,84,2), - (542,302,84,3), - (82,46,85,3), - (351,196,85,3), - (466,260,85,3), - (580,323,85,3), - (900,544,85,2), - (250,139,86,3), - (628,350,86,3), - (598,333,88,3), - (663,370,88,3), - (794,442,88,3), - (140,79,89,3), - (439,245,89,3), - (653,364,89,3), - (721,402,89,3), - (931,575,89,2), - (219,122,90,3), - (386,214,90,3), - (572,319,90,3), - (171,96,91,3), - (435,243,91,3), - (473,264,91,3), - (53,30,92,3), - (815,459,92,2), - (78,44,93,3), - (142,80,93,3), - (207,115,93,3), - (284,158,93,3), - (395,220,93,3), - (858,502,93,2), - (878,532,93,2), - (928,572,93,2), - (41,24,94,3), - (227,127,94,3), - (235,131,94,3), - (322,180,94,3), - (486,272,94,3), - (217,121,95,3), - (260,145,95,3), - (940,584,95,2), - (67,38,96,3), - (99,55,97,3), - (199,111,97,3), - (334,186,97,3), - (488,273,97,3), - (557,310,97,3), - (801,447,97,3), - (2,1,98,3), - (437,244,98,3), - (586,326,98,3), - (195,109,99,3), - (461,257,99,3), - (736,410,99,3), - (832,476,99,2), - (833,477,99,2), - (834,478,99,2), - (835,479,99,2), - (836,480,99,2), - (847,491,99,2), - (879,521,99,2), - (213,118,100,3), - (278,155,100,3), - (550,306,100,3), - (656,366,100,3), - (701,390,100,3), - (917,561,100,2), - (272,151,101,3), - (299,166,101,3), - (725,404,101,3), - (902,546,101,2), - (915,559,102,2), - (837,481,103,2), - (903,547,111,2), - (935,579,112,2), - (844,488,113,2), - (880,518,113,2), - (937,581,114,2), - (849,493,115,2), - (881,523,115,2), - (908,552,118,2), - (842,486,119,2), - (882,516,119,2), - (920,564,121,2), - (861,505,122,2), - (883,535,122,2), - (932,576,122,2), - (855,499,125,2), - (884,529,125,2), - (853,497,126,2), - (885,527,126,2), - (922,566,126,2), - (850,494,128,2), - (886,524,128,2), - (864,508,131,2), - (887,538,131,2), - (907,551,134,2), - (841,485,140,2), - (888,515,140,2), - (854,498,141,2), - (889,528,141,2), - (924,568,141,2), - (839,483,143,2), - (890,513,143,2), - (942,586,147,2), - (923,567,150,2), - (912,556,152,2), - (857,501,156,2), - (891,531,156,2), - (845,489,157,2), - (892,519,157,2), - (865,509,158,2), - (893,539,158,2), - (906,550,160,2), - (852,496,163,2), - (894,526,163,2), - (927,571,165,2), - (925,569,168,2), - (941,585,169,2), - (856,500,172,2), - (895,530,172,2), - (910,554,172,2), - (946,590,175,2), - (838,482,181,2), - (896,512,181,2), - (938,582,181,2), - (899,543,188,2), - (944,588,190,2), - (866,510,193,2), - (897,540,193,2), - (934,578,195,2), - (539,301,196,2), - (541,302,196,2), - (543,303,196,2), - (545,304,196,2), - (547,305,196,2), - (549,306,196,2), - (551,307,196,2), - (553,308,196,2), - (554,309,196,2), - (556,310,196,2), - (558,311,196,2), - (560,312,196,2), - (562,313,196,2), - (563,314,196,2), - (564,315,196,2), - (566,316,196,2), - (568,317,196,2), - (570,318,196,2), - (571,319,196,2), - (573,320,196,2), - (575,321,196,2), - (577,322,196,2), - (579,323,196,2), - (581,324,196,2), - (583,325,196,2), - (585,326,196,2), - (587,327,196,2), - (589,328,196,2), - (590,329,196,2), - (592,330,196,2), - (594,331,196,2), - (596,332,196,2), - (597,333,196,2), - (599,334,196,2), - (601,335,196,2), - (603,336,196,2), - (604,337,196,2), - (606,338,196,2), - (608,339,196,2), - (609,340,196,2), - (611,341,196,2), - (612,342,196,2), - (613,343,196,2), - (615,344,196,2), - (617,345,196,2), - (619,346,196,2), - (621,347,196,2), - (623,348,196,2), - (625,349,196,2), - (627,350,196,2), - (629,351,196,2), - (631,352,196,2), - (632,353,196,2), - (634,354,196,2), - (636,355,196,2), - (638,356,196,2), - (639,357,196,2), - (641,358,196,2), - (643,359,196,2), - (644,360,196,2), - (646,361,196,2), - (648,362,196,2), - (650,363,196,2), - (652,364,196,2), - (654,365,196,2), - (655,366,196,2), - (657,367,196,2), - (658,368,196,2), - (660,369,196,2), - (662,370,196,2), - (664,371,196,2), - (666,372,196,2), - (668,373,196,2), - (670,374,196,2), - (672,375,196,2), - (674,376,196,2), - (676,377,196,2), - (677,378,196,2), - (679,379,196,2), - (681,380,196,2), - (682,381,196,2), - (684,382,196,2), - (686,383,196,2), - (688,384,196,2), - (690,385,196,2), - (692,386,196,2), - (694,387,196,2), - (696,388,196,2), - (698,389,196,2), - (700,390,196,2), - (702,391,196,2), - (704,392,196,2), - (706,393,196,2), - (707,394,196,2), - (709,395,196,2), - (711,396,196,2), - (713,397,196,2), - (714,398,196,2), - (715,399,196,2), - (717,400,196,2), - (719,401,196,2), - (720,402,196,2), - (722,403,196,2), - (724,404,196,2), - (726,405,196,2), - (728,406,196,2), - (730,407,196,2), - (732,408,196,2), - (734,409,196,2), - (735,410,196,2), - (737,411,196,2), - (739,412,196,2), - (741,413,196,2), - (743,414,196,2), - (745,415,196,2), - (747,416,196,2), - (749,417,196,2), - (750,418,196,2), - (752,419,196,2), - (754,420,196,2), - (756,421,196,2), - (758,422,196,2), - (760,423,196,2), - (762,424,196,2), - (763,425,196,2), - (765,426,196,2), - (767,427,196,2), - (768,428,196,2), - (770,429,196,2), - (772,430,196,2), - (773,431,196,2), - (775,432,196,2), - (776,433,196,2), - (777,434,196,2), - (779,435,196,2), - (781,436,196,2), - (783,437,196,2), - (785,438,196,2), - (787,439,196,2), - (789,440,196,2), - (791,441,196,2), - (793,442,196,2), - (795,443,196,2), - (797,444,196,2), - (798,445,196,2), - (799,446,196,2), - (800,447,196,2), - (802,448,196,2), - (803,449,196,2), - (805,450,196,2), - (939,583,200,2); + (54,30,1,3), + (61,34,1,3), + (244,133,1,3), + (576,320,1,3), + (751,413,1,3), + (759,417,1,3), + (334,183,2,3), + (417,230,2,3), + (715,394,2,3), + (818,451,2,2), + (124,67,3,3), + (171,92,3,3), + (317,173,3,3), + (395,217,3,3), + (79,43,4,3), + (134,72,4,3), + (296,162,4,3), + (338,185,4,3), + (819,452,4,2), + (822,455,4,2), + (109,58,5,3), + (215,117,5,3), + (313,171,5,3), + (444,246,5,3), + (545,303,5,3), + (647,359,5,3), + (870,503,5,2), + (908,541,5,2), + (727,400,6,3), + (820,453,6,2), + (943,576,6,2), + (528,294,7,3), + (568,315,7,3), + (613,341,7,3), + (810,446,7,3), + (150,81,8,3), + (474,262,8,3), + (570,316,8,3), + (821,454,8,2), + (865,498,8,2), + (885,518,8,2), + (935,568,8,2), + (67,37,9,3), + (226,123,10,3), + (560,311,10,3), + (643,357,10,3), + (910,543,10,2), + (341,187,11,3), + (592,329,11,3), + (119,64,12,3), + (130,70,12,3), + (175,94,12,3), + (156,84,13,3), + (275,150,13,3), + (348,191,13,3), + (379,208,13,3), + (452,250,13,3), + (919,552,13,2), + (138,74,14,3), + (220,120,14,3), + (950,583,14,2), + (154,83,15,3), + (448,248,15,3), + (483,267,15,3), + (558,310,15,3), + (670,371,15,3), + (743,409,15,3), + (276,151,16,2), + (277,152,16,2), + (279,153,16,2), + (281,154,16,2), + (283,155,16,2), + (285,156,16,2), + (286,156,16,3), + (287,157,16,2), + (289,158,16,2), + (290,159,16,2), + (291,160,16,2), + (293,161,16,2), + (295,162,16,2), + (297,163,16,2), + (299,164,16,2), + (301,165,16,2), + (303,166,16,2), + (305,167,16,2), + (307,168,16,2), + (308,169,16,2), + (310,170,16,2), + (312,171,16,2), + (314,172,16,2), + (316,173,16,2), + (318,174,16,2), + (320,175,16,2), + (321,176,16,2), + (323,177,16,2), + (325,178,16,2), + (327,179,16,2), + (329,180,16,2), + (330,181,16,2), + (331,182,16,2), + (332,182,16,3), + (333,183,16,2), + (335,184,16,2), + (337,185,16,2), + (339,186,16,2), + (340,187,16,2), + (342,188,16,2), + (343,189,16,2), + (345,190,16,2), + (347,191,16,2), + (349,192,16,2), + (351,193,16,2), + (353,194,16,2), + (354,195,16,2), + (356,196,16,2), + (358,197,16,2), + (360,198,16,2), + (361,199,16,2), + (363,200,16,2), + (365,201,16,2), + (366,202,16,2), + (368,203,16,2), + (370,204,16,2), + (372,205,16,2), + (374,206,16,2), + (376,207,16,2), + (378,208,16,2), + (380,209,16,2), + (381,210,16,2), + (383,211,16,2), + (385,212,16,2), + (387,213,16,2), + (389,214,16,2), + (390,215,16,2), + (392,216,16,2), + (394,217,16,2), + (396,218,16,2), + (398,219,16,2), + (399,220,16,2), + (400,221,16,2), + (402,222,16,2), + (403,223,16,2), + (405,224,16,2), + (407,225,16,2), + (409,226,16,2), + (411,227,16,2), + (413,228,16,2), + (414,229,16,2), + (416,230,16,2), + (418,231,16,2), + (420,232,16,2), + (421,233,16,2), + (423,234,16,2), + (425,235,16,2), + (426,236,16,2), + (427,237,16,2), + (429,238,16,2), + (431,239,16,2), + (433,240,16,2), + (434,241,16,2), + (435,241,16,3), + (436,242,16,2), + (438,243,16,2), + (440,244,16,2), + (442,245,16,2), + (443,246,16,2), + (445,247,16,2), + (447,248,16,2), + (449,249,16,2), + (451,250,16,2), + (453,251,16,2), + (455,252,16,2), + (457,253,16,2), + (459,254,16,2), + (461,255,16,2), + (462,256,16,2), + (464,257,16,2), + (466,258,16,2), + (468,259,16,2), + (470,260,16,2), + (471,261,16,2), + (473,262,16,2), + (475,263,16,2), + (477,264,16,2), + (479,265,16,2), + (480,266,16,2), + (482,267,16,2), + (484,268,16,2), + (486,269,16,2), + (487,270,16,2), + (489,271,16,2), + (491,272,16,2), + (493,273,16,2), + (494,274,16,2), + (496,275,16,2), + (498,276,16,2), + (499,277,16,2), + (501,278,16,2), + (503,279,16,2), + (505,280,16,2), + (507,281,16,2), + (508,282,16,2), + (510,283,16,2), + (512,284,16,2), + (513,285,16,2), + (515,286,16,2), + (516,287,16,2), + (517,288,16,2), + (519,289,16,2), + (521,290,16,2), + (522,291,16,2), + (524,292,16,2), + (525,293,16,2), + (527,294,16,2), + (529,295,16,2), + (531,296,16,2), + (533,297,16,2), + (534,298,16,2), + (536,299,16,2), + (538,300,16,2), + (676,374,16,3), + (707,390,16,3), + (823,456,16,2), + (924,557,16,2), + (163,88,17,3), + (497,275,17,3), + (869,502,17,2), + (888,521,17,2), + (945,578,17,2), + (231,126,18,3), + (780,429,18,3), + (81,44,19,3), + (346,190,19,3), + (432,239,19,3), + (824,457,19,2), + (938,571,19,2), + (273,149,20,3), + (369,203,20,3), + (562,312,20,3), + (619,344,20,3), + (814,448,20,3), + (28,15,21,3), + (186,101,21,3), + (526,293,21,3), + (600,333,21,3), + (610,339,21,3), + (639,355,21,3), + (733,404,21,3), + (778,428,21,3), + (284,155,22,3), + (566,314,22,3), + (628,349,22,3), + (85,46,23,3), + (140,75,23,3), + (197,107,23,3), + (278,152,23,3), + (350,192,23,3), + (382,210,23,3), + (428,237,23,3), + (918,551,23,2), + (97,52,24,3), + (240,131,26,3), + (375,206,26,3), + (502,278,26,3), + (111,59,27,3), + (218,119,27,3), + (288,157,27,3), + (617,343,27,3), + (626,348,27,3), + (649,360,27,3), + (690,381,27,3), + (713,393,27,3), + (26,14,28,3), + (103,55,28,3), + (233,127,28,3), + (292,160,28,3), + (660,366,28,3), + (688,380,28,3), + (711,392,28,3), + (761,418,28,3), + (873,506,28,2), + (890,523,28,2), + (8,4,29,3), + (532,296,29,3), + (236,129,30,3), + (328,179,30,3), + (441,244,30,3), + (485,268,30,3), + (606,337,30,3), + (682,377,30,3), + (719,396,30,3), + (923,556,30,2), + (132,71,31,3), + (488,270,31,3), + (574,319,31,3), + (169,91,32,3), + (632,351,32,3), + (717,395,32,3), + (830,463,32,2), + (831,464,32,2), + (52,29,33,3), + (128,69,33,3), + (148,80,33,3), + (709,391,33,3), + (211,115,34,3), + (415,229,34,3), + (454,251,34,3), + (598,332,34,3), + (623,346,34,3), + (800,441,34,3), + (827,460,34,2), + (393,216,35,3), + (401,221,35,3), + (705,389,35,3), + (107,57,36,3), + (228,124,36,3), + (855,488,36,2), + (881,514,36,2), + (914,547,36,2), + (145,78,37,3), + (386,212,37,3), + (564,313,37,3), + (585,325,37,3), + (680,376,37,3), + (741,408,37,3), + (792,436,37,3), + (43,24,38,3), + (630,350,38,3), + (737,406,38,3), + (13,7,39,3), + (46,26,39,3), + (808,445,39,3), + (858,491,39,2), + (899,532,39,2), + (65,36,40,3), + (654,363,40,3), + (749,412,40,3), + (915,548,40,2), + (672,372,41,3), + (698,385,41,3), + (917,550,41,2), + (203,110,42,3), + (478,264,43,3), + (829,462,43,2), + (38,21,44,3), + (48,27,44,3), + (304,166,44,3), + (446,247,44,3), + (795,438,44,3), + (248,135,45,3), + (437,242,45,3), + (656,364,45,3), + (932,565,45,2), + (306,167,46,3), + (509,282,46,3), + (253,138,47,3), + (271,148,47,3), + (377,207,47,3), + (424,234,47,3), + (554,308,47,3), + (578,321,47,3), + (747,411,47,3), + (850,483,47,2), + (894,527,47,2), + (326,178,48,3), + (861,494,48,2), + (883,516,48,2), + (31,17,49,3), + (93,50,49,3), + (193,105,49,3), + (269,147,49,3), + (860,493,49,2), + (900,533,49,2), + (15,8,50,3), + (222,121,50,3), + (324,177,50,3), + (384,211,50,3), + (745,410,50,3), + (73,40,51,3), + (83,45,51,3), + (294,161,51,3), + (543,302,51,3), + (694,383,51,3), + (2,1,52,3), + (95,51,52,3), + (122,66,52,3), + (165,89,52,3), + (280,153,52,3), + (472,261,52,3), + (10,5,53,3), + (259,141,53,3), + (636,353,53,3), + (179,97,54,3), + (397,218,54,3), + (658,365,54,3), + (731,403,54,3), + (867,500,54,2), + (886,519,54,2), + (6,3,55,3), + (261,142,55,3), + (408,225,55,3), + (422,233,55,3), + (539,300,55,3), + (674,373,55,3), + (721,397,55,3), + (849,482,55,2), + (879,512,55,2), + (535,298,56,3), + (556,309,56,3), + (651,361,56,3), + (739,407,56,3), + (812,447,56,3), + (255,139,57,3), + (302,165,57,3), + (580,322,57,3), + (787,433,57,3), + (804,443,57,3), + (955,588,57,2), + (57,32,58,3), + (136,73,58,3), + (181,98,58,3), + (300,164,58,3), + (406,224,58,3), + (832,465,59,2), + (833,466,59,2), + (834,467,59,2), + (835,468,59,2), + (836,469,59,2), + (837,470,59,2), + (838,471,59,2), + (839,472,59,2), + (840,473,59,2), + (841,474,59,2), + (842,475,59,2), + (495,274,60,3), + (763,419,60,3), + (199,108,61,3), + (520,289,61,3), + (530,295,61,3), + (184,100,62,3), + (33,18,63,3), + (195,106,63,3), + (242,132,63,3), + (500,277,63,3), + (725,399,63,3), + (735,405,63,3), + (91,49,64,3), + (641,356,64,3), + (662,367,64,3), + (21,11,65,3), + (99,53,65,3), + (404,223,65,3), + (608,338,65,3), + (615,342,65,3), + (798,440,65,3), + (336,184,66,3), + (357,196,66,3), + (456,252,66,3), + (463,256,66,3), + (753,414,66,3), + (876,509,66,2), + (906,539,66,2), + (391,215,67,3), + (547,304,67,3), + (645,358,67,3), + (450,249,68,3), + (668,370,68,3), + (700,386,68,3), + (816,449,68,3), + (158,85,69,3), + (388,213,69,3), + (666,369,69,3), + (768,422,69,3), + (958,591,69,2), + (367,202,70,3), + (583,324,70,3), + (802,442,70,3), + (69,38,71,3), + (188,102,71,3), + (309,169,71,3), + (344,189,71,3), + (828,461,71,2), + (298,163,72,3), + (439,243,72,3), + (634,352,72,3), + (59,33,73,3), + (113,60,73,3), + (207,112,73,3), + (364,200,73,3), + (371,204,73,3), + (476,263,73,3), + (772,425,73,3), + (939,572,73,2), + (87,47,74,3), + (224,122,74,3), + (755,415,74,3), + (765,420,74,3), + (774,426,74,3), + (4,2,75,3), + (117,63,75,3), + (267,146,75,3), + (311,170,76,3), + (373,205,76,3), + (460,254,76,3), + (518,288,76,3), + (940,573,76,2), + (75,41,77,3), + (315,172,77,3), + (514,285,77,3), + (537,299,77,3), + (913,546,77,2), + (126,68,78,3), + (596,331,78,3), + (874,507,78,2), + (905,538,78,2), + (161,87,79,3), + (322,176,79,3), + (410,226,80,3), + (930,563,80,2), + (71,39,81,3), + (213,116,81,3), + (469,259,81,3), + (205,111,82,3), + (504,279,82,3), + (523,291,82,3), + (825,458,82,2), + (359,197,83,3), + (678,375,83,3), + (696,384,83,3), + (19,10,84,3), + (40,22,84,3), + (89,48,84,3), + (587,326,84,3), + (948,581,84,2), + (458,253,85,3), + (257,140,86,3), + (352,193,86,3), + (550,306,86,3), + (723,398,86,3), + (877,510,86,2), + (892,525,86,2), + (77,42,87,3), + (173,93,87,3), + (362,199,87,3), + (511,283,87,3), + (686,379,87,3), + (782,430,87,3), + (857,490,87,2), + (882,515,87,2), + (24,13,88,3), + (621,345,88,3), + (684,378,88,3), + (959,592,88,2), + (17,9,89,3), + (419,231,89,3), + (506,280,89,3), + (664,368,89,3), + (692,382,89,3), + (784,431,89,3), + (167,90,90,3), + (190,103,91,3), + (263,143,91,3), + (319,174,91,3), + (355,195,91,3), + (757,416,91,3), + (63,35,92,3), + (412,227,92,3), + (481,266,92,3), + (541,301,92,3), + (552,307,92,3), + (594,330,92,3), + (826,459,92,2), + (862,495,92,2), + (901,534,92,2), + (911,544,92,2), + (36,20,93,3), + (492,272,93,3), + (859,492,93,2), + (907,540,93,2), + (467,258,94,3), + (776,427,94,3), + (916,549,94,2), + (201,109,95,3), + (282,154,95,3), + (465,257,95,3), + (603,335,95,3), + (101,54,96,3), + (251,137,96,3), + (430,238,96,3), + (806,444,96,3), + (954,587,96,2), + (142,76,97,3), + (238,130,97,3), + (942,575,97,2), + (246,134,98,3), + (589,327,98,3), + (105,56,99,3), + (490,271,99,3), + (843,476,99,2), + (844,477,99,2), + (845,478,99,2), + (846,479,99,2), + (847,480,99,2), + (50,28,100,3), + (152,82,100,3), + (703,388,100,3), + (790,435,100,3), + (872,505,100,2), + (904,537,100,2), + (936,569,101,2), + (848,481,103,2), + (868,501,106,2), + (887,520,106,2), + (853,486,113,2), + (896,529,113,2), + (875,508,117,2), + (891,524,117,2), + (949,582,117,2), + (928,561,123,2), + (852,485,126,2), + (895,528,126,2), + (540,301,127,2), + (542,302,127,2), + (544,303,127,2), + (546,304,127,2), + (548,305,127,2), + (549,306,127,2), + (551,307,127,2), + (553,308,127,2), + (555,309,127,2), + (557,310,127,2), + (559,311,127,2), + (561,312,127,2), + (563,313,127,2), + (565,314,127,2), + (567,315,127,2), + (569,316,127,2), + (571,317,127,2), + (572,318,127,2), + (573,319,127,2), + (575,320,127,2), + (577,321,127,2), + (579,322,127,2), + (581,323,127,2), + (582,324,127,2), + (584,325,127,2), + (586,326,127,2), + (588,327,127,2), + (590,328,127,2), + (591,329,127,2), + (593,330,127,2), + (595,331,127,2), + (597,332,127,2), + (599,333,127,2), + (601,334,127,2), + (602,335,127,2), + (604,336,127,2), + (605,337,127,2), + (607,338,127,2), + (609,339,127,2), + (611,340,127,2), + (612,341,127,2), + (614,342,127,2), + (616,343,127,2), + (618,344,127,2), + (620,345,127,2), + (622,346,127,2), + (624,347,127,2), + (625,348,127,2), + (627,349,127,2), + (629,350,127,2), + (631,351,127,2), + (633,352,127,2), + (635,353,127,2), + (637,354,127,2), + (638,355,127,2), + (640,356,127,2), + (642,357,127,2), + (644,358,127,2), + (646,359,127,2), + (648,360,127,2), + (650,361,127,2), + (652,362,127,2), + (653,363,127,2), + (655,364,127,2), + (657,365,127,2), + (659,366,127,2), + (661,367,127,2), + (663,368,127,2), + (665,369,127,2), + (667,370,127,2), + (669,371,127,2), + (671,372,127,2), + (673,373,127,2), + (675,374,127,2), + (677,375,127,2), + (679,376,127,2), + (681,377,127,2), + (683,378,127,2), + (685,379,127,2), + (687,380,127,2), + (689,381,127,2), + (691,382,127,2), + (693,383,127,2), + (695,384,127,2), + (697,385,127,2), + (699,386,127,2), + (701,387,127,2), + (702,388,127,2), + (704,389,127,2), + (706,390,127,2), + (708,391,127,2), + (710,392,127,2), + (712,393,127,2), + (714,394,127,2), + (716,395,127,2), + (718,396,127,2), + (720,397,127,2), + (722,398,127,2), + (724,399,127,2), + (726,400,127,2), + (728,401,127,2), + (729,402,127,2), + (730,403,127,2), + (732,404,127,2), + (734,405,127,2), + (736,406,127,2), + (738,407,127,2), + (740,408,127,2), + (742,409,127,2), + (744,410,127,2), + (746,411,127,2), + (748,412,127,2), + (750,413,127,2), + (752,414,127,2), + (754,415,127,2), + (756,416,127,2), + (758,417,127,2), + (760,418,127,2), + (762,419,127,2), + (764,420,127,2), + (766,421,127,2), + (767,422,127,2), + (769,423,127,2), + (770,424,127,2), + (771,425,127,2), + (773,426,127,2), + (775,427,127,2), + (777,428,127,2), + (779,429,127,2), + (781,430,127,2), + (783,431,127,2), + (785,432,127,2), + (786,433,127,2), + (788,434,127,2), + (789,435,127,2), + (791,436,127,2), + (793,437,127,2), + (794,438,127,2), + (796,439,127,2), + (797,440,127,2), + (799,441,127,2), + (801,442,127,2), + (803,443,127,2), + (805,444,127,2), + (807,445,127,2), + (809,446,127,2), + (811,447,127,2), + (813,448,127,2), + (815,449,127,2), + (817,450,127,2), + (946,579,127,2), + (925,558,132,2), + (922,555,135,2), + (864,497,136,2), + (902,535,136,2), + (929,562,144,2), + (878,511,149,2), + (893,526,149,2), + (947,580,154,2), + (951,584,156,2), + (937,570,158,2), + (944,577,159,2), + (1,1,160,2), + (3,2,160,2), + (5,3,160,2), + (7,4,160,2), + (9,5,160,2), + (11,6,160,2), + (12,7,160,2), + (14,8,160,2), + (16,9,160,2), + (18,10,160,2), + (20,11,160,2), + (22,12,160,2), + (23,13,160,2), + (25,14,160,2), + (27,15,160,2), + (29,16,160,2), + (30,17,160,2), + (32,18,160,2), + (34,19,160,2), + (35,20,160,2), + (37,21,160,2), + (39,22,160,2), + (41,23,160,2), + (42,24,160,2), + (44,25,160,2), + (45,26,160,2), + (47,27,160,2), + (49,28,160,2), + (51,29,160,2), + (53,30,160,2), + (55,31,160,2), + (56,32,160,2), + (58,33,160,2), + (60,34,160,2), + (62,35,160,2), + (64,36,160,2), + (66,37,160,2), + (68,38,160,2), + (70,39,160,2), + (72,40,160,2), + (74,41,160,2), + (76,42,160,2), + (78,43,160,2), + (80,44,160,2), + (82,45,160,2), + (84,46,160,2), + (86,47,160,2), + (88,48,160,2), + (90,49,160,2), + (92,50,160,2), + (94,51,160,2), + (96,52,160,2), + (98,53,160,2), + (100,54,160,2), + (102,55,160,2), + (104,56,160,2), + (106,57,160,2), + (108,58,160,2), + (110,59,160,2), + (112,60,160,2), + (114,61,160,2), + (115,62,160,2), + (116,63,160,2), + (118,64,160,2), + (120,65,160,2), + (121,66,160,2), + (123,67,160,2), + (125,68,160,2), + (127,69,160,2), + (129,70,160,2), + (131,71,160,2), + (133,72,160,2), + (135,73,160,2), + (137,74,160,2), + (139,75,160,2), + (141,76,160,2), + (143,77,160,2), + (144,78,160,2), + (146,79,160,2), + (147,80,160,2), + (149,81,160,2), + (151,82,160,2), + (153,83,160,2), + (155,84,160,2), + (157,85,160,2), + (159,86,160,2), + (160,87,160,2), + (162,88,160,2), + (164,89,160,2), + (166,90,160,2), + (168,91,160,2), + (170,92,160,2), + (172,93,160,2), + (174,94,160,2), + (176,95,160,2), + (177,96,160,2), + (178,97,160,2), + (180,98,160,2), + (182,99,160,2), + (183,100,160,2), + (185,101,160,2), + (187,102,160,2), + (189,103,160,2), + (191,104,160,2), + (192,105,160,2), + (194,106,160,2), + (196,107,160,2), + (198,108,160,2), + (200,109,160,2), + (202,110,160,2), + (204,111,160,2), + (206,112,160,2), + (208,113,160,2), + (209,114,160,2), + (210,115,160,2), + (212,116,160,2), + (214,117,160,2), + (216,118,160,2), + (217,119,160,2), + (219,120,160,2), + (221,121,160,2), + (223,122,160,2), + (225,123,160,2), + (227,124,160,2), + (229,125,160,2), + (230,126,160,2), + (232,127,160,2), + (234,128,160,2), + (235,129,160,2), + (237,130,160,2), + (239,131,160,2), + (241,132,160,2), + (243,133,160,2), + (245,134,160,2), + (247,135,160,2), + (249,136,160,2), + (250,137,160,2), + (252,138,160,2), + (254,139,160,2), + (256,140,160,2), + (258,141,160,2), + (260,142,160,2), + (262,143,160,2), + (264,144,160,2), + (265,145,160,2), + (266,146,160,2), + (268,147,160,2), + (270,148,160,2), + (272,149,160,2), + (274,150,160,2), + (912,545,160,2), + (952,585,163,2), + (856,489,164,2), + (898,531,164,2), + (851,484,168,2), + (880,513,168,2), + (854,487,169,2), + (897,530,169,2), + (957,590,172,2), + (871,504,175,2), + (889,522,175,2), + (956,589,175,2), + (931,564,178,2), + (926,559,179,2), + (863,496,180,2), + (884,517,180,2), + (934,567,182,2), + (953,586,184,2), + (866,499,187,2), + (903,536,187,2), + (927,560,189,2), + (921,554,192,2), + (920,553,195,2), + (933,566,196,2), + (941,574,197,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -1689,193 +1701,186 @@ UNLOCK TABLES; LOCK TABLES `civicrm_address` WRITE; /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */; INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES - (1,201,1,1,0,'469W States St SW',469,'W',NULL,'States','St','SW',NULL,NULL,NULL,NULL,'Brewton',1,1000,NULL,'36426',NULL,1228,31.129008,-87.10173,0,NULL,NULL,NULL), - (2,113,1,1,0,'244S Jackson Path W',244,'S',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Provo',1,1016,NULL,'42267',NULL,1228,37.229645,-86.804803,0,NULL,NULL,NULL), - (3,81,1,1,0,'574K States Ln W',574,'K',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96830',NULL,1228,24.859832,-168.021815,0,NULL,NULL,NULL), - (4,61,1,1,0,'490B States Ave SE',490,'B',NULL,'States','Ave','SE',NULL,NULL,NULL,NULL,'Gloucester',1,1032,NULL,'28528',NULL,1228,34.732744,-76.53869,0,NULL,NULL,NULL), - (5,5,1,1,0,'120V Dowlen Way S',120,'V',NULL,'Dowlen','Way','S',NULL,NULL,NULL,NULL,'Denmark',1,1018,NULL,'04022',NULL,1228,43.969,-70.78804,0,NULL,NULL,NULL), - (6,182,1,1,0,'380X Martin Luther King Pl S',380,'X',NULL,'Martin Luther King','Pl','S',NULL,NULL,NULL,NULL,'Acosta',1,1037,NULL,'15520',NULL,1228,40.112153,-79.06772,0,NULL,NULL,NULL), - (7,179,1,1,0,'749K Bay Blvd SE',749,'K',NULL,'Bay','Blvd','SE',NULL,NULL,NULL,NULL,'Escatawpa',1,1023,NULL,'39552',NULL,1228,30.441072,-88.634482,0,NULL,NULL,NULL), - (8,125,1,1,0,'983Y Bay Path SE',983,'Y',NULL,'Bay','Path','SE',NULL,NULL,NULL,NULL,'Ann Arbor',1,1021,NULL,'48109',NULL,1228,42.291637,-83.71831,0,NULL,NULL,NULL), - (9,90,1,1,0,'648B Martin Luther King St N',648,'B',NULL,'Martin Luther King','St','N',NULL,NULL,NULL,NULL,'Hampstead',1,1028,NULL,'03841',NULL,1228,42.880837,-71.18252,0,NULL,NULL,NULL), - (10,72,1,1,0,'295A Martin Luther King Way NW',295,'A',NULL,'Martin Luther King','Way','NW',NULL,NULL,NULL,NULL,'Wharton',1,1047,NULL,'25208',NULL,1228,37.887883,-81.67191,0,NULL,NULL,NULL), - (11,129,1,1,0,'89O Pine Ln N',89,'O',NULL,'Pine','Ln','N',NULL,NULL,NULL,NULL,'Farmington',1,1021,NULL,'48331',NULL,1228,42.508809,-83.40875,0,NULL,NULL,NULL), - (12,185,1,1,0,'528P Bay Ave NW',528,'P',NULL,'Bay','Ave','NW',NULL,NULL,NULL,NULL,'South Kingstown',1,1038,NULL,'02789',NULL,1228,41.487831,-71.457592,0,NULL,NULL,NULL), - (13,169,1,1,0,'581D Martin Luther King Blvd NE',581,'D',NULL,'Martin Luther King','Blvd','NE',NULL,NULL,NULL,NULL,'Penn',1,1037,NULL,'15675',NULL,1228,40.330326,-79.64061,0,NULL,NULL,NULL), - (14,96,1,1,0,'589N Cadell Pl NE',589,'N',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Village',1,1003,NULL,'71769',NULL,1228,33.236156,-93.234494,0,NULL,NULL,NULL), - (15,110,1,1,0,'788E Lincoln St E',788,'E',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Glenmoore',1,1037,NULL,'19343',NULL,1228,40.094621,-75.74602,0,NULL,NULL,NULL), - (16,160,1,1,0,'507G Northpoint Dr NE',507,'G',NULL,'Northpoint','Dr','NE',NULL,NULL,NULL,NULL,'Brookeland',1,1042,NULL,'75931',NULL,1228,31.109064,-93.99031,0,NULL,NULL,NULL), - (17,106,1,1,0,'803S Northpoint Way NW',803,'S',NULL,'Northpoint','Way','NW',NULL,NULL,NULL,NULL,'Charlotte',1,1032,NULL,'28212',NULL,1228,35.189544,-80.74742,0,NULL,NULL,NULL), - (18,100,1,1,0,'856C Pine Path NE',856,'C',NULL,'Pine','Path','NE',NULL,NULL,NULL,NULL,'Saverton',1,1024,NULL,'63467',NULL,1228,39.650045,-91.270502,0,NULL,NULL,NULL), - (19,20,1,1,0,'745Z Van Ness Ave SE',745,'Z',NULL,'Van Ness','Ave','SE',NULL,NULL,NULL,NULL,'Perrysburg',1,1034,NULL,'43551',NULL,1228,41.540724,-83.58904,0,NULL,NULL,NULL), - (20,155,1,1,0,'165V Maple Pl W',165,'V',NULL,'Maple','Pl','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93711',NULL,1228,36.831723,-119.83198,0,NULL,NULL,NULL), - (21,94,1,1,0,'481Y Beech Ln SE',481,'Y',NULL,'Beech','Ln','SE',NULL,NULL,NULL,NULL,'Hornbrook',1,1004,NULL,'96044',NULL,1228,41.925752,-122.52253,0,NULL,NULL,NULL), - (22,197,1,1,0,'260Z Dowlen Pl SE',260,'Z',NULL,'Dowlen','Pl','SE',NULL,NULL,NULL,NULL,'Los Angeles',1,1004,NULL,'90062',NULL,1228,34.003213,-118.3078,0,NULL,NULL,NULL), - (23,55,1,1,0,'494P Green Way N',494,'P',NULL,'Green','Way','N',NULL,NULL,NULL,NULL,'Brunswick',1,1009,NULL,'31523',NULL,1228,31.212705,-81.60975,0,NULL,NULL,NULL), - (24,142,1,1,0,'337I Beech Pl N',337,'I',NULL,'Beech','Pl','N',NULL,NULL,NULL,NULL,'Milo',1,1014,NULL,'50166',NULL,1228,41.283703,-93.41399,0,NULL,NULL,NULL), - (25,43,1,1,0,'785S Van Ness Way NE',785,'S',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Pueblo',1,1005,NULL,'81001',NULL,1228,38.282872,-104.57029,0,NULL,NULL,NULL), - (26,70,1,1,0,'458X Bay Path E',458,'X',NULL,'Bay','Path','E',NULL,NULL,NULL,NULL,'Hawthorne',1,1008,NULL,'32640',NULL,1228,29.601599,-82.0309,0,NULL,NULL,NULL), - (27,16,1,1,0,'169S Martin Luther King Blvd S',169,'S',NULL,'Martin Luther King','Blvd','S',NULL,NULL,NULL,NULL,'New Effington',1,1040,NULL,'57255',NULL,1228,45.859799,-96.91988,0,NULL,NULL,NULL), - (28,47,1,1,0,'346Q States St NW',346,'Q',NULL,'States','St','NW',NULL,NULL,NULL,NULL,'Esbon',1,1015,NULL,'66941',NULL,1228,39.827165,-98.44356,0,NULL,NULL,NULL), - (29,199,1,1,0,'80K States Ln S',80,'K',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Cleveland',1,1042,NULL,'77327',NULL,1228,30.35469,-95.04514,0,NULL,NULL,NULL), - (30,2,1,1,0,'876X Beech Path SW',876,'X',NULL,'Beech','Path','SW',NULL,NULL,NULL,NULL,'Callaway',1,1019,NULL,'20620',NULL,1228,38.226406,-76.51759,0,NULL,NULL,NULL), - (31,91,1,1,0,'207I Dowlen Path W',207,'I',NULL,'Dowlen','Path','W',NULL,NULL,NULL,NULL,'Pittsburgh',1,1037,NULL,'15223',NULL,1228,40.503768,-79.95164,0,NULL,NULL,NULL), - (32,54,1,1,0,'654B Northpoint Way W',654,'B',NULL,'Northpoint','Way','W',NULL,NULL,NULL,NULL,'San Lorenzo',1,1004,NULL,'94580',NULL,1228,37.678531,-122.13199,0,NULL,NULL,NULL), - (33,30,1,1,0,'555X Lincoln Path NW',555,'X',NULL,'Lincoln','Path','NW',NULL,NULL,NULL,NULL,'Harper',1,1015,NULL,'67058',NULL,1228,37.297898,-98.03916,0,NULL,NULL,NULL), - (34,170,1,1,0,'238O Second Ln NW',238,'O',NULL,'Second','Ln','NW',NULL,NULL,NULL,NULL,'Lyndhurst',1,1029,NULL,'07071',NULL,1228,40.808416,-74.12111,0,NULL,NULL,NULL), - (35,156,1,1,0,'481F Beech Blvd N',481,'F',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Harpers Ferry',1,1014,NULL,'52146',NULL,1228,43.195154,-91.16405,0,NULL,NULL,NULL), - (36,177,1,1,0,'436V El Camino Dr NW',436,'V',NULL,'El Camino','Dr','NW',NULL,NULL,NULL,NULL,'Delaware',1,1035,NULL,'74027',NULL,1228,36.793303,-95.63631,0,NULL,NULL,NULL), - (37,143,1,1,0,'961D Second St SE',961,'D',NULL,'Second','St','SE',NULL,NULL,NULL,NULL,'Chesapeake',1,1045,NULL,'23321',NULL,1228,36.826239,-76.41524,0,NULL,NULL,NULL), - (38,122,1,1,0,'645Q Woodbridge Ave S',645,'Q',NULL,'Woodbridge','Ave','S',NULL,NULL,NULL,NULL,'Port Hope',1,1021,NULL,'48468',NULL,1228,43.938529,-82.77514,0,NULL,NULL,NULL), - (39,196,1,1,0,'150W Beech Blvd E',150,'W',NULL,'Beech','Blvd','E',NULL,NULL,NULL,NULL,'Westminster',1,1004,NULL,'92685',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL), - (40,198,1,1,0,'383M Pine Way E',383,'M',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Cokeburg',1,1037,NULL,'15324',NULL,1228,40.10012,-80.06363,0,NULL,NULL,NULL), - (41,102,1,1,0,'533W Northpoint Way NE',533,'W',NULL,'Northpoint','Way','NE',NULL,NULL,NULL,NULL,'La Ward',1,1042,NULL,'77970',NULL,1228,28.865213,-96.4397,0,NULL,NULL,NULL), - (42,167,1,1,0,'549J Second Dr SE',549,'J',NULL,'Second','Dr','SE',NULL,NULL,NULL,NULL,'Leesburg',1,1008,NULL,'34749',NULL,1228,28.811078,-81.653642,0,NULL,NULL,NULL), - (43,68,1,1,0,'779G Main Path S',779,'G',NULL,'Main','Path','S',NULL,NULL,NULL,NULL,'Mesa',1,1046,NULL,'99343',NULL,1228,46.581454,-119.12107,0,NULL,NULL,NULL), - (44,115,1,1,0,'527K Woodbridge Dr SW',527,'K',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Robbins',1,1041,NULL,'37852',NULL,1228,36.335832,-84.6022,0,NULL,NULL,NULL), - (45,12,1,1,0,'432O Maple Ln SE',432,'O',NULL,'Maple','Ln','SE',NULL,NULL,NULL,NULL,'Baton Rouge',1,1017,NULL,'70826',NULL,1228,30.51589,-91.080373,0,NULL,NULL,NULL), - (46,195,1,1,0,'873T Main Way SE',873,'T',NULL,'Main','Way','SE',NULL,NULL,NULL,NULL,'Malvern',1,1003,NULL,'72104',NULL,1228,34.364093,-92.8146,0,NULL,NULL,NULL), - (47,36,1,1,0,'68C Lincoln Pl N',68,'C',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lakeshore',1,1023,NULL,'39558',NULL,1228,30.239124,-89.459526,0,NULL,NULL,NULL), - (48,32,1,1,0,'851D El Camino Rd SE',851,'D',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Auburndale',1,1048,NULL,'54412',NULL,1228,44.662975,-89.9943,0,NULL,NULL,NULL), - (49,37,1,1,0,'3H College Pl W',3,'H',NULL,'College','Pl','W',NULL,NULL,NULL,NULL,'Springfield',1,1024,NULL,'65898',NULL,1228,37.180349,-93.295137,0,NULL,NULL,NULL), - (50,123,1,1,0,'289J States Rd W',289,'J',NULL,'States','Rd','W',NULL,NULL,NULL,NULL,'Bridgeport',1,1006,NULL,'06608',NULL,1228,41.188746,-73.1813,0,NULL,NULL,NULL), - (51,163,1,1,0,'643M Dowlen Blvd N',643,'M',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Atwood',1,1035,NULL,'74827',NULL,1228,34.949547,-96.33356,0,NULL,NULL,NULL), - (52,200,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,NULL), - (53,14,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,NULL), - (54,52,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,NULL), - (55,6,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,NULL), - (56,11,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,NULL), - (57,139,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,NULL), - (58,130,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,NULL), - (59,124,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,NULL), - (60,147,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,NULL), - (61,107,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,NULL), - (62,161,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,NULL), - (63,59,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,NULL), - (64,117,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,NULL), - (65,88,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,NULL), - (66,135,1,1,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,NULL), - (67,132,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,NULL), - (68,76,1,1,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,NULL), - (69,21,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,NULL), - (70,183,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,NULL), - (71,148,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,NULL), - (72,31,3,1,0,'255Q Second Rd S',255,'Q',NULL,'Second','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Ben Franklin',1,1042,NULL,'75415',NULL,1228,33.460447,-95.75734,0,NULL,NULL,NULL), - (73,194,2,1,0,'255Q Second Rd S',255,'Q',NULL,'Second','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Ben Franklin',1,1042,NULL,'75415',NULL,1228,33.460447,-95.75734,0,NULL,NULL,72), - (74,150,3,1,0,'30U Van Ness Pl SW',30,'U',NULL,'Van Ness','Pl','SW',NULL,'Subscriptions Dept',NULL,NULL,'Novelty',1,1034,NULL,'44073',NULL,1228,41.837043,-80.955545,0,NULL,NULL,NULL), - (75,79,2,1,0,'30U Van Ness Pl SW',30,'U',NULL,'Van Ness','Pl','SW',NULL,'Subscriptions Dept',NULL,NULL,'Novelty',1,1034,NULL,'44073',NULL,1228,41.837043,-80.955545,0,NULL,NULL,74), - (76,133,3,1,0,'66U Lincoln Path N',66,'U',NULL,'Lincoln','Path','N',NULL,'Attn: Development',NULL,NULL,'Guerra',1,1042,NULL,'78360',NULL,1228,27.071318,-98.686327,0,NULL,NULL,NULL), - (77,104,2,1,0,'66U Lincoln Path N',66,'U',NULL,'Lincoln','Path','N',NULL,'Attn: Development',NULL,NULL,'Guerra',1,1042,NULL,'78360',NULL,1228,27.071318,-98.686327,0,NULL,NULL,76), - (78,168,3,1,0,'716B Cadell Rd SE',716,'B',NULL,'Cadell','Rd','SE',NULL,'Editorial Dept',NULL,NULL,'Highmount',1,1031,NULL,'12441',NULL,1228,41.878801,-74.345684,0,NULL,NULL,NULL), - (79,174,3,1,0,'79L Maple Path NE',79,'L',NULL,'Maple','Path','NE',NULL,'Urgent',NULL,NULL,'Mountain View',1,1003,NULL,'72560',NULL,1228,35.863114,-92.11108,0,NULL,NULL,NULL), - (80,187,2,1,0,'79L Maple Path NE',79,'L',NULL,'Maple','Path','NE',NULL,'Urgent',NULL,NULL,'Mountain View',1,1003,NULL,'72560',NULL,1228,35.863114,-92.11108,0,NULL,NULL,79), - (81,190,3,1,0,'914Q Jackson Rd S',914,'Q',NULL,'Jackson','Rd','S',NULL,'Payables Dept.',NULL,NULL,'Jacksonville',1,1008,NULL,'32267',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL), - (82,122,2,0,0,'914Q Jackson Rd S',914,'Q',NULL,'Jackson','Rd','S',NULL,'Payables Dept.',NULL,NULL,'Jacksonville',1,1008,NULL,'32267',NULL,1228,30.34494,-81.683107,0,NULL,NULL,81), - (83,118,3,1,0,'208X Caulder Ave NE',208,'X',NULL,'Caulder','Ave','NE',NULL,'Attn: Accounting',NULL,NULL,'Toledo',1,1034,NULL,'43682',NULL,1228,41.686778,-83.43943,0,NULL,NULL,NULL), - (84,12,2,0,0,'208X Caulder Ave NE',208,'X',NULL,'Caulder','Ave','NE',NULL,'Attn: Accounting',NULL,NULL,'Toledo',1,1034,NULL,'43682',NULL,1228,41.686778,-83.43943,0,NULL,NULL,83), - (85,74,3,1,0,'162B Bay Ln SE',162,'B',NULL,'Bay','Ln','SE',NULL,'c/o OPDC',NULL,NULL,'Longville',1,1022,NULL,'56655',NULL,1228,46.975876,-94.21508,0,NULL,NULL,NULL), - (86,89,3,1,0,'374S Green Ave NW',374,'S',NULL,'Green','Ave','NW',NULL,'Disbursements',NULL,NULL,'El Centro',1,1004,NULL,'92243',NULL,1228,32.783359,-115.57746,0,NULL,NULL,NULL), - (87,171,3,1,0,'577W Jackson Ave S',577,'W',NULL,'Jackson','Ave','S',NULL,'Payables Dept.',NULL,NULL,'San Antonio',1,1042,NULL,'78279',NULL,1228,29.437532,-98.461582,0,NULL,NULL,NULL), - (88,169,2,0,0,'577W Jackson Ave S',577,'W',NULL,'Jackson','Ave','S',NULL,'Payables Dept.',NULL,NULL,'San Antonio',1,1042,NULL,'78279',NULL,1228,29.437532,-98.461582,0,NULL,NULL,87), - (89,121,3,1,0,'792G College St SE',792,'G',NULL,'College','St','SE',NULL,'Churchgate',NULL,NULL,'Redding',1,1004,NULL,'96003',NULL,1228,40.641389,-122.34206,0,NULL,NULL,NULL), - (90,58,2,1,0,'792G College St SE',792,'G',NULL,'College','St','SE',NULL,'Churchgate',NULL,NULL,'Redding',1,1004,NULL,'96003',NULL,1228,40.641389,-122.34206,0,NULL,NULL,89), - (91,50,3,1,0,'224N College Ln E',224,'N',NULL,'College','Ln','E',NULL,'Urgent',NULL,NULL,'Marseilles',1,1012,NULL,'61341',NULL,1228,41.336202,-88.69727,0,NULL,NULL,NULL), - (92,112,3,1,0,'546I Northpoint Dr S',546,'I',NULL,'Northpoint','Dr','S',NULL,'Attn: Development',NULL,NULL,'Jamaica',1,1014,NULL,'50128',NULL,1228,41.855913,-94.29981,0,NULL,NULL,NULL), - (93,53,3,1,0,'15J Jackson Way S',15,'J',NULL,'Jackson','Way','S',NULL,'Attn: Development',NULL,NULL,'Pittsburgh',1,1037,NULL,'15239',NULL,1228,40.482655,-79.74278,0,NULL,NULL,NULL), - (94,180,2,1,0,'15J Jackson Way S',15,'J',NULL,'Jackson','Way','S',NULL,'Attn: Development',NULL,NULL,'Pittsburgh',1,1037,NULL,'15239',NULL,1228,40.482655,-79.74278,0,NULL,NULL,93), - (95,19,3,1,0,'287J College Way N',287,'J',NULL,'College','Way','N',NULL,'Mailstop 101',NULL,NULL,'Bradenton',1,1008,NULL,'34205',NULL,1228,27.485617,-82.58294,0,NULL,NULL,NULL), - (96,69,2,1,0,'287J College Way N',287,'J',NULL,'College','Way','N',NULL,'Mailstop 101',NULL,NULL,'Bradenton',1,1008,NULL,'34205',NULL,1228,27.485617,-82.58294,0,NULL,NULL,95), - (97,111,3,1,0,'131U States Rd NW',131,'U',NULL,'States','Rd','NW',NULL,'Receiving',NULL,NULL,'Crawfordsville',1,1013,NULL,'47939',NULL,1228,40.040014,-86.893614,0,NULL,NULL,NULL), - (98,17,3,1,0,'422O Jackson Path NW',422,'O',NULL,'Jackson','Path','NW',NULL,'Receiving',NULL,NULL,'Lancaster',1,1037,NULL,'17603',NULL,1228,40.03263,-76.33328,0,NULL,NULL,NULL), - (99,57,2,1,0,'422O Jackson Path NW',422,'O',NULL,'Jackson','Path','NW',NULL,'Receiving',NULL,NULL,'Lancaster',1,1037,NULL,'17603',NULL,1228,40.03263,-76.33328,0,NULL,NULL,98), - (100,64,3,1,0,'637S Van Ness Pl NE',637,'S',NULL,'Van Ness','Pl','NE',NULL,'Payables Dept.',NULL,NULL,'Charleston',1,1047,NULL,'25317',NULL,1228,38.335647,-81.613794,0,NULL,NULL,NULL), - (101,120,2,1,0,'637S Van Ness Pl NE',637,'S',NULL,'Van Ness','Pl','NE',NULL,'Payables Dept.',NULL,NULL,'Charleston',1,1047,NULL,'25317',NULL,1228,38.335647,-81.613794,0,NULL,NULL,100), - (102,166,3,1,0,'651E Pine Ave S',651,'E',NULL,'Pine','Ave','S',NULL,'Churchgate',NULL,NULL,'Lambert',1,1023,NULL,'38643',NULL,1228,34.179708,-90.27846,0,NULL,NULL,NULL), - (103,51,3,1,0,'554W Caulder Path SE',554,'W',NULL,'Caulder','Path','SE',NULL,'Editorial Dept',NULL,NULL,'Montier',1,1024,NULL,'65546',NULL,1228,37.153294,-91.337506,0,NULL,NULL,NULL), - (104,75,2,1,0,'554W Caulder Path SE',554,'W',NULL,'Caulder','Path','SE',NULL,'Editorial Dept',NULL,NULL,'Montier',1,1024,NULL,'65546',NULL,1228,37.153294,-91.337506,0,NULL,NULL,103), - (105,46,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,52), - (106,66,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,52), - (107,149,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,52), - (108,163,1,0,0,'871F Dowlen Blvd S',871,'F',NULL,'Dowlen','Blvd','S',NULL,NULL,NULL,NULL,'Emmons',1,1022,NULL,'56029',NULL,1228,43.516115,-93.51768,0,NULL,NULL,NULL), - (109,184,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (110,10,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (111,152,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (112,18,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (113,87,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (114,57,1,0,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (115,126,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (116,63,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (117,175,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (118,93,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (119,29,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (120,23,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (121,101,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (122,40,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (123,136,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (124,194,1,0,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (125,62,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,57), - (126,154,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,57), - (127,162,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,57), - (128,85,1,1,0,'997H Pine Dr SE',997,'H',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Vancourt',1,1042,NULL,'76955',NULL,1228,31.305402,-100.12871,0,NULL,NULL,NULL), - (129,3,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (130,58,1,0,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (131,131,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (132,103,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (133,22,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (134,60,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (135,158,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (136,84,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (137,73,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (138,99,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (139,9,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (140,65,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (141,186,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,61), - (142,80,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,61), - (143,159,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,61), - (144,82,1,1,0,'470Y Beech Rd S',470,'Y',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Inverness',1,1008,NULL,'34452',NULL,1228,28.793722,-82.35021,0,NULL,NULL,NULL), - (145,48,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (146,187,1,0,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (147,141,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (148,45,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (149,128,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (150,8,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (151,140,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (152,157,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (153,4,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,64), - (154,178,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,64), - (155,127,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,64), - (156,144,1,1,0,'542H Van Ness Way NE',542,'H',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Denver',1,1005,NULL,'80279',NULL,1228,39.738752,-104.408349,0,NULL,NULL,NULL), - (157,56,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,65), - (158,34,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,65), - (159,193,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,65), - (160,67,1,1,0,'129W El Camino Pl N',129,'W',NULL,'El Camino','Pl','N',NULL,NULL,NULL,NULL,'Holcomb',1,1012,NULL,'61043',NULL,1228,42.045123,-89.313593,0,NULL,NULL,NULL), - (161,39,1,1,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,66), - (162,79,1,0,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,66), - (163,49,1,1,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,66), - (164,77,1,1,0,'397X Second Dr N',397,'X',NULL,'Second','Dr','N',NULL,NULL,NULL,NULL,'Houston',1,1007,NULL,'19954',NULL,1228,38.909621,-75.51264,0,NULL,NULL,NULL), - (165,137,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (166,173,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (167,27,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (168,172,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (169,108,1,1,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,68), - (170,134,1,1,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,68), - (171,75,1,0,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,68), - (172,69,1,0,0,'817W Dowlen St S',817,'W',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60690',NULL,1228,41.811929,-87.68732,0,NULL,NULL,NULL), - (173,38,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (174,151,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (175,176,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (176,42,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (177,191,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (178,13,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (179,41,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (180,145,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (181,25,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (182,28,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (183,92,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (184,71,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (185,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL), - (186,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL), - (187,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); + (1,25,1,1,0,'111A Lincoln Pl W',111,'A',NULL,'Lincoln','Pl','W',NULL,NULL,NULL,NULL,'Glen',1,1047,NULL,'25088',NULL,1228,38.382145,-81.19842,0,NULL,NULL,NULL), + (2,35,1,1,0,'965W Maple Path S',965,'W',NULL,'Maple','Path','S',NULL,NULL,NULL,NULL,'Columbus',1,1042,NULL,'78934',NULL,1228,29.712052,-96.56134,0,NULL,NULL,NULL), + (3,142,1,1,0,'805O Pine Ln W',805,'O',NULL,'Pine','Ln','W',NULL,NULL,NULL,NULL,'Collingswood',1,1029,NULL,'08108',NULL,1228,39.915263,-75.06401,0,NULL,NULL,NULL), + (4,5,1,1,0,'173K Northpoint St W',173,'K',NULL,'Northpoint','St','W',NULL,NULL,NULL,NULL,'Valparaiso',1,1013,NULL,'46385',NULL,1228,41.484652,-87.11269,0,NULL,NULL,NULL), + (5,4,1,1,0,'162H Bay Path W',162,'H',NULL,'Bay','Path','W',NULL,NULL,NULL,NULL,'Mound',1,1022,NULL,'55364',NULL,1228,44.933712,-93.66038,0,NULL,NULL,NULL), + (6,9,1,1,0,'337O Caulder Path NE',337,'O',NULL,'Caulder','Path','NE',NULL,NULL,NULL,NULL,'Moro',1,1012,NULL,'62067',NULL,1228,38.91973,-90.01241,0,NULL,NULL,NULL), + (7,123,1,1,0,'11U Cadell Pl W',11,'U',NULL,'Cadell','Pl','W',NULL,NULL,NULL,NULL,'Medford',1,1036,NULL,'97504',NULL,1228,42.334496,-122.83547,0,NULL,NULL,NULL), + (8,83,1,1,0,'891B States Rd SE',891,'B',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Chappell',1,1016,NULL,'40816',NULL,1228,36.987495,-83.32795,0,NULL,NULL,NULL), + (9,186,1,1,0,'933Q Cadell Pl SE',933,'Q',NULL,'Cadell','Pl','SE',NULL,NULL,NULL,NULL,'Perris',1,1004,NULL,'92599',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL), + (10,89,1,1,0,'531K El Camino Path SE',531,'K',NULL,'El Camino','Path','SE',NULL,NULL,NULL,NULL,'Bloomingburg',1,1031,NULL,'12721',NULL,1228,41.564426,-74.4265,0,NULL,NULL,NULL), + (11,194,1,1,0,'101I Jackson Rd SE',101,'I',NULL,'Jackson','Rd','SE',NULL,NULL,NULL,NULL,'Hughesville',1,1019,NULL,'20637',NULL,1228,38.523408,-76.75435,0,NULL,NULL,NULL), + (12,168,1,1,0,'559U El Camino Pl NW',559,'U',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Youngsville',1,1037,NULL,'16371',NULL,1228,41.860809,-79.31703,0,NULL,NULL,NULL), + (13,172,1,1,0,'552E States Way S',552,'E',NULL,'States','Way','S',NULL,NULL,NULL,NULL,'Bearden',1,1003,NULL,'71720',NULL,1228,33.733334,-92.64664,0,NULL,NULL,NULL), + (14,117,1,1,0,'514D Main Ave SE',514,'D',NULL,'Main','Ave','SE',NULL,NULL,NULL,NULL,'Annandale',1,1022,NULL,'55302',NULL,1228,45.246631,-94.11692,0,NULL,NULL,NULL), + (15,197,1,1,0,'671A Woodbridge Rd W',671,'A',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'South Bend',1,1013,NULL,'46699',NULL,1228,41.596769,-86.292991,0,NULL,NULL,NULL), + (16,185,1,1,0,'937U Maple Dr SE',937,'U',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78236',NULL,1228,29.389767,-98.61251,0,NULL,NULL,NULL), + (17,132,1,1,0,'485W States Pl W',485,'W',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Pocono Pines',1,1037,NULL,'18350',NULL,1228,41.116737,-75.46037,0,NULL,NULL,NULL), + (18,94,1,1,0,'121D Woodbridge Rd N',121,'D',NULL,'Woodbridge','Rd','N',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63195',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL), + (19,144,1,1,0,'468J Second Dr NE',468,'J',NULL,'Second','Dr','NE',NULL,NULL,NULL,NULL,'Wichita Falls',1,1042,NULL,'76305',NULL,1228,33.996515,-98.51781,0,NULL,NULL,NULL), + (20,87,1,1,0,'668P Caulder Ave NE',668,'P',NULL,'Caulder','Ave','NE',NULL,NULL,NULL,NULL,'Lake Linden',1,1021,NULL,'49945',NULL,1228,47.17583,-88.32904,0,NULL,NULL,NULL), + (21,42,1,1,0,'465R Lincoln Pl E',465,'R',NULL,'Lincoln','Pl','E',NULL,NULL,NULL,NULL,'Leon',1,1035,NULL,'73441',NULL,1228,33.877679,-97.42814,0,NULL,NULL,NULL), + (22,80,1,1,0,'454W Beech Ln S',454,'W',NULL,'Beech','Ln','S',NULL,NULL,NULL,NULL,'Hawi',1,1010,NULL,'96719',NULL,1228,20.241109,-155.84459,0,NULL,NULL,NULL), + (23,120,1,1,0,'48O Cadell Path S',48,'O',NULL,'Cadell','Path','S',NULL,NULL,NULL,NULL,'Danville',1,1037,NULL,'17821',NULL,1228,40.985594,-76.63449,0,NULL,NULL,NULL), + (24,169,1,1,0,'382A Caulder Path N',382,'A',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Mendota',1,1022,NULL,'55150',NULL,1228,44.884265,-93.16415,0,NULL,NULL,NULL), + (25,130,1,1,0,'501Z Pine Ave N',501,'Z',NULL,'Pine','Ave','N',NULL,NULL,NULL,NULL,'Barnesville',1,1009,NULL,'30204',NULL,1228,33.05413,-84.14862,0,NULL,NULL,NULL), + (26,17,1,1,0,'421M Beech Path SE',421,'M',NULL,'Beech','Path','SE',NULL,NULL,NULL,NULL,'Pope A F B',1,1032,NULL,'28308',NULL,1228,35.173377,-79.013799,0,NULL,NULL,NULL), + (27,38,1,1,0,'138Q Caulder Pl N',138,'Q',NULL,'Caulder','Pl','N',NULL,NULL,NULL,NULL,'Lawen',1,1036,NULL,'97740',NULL,1228,43.019785,-119.069624,0,NULL,NULL,NULL), + (28,174,1,1,0,'740V Cadell Blvd W',740,'V',NULL,'Cadell','Blvd','W',NULL,NULL,NULL,NULL,'Mineral Springs',1,1032,NULL,'28108',NULL,1228,34.916253,-80.640383,0,NULL,NULL,NULL), + (29,113,1,1,0,'870B Main Rd NW',870,'B',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Punta Gorda',1,1008,NULL,'33599',NULL,1228,26.871443,-82.007115,0,NULL,NULL,NULL), + (30,171,1,1,0,'88Q Caulder Dr E',88,'Q',NULL,'Caulder','Dr','E',NULL,NULL,NULL,NULL,'Sutter',1,1012,NULL,'62373',NULL,1228,40.240004,-91.35197,0,NULL,NULL,NULL), + (31,97,1,1,0,'723M Beech St SE',723,'M',NULL,'Beech','St','SE',NULL,NULL,NULL,NULL,'Pacific',1,1024,NULL,'63069',NULL,1228,38.482353,-90.73892,0,NULL,NULL,NULL), + (32,29,1,1,0,'955M Lincoln Pl NE',955,'M',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Fort Myers',1,1008,NULL,'33913',NULL,1228,26.542097,-81.69984,0,NULL,NULL,NULL), + (33,138,1,1,0,'396E Maple Way N',396,'E',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Vergennes',1,1012,NULL,'62994',NULL,1228,37.901441,-89.33485,0,NULL,NULL,NULL), + (34,105,1,1,0,'806O Pine Way E',806,'O',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Vernal',1,1043,NULL,'84078',NULL,1228,40.514262,-109.54223,0,NULL,NULL,NULL), + (35,192,1,1,0,'566U Dowlen Way NW',566,'U',NULL,'Dowlen','Way','NW',NULL,NULL,NULL,NULL,'Dodson',1,1042,NULL,'79230',NULL,1228,34.698438,-100.06623,0,NULL,NULL,NULL), + (36,37,1,1,0,'21G Martin Luther King Pl E',21,'G',NULL,'Martin Luther King','Pl','E',NULL,NULL,NULL,NULL,'Haviland',1,1034,NULL,'45851',NULL,1228,41.030911,-84.60213,0,NULL,NULL,NULL), + (37,165,1,1,0,'530L El Camino Pl NW',530,'L',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Ringgold',1,1045,NULL,'24586',NULL,1228,36.595244,-79.28647,0,NULL,NULL,NULL), + (38,184,1,1,0,'25P Cadell St W',25,'P',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Holder',1,1008,NULL,'34445',NULL,1228,28.948753,-82.406476,0,NULL,NULL,NULL), + (39,158,1,1,0,'154C Dowlen Path S',154,'C',NULL,'Dowlen','Path','S',NULL,NULL,NULL,NULL,'Butternut',1,1048,NULL,'54514',NULL,1228,46.024995,-90.44778,0,NULL,NULL,NULL), + (40,108,1,1,0,'419Q Dowlen Way SW',419,'Q',NULL,'Dowlen','Way','SW',NULL,NULL,NULL,NULL,'Port Washington',1,1048,NULL,'53074',NULL,1228,43.40181,-87.88001,0,NULL,NULL,NULL), + (41,96,1,1,0,'975E College Path S',975,'E',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Squirrel',1,1011,NULL,'83447',NULL,1228,44.319199,-111.60171,0,NULL,NULL,NULL), + (42,188,1,1,0,'377K Caulder Ave NW',377,'K',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Newtown',1,1013,NULL,'47969',NULL,1228,40.205056,-87.15089,0,NULL,NULL,NULL), + (43,58,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,NULL), + (44,190,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,NULL), + (45,155,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,NULL), + (46,26,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,NULL), + (47,53,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,NULL), + (48,156,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,NULL), + (49,131,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,NULL), + (50,10,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,NULL), + (51,177,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,NULL), + (52,3,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), + (53,191,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,NULL), + (54,134,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,NULL), + (55,73,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,NULL), + (56,88,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,NULL), + (57,23,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,NULL), + (58,51,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,NULL), + (59,43,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,NULL), + (60,75,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,NULL), + (61,65,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,NULL), + (62,159,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,NULL), + (63,103,3,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,NULL), + (64,187,2,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,63), + (65,135,3,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL), + (66,115,2,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,65), + (67,77,3,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,NULL), + (68,81,2,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,67), + (69,146,3,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,NULL), + (70,178,2,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,69), + (71,50,3,1,0,'763G College Ave S',763,'G',NULL,'College','Ave','S',NULL,'c/o PO Plus',NULL,NULL,'Herrick',1,1012,NULL,'62431',NULL,1228,39.228594,-88.98873,0,NULL,NULL,NULL), + (72,22,3,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,NULL), + (73,33,2,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,72), + (74,59,3,1,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,NULL), + (75,185,2,0,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,74), + (76,68,3,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,NULL), + (77,85,2,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,76), + (78,133,3,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,NULL), + (79,72,2,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,78), + (80,52,3,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,NULL), + (81,109,2,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,80), + (82,19,3,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,NULL), + (83,129,2,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,82), + (84,161,3,1,0,'617Q Maple Dr SW',617,'Q',NULL,'Maple','Dr','SW',NULL,'Attn: Development',NULL,NULL,'Joppa',1,1000,NULL,'35087',NULL,1228,34.303718,-86.58323,0,NULL,NULL,NULL), + (85,69,3,1,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,NULL), + (86,4,2,0,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,85), + (87,95,3,1,0,'571U El Camino Pl S',571,'U',NULL,'El Camino','Pl','S',NULL,'Donor Relations',NULL,NULL,'Lagrange',1,1034,NULL,'44050',NULL,1228,41.259352,-82.13542,0,NULL,NULL,NULL), + (88,64,3,1,0,'475G Dowlen Ln SW',475,'G',NULL,'Dowlen','Ln','SW',NULL,'Donor Relations',NULL,NULL,'Yamhill',1,1036,NULL,'97148',NULL,1228,45.352399,-123.22502,0,NULL,NULL,NULL), + (89,139,3,1,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL), + (90,197,2,0,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,89), + (91,122,3,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,NULL), + (92,18,2,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,91), + (93,7,3,1,0,'21W Caulder Blvd SE',21,'W',NULL,'Caulder','Blvd','SE',NULL,'Urgent',NULL,NULL,'Hanover',1,1019,NULL,'21098',NULL,1228,38.974203,-76.594942,0,NULL,NULL,NULL), + (94,148,3,1,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,NULL), + (95,96,2,0,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,94), + (96,67,3,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,NULL), + (97,76,2,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,96), + (98,16,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (99,24,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (100,189,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (101,86,1,1,0,'258S Martin Luther King Pl W',258,'S',NULL,'Martin Luther King','Pl','W',NULL,NULL,NULL,NULL,'Stafford Springs',1,1006,NULL,'06076',NULL,1228,41.979871,-72.27863,0,NULL,NULL,NULL), + (102,176,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (103,151,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (104,20,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (105,141,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (106,200,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (107,125,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (108,55,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (109,49,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (110,179,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (111,34,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (112,164,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (113,150,1,1,0,'107Y Cadell Blvd S',107,'Y',NULL,'Cadell','Blvd','S',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73131',NULL,1228,35.576357,-97.46924,0,NULL,NULL,NULL), + (114,193,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (115,44,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (116,60,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (117,183,1,1,0,'885A Second Rd W',885,'A',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Bouse',1,1002,NULL,'85325',NULL,1228,33.946064,-113.9537,0,NULL,NULL,NULL), + (118,109,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (119,76,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (120,126,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (121,84,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (122,149,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (123,147,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (124,74,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (125,46,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (126,163,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (127,162,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (128,66,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (129,140,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (130,14,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (131,170,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (132,45,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (133,21,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (134,199,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (135,112,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (136,79,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (137,124,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (138,91,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (139,104,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (140,92,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (141,48,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (142,100,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (143,160,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (144,57,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (145,110,1,1,0,'717I Beech Ave SW',717,'I',NULL,'Beech','Ave','SW',NULL,NULL,NULL,NULL,'Shreveport',1,1017,NULL,'71161',NULL,1228,32.607556,-93.75256,0,NULL,NULL,NULL), + (146,6,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (147,13,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (148,62,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (149,198,1,1,0,'866W College Rd SE',866,'W',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Senoia',1,1009,NULL,'30276',NULL,1228,33.281102,-84.58017,0,NULL,NULL,NULL), + (150,137,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (151,99,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (152,116,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (153,15,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (154,182,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (155,114,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (156,32,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (157,180,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (158,90,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (159,39,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (160,41,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (161,18,1,0,0,'276T Caulder Blvd W',276,'T',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Yanceyville',1,1032,NULL,'27379',NULL,1228,36.387904,-79.33107,0,NULL,NULL,NULL), + (162,121,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (163,196,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (164,195,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (165,2,1,1,0,'552C Pine Blvd W',552,'C',NULL,'Pine','Blvd','W',NULL,NULL,NULL,NULL,'Ozawkie',1,1015,NULL,'66070',NULL,1228,39.201834,-95.44963,0,NULL,NULL,NULL), + (166,12,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (167,61,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (168,63,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (169,154,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (170,181,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (171,175,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (172,85,1,0,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (173,47,1,1,0,'684E Second Ave NE',684,'E',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Umatilla',1,1008,NULL,'32784',NULL,1228,28.948549,-81.70621,0,NULL,NULL,NULL), + (174,118,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (175,111,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (176,152,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (177,36,1,1,0,'917Y Bay Dr NW',917,'Y',NULL,'Bay','Dr','NW',NULL,NULL,NULL,NULL,'Woodstock',1,1012,NULL,'60098',NULL,1228,42.316121,-88.43884,0,NULL,NULL,NULL), + (178,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL), + (179,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL), + (180,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */; UNLOCK TABLES; @@ -1985,208 +1990,208 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; INSERT INTO `civicrm_contact` (`id`, `contact_type`, `external_identifier`, `display_name`, `organization_name`, `contact_sub_type`, `first_name`, `middle_name`, `last_name`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `sort_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `hash`, `api_key`, `source`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`, `preferred_mail_format`) VALUES - (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-07 01:51:16','Both'), - (2,'Individual',NULL,'Sonny McReynolds',NULL,NULL,'Sonny','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'3975405155',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny McReynolds',NULL,2,'1965-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (3,'Individual',NULL,'Teresa Prentice-Zope',NULL,NULL,'Teresa','Y','Prentice-Zope',0,0,0,0,0,0,NULL,'Prentice-Zope, Teresa',NULL,NULL,NULL,'4',NULL,'4026368595',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Prentice-Zope',NULL,1,'1977-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (4,'Individual',NULL,'Mrs. Eleonor Wattson-Terrell',NULL,NULL,'Eleonor','','Wattson-Terrell',0,0,0,0,1,0,NULL,'Wattson-Terrell, Eleonor',NULL,NULL,NULL,'5',NULL,'362340920',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Mrs. Eleonor Wattson-Terrell',NULL,1,'1967-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (5,'Individual',NULL,'Dr. Daren Robertson II',NULL,NULL,'Daren','O','Robertson',0,0,0,0,0,0,NULL,'Robertson, Daren',NULL,NULL,NULL,NULL,NULL,'3531188522',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (6,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (7,'Individual',NULL,'Merrie Bachman',NULL,NULL,'Merrie','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Merrie',NULL,NULL,NULL,'4',NULL,'2483805039',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Bachman',NULL,NULL,'1987-03-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (8,'Individual',NULL,'Dr. Merrie Dimitrov-Deforest',NULL,NULL,'Merrie','Z','Dimitrov-Deforest',0,0,0,0,0,0,NULL,'Dimitrov-Deforest, Merrie',NULL,NULL,NULL,'5',NULL,'2904668003',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Dr. Merrie Dimitrov-Deforest',NULL,NULL,'1998-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (9,'Individual',NULL,'Nicole Zope-Robertson',NULL,NULL,'Nicole','','Zope-Robertson',0,0,0,0,1,0,NULL,'Zope-Robertson, Nicole',NULL,NULL,NULL,'5',NULL,'4230311701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Zope-Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (10,'Individual',NULL,'blackwelln@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'blackwelln@spamalot.co.pl',NULL,NULL,NULL,'2',NULL,'916898902',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear blackwelln@spamalot.co.pl',1,NULL,'Dear blackwelln@spamalot.co.pl',1,NULL,'blackwelln@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (11,'Household',NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,'845831176',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Lee family',5,NULL,'Dear Lee family',2,NULL,'Lee family',NULL,NULL,NULL,0,NULL,'Lee family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (12,'Individual',NULL,'Lawerence Adams','Ohio Advocacy Association',NULL,'Lawerence','K','Adams',0,0,0,0,0,0,NULL,'Adams, Lawerence',NULL,NULL,NULL,NULL,NULL,'2270644856',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Adams',NULL,2,'1971-11-12',0,NULL,NULL,NULL,NULL,NULL,118,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (13,'Individual',NULL,'Russell Samuels III',NULL,NULL,'Russell','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Russell',NULL,NULL,NULL,NULL,NULL,'3958135330',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Samuels III',NULL,2,'1988-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (14,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (15,'Individual',NULL,'Landon Cooper Jr.',NULL,NULL,'Landon','','Cooper',1,0,0,0,0,0,NULL,'Cooper, Landon',NULL,NULL,NULL,NULL,NULL,'3917161471',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cooper Jr.',NULL,2,'1985-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (16,'Individual',NULL,'Dr. Junko McReynolds',NULL,NULL,'Junko','U','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Junko',NULL,NULL,NULL,'1',NULL,'923065727',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko McReynolds',NULL,NULL,'1965-09-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (17,'Organization',NULL,'Lancaster Sustainability Services','Lancaster Sustainability Services',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Lancaster Sustainability Services',NULL,NULL,NULL,'3',NULL,'2607308804',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lancaster Sustainability Services',NULL,NULL,NULL,0,NULL,NULL,57,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (18,'Individual',NULL,'Rosario Blackwell III',NULL,NULL,'Rosario','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Rosario',NULL,NULL,NULL,NULL,NULL,'212312556',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Blackwell III',NULL,2,'1981-01-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (19,'Organization',NULL,'Local Culture Collective','Local Culture Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Local Culture Collective',NULL,NULL,NULL,NULL,NULL,'516325396',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Culture Collective',NULL,NULL,NULL,0,NULL,NULL,69,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (20,'Individual',NULL,'Roland DÃaz III',NULL,NULL,'Roland','Z','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Roland',NULL,NULL,NULL,NULL,NULL,'2252303156',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland DÃaz III',NULL,NULL,'1952-11-05',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (21,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Blackwell family',NULL,NULL,NULL,'2',NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (22,'Individual',NULL,'Ms. Laree Jameson',NULL,NULL,'Laree','Y','Jameson',0,0,0,0,1,0,NULL,'Jameson, Laree',NULL,NULL,NULL,'2',NULL,'1055131510',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Jameson',NULL,1,'1996-11-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (23,'Individual',NULL,'Troy McReynolds',NULL,NULL,'Troy','','McReynolds',1,0,0,0,1,0,NULL,'McReynolds, Troy',NULL,NULL,NULL,'5',NULL,'2359789954',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy McReynolds',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (24,'Individual',NULL,'ivanov.eleonor61@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ivanov.eleonor61@fakemail.co.nz',NULL,NULL,NULL,'4',NULL,'2903011637',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear ivanov.eleonor61@fakemail.co.nz',1,NULL,'Dear ivanov.eleonor61@fakemail.co.nz',1,NULL,'ivanov.eleonor61@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (25,'Individual',NULL,'Ms. Merrie Dimitrov',NULL,NULL,'Merrie','','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Merrie',NULL,NULL,NULL,'4',NULL,'779748961',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (26,'Individual',NULL,'Craig Cruz',NULL,NULL,'Craig','U','Cruz',0,0,0,0,0,0,NULL,'Cruz, Craig',NULL,NULL,NULL,'4',NULL,'2921138487',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Cruz',NULL,2,'2008-05-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (27,'Individual',NULL,'Brigette Wilson',NULL,NULL,'Brigette','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Brigette',NULL,NULL,NULL,NULL,NULL,'4271380473',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (28,'Individual',NULL,'Maria Cruz-Dimitrov Jr.',NULL,NULL,'Maria','','Cruz-Dimitrov',0,0,0,0,0,0,NULL,'Cruz-Dimitrov, Maria',NULL,NULL,NULL,NULL,NULL,'3267119889',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Cruz-Dimitrov Jr.',NULL,2,'1981-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (29,'Individual',NULL,'mcreynolds.lashawnda@mymail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'mcreynolds.lashawnda@mymail.info',NULL,NULL,NULL,'4',NULL,'268711653',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear mcreynolds.lashawnda@mymail.info',1,NULL,'Dear mcreynolds.lashawnda@mymail.info',1,NULL,'mcreynolds.lashawnda@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (30,'Individual',NULL,'smith.o.mei95@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'smith.o.mei95@fishmail.co.nz',NULL,NULL,NULL,'2',NULL,'3826978335',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear smith.o.mei95@fishmail.co.nz',1,NULL,'Dear smith.o.mei95@fishmail.co.nz',1,NULL,'smith.o.mei95@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (31,'Organization',NULL,'Ben Franklin Music Association','Ben Franklin Music Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ben Franklin Music Association',NULL,NULL,NULL,'3',NULL,'390038760',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ben Franklin Music Association',NULL,NULL,NULL,0,NULL,NULL,194,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (32,'Individual',NULL,'Mr. Toby Grant',NULL,NULL,'Toby','U','Grant',0,0,0,0,0,0,NULL,'Grant, Toby',NULL,NULL,NULL,NULL,NULL,'944702831',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Grant',NULL,NULL,'1990-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (33,'Individual',NULL,'rosariosmith@testing.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'rosariosmith@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'2541418479',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear rosariosmith@testing.co.uk',1,NULL,'Dear rosariosmith@testing.co.uk',1,NULL,'rosariosmith@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (34,'Individual',NULL,'Iris DÃaz',NULL,NULL,'Iris','S','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Iris',NULL,NULL,NULL,'4',NULL,'2732168560',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris DÃaz',NULL,1,'1982-11-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (35,'Individual',NULL,'Maxwell Terry',NULL,NULL,'Maxwell','D','Terry',1,0,0,0,0,0,NULL,'Terry, Maxwell',NULL,NULL,NULL,'2',NULL,'528410264',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Terry',NULL,2,'1948-02-05',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (36,'Individual',NULL,'Kiara Grant',NULL,NULL,'Kiara','','Grant',0,0,0,0,0,0,NULL,'Grant, Kiara',NULL,NULL,NULL,NULL,NULL,'334214546',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Grant',NULL,1,'1947-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (37,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',1,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (38,'Individual',NULL,'Elizabeth Blackwell',NULL,NULL,'Elizabeth','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elizabeth',NULL,NULL,NULL,'3',NULL,'197038680',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Blackwell',NULL,NULL,'1969-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (39,'Individual',NULL,'Mrs. Lashawnda Jacobs',NULL,NULL,'Lashawnda','W','Jacobs',0,1,0,0,1,0,NULL,'Jacobs, Lashawnda',NULL,NULL,NULL,'4',NULL,'1880205754',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Jacobs',NULL,1,'1955-01-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (40,'Individual',NULL,'Mr. Lawerence Lee Sr.',NULL,NULL,'Lawerence','','Lee',0,0,0,0,1,0,NULL,'Lee, Lawerence',NULL,NULL,NULL,NULL,NULL,'834383091',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Lee Sr.',NULL,2,'1995-11-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (41,'Individual',NULL,'Rolando Samuels',NULL,NULL,'Rolando','S','Samuels',0,0,0,0,1,0,NULL,'Samuels, Rolando',NULL,NULL,NULL,'5',NULL,'210030795',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (42,'Individual',NULL,'Dr. Brittney Blackwell',NULL,NULL,'Brittney','','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Brittney',NULL,NULL,NULL,'1',NULL,'4167007006',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (43,'Individual',NULL,'Mr. Shad Lee Sr.',NULL,NULL,'Shad','D','Lee',0,0,0,0,0,0,NULL,'Lee, Shad',NULL,NULL,NULL,'5',NULL,'2277508634',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Mr. Shad Lee Sr.',NULL,2,'2001-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (44,'Individual',NULL,'blackwellm13@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'blackwellm13@spamalot.co.pl',NULL,NULL,NULL,'5',NULL,'1436682692',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwellm13@spamalot.co.pl',1,NULL,'Dear blackwellm13@spamalot.co.pl',1,NULL,'blackwellm13@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (45,'Individual',NULL,'lawerencejones@fishmail.co.uk','States Action Systems',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'lawerencejones@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,'393377011',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear lawerencejones@fishmail.co.uk',1,NULL,'Dear lawerencejones@fishmail.co.uk',1,NULL,'lawerencejones@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,111,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (46,'Individual',NULL,'Shauna Jensen',NULL,NULL,'Shauna','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Shauna',NULL,NULL,NULL,NULL,NULL,'108136044',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Jensen',NULL,1,'1957-10-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (47,'Individual',NULL,'Valene Barkley',NULL,NULL,'Valene','O','Barkley',1,0,0,0,0,0,NULL,'Barkley, Valene',NULL,NULL,NULL,NULL,NULL,'4039078340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Barkley',NULL,1,'1975-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (48,'Individual',NULL,'mterrell83@notmail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'mterrell83@notmail.com',NULL,NULL,NULL,'3',NULL,'2885628683',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear mterrell83@notmail.com',1,NULL,'Dear mterrell83@notmail.com',1,NULL,'mterrell83@notmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (49,'Individual',NULL,'Beula Jacobs',NULL,NULL,'Beula','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Beula',NULL,NULL,NULL,'3',NULL,'41714917',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (50,'Organization',NULL,'College Advocacy Partnership','College Advocacy Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'College Advocacy Partnership',NULL,NULL,NULL,NULL,NULL,'592323356',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Advocacy Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (51,'Organization',NULL,'Montier Peace Solutions','Montier Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Montier Peace Solutions',NULL,NULL,NULL,'2',NULL,'1489970106',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Montier Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,75,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (52,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,'3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (53,'Organization',NULL,'Community Education Partnership','Community Education Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Community Education Partnership',NULL,NULL,NULL,NULL,NULL,'2557431911',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Education Partnership',NULL,NULL,NULL,0,NULL,NULL,180,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (54,'Individual',NULL,'gonzlez.carlos@mymail.org','Mississippi Wellness Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'gonzlez.carlos@mymail.org',NULL,NULL,NULL,'3',NULL,'603658809',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear gonzlez.carlos@mymail.org',1,NULL,'Dear gonzlez.carlos@mymail.org',1,NULL,'gonzlez.carlos@mymail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,166,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (55,'Individual',NULL,'Kathlyn Samson',NULL,NULL,'Kathlyn','X','Samson',0,0,0,0,0,0,NULL,'Samson, Kathlyn',NULL,NULL,NULL,'4',NULL,'2952894256',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Samson',NULL,NULL,'1935-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (56,'Individual',NULL,'Ms. Ashley Wilson-DÃaz',NULL,NULL,'Ashley','W','Wilson-DÃaz',0,0,0,0,1,0,NULL,'Wilson-DÃaz, Ashley',NULL,NULL,NULL,NULL,NULL,'2387950815',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ms. Ashley Wilson-DÃaz',NULL,1,'1964-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (57,'Individual',NULL,'tdimitrov@fishmail.net','Lancaster Sustainability Services',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'tdimitrov@fishmail.net',NULL,NULL,NULL,'5',NULL,'1109834999',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear tdimitrov@fishmail.net',1,NULL,'Dear tdimitrov@fishmail.net',1,NULL,'tdimitrov@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,17,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (58,'Individual',NULL,'Juliann Zope','California Sports Collective',NULL,'Juliann','','Zope',0,0,0,0,0,0,NULL,'Zope, Juliann',NULL,NULL,NULL,NULL,NULL,'2334217579',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Zope',NULL,1,'2006-05-12',0,NULL,NULL,NULL,NULL,NULL,121,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (59,'Household',NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,'4',NULL,'1341415404',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov-Deforest family',5,NULL,'Dear Dimitrov-Deforest family',2,NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,0,NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (60,'Individual',NULL,'Brigette Jameson',NULL,NULL,'Brigette','K','Jameson',0,0,0,0,0,0,NULL,'Jameson, Brigette',NULL,NULL,NULL,NULL,NULL,'839229848',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (61,'Individual',NULL,'Mrs. Rebekah Barkley',NULL,NULL,'Rebekah','Q','Barkley',1,1,0,0,0,0,NULL,'Barkley, Rebekah',NULL,NULL,NULL,NULL,NULL,'3218825396',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah Barkley',NULL,1,'1999-08-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (62,'Individual',NULL,'Esta Samson-Cruz',NULL,NULL,'Esta','','Samson-Cruz',0,0,0,0,1,0,NULL,'Samson-Cruz, Esta',NULL,NULL,NULL,'4',NULL,'4158236520',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Samson-Cruz',NULL,1,'1957-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (63,'Individual',NULL,'Dr. Winford Dimitrov Jr.',NULL,NULL,'Winford','H','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Winford',NULL,NULL,NULL,NULL,NULL,'1833902224',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Dimitrov Jr.',NULL,2,'1966-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (64,'Organization',NULL,'West Virginia Software Center','West Virginia Software Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'West Virginia Software Center',NULL,NULL,NULL,NULL,NULL,'3912809978',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'West Virginia Software Center',NULL,NULL,NULL,0,NULL,NULL,120,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (65,'Individual',NULL,'Dr. Rolando Zope III',NULL,NULL,'Rolando','','Zope',0,0,0,0,0,0,NULL,'Zope, Rolando',NULL,NULL,NULL,NULL,NULL,'1046286833',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Zope III',NULL,2,'1973-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (66,'Individual',NULL,'Mrs. Beula Jensen',NULL,NULL,'Beula','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Beula',NULL,NULL,NULL,'2',NULL,'1956895432',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Jensen',NULL,1,'2001-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (67,'Individual',NULL,'Mr. Ray DÃaz',NULL,NULL,'Ray','','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Ray',NULL,NULL,NULL,'1',NULL,'3718606609',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (68,'Individual',NULL,'yadavm72@notmail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'yadavm72@notmail.org',NULL,NULL,NULL,'2',NULL,'1624352172',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear yadavm72@notmail.org',1,NULL,'Dear yadavm72@notmail.org',1,NULL,'yadavm72@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (69,'Individual',NULL,'Maxwell McReynolds II','Local Culture Collective',NULL,'Maxwell','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Maxwell',NULL,NULL,NULL,'5',NULL,'961058467',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell McReynolds II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (70,'Individual',NULL,'Bernadette Lee',NULL,NULL,'Bernadette','','Lee',0,0,0,0,0,0,NULL,'Lee, Bernadette',NULL,NULL,NULL,'3',NULL,'3876458768',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (71,'Individual',NULL,'Clint Cruz III',NULL,NULL,'Clint','I','Cruz',0,0,0,0,0,0,NULL,'Cruz, Clint',NULL,NULL,NULL,NULL,NULL,'3677859642',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Cruz III',NULL,2,'1961-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (72,'Individual',NULL,'Mr. Irvin ÅÄ…chowski',NULL,NULL,'Irvin','','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Irvin',NULL,NULL,NULL,'3',NULL,'2177704001',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin ÅÄ…chowski',NULL,2,'1972-07-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (73,'Individual',NULL,'Eleonor Robertson',NULL,NULL,'Eleonor','F','Robertson',0,0,0,0,0,0,NULL,'Robertson, Eleonor',NULL,NULL,NULL,'2',NULL,'2051195654',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Robertson',NULL,1,'1954-05-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (74,'Organization',NULL,'Longville Action Center','Longville Action Center',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Longville Action Center',NULL,NULL,NULL,NULL,NULL,'2327686758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Longville Action Center',NULL,NULL,NULL,0,NULL,NULL,159,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (75,'Individual',NULL,'Mr. Allan McReynolds','Montier Peace Solutions',NULL,'Allan','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Allan',NULL,NULL,NULL,'1',NULL,'3819567113',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan McReynolds',NULL,2,'1992-05-23',0,NULL,NULL,NULL,NULL,NULL,51,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (76,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (77,'Individual',NULL,'Daren Jacobs',NULL,NULL,'Daren','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Daren',NULL,NULL,NULL,'4',NULL,'1181505103',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Jacobs',NULL,NULL,'1979-09-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (78,'Individual',NULL,'Lincoln Zope Sr.',NULL,NULL,'Lincoln','','Zope',1,0,0,0,0,0,NULL,'Zope, Lincoln',NULL,NULL,NULL,'2',NULL,'2972737085',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (79,'Individual',NULL,'Dr. Beula Jacobs','Van Ness Literacy Solutions',NULL,'Beula','','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Beula',NULL,NULL,NULL,NULL,NULL,'41714917',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Dr. Beula Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,150,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (80,'Individual',NULL,'Ms. Teresa Yadav',NULL,NULL,'Teresa','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Teresa',NULL,NULL,NULL,NULL,NULL,'2032766377',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Ms. Teresa Yadav',NULL,1,'1983-09-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (81,'Individual',NULL,'Mrs. Shauna Roberts',NULL,NULL,'Shauna','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Shauna',NULL,NULL,NULL,NULL,NULL,'927862076',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Mrs. Shauna Roberts',NULL,1,'1980-03-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (82,'Individual',NULL,'Dr. Erik Yadav Jr.',NULL,NULL,'Erik','N','Yadav',0,1,0,0,0,0,NULL,'Yadav, Erik',NULL,NULL,NULL,NULL,NULL,'3764928217',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Yadav Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (83,'Individual',NULL,'Ashley Jameson',NULL,NULL,'Ashley','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Ashley',NULL,NULL,NULL,'1',NULL,'3561508179',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jameson',NULL,1,'1948-08-28',1,'2023-06-21',NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (84,'Individual',NULL,'ashleyjameson@lol.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ashleyjameson@lol.org',NULL,NULL,NULL,'5',NULL,'3536303843',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear ashleyjameson@lol.org',1,NULL,'Dear ashleyjameson@lol.org',1,NULL,'ashleyjameson@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (85,'Individual',NULL,'Dr. Lawerence Cruz III',NULL,NULL,'Lawerence','B','Cruz',0,1,0,0,1,0,NULL,'Cruz, Lawerence',NULL,NULL,NULL,NULL,NULL,'1184039604',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Cruz III',NULL,NULL,'1989-03-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (86,'Individual',NULL,'Jay Wattson II',NULL,NULL,'Jay','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Jay',NULL,NULL,NULL,'5',NULL,'292534569',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Wattson II',NULL,2,'1998-12-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (87,'Individual',NULL,'Megan Roberts-Dimitrov',NULL,NULL,'Megan','X','Roberts-Dimitrov',1,1,0,0,0,0,NULL,'Roberts-Dimitrov, Megan',NULL,NULL,NULL,NULL,NULL,'2459166442',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Roberts-Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (88,'Household',NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,'2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (89,'Organization',NULL,'Green Action Partnership','Green Action Partnership',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Green Action Partnership',NULL,NULL,NULL,NULL,NULL,'3207633420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Green Action Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (90,'Individual',NULL,'Omar Samuels Sr.',NULL,NULL,'Omar','D','Samuels',0,0,0,0,0,0,NULL,'Samuels, Omar',NULL,NULL,NULL,NULL,NULL,'1072276407',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Samuels Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (91,'Individual',NULL,'Dr. Sanford Ivanov III',NULL,NULL,'Sanford','J','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Sanford',NULL,NULL,NULL,'2',NULL,'868143877',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Ivanov III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (92,'Individual',NULL,'Nicole Cruz-Dimitrov',NULL,NULL,'Nicole','Z','Cruz-Dimitrov',0,0,0,0,1,0,NULL,'Cruz-Dimitrov, Nicole',NULL,NULL,NULL,'3',NULL,'1791683977',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Cruz-Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (93,'Individual',NULL,'Ms. Angelika McReynolds',NULL,NULL,'Angelika','','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Angelika',NULL,NULL,NULL,NULL,NULL,'3667136043',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Ms. Angelika McReynolds',NULL,NULL,'1992-12-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (94,'Individual',NULL,'Ms. Beula Patel',NULL,NULL,'Beula','','Patel',0,0,0,0,0,0,NULL,'Patel, Beula',NULL,NULL,NULL,'5',NULL,'945489022',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Patel',NULL,1,'1990-11-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (95,'Individual',NULL,'rsmith99@fakemail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'rsmith99@fakemail.org',NULL,NULL,NULL,'2',NULL,'1079387116',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear rsmith99@fakemail.org',1,NULL,'Dear rsmith99@fakemail.org',1,NULL,'rsmith99@fakemail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (96,'Individual',NULL,'Truman Jacobs II',NULL,NULL,'Truman','I','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Truman',NULL,NULL,NULL,NULL,NULL,'2934376834',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Jacobs II',NULL,2,'1986-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (97,'Individual',NULL,'Rolando Roberts Jr.',NULL,NULL,'Rolando','K','Roberts',0,1,0,0,0,0,NULL,'Roberts, Rolando',NULL,NULL,NULL,'2',NULL,'3250154238',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Roberts Jr.',NULL,2,'1986-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (98,'Individual',NULL,'Ashlie Robertson',NULL,NULL,'Ashlie','D','Robertson',0,0,0,0,0,0,NULL,'Robertson, Ashlie',NULL,NULL,NULL,NULL,NULL,'23758279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Robertson',NULL,1,'1983-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (99,'Individual',NULL,'Lincoln Zope-Robertson',NULL,NULL,'Lincoln','Y','Zope-Robertson',0,0,0,0,1,0,NULL,'Zope-Robertson, Lincoln',NULL,NULL,NULL,'2',NULL,'3816033638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Zope-Robertson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (100,'Individual',NULL,'Dr. Jerome Samuels',NULL,NULL,'Jerome','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Jerome',NULL,NULL,NULL,'5',NULL,'2129032486',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Samuels',NULL,2,'1980-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (101,'Individual',NULL,'Heidi Lee',NULL,NULL,'Heidi','Z','Lee',0,1,0,0,0,0,NULL,'Lee, Heidi',NULL,NULL,NULL,'4',NULL,'4039123195',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Lee',NULL,NULL,'1975-06-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (102,'Individual',NULL,'jensen.l.daren@example.info',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'jensen.l.daren@example.info',NULL,NULL,NULL,'2',NULL,'2984318360',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear jensen.l.daren@example.info',1,NULL,'Dear jensen.l.daren@example.info',1,NULL,'jensen.l.daren@example.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (103,'Individual',NULL,'Allen Zope',NULL,NULL,'Allen','','Zope',0,0,0,0,0,0,NULL,'Zope, Allen',NULL,NULL,NULL,'2',NULL,'1364035806',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (104,'Individual',NULL,'Mr. Rolando Blackwell','Texas Culture Alliance',NULL,'Rolando','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Rolando',NULL,NULL,NULL,NULL,NULL,'1317373414',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Mr. Rolando Blackwell',NULL,2,'1981-04-05',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (105,'Individual',NULL,'Dr. Landon Barkley',NULL,NULL,'Landon','','Barkley',0,0,0,0,0,0,NULL,'Barkley, Landon',NULL,NULL,NULL,NULL,NULL,'2012224076',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (106,'Individual',NULL,'Mrs. Justina Jacobs',NULL,NULL,'Justina','K','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Justina',NULL,NULL,NULL,NULL,NULL,'1829359712',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Jacobs',NULL,1,'1975-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (107,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'2',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (108,'Individual',NULL,'Mei McReynolds',NULL,NULL,'Mei','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Mei',NULL,NULL,NULL,NULL,NULL,'2223552605',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei McReynolds',NULL,NULL,'1975-08-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (109,'Individual',NULL,'Dr. Rolando Dimitrov Jr.',NULL,NULL,'Rolando','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Rolando',NULL,NULL,NULL,NULL,NULL,'2226225563',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Dimitrov Jr.',NULL,2,'1959-06-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (110,'Individual',NULL,'Josefa Samson',NULL,NULL,'Josefa','B','Samson',0,0,0,0,1,0,NULL,'Samson, Josefa',NULL,NULL,NULL,NULL,NULL,'3599094976',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Samson',NULL,NULL,'1966-04-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (111,'Organization',NULL,'States Action Systems','States Action Systems',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'States Action Systems',NULL,NULL,NULL,NULL,NULL,'2661521445',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Action Systems',NULL,NULL,NULL,0,NULL,NULL,45,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (112,'Organization',NULL,'Jamaica Arts Initiative','Jamaica Arts Initiative',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Jamaica Arts Initiative',NULL,NULL,NULL,NULL,NULL,'2401175641',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Jamaica Arts Initiative',NULL,NULL,NULL,0,NULL,NULL,136,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (113,'Individual',NULL,'jacobsj46@mymail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobsj46@mymail.com',NULL,NULL,NULL,'3',NULL,'3626232640',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear jacobsj46@mymail.com',1,NULL,'Dear jacobsj46@mymail.com',1,NULL,'jacobsj46@mymail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (114,'Individual',NULL,'Dr. Santina Robertson',NULL,NULL,'Santina','L','Robertson',0,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,NULL,NULL,'2867920569',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Dr. Santina Robertson',NULL,NULL,'1962-02-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (115,'Individual',NULL,'Landon Lee',NULL,NULL,'Landon','I','Lee',0,0,0,0,0,0,NULL,'Lee, Landon',NULL,NULL,NULL,NULL,NULL,'4144706447',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Lee',NULL,NULL,'1979-10-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (116,'Individual',NULL,'Mr. Teddy Olsen',NULL,NULL,'Teddy','A','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teddy',NULL,NULL,NULL,'2',NULL,'72064715',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (117,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (118,'Organization',NULL,'Ohio Advocacy Association','Ohio Advocacy Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ohio Advocacy Association',NULL,NULL,NULL,NULL,NULL,'2716732841',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ohio Advocacy Association',NULL,NULL,NULL,0,NULL,NULL,12,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (119,'Individual',NULL,'Dr. Sherman ÅÄ…chowski',NULL,NULL,'Sherman','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Sherman',NULL,NULL,NULL,NULL,NULL,'2261039855',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman ÅÄ…chowski',NULL,2,'1967-06-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (120,'Individual',NULL,'Dr. Alexia Smith','West Virginia Software Center',NULL,'Alexia','','Smith',0,1,0,0,0,0,NULL,'Smith, Alexia',NULL,NULL,NULL,NULL,NULL,'528182465',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Smith',NULL,NULL,'1986-01-18',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (121,'Organization',NULL,'California Sports Collective','California Sports Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'California Sports Collective',NULL,NULL,NULL,NULL,NULL,'1529826053',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Sports Collective',NULL,NULL,NULL,0,NULL,NULL,58,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (122,'Individual',NULL,'Allan Jameson II','Florida Technology Partnership',NULL,'Allan','','Jameson',0,0,0,0,1,0,NULL,'Jameson, Allan',NULL,NULL,NULL,NULL,NULL,'3508046316',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Jameson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,190,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (123,'Individual',NULL,'Dr. Herminia Prentice',NULL,NULL,'Herminia','Q','Prentice',0,0,0,0,0,0,NULL,'Prentice, Herminia',NULL,NULL,NULL,'3',NULL,'4072784830',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Prentice',NULL,NULL,'1950-01-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:30','Both'), - (124,'Household',NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,'2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (125,'Individual',NULL,'Errol Dimitrov III',NULL,NULL,'Errol','K','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Errol',NULL,NULL,NULL,'4',NULL,'3017354314',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Dimitrov III',NULL,2,'1967-12-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (126,'Individual',NULL,'Heidi Dimitrov',NULL,NULL,'Heidi','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Heidi',NULL,NULL,NULL,NULL,NULL,'90891784',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (127,'Individual',NULL,'terrells@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,'538950638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@airmail.co.pl',1,NULL,'Dear terrells@airmail.co.pl',1,NULL,'terrells@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (128,'Individual',NULL,'deforest.maxwell@example.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'deforest.maxwell@example.net',NULL,NULL,NULL,NULL,NULL,'2495751068',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear deforest.maxwell@example.net',1,NULL,'Dear deforest.maxwell@example.net',1,NULL,'deforest.maxwell@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (129,'Individual',NULL,'Elbert Jones Sr.',NULL,NULL,'Elbert','I','Jones',0,0,0,0,0,0,NULL,'Jones, Elbert',NULL,NULL,NULL,'4',NULL,'3645053032',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jones Sr.',NULL,NULL,'1996-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (130,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,'1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (131,'Individual',NULL,'Dr. Laree Zope',NULL,NULL,'Laree','','Zope',1,0,0,0,0,0,NULL,'Zope, Laree',NULL,NULL,NULL,NULL,NULL,'3671966528',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Dr. Laree Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (132,'Household',NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,'350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (133,'Organization',NULL,'Texas Culture Alliance','Texas Culture Alliance',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Texas Culture Alliance',NULL,NULL,NULL,NULL,NULL,'729797420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Culture Alliance',NULL,NULL,NULL,0,NULL,NULL,104,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (134,'Individual',NULL,'Eleonor McReynolds',NULL,NULL,'Eleonor','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Eleonor',NULL,NULL,NULL,'4',NULL,'1720935960',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor McReynolds',NULL,1,'1983-03-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (135,'Household',NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,'1498986649',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs family',5,NULL,'Dear Jacobs family',2,NULL,'Jacobs family',NULL,NULL,NULL,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (136,'Individual',NULL,'Russell Lee II','Jamaica Arts Initiative',NULL,'Russell','W','Lee',0,1,0,0,0,0,NULL,'Lee, Russell',NULL,NULL,NULL,'4',NULL,'776940323',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Lee II',NULL,2,'1984-03-02',0,NULL,NULL,NULL,NULL,NULL,112,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (137,'Individual',NULL,'wilsonj2@fakemail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wilsonj2@fakemail.biz',NULL,NULL,NULL,'3',NULL,'1914491688',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear wilsonj2@fakemail.biz',1,NULL,'Dear wilsonj2@fakemail.biz',1,NULL,'wilsonj2@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (138,'Individual',NULL,'Dr. Alida Terry',NULL,NULL,'Alida','I','Terry',0,0,0,0,0,0,NULL,'Terry, Alida',NULL,NULL,NULL,NULL,NULL,'2637023605',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Dr. Alida Terry',NULL,1,'1975-10-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (139,'Household',NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,'2326538497',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz family',5,NULL,'Dear Cruz family',2,NULL,'Cruz family',NULL,NULL,NULL,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (140,'Individual',NULL,'Toby Dimitrov-Deforest',NULL,NULL,'Toby','','Dimitrov-Deforest',0,0,0,0,0,0,NULL,'Dimitrov-Deforest, Toby',NULL,NULL,NULL,NULL,NULL,'3471721139',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Dimitrov-Deforest',NULL,2,'2000-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (141,'Individual',NULL,'jones-terrellm@example.co.pl',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'jones-terrellm@example.co.pl',NULL,NULL,NULL,'3',NULL,'3999067002',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jones-terrellm@example.co.pl',1,NULL,'Dear jones-terrellm@example.co.pl',1,NULL,'jones-terrellm@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (142,'Individual',NULL,'Russell Yadav',NULL,NULL,'Russell','I','Yadav',0,1,0,0,0,0,NULL,'Yadav, Russell',NULL,NULL,NULL,NULL,NULL,'3160688610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Yadav',NULL,NULL,'1966-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (143,'Individual',NULL,'Errol Wattson',NULL,NULL,'Errol','H','Wattson',0,1,0,0,0,0,NULL,'Wattson, Errol',NULL,NULL,NULL,'4',NULL,'3723119881',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Wattson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (144,'Individual',NULL,'terrell.w.sanford@example.co.nz',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'terrell.w.sanford@example.co.nz',NULL,NULL,NULL,'4',NULL,'3445331431',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear terrell.w.sanford@example.co.nz',1,NULL,'Dear terrell.w.sanford@example.co.nz',1,NULL,'terrell.w.sanford@example.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (145,'Individual',NULL,'jsamuels68@sample.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jsamuels68@sample.org',NULL,NULL,NULL,NULL,NULL,'418746154',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear jsamuels68@sample.org',1,NULL,'Dear jsamuels68@sample.org',1,NULL,'jsamuels68@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (146,'Individual',NULL,'valenew@notmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'valenew@notmail.co.in',NULL,NULL,NULL,'4',NULL,'1355969892',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear valenew@notmail.co.in',1,NULL,'Dear valenew@notmail.co.in',1,NULL,'valenew@notmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (147,'Household',NULL,'Zope-Robertson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Zope-Robertson family',NULL,NULL,NULL,'1',NULL,'179865441',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope-Robertson family',5,NULL,'Dear Zope-Robertson family',2,NULL,'Zope-Robertson family',NULL,NULL,NULL,0,NULL,'Zope-Robertson family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (148,'Household',NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,'1',NULL,'3969029419',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Dimitrov family',5,NULL,'Dear Cruz-Dimitrov family',2,NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,0,NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (149,'Individual',NULL,'Jerome Jensen',NULL,NULL,'Jerome','N','Jensen',0,0,0,0,0,0,NULL,'Jensen, Jerome',NULL,NULL,NULL,'4',NULL,'2774980739',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Jensen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (150,'Organization',NULL,'Van Ness Literacy Solutions','Van Ness Literacy Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Van Ness Literacy Solutions',NULL,NULL,NULL,NULL,NULL,'1560626758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Literacy Solutions',NULL,NULL,NULL,0,NULL,NULL,79,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (151,'Individual',NULL,'Sherman Blackwell',NULL,NULL,'Sherman','L','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Sherman',NULL,NULL,NULL,'2',NULL,'2994560608',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Blackwell',NULL,2,'2020-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (152,'Individual',NULL,'Elina Blackwell',NULL,NULL,'Elina','O','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elina',NULL,NULL,NULL,NULL,NULL,'215876886',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (153,'Individual',NULL,'grant.maxwell@testing.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'grant.maxwell@testing.net',NULL,NULL,NULL,NULL,NULL,'737287809',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear grant.maxwell@testing.net',1,NULL,'Dear grant.maxwell@testing.net',1,NULL,'grant.maxwell@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (154,'Individual',NULL,'Dr. Heidi Cruz',NULL,NULL,'Heidi','T','Cruz',0,0,0,0,0,0,NULL,'Cruz, Heidi',NULL,NULL,NULL,NULL,NULL,'1208374770',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (155,'Individual',NULL,'Mr. Norris Bachman Sr.',NULL,NULL,'Norris','J','Bachman',0,0,0,0,1,0,NULL,'Bachman, Norris',NULL,NULL,NULL,'3',NULL,'2902131761',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Bachman Sr.',NULL,NULL,'1946-06-15',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (156,'Individual',NULL,'Dr. Winford Yadav',NULL,NULL,'Winford','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Winford',NULL,NULL,NULL,NULL,NULL,'3002231808',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Yadav',NULL,2,'1943-12-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (157,'Individual',NULL,'Ray Dimitrov Jr.',NULL,NULL,'Ray','Z','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Ray',NULL,NULL,NULL,'3',NULL,'213044700',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Dimitrov Jr.',NULL,2,'1956-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (158,'Individual',NULL,'Russell Jameson Sr.',NULL,NULL,'Russell','U','Jameson',0,0,0,0,1,0,NULL,'Jameson, Russell',NULL,NULL,NULL,NULL,NULL,'3424708861',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Jameson Sr.',NULL,NULL,'2004-09-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (159,'Individual',NULL,'Dr. Erik Yadav','Longville Action Center',NULL,'Erik','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Erik',NULL,NULL,NULL,NULL,NULL,'3764928217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Yadav',NULL,NULL,'1985-04-21',0,NULL,NULL,NULL,NULL,NULL,74,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (160,'Individual',NULL,'Jina Yadav',NULL,NULL,'Jina','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Jina',NULL,NULL,NULL,NULL,NULL,'132914631',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (161,'Household',NULL,'Jones-Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jones-Terrell family',NULL,NULL,NULL,NULL,NULL,'753128947',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones-Terrell family',5,NULL,'Dear Jones-Terrell family',2,NULL,'Jones-Terrell family',NULL,NULL,NULL,0,NULL,'Jones-Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (162,'Individual',NULL,'Clint Cruz',NULL,NULL,'Clint','','Cruz',0,0,0,0,1,0,NULL,'Cruz, Clint',NULL,NULL,NULL,NULL,NULL,'3677859642',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Cruz',NULL,2,'2001-11-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (163,'Individual',NULL,'Mr. Winford Jones',NULL,NULL,'Winford','K','Jones',0,0,0,0,0,0,NULL,'Jones, Winford',NULL,NULL,NULL,'5',NULL,'3992988064',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Jones',NULL,NULL,'1959-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (164,'Individual',NULL,'Ray Terry',NULL,NULL,'Ray','L','Terry',0,1,0,0,0,0,NULL,'Terry, Ray',NULL,NULL,NULL,'1',NULL,'1646953938',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Terry',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (165,'Individual',NULL,'Mrs. Kandace Reynolds',NULL,NULL,'Kandace','A','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Kandace',NULL,NULL,NULL,NULL,NULL,'1783653514',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Mrs. Kandace Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (166,'Organization',NULL,'Mississippi Wellness Academy','Mississippi Wellness Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Mississippi Wellness Academy',NULL,NULL,NULL,NULL,NULL,'653649684',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mississippi Wellness Academy',NULL,NULL,NULL,0,NULL,NULL,54,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (167,'Individual',NULL,'Jackson Ivanov III',NULL,NULL,'Jackson','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Jackson',NULL,NULL,NULL,NULL,NULL,'3246901602',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Ivanov III',NULL,2,'1944-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (168,'Organization',NULL,'Global Agriculture Systems','Global Agriculture Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Agriculture Systems',NULL,NULL,NULL,NULL,NULL,'1120005374',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Agriculture Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (169,'Individual',NULL,'Santina DÃaz','Jackson Peace Services',NULL,'Santina','H','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Santina',NULL,NULL,NULL,'1',NULL,'3076461979',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina DÃaz',NULL,NULL,'1944-02-19',0,NULL,NULL,NULL,NULL,NULL,171,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (170,'Individual',NULL,'Ms. Sharyn Deforest',NULL,NULL,'Sharyn','Y','Deforest',0,0,0,0,0,0,NULL,'Deforest, Sharyn',NULL,NULL,NULL,NULL,NULL,'2704728591',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Ms. Sharyn Deforest',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (171,'Organization',NULL,'Jackson Peace Services','Jackson Peace Services',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Jackson Peace Services',NULL,NULL,NULL,'5',NULL,'1536238043',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Jackson Peace Services',NULL,NULL,NULL,0,NULL,NULL,169,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (172,'Individual',NULL,'Dr. Erik Wilson',NULL,NULL,'Erik','C','Wilson',0,0,0,0,0,0,NULL,'Wilson, Erik',NULL,NULL,NULL,'4',NULL,'3965179222',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Wilson',NULL,2,'1983-12-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (173,'Individual',NULL,'Scott Wilson',NULL,NULL,'Scott','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Scott',NULL,NULL,NULL,'3',NULL,'3378305352',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Wilson',NULL,NULL,'1987-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (174,'Organization',NULL,'Maple Health Fellowship','Maple Health Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Maple Health Fellowship',NULL,NULL,NULL,'1',NULL,'900732050',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Health Fellowship',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (175,'Individual',NULL,'Elina Olsen-McReynolds',NULL,NULL,'Elina','','Olsen-McReynolds',1,1,0,0,0,0,NULL,'Olsen-McReynolds, Elina',NULL,NULL,NULL,'4',NULL,'1848814956',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Olsen-McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (176,'Individual',NULL,'Angelika Blackwell',NULL,NULL,'Angelika','K','Blackwell',1,1,0,0,1,0,NULL,'Blackwell, Angelika',NULL,NULL,NULL,'3',NULL,'2888403240',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Blackwell',NULL,1,'1992-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (177,'Individual',NULL,'Teddy Terry',NULL,NULL,'Teddy','','Terry',0,0,0,0,1,0,NULL,'Terry, Teddy',NULL,NULL,NULL,NULL,NULL,'1402049800',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Terry',NULL,2,'1949-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (178,'Individual',NULL,'Dr. Toby Terrell',NULL,NULL,'Toby','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Toby',NULL,NULL,NULL,NULL,NULL,'935057272',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Terrell',NULL,NULL,'1982-09-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (179,'Individual',NULL,'Mr. Clint Ivanov Jr.',NULL,NULL,'Clint','B','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Clint',NULL,NULL,NULL,NULL,NULL,'3280498131',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (180,'Individual',NULL,'barkleym81@spamalot.co.in','Community Education Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'barkleym81@spamalot.co.in',NULL,NULL,NULL,'3',NULL,'2546524336',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear barkleym81@spamalot.co.in',1,NULL,'Dear barkleym81@spamalot.co.in',1,NULL,'barkleym81@spamalot.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,53,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (181,'Individual',NULL,'Allen Yadav',NULL,NULL,'Allen','W','Yadav',0,0,0,0,0,0,NULL,'Yadav, Allen',NULL,NULL,NULL,'1',NULL,'1525270677',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Yadav',NULL,NULL,'1958-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (182,'Individual',NULL,'Margaret Jameson',NULL,NULL,'Margaret','','Jameson',0,0,0,0,1,0,NULL,'Jameson, Margaret',NULL,NULL,NULL,NULL,NULL,'1719938872',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Jameson',NULL,NULL,'1943-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (183,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (184,'Individual',NULL,'Margaret Blackwell',NULL,NULL,'Margaret','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Margaret',NULL,NULL,NULL,NULL,NULL,'894595567',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Blackwell',NULL,1,'1951-01-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (185,'Individual',NULL,'Dr. Sanford Terry',NULL,NULL,'Sanford','M','Terry',1,0,0,0,0,0,NULL,'Terry, Sanford',NULL,NULL,NULL,NULL,NULL,'4170670568',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Terry',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (186,'Individual',NULL,'elinay@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'elinay@fakemail.co.in',NULL,NULL,NULL,'3',NULL,'3148721013',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear elinay@fakemail.co.in',1,NULL,'Dear elinay@fakemail.co.in',1,NULL,'elinay@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (187,'Individual',NULL,'Carlos Jones-Terrell','Maple Health Fellowship',NULL,'Carlos','P','Jones-Terrell',0,0,0,0,1,0,NULL,'Jones-Terrell, Carlos',NULL,NULL,NULL,'4',NULL,'1542911489',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Jones-Terrell',NULL,2,'2002-11-24',0,NULL,NULL,NULL,NULL,NULL,174,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (188,'Individual',NULL,'Toby Patel',NULL,NULL,'Toby','','Patel',0,0,0,0,0,0,NULL,'Patel, Toby',NULL,NULL,NULL,'5',NULL,'2618763021',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Patel',NULL,NULL,'1986-01-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (189,'Individual',NULL,'Mr. Jacob Dimitrov',NULL,NULL,'Jacob','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Jacob',NULL,NULL,NULL,'3',NULL,'2306451370',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Mr. Jacob Dimitrov',NULL,2,'1976-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (190,'Organization',NULL,'Florida Technology Partnership','Florida Technology Partnership',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Florida Technology Partnership',NULL,NULL,NULL,'3',NULL,'49225528',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Florida Technology Partnership',NULL,NULL,NULL,0,NULL,NULL,122,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (191,'Individual',NULL,'Dr. Heidi Samuels',NULL,NULL,'Heidi','','Samuels',0,0,0,0,1,0,NULL,'Samuels, Heidi',NULL,NULL,NULL,NULL,NULL,'3595168109',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Samuels',NULL,1,'1973-04-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (192,'Individual',NULL,'nielsen.v.rebekah@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nielsen.v.rebekah@fakemail.co.in',NULL,NULL,NULL,'5',NULL,'4152494731',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear nielsen.v.rebekah@fakemail.co.in',1,NULL,'Dear nielsen.v.rebekah@fakemail.co.in',1,NULL,'nielsen.v.rebekah@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:30','Both'), - (193,'Individual',NULL,'Dr. Jacob DÃaz',NULL,NULL,'Jacob','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Jacob',NULL,NULL,NULL,'3',NULL,'3488947578',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (194,'Individual',NULL,'Mr. Jackson Lee','Ben Franklin Music Association',NULL,'Jackson','','Lee',1,0,0,0,0,0,NULL,'Lee, Jackson',NULL,NULL,NULL,'4',NULL,'3405561048',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Lee',NULL,2,'1968-08-01',0,NULL,NULL,NULL,NULL,NULL,31,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (195,'Individual',NULL,'terryb@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'terryb@notmail.biz',NULL,NULL,NULL,NULL,NULL,'1530894166',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear terryb@notmail.biz',1,NULL,'Dear terryb@notmail.biz',1,NULL,'terryb@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:30','Both'), - (196,'Individual',NULL,'Craig Bachman II',NULL,NULL,'Craig','H','Bachman',0,0,0,0,0,0,NULL,'Bachman, Craig',NULL,NULL,NULL,'3',NULL,'1117434169',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Bachman II',NULL,2,'1969-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (197,'Individual',NULL,'Dr. Mei Müller',NULL,NULL,'Mei','H','Müller',0,0,0,0,0,0,NULL,'Müller, Mei',NULL,NULL,NULL,NULL,NULL,'726297805',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Müller',NULL,NULL,'1955-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (198,'Individual',NULL,'Ashley Jameson',NULL,NULL,'Ashley','I','Jameson',0,0,0,0,0,0,NULL,'Jameson, Ashley',NULL,NULL,NULL,'3',NULL,'3561508179',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jameson',NULL,NULL,'1983-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (199,'Individual',NULL,'Dr. Norris Samson',NULL,NULL,'Norris','R','Samson',0,1,0,0,1,0,NULL,'Samson, Norris',NULL,NULL,NULL,NULL,NULL,'2564827585',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Dr. Norris Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (200,'Household',NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jensen family',NULL,NULL,NULL,'3',NULL,'797435572',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen family',5,NULL,'Dear Jensen family',2,NULL,'Jensen family',NULL,NULL,NULL,0,NULL,'Jensen family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (201,'Individual',NULL,'Ms. Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'5',NULL,'3509379571',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Ms. Iris Reynolds',NULL,1,'1955-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','f4e01cf09df9dcf67e0b03c983c89891',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:34','2023-10-07 01:51:35','Both'); + (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-19 21:22:28','Both'), + (2,'Individual',NULL,'Mr. Elbert Terrell II',NULL,NULL,'Elbert','','Terrell',0,0,0,0,1,0,NULL,'Terrell, Elbert',NULL,NULL,NULL,NULL,NULL,'1862258278',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Terrell II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (3,'Household',NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,'1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (4,'Individual',NULL,'Mrs. Damaris Smith','Global Sports Center',NULL,'Damaris','A','Smith',0,0,0,0,0,0,NULL,'Smith, Damaris',NULL,NULL,NULL,'1',NULL,'3693080437',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,69,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (5,'Individual',NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,'4',NULL,'325908741',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (6,'Individual',NULL,'Magan Reynolds',NULL,NULL,'Magan','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Magan',NULL,NULL,NULL,'1',NULL,'2569744381',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Reynolds',NULL,1,'1968-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (7,'Organization',NULL,'Hanover Education School','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Hanover Education School',NULL,NULL,NULL,NULL,NULL,'3329437880',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Hanover Education School',NULL,NULL,NULL,0,NULL,NULL,15,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (8,'Individual',NULL,'Ms. Laree Blackwell',NULL,NULL,'Laree','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Laree',NULL,NULL,NULL,'4',NULL,'122613497',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Blackwell',NULL,1,'1987-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (9,'Individual',NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,'1',NULL,'1346258529',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (10,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,'558108751',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry family',5,NULL,'Dear Terry family',2,NULL,'Terry family',NULL,NULL,NULL,0,NULL,'Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (11,'Individual',NULL,'Mr. Carlos Cruz II',NULL,NULL,'Carlos','N','Cruz',0,1,0,0,0,0,NULL,'Cruz, Carlos',NULL,NULL,NULL,'1',NULL,'149105357',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Cruz II',NULL,NULL,'1970-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (12,'Individual',NULL,'Margaret Reynolds',NULL,NULL,'Margaret','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Margaret',NULL,NULL,NULL,NULL,NULL,'1615992834',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Reynolds',NULL,1,'1995-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (13,'Individual',NULL,'Sonny Reynolds III',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds III',NULL,2,'1999-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (14,'Individual',NULL,'Delana Wattson',NULL,NULL,'Delana','','Wattson',1,0,0,0,0,0,NULL,'Wattson, Delana',NULL,NULL,NULL,'1',NULL,'4463545',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Wattson',NULL,1,'1958-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (15,'Individual',NULL,'olsenb@testmail.co.pl','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,'3',NULL,'3294760178',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,7,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (16,'Individual',NULL,'Mrs. Kiara Bachman',NULL,NULL,'Kiara','I','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'2',NULL,'3047638217',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Bachman',NULL,1,'1998-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (17,'Individual',NULL,'Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (18,'Individual',NULL,'Andrew DÃaz Sr.','Cranfills Gap Health Trust',NULL,'Andrew','E','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Andrew',NULL,NULL,NULL,NULL,NULL,'2189664098',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew DÃaz Sr.',NULL,NULL,'1989-09-08',0,NULL,NULL,NULL,NULL,NULL,122,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (19,'Organization',NULL,'Creative Peace Solutions','Creative Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Creative Peace Solutions',NULL,NULL,NULL,NULL,NULL,'2853948413',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,129,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (20,'Individual',NULL,'Claudio Cruz-Reynolds',NULL,NULL,'Claudio','','Cruz-Reynolds',0,0,0,0,0,0,NULL,'Cruz-Reynolds, Claudio',NULL,NULL,NULL,NULL,NULL,'2191699643',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cruz-Reynolds',NULL,2,'1987-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (21,'Individual',NULL,'Jackson Wattson',NULL,NULL,'Jackson','C','Wattson',0,0,0,0,1,0,NULL,'Wattson, Jackson',NULL,NULL,NULL,NULL,NULL,'1720434610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Wattson',NULL,2,'1969-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (22,'Organization',NULL,'Boston Development Academy','Boston Development Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Boston Development Academy',NULL,NULL,NULL,NULL,NULL,'3712082957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Boston Development Academy',NULL,NULL,NULL,0,NULL,NULL,33,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (23,'Household',NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Samson-Terry family',NULL,NULL,NULL,'1',NULL,'1196143838',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Terry family',5,NULL,'Dear Samson-Terry family',2,NULL,'Samson-Terry family',NULL,NULL,NULL,0,NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (24,'Individual',NULL,'Sherman Bachman',NULL,NULL,'Sherman','','Bachman',0,1,0,0,0,0,NULL,'Bachman, Sherman',NULL,NULL,NULL,'4',NULL,'2672494279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (25,'Individual',NULL,'Beula Wagner',NULL,NULL,'Beula','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Beula',NULL,NULL,NULL,NULL,NULL,'109524906',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (26,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,'2',NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (27,'Individual',NULL,'Mrs. Merrie Robertson',NULL,NULL,'Merrie','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Merrie',NULL,NULL,NULL,'4',NULL,'2954108447',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (28,'Individual',NULL,'Sharyn Nielsen',NULL,NULL,'Sharyn','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Sharyn',NULL,NULL,NULL,'1',NULL,'3940504410',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (29,'Individual',NULL,'Ms. Beula Cruz',NULL,NULL,'Beula','G','Cruz',1,0,0,0,0,0,NULL,'Cruz, Beula',NULL,NULL,NULL,NULL,NULL,'3515356541',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Cruz',NULL,1,'1943-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (30,'Individual',NULL,'Dr. Josefa Grant',NULL,NULL,'Josefa','R','Grant',0,0,0,0,1,0,NULL,'Grant, Josefa',NULL,NULL,NULL,NULL,NULL,'511786429',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Grant',NULL,NULL,'1983-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (31,'Individual',NULL,'Dr. Lincoln Yadav Sr.',NULL,NULL,'Lincoln','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Lincoln',NULL,NULL,NULL,NULL,NULL,'3563160263',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Yadav Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (32,'Individual',NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,'3970115490',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (33,'Individual',NULL,'dimitrovb20@infomail.co.uk','Boston Development Academy',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,'2',NULL,'3487863784',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,22,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (34,'Individual',NULL,'Mr. Sonny Prentice II',NULL,NULL,'Sonny','G','Prentice',0,0,0,0,1,0,NULL,'Prentice, Sonny',NULL,NULL,NULL,'1',NULL,'2645636632',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Prentice II',NULL,2,'1977-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (35,'Individual',NULL,'Omar Müller',NULL,NULL,'Omar','','Müller',1,0,0,0,1,0,NULL,'Müller, Omar',NULL,NULL,NULL,NULL,NULL,'3845396679',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Müller',NULL,2,'1971-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (36,'Individual',NULL,'Mr. Lou Yadav',NULL,NULL,'Lou','J','Yadav',0,0,0,0,0,0,NULL,'Yadav, Lou',NULL,NULL,NULL,'5',NULL,'1442954395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (37,'Individual',NULL,'Josefa Dimitrov',NULL,NULL,'Josefa','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Josefa',NULL,NULL,NULL,'4',NULL,'1492067390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Dimitrov',NULL,1,'1976-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (38,'Individual',NULL,'Landon Blackwell',NULL,NULL,'Landon','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Landon',NULL,NULL,NULL,'2',NULL,'1569508638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Blackwell',NULL,2,'1944-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (39,'Individual',NULL,'Ms. Delana DÃaz-ÅÄ…chowski',NULL,NULL,'Delana','E','DÃaz-ÅÄ…chowski',1,0,0,0,0,0,NULL,'DÃaz-ÅÄ…chowski, Delana',NULL,NULL,NULL,NULL,NULL,'1952500554',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana DÃaz-ÅÄ…chowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (40,'Individual',NULL,'Mrs. Megan Parker',NULL,NULL,'Megan','J','Parker',0,0,0,0,0,0,NULL,'Parker, Megan',NULL,NULL,NULL,NULL,NULL,'4204728620',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Parker',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (41,'Individual',NULL,'Landon DÃaz-ÅÄ…chowski Jr.',NULL,NULL,'Landon','V','DÃaz-ÅÄ…chowski',0,1,0,0,0,0,NULL,'DÃaz-ÅÄ…chowski, Landon',NULL,NULL,NULL,'2',NULL,'1221970263',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon DÃaz-ÅÄ…chowski Jr.',NULL,NULL,'2011-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (42,'Individual',NULL,'Rolando Grant',NULL,NULL,'Rolando','','Grant',1,0,0,0,1,0,NULL,'Grant, Rolando',NULL,NULL,NULL,'2',NULL,'4031135000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Grant',NULL,2,'1935-02-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (43,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (44,'Individual',NULL,'Delana Ivanov',NULL,NULL,'Delana','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Delana',NULL,NULL,NULL,'3',NULL,'1796516445',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (45,'Individual',NULL,'Esta Wattson',NULL,NULL,'Esta','B','Wattson',0,1,0,0,0,0,NULL,'Wattson, Esta',NULL,NULL,NULL,'2',NULL,'1484476563',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Wattson',NULL,NULL,'2001-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (46,'Individual',NULL,'Dr. Miguel Samuels',NULL,NULL,'Miguel','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Miguel',NULL,NULL,NULL,'3',NULL,'1633688376',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (47,'Individual',NULL,'Ashley McReynolds Sr.',NULL,NULL,'Ashley','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Ashley',NULL,NULL,NULL,NULL,NULL,'68872917',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley McReynolds Sr.',NULL,NULL,'1971-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (48,'Individual',NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,'2',NULL,'910006395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (49,'Individual',NULL,'Dr. Carlos Ivanov Jr.',NULL,NULL,'Carlos','E','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Carlos',NULL,NULL,NULL,'5',NULL,'3509440467',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Ivanov Jr.',NULL,2,'1994-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (50,'Organization',NULL,'Illinois Food Fund','Illinois Food Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Illinois Food Fund',NULL,NULL,NULL,'3',NULL,'1276770505',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Illinois Food Fund',NULL,NULL,NULL,0,NULL,NULL,74,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (51,'Household',NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'1022464571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz-ÅÄ…chowski family',5,NULL,'Dear DÃaz-ÅÄ…chowski family',2,NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (52,'Organization',NULL,'Lincoln Action Academy','Lincoln Action Academy',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Lincoln Action Academy',NULL,NULL,NULL,'4',NULL,'588269897',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Action Academy',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (54,'Individual',NULL,'Dr. Teddy Nielsen',NULL,NULL,'Teddy','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Teddy',NULL,NULL,NULL,'3',NULL,'1600610365',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Nielsen',NULL,2,'1945-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (55,'Individual',NULL,'Russell Ivanov Jr.',NULL,NULL,'Russell','P','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Russell',NULL,NULL,NULL,'5',NULL,'624189081',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (56,'Individual',NULL,'Merrie Cooper',NULL,NULL,'Merrie','','Cooper',0,0,0,0,1,0,NULL,'Cooper, Merrie',NULL,NULL,NULL,'2',NULL,'340467569',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Cooper',NULL,1,'1939-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (57,'Individual',NULL,'Dr. Maxwell Deforest',NULL,NULL,'Maxwell','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Maxwell',NULL,NULL,NULL,'1',NULL,'1808949889',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (58,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,'1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (59,'Organization',NULL,'Global Sustainability Alliance','Global Sustainability Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,'1',NULL,'842567976',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (60,'Individual',NULL,'Dr. Lou Ivanov Jr.',NULL,NULL,'Lou','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lou',NULL,NULL,NULL,'2',NULL,'211844515',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Ivanov Jr.',NULL,2,'1981-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (61,'Individual',NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,'1',NULL,'1093174039',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (62,'Individual',NULL,'Alexia Reynolds',NULL,NULL,'Alexia','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,'5',NULL,'1389353396',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (63,'Individual',NULL,'Sonny Reynolds',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds',NULL,2,'2011-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (64,'Organization',NULL,'Dowlen Software Alliance','Dowlen Software Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,NULL,NULL,'1260268914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,0,NULL,NULL,184,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (65,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (66,'Individual',NULL,'Barry Terry',NULL,NULL,'Barry','N','Terry',0,1,0,0,0,0,NULL,'Terry, Barry',NULL,NULL,NULL,NULL,NULL,'929041000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terry',NULL,NULL,'2007-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (67,'Organization',NULL,'Bay Empowerment School','Bay Empowerment School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bay Empowerment School',NULL,NULL,NULL,NULL,NULL,'2478135666',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Empowerment School',NULL,NULL,NULL,0,NULL,NULL,76,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (68,'Organization',NULL,'United Agriculture Academy','United Agriculture Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Agriculture Academy',NULL,NULL,NULL,'2',NULL,'2961780957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,85,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (69,'Organization',NULL,'Global Sports Center','Global Sports Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sports Center',NULL,NULL,NULL,NULL,NULL,'2901322748',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sports Center',NULL,NULL,NULL,0,NULL,NULL,4,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (70,'Individual',NULL,'Irvin DÃaz Jr.',NULL,NULL,'Irvin','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Irvin',NULL,NULL,NULL,NULL,NULL,'2415400429',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin DÃaz Jr.',NULL,2,'1952-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (71,'Individual',NULL,'Ms. Bernadette Müller',NULL,NULL,'Bernadette','F','Müller',0,0,0,0,1,0,NULL,'Müller, Bernadette',NULL,NULL,NULL,NULL,NULL,'2804032609',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Ms. Bernadette Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (72,'Individual',NULL,'Mr. Miguel Wagner','Progressive Culture Partnership',NULL,'Miguel','D','Wagner',0,0,0,0,0,0,NULL,'Wagner, Miguel',NULL,NULL,NULL,NULL,NULL,'422482436',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Wagner',NULL,2,'1950-08-08',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (73,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (74,'Individual',NULL,'Valene Samuels','Illinois Food Fund',NULL,'Valene','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Valene',NULL,NULL,NULL,NULL,NULL,'1762584511',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samuels',NULL,1,'2020-03-07',0,NULL,NULL,NULL,NULL,NULL,50,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (75,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (76,'Individual',NULL,'Mr. Miguel Prentice II','Bay Empowerment School',NULL,'Miguel','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Miguel',NULL,NULL,NULL,NULL,NULL,'3093767059',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Prentice II',NULL,NULL,'1978-08-28',0,NULL,NULL,NULL,NULL,NULL,67,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (77,'Organization',NULL,'Global Wellness Center','Global Wellness Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Wellness Center',NULL,NULL,NULL,'4',NULL,'2771241701',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Wellness Center',NULL,NULL,NULL,0,NULL,NULL,81,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (78,'Individual',NULL,'Shad Müller',NULL,NULL,'Shad','','Müller',0,0,0,0,0,0,NULL,'Müller, Shad',NULL,NULL,NULL,NULL,NULL,'233080666',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Müller',NULL,2,NULL,1,'2022-12-10',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (79,'Individual',NULL,'Irvin Müller',NULL,NULL,'Irvin','N','Müller',0,0,0,0,1,0,NULL,'Müller, Irvin',NULL,NULL,NULL,NULL,NULL,'1250430175',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Müller',NULL,2,'2016-02-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (80,'Individual',NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'Kathlyn','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Kathlyn',NULL,NULL,NULL,NULL,NULL,'3934921435',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'1970-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (81,'Individual',NULL,'Dr. Elina Smith','Global Wellness Center',NULL,'Elina','D','Smith',0,0,0,0,1,0,NULL,'Smith, Elina',NULL,NULL,NULL,'3',NULL,'1079819733',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Smith',NULL,1,'1942-10-13',0,NULL,NULL,NULL,NULL,NULL,77,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (82,'Individual',NULL,'Mrs. Margaret Cruz',NULL,NULL,'Margaret','M','Cruz',0,0,0,0,1,0,NULL,'Cruz, Margaret',NULL,NULL,NULL,'2',NULL,'680750633',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (83,'Individual',NULL,'Toby Barkley',NULL,NULL,'Toby','F','Barkley',1,0,0,0,1,0,NULL,'Barkley, Toby',NULL,NULL,NULL,'3',NULL,'2112758075',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (84,'Individual',NULL,'Mr. Craig Prentice',NULL,NULL,'Craig','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Craig',NULL,NULL,NULL,'1',NULL,'3778069057',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Prentice',NULL,2,'1964-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (85,'Individual',NULL,'Dr. Justina McReynolds','United Agriculture Academy',NULL,'Justina','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Justina',NULL,NULL,NULL,'5',NULL,'1146130692',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina McReynolds',NULL,1,'1989-07-29',0,NULL,NULL,NULL,NULL,NULL,68,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (86,'Individual',NULL,'Eleonor Parker',NULL,NULL,'Eleonor','K','Parker',0,0,0,0,0,0,NULL,'Parker, Eleonor',NULL,NULL,NULL,NULL,NULL,'3234463672',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Parker',NULL,1,'1995-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (87,'Individual',NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,'2789926097',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (88,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (89,'Individual',NULL,'Kiara Nielsen',NULL,NULL,'Kiara','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Kiara',NULL,NULL,NULL,'2',NULL,'4265488572',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Nielsen',NULL,1,'1968-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (90,'Individual',NULL,'Junko ÅÄ…chowski',NULL,NULL,'Junko','E','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Junko',NULL,NULL,NULL,'5',NULL,'213828340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko ÅÄ…chowski',NULL,NULL,'1989-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (91,'Individual',NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,'3825255427',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (92,'Individual',NULL,'Mrs. Magan Wilson-Jameson',NULL,NULL,'Magan','','Wilson-Jameson',0,1,0,0,0,0,NULL,'Wilson-Jameson, Magan',NULL,NULL,NULL,NULL,NULL,'200719141',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan Wilson-Jameson',NULL,1,'2002-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (93,'Individual',NULL,'Mr. Jackson McReynolds',NULL,NULL,'Jackson','Q','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Jackson',NULL,NULL,NULL,'3',NULL,'748161972',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (94,'Individual',NULL,'Omar Parker Jr.',NULL,NULL,'Omar','','Parker',0,1,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,'2',NULL,'3921166397',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Parker Jr.',NULL,NULL,'1998-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (95,'Organization',NULL,'Rural Agriculture Trust','Rural Agriculture Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,'3',NULL,'3564832016',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (96,'Individual',NULL,'blackwella@notmail.org','Local Environmental Trust',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'blackwella@notmail.org',NULL,NULL,NULL,NULL,NULL,'442145169',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear blackwella@notmail.org',1,NULL,'Dear blackwella@notmail.org',1,NULL,'blackwella@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,148,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (97,'Individual',NULL,'Bernadette ÅÄ…chowski',NULL,NULL,'Bernadette','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Bernadette',NULL,NULL,NULL,'2',NULL,'2108681272',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette ÅÄ…chowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (98,'Individual',NULL,'Shauna Patel',NULL,NULL,'Shauna','P','Patel',0,1,0,0,0,0,NULL,'Patel, Shauna',NULL,NULL,NULL,NULL,NULL,'607971339',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Patel',NULL,1,'1949-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (99,'Individual',NULL,'Ms. Mei Olsen',NULL,NULL,'Mei','R','Olsen',1,0,0,0,0,0,NULL,'Olsen, Mei',NULL,NULL,NULL,NULL,NULL,'258402374',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (100,'Individual',NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,'4287671736',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (101,'Individual',NULL,'Delana Dimitrov',NULL,NULL,'Delana','L','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Delana',NULL,NULL,NULL,NULL,NULL,'4026480882',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Dimitrov',NULL,1,NULL,1,'2023-10-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (102,'Individual',NULL,'Mr. Barry Wagner',NULL,NULL,'Barry','N','Wagner',0,0,0,0,0,0,NULL,'Wagner, Barry',NULL,NULL,NULL,NULL,NULL,'1267143153',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Wagner',NULL,2,'1953-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (103,'Organization',NULL,'Oregon Development Network','Oregon Development Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Oregon Development Network',NULL,NULL,NULL,'2',NULL,'784567487',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Network',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (104,'Individual',NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'3914421875',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (105,'Individual',NULL,'Dr. Elizabeth Roberts',NULL,NULL,'Elizabeth','D','Roberts',1,0,0,0,0,0,NULL,'Roberts, Elizabeth',NULL,NULL,NULL,'3',NULL,'3104864980',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Roberts',NULL,1,'1971-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (106,'Individual',NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,'1568362394',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (107,'Individual',NULL,'Esta ÅÄ…chowski',NULL,NULL,'Esta','G','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Esta',NULL,NULL,NULL,'1',NULL,'195412899',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta ÅÄ…chowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (108,'Individual',NULL,'Dr. Kiara ÅÄ…chowski',NULL,NULL,'Kiara','O','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Kiara',NULL,NULL,NULL,NULL,NULL,'1559609409',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara ÅÄ…chowski',NULL,NULL,'1982-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (109,'Individual',NULL,'Lashawnda Prentice','Lincoln Action Academy',NULL,'Lashawnda','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,NULL,NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,52,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (110,'Individual',NULL,'Mr. Lawerence Deforest',NULL,NULL,'Lawerence','','Deforest',1,0,0,0,0,0,NULL,'Deforest, Lawerence',NULL,NULL,NULL,NULL,NULL,'2962516652',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (111,'Individual',NULL,'Kenny Yadav II',NULL,NULL,'Kenny','D','Yadav',0,0,0,0,0,0,NULL,'Yadav, Kenny',NULL,NULL,NULL,'4',NULL,'250746844',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Yadav II',NULL,NULL,'1995-06-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (112,'Individual',NULL,'Mr. Sherman Müller',NULL,NULL,'Sherman','H','Müller',1,0,0,0,0,0,NULL,'Müller, Sherman',NULL,NULL,NULL,'3',NULL,'1541323485',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Müller',NULL,2,'1991-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (113,'Individual',NULL,'Dr. Elizabeth Robertson',NULL,NULL,'Elizabeth','','Robertson',1,0,0,0,0,0,NULL,'Robertson, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3762031116',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Robertson',NULL,NULL,'1954-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (114,'Individual',NULL,'Daren Samson-Terry',NULL,NULL,'Daren','F','Samson-Terry',1,0,0,0,0,0,NULL,'Samson-Terry, Daren',NULL,NULL,NULL,NULL,NULL,'1484741128',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Samson-Terry',NULL,2,'1982-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (115,'Individual',NULL,'Clint Deforest','Sacramento Empowerment Partners',NULL,'Clint','U','Deforest',0,0,0,0,0,0,NULL,'Deforest, Clint',NULL,NULL,NULL,'1',NULL,'2437706084',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,135,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (116,'Individual',NULL,'Teresa Olsen',NULL,NULL,'Teresa','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teresa',NULL,NULL,NULL,NULL,NULL,'1784308763',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Olsen',NULL,1,'2007-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (117,'Individual',NULL,'Norris Reynolds',NULL,NULL,'Norris','S','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Norris',NULL,NULL,NULL,NULL,NULL,'3621358089',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (118,'Individual',NULL,'Alexia Lee-Yadav',NULL,NULL,'Alexia','P','Lee-Yadav',0,1,0,0,1,0,NULL,'Lee-Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'147177678',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Lee-Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (119,'Individual',NULL,'Mr. Ashley Wagner',NULL,NULL,'Ashley','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,'1',NULL,'1660268830',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Wagner',NULL,2,'1981-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (120,'Individual',NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,'1',NULL,'2482041681',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (121,'Individual',NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,'5',NULL,'2359360083',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (122,'Organization',NULL,'Cranfills Gap Health Trust','Cranfills Gap Health Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,'1',NULL,'45920780',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,0,NULL,NULL,18,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (123,'Individual',NULL,'Kathlyn Roberts',NULL,NULL,'Kathlyn','Z','Roberts',0,0,0,0,0,0,NULL,'Roberts, Kathlyn',NULL,NULL,NULL,NULL,NULL,'2944584126',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Roberts',NULL,1,'1942-07-12',1,'2023-02-07',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (124,'Individual',NULL,'Dr. Scott Müller',NULL,NULL,'Scott','Q','Müller',0,0,0,0,0,0,NULL,'Müller, Scott',NULL,NULL,NULL,NULL,NULL,'2575613599',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Müller',NULL,2,'1963-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (125,'Individual',NULL,'Sharyn Ivanov',NULL,NULL,'Sharyn','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sharyn',NULL,NULL,NULL,NULL,NULL,'4099997756',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (126,'Individual',NULL,'Troy Prentice',NULL,NULL,'Troy','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Troy',NULL,NULL,NULL,NULL,NULL,'2143976390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,NULL,'1996-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (127,'Individual',NULL,'Dr. Kiara Bachman',NULL,NULL,'Kiara','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'1',NULL,'3047638217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Bachman',NULL,1,'1947-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (128,'Individual',NULL,'Dr. Lincoln Cruz',NULL,NULL,'Lincoln','Y','Cruz',0,0,0,0,1,0,NULL,'Cruz, Lincoln',NULL,NULL,NULL,'2',NULL,'3085396026',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Cruz',NULL,2,'1940-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (129,'Individual',NULL,'Erik Deforest','Creative Peace Solutions',NULL,'Erik','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Erik',NULL,NULL,NULL,NULL,NULL,'1691264565',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Deforest',NULL,2,'1973-02-04',0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (130,'Individual',NULL,'Justina Jensen',NULL,NULL,'Justina','','Jensen',0,0,0,0,1,0,NULL,'Jensen, Justina',NULL,NULL,NULL,'4',NULL,'3253764259',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jensen',NULL,1,'1982-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (131,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels family',NULL,NULL,NULL,'5',NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (132,'Individual',NULL,'Allen Cooper II',NULL,NULL,'Allen','K','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,'3',NULL,'1888383899',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Cooper II',NULL,2,'1974-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (133,'Organization',NULL,'Progressive Culture Partnership','Progressive Culture Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,'3',NULL,'3653775844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,0,NULL,NULL,72,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (134,'Household',NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,'3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (135,'Organization',NULL,'Sacramento Empowerment Partners','Sacramento Empowerment Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,'2',NULL,'3370788420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,0,NULL,NULL,115,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (136,'Individual',NULL,'Ms. Merrie Smith',NULL,NULL,'Merrie','L','Smith',1,0,0,0,0,0,NULL,'Smith, Merrie',NULL,NULL,NULL,'1',NULL,'2728255522',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (137,'Individual',NULL,'Mrs. Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Olsen',NULL,1,'1986-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (138,'Individual',NULL,'Mr. Toby Jacobs',NULL,NULL,'Toby','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Toby',NULL,NULL,NULL,NULL,NULL,'247886444',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Jacobs',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (139,'Organization',NULL,'Rural Health Initiative','Rural Health Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Rural Health Initiative',NULL,NULL,NULL,NULL,NULL,'1369844291',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Health Initiative',NULL,NULL,NULL,0,NULL,NULL,197,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (140,'Individual',NULL,'Mr. Russell Terry',NULL,NULL,'Russell','','Terry',0,0,0,0,0,0,NULL,'Terry, Russell',NULL,NULL,NULL,NULL,NULL,'3994938484',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Terry',NULL,2,'1952-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (141,'Individual',NULL,'Elbert Cruz',NULL,NULL,'Elbert','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Elbert',NULL,NULL,NULL,NULL,NULL,'418027726',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Cruz',NULL,2,'1966-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (142,'Individual',NULL,'Dr. Tanya Blackwell',NULL,NULL,'Tanya','H','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Tanya',NULL,NULL,NULL,NULL,NULL,'2751001066',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (143,'Individual',NULL,'Kenny Olsen III',NULL,NULL,'Kenny','L','Olsen',0,0,0,0,0,0,NULL,'Olsen, Kenny',NULL,NULL,NULL,NULL,NULL,'293860292',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Olsen III',NULL,NULL,'1982-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (144,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',0,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (145,'Individual',NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'Shad','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Shad',NULL,NULL,NULL,NULL,NULL,'3732235082',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'1973-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (146,'Organization',NULL,'United Culture Initiative','United Culture Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'United Culture Initiative',NULL,NULL,NULL,'3',NULL,'1902448514',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,178,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (147,'Individual',NULL,'Toby Samuels III',NULL,NULL,'Toby','L','Samuels',0,0,0,0,0,0,NULL,'Samuels, Toby',NULL,NULL,NULL,NULL,NULL,'126496012',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Samuels III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (148,'Organization',NULL,'Local Environmental Trust','Local Environmental Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Local Environmental Trust',NULL,NULL,NULL,'3',NULL,'1375669844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Environmental Trust',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (149,'Individual',NULL,'Dr. Nicole Samuels',NULL,NULL,'Nicole','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Nicole',NULL,NULL,NULL,'1',NULL,'3510229898',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Samuels',NULL,1,'1977-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (150,'Individual',NULL,'Mr. Allan Prentice',NULL,NULL,'Allan','H','Prentice',1,0,0,0,0,0,NULL,'Prentice, Allan',NULL,NULL,NULL,'5',NULL,'2464878706',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Prentice',NULL,NULL,'1952-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (151,'Individual',NULL,'Kandace Cruz-Reynolds',NULL,NULL,'Kandace','Z','Cruz-Reynolds',0,0,0,0,1,0,NULL,'Cruz-Reynolds, Kandace',NULL,NULL,NULL,'1',NULL,'2077726550',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Cruz-Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (152,'Individual',NULL,'Alexia Yadav',NULL,NULL,'Alexia','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'1312807214',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Yadav',NULL,NULL,'1987-05-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (153,'Individual',NULL,'Dr. Esta Nielsen',NULL,NULL,'Esta','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Esta',NULL,NULL,NULL,'3',NULL,'2804173952',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Nielsen',NULL,NULL,'1938-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (154,'Individual',NULL,'Valene Reynolds',NULL,NULL,'Valene','Z','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Valene',NULL,NULL,NULL,'4',NULL,'2505441873',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Reynolds',NULL,1,'1974-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (155,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (156,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (157,'Individual',NULL,'Mrs. Megan Jameson',NULL,NULL,'Megan','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Megan',NULL,NULL,NULL,NULL,NULL,'1706411142',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Jameson',NULL,1,'1986-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (158,'Individual',NULL,'Dr. Rosario Robertson II',NULL,NULL,'Rosario','M','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rosario',NULL,NULL,NULL,'2',NULL,'1907398578',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (159,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'4',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (160,'Individual',NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,'4284286130',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (161,'Organization',NULL,'Progressive Music Network','Progressive Music Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Progressive Music Network',NULL,NULL,NULL,'4',NULL,'2461489408',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Music Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (162,'Individual',NULL,'Dr. Brigette Terry',NULL,NULL,'Brigette','','Terry',0,0,0,0,0,0,NULL,'Terry, Brigette',NULL,NULL,NULL,NULL,NULL,'2789451544',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (163,'Individual',NULL,'Mrs. Kathlyn Jensen-Terry',NULL,NULL,'Kathlyn','','Jensen-Terry',1,0,0,0,1,0,NULL,'Jensen-Terry, Kathlyn',NULL,NULL,NULL,'3',NULL,'4042544597',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen-Terry',NULL,1,'1967-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (164,'Individual',NULL,'Dr. Bob Prentice',NULL,NULL,'Bob','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Bob',NULL,NULL,NULL,'3',NULL,'912966256',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (165,'Individual',NULL,'Landon Olsen',NULL,NULL,'Landon','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Landon',NULL,NULL,NULL,NULL,NULL,'496664817',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (166,'Individual',NULL,'Mr. Clint Terry',NULL,NULL,'Clint','A','Terry',0,0,0,0,0,0,NULL,'Terry, Clint',NULL,NULL,NULL,NULL,NULL,'1893701236',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Terry',NULL,2,'1952-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (167,'Individual',NULL,'Dr. Errol Ivanov',NULL,NULL,'Errol','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Errol',NULL,NULL,NULL,NULL,NULL,'3859438937',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Ivanov',NULL,2,'1959-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (168,'Individual',NULL,'Dr. Ivey Deforest',NULL,NULL,'Ivey','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Ivey',NULL,NULL,NULL,NULL,NULL,'1981648661',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (169,'Individual',NULL,'Kathlyn Jones',NULL,NULL,'Kathlyn','','Jones',1,0,0,0,1,0,NULL,'Jones, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1774529515',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (170,'Individual',NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,'6529586',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattsonm@infomail.net',1,NULL,'Dear wattsonm@infomail.net',1,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (171,'Individual',NULL,'Mrs. Santina Robertson',NULL,NULL,'Santina','X','Robertson',1,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,'5',NULL,'2867920569',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Robertson',NULL,1,'1946-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (172,'Individual',NULL,'Allan Zope Sr.',NULL,NULL,'Allan','T','Zope',0,0,0,0,1,0,NULL,'Zope, Allan',NULL,NULL,NULL,'5',NULL,'891375066',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (173,'Individual',NULL,'Mrs. Sharyn Yadav',NULL,NULL,'Sharyn','V','Yadav',0,0,0,0,0,0,NULL,'Yadav, Sharyn',NULL,NULL,NULL,NULL,NULL,'2905194815',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Yadav',NULL,1,NULL,1,'2023-03-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (174,'Individual',NULL,'Mr. Miguel Zope III',NULL,NULL,'Miguel','','Zope',0,0,0,0,0,0,NULL,'Zope, Miguel',NULL,NULL,NULL,'1',NULL,'1624097300',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Zope III',NULL,2,'1990-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (175,'Individual',NULL,'Betty McReynolds',NULL,NULL,'Betty','J','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Betty',NULL,NULL,NULL,NULL,NULL,'2136104008',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty McReynolds',NULL,NULL,'1982-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (176,'Individual',NULL,'Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'4',NULL,'3509379571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Reynolds',NULL,1,'1964-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (177,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'4',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (178,'Individual',NULL,'Dr. Rodrigo Jameson','United Culture Initiative',NULL,'Rodrigo','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Rodrigo',NULL,NULL,NULL,NULL,NULL,'2012648674',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Jameson',NULL,2,'1954-05-09',0,NULL,NULL,NULL,NULL,NULL,146,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (179,'Individual',NULL,'Dr. Bernadette Jacobs-Prentice',NULL,NULL,'Bernadette','','Jacobs-Prentice',1,0,0,0,1,0,NULL,'Jacobs-Prentice, Bernadette',NULL,NULL,NULL,'5',NULL,'2581639941',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Jacobs-Prentice',NULL,1,'1974-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (180,'Individual',NULL,'Dr. Carlos Samson',NULL,NULL,'Carlos','F','Samson',0,1,0,0,0,0,NULL,'Samson, Carlos',NULL,NULL,NULL,'1',NULL,'3685526914',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (181,'Individual',NULL,'Ms. Tanya McReynolds',NULL,NULL,'Tanya','B','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Tanya',NULL,NULL,NULL,NULL,NULL,'2833475968',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya McReynolds',NULL,1,'1989-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (182,'Individual',NULL,'Herminia Terry',NULL,NULL,'Herminia','Q','Terry',1,0,0,0,0,0,NULL,'Terry, Herminia',NULL,NULL,NULL,NULL,NULL,'356369010',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Terry',NULL,1,'1975-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (183,'Individual',NULL,'Mr. Kenny Ivanov',NULL,NULL,'Kenny','A','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Kenny',NULL,NULL,NULL,NULL,NULL,'4111336352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Ivanov',NULL,2,'1980-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (184,'Individual',NULL,'Dr. Teddy Cooper III','Dowlen Software Alliance',NULL,'Teddy','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Teddy',NULL,NULL,NULL,NULL,NULL,'828228061',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Cooper III',NULL,2,'1993-12-20',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (185,'Individual',NULL,'Sherman Robertson III','Global Sustainability Alliance',NULL,'Sherman','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Sherman',NULL,NULL,NULL,'3',NULL,'3479857214',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,59,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (186,'Individual',NULL,'Mr. Kenny Jacobs III',NULL,NULL,'Kenny','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Kenny',NULL,NULL,NULL,NULL,NULL,'1044730065',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Jacobs III',NULL,NULL,'1944-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (187,'Individual',NULL,'Mr. Bob Terrell','Oregon Development Network',NULL,'Bob','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,NULL,NULL,'1949116278',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Terrell',NULL,2,'1985-04-15',0,NULL,NULL,NULL,NULL,NULL,103,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (188,'Individual',NULL,'Mrs. Alexia DÃaz',NULL,NULL,'Alexia','Q','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Alexia',NULL,NULL,NULL,'1',NULL,'352965868',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (189,'Individual',NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,'356570904',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (190,'Household',NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,'3738961941',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Reynolds family',5,NULL,'Dear Cruz-Reynolds family',2,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (191,'Household',NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,'1733530397',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson-Jameson family',5,NULL,'Dear Wilson-Jameson family',2,NULL,'Wilson-Jameson family',NULL,NULL,NULL,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (192,'Individual',NULL,'Mrs. Josefa Wilson',NULL,NULL,'Josefa','L','Wilson',0,1,0,0,0,0,NULL,'Wilson, Josefa',NULL,NULL,NULL,'2',NULL,'244303065',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (193,'Individual',NULL,'Alexia Ivanov',NULL,NULL,'Alexia','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Alexia',NULL,NULL,NULL,NULL,NULL,'393680941',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (194,'Individual',NULL,'Mr. Troy Müller',NULL,NULL,'Troy','','Müller',0,0,0,0,0,0,NULL,'Müller, Troy',NULL,NULL,NULL,NULL,NULL,'2080888850',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Mr. Troy Müller',NULL,NULL,'1958-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (195,'Individual',NULL,'Tanya Terrell',NULL,NULL,'Tanya','G','Terrell',0,0,0,0,1,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,NULL,NULL,'1604022989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Terrell',NULL,1,'1995-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (196,'Individual',NULL,'Barry Terrell',NULL,NULL,'Barry','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Barry',NULL,NULL,NULL,'5',NULL,'1436486502',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (197,'Individual',NULL,'Ray Grant Jr.','Rural Health Initiative',NULL,'Ray','X','Grant',0,1,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'3',NULL,'2294694701',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,139,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (198,'Individual',NULL,'Dr. Brent Reynolds Sr.',NULL,NULL,'Brent','','Reynolds',0,1,0,0,0,0,NULL,'Reynolds, Brent',NULL,NULL,NULL,NULL,NULL,'547975558',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Reynolds Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (199,'Individual',NULL,'Dr. Magan Müller',NULL,NULL,'Magan','O','Müller',0,0,0,0,0,0,NULL,'Müller, Magan',NULL,NULL,NULL,'3',NULL,'681120033',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (200,'Individual',NULL,'Lashawnda Deforest-Ivanov',NULL,NULL,'Lashawnda','A','Deforest-Ivanov',0,0,0,0,0,0,NULL,'Deforest-Ivanov, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1651460725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Ivanov',NULL,1,'1972-08-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (201,'Individual',NULL,'Beula Nielsen',NULL,NULL,'Beula','R','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Beula',NULL,NULL,NULL,'1',NULL,'1989597446',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Nielsen',NULL,1,'1980-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','2553ad08256bebb3da7d27de1801f4e3',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -2215,117 +2220,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution` WRITE; /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */; INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES - (1,2,1,NULL,4,'2013-10-07 01:51:39',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0), - (2,4,1,NULL,1,'2021-07-07 01:51:39',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (3,6,1,NULL,4,'2017-09-11 12:51:39',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0), - (4,8,1,NULL,4,'2021-07-07 01:51:39',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0), - (5,4,1,NULL,1,'2021-07-07 01:51:39',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (6,16,1,NULL,4,'2023-07-14 01:09:39',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0), - (7,19,1,NULL,1,'2023-10-05 01:51:39',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0), - (8,82,1,NULL,1,'2023-02-12 10:02:39',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (9,92,1,NULL,1,'2022-11-07 01:51:39',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (10,34,1,NULL,1,'2019-05-15 03:51:39',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (11,71,1,NULL,1,'2023-10-05 21:51:39',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (12,43,1,NULL,1,'2022-07-06 15:18:19',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (13,32,1,NULL,1,'2023-07-07 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (14,32,1,NULL,1,'2023-08-07 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (15,59,1,NULL,1,'2022-07-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (16,59,1,NULL,1,'2022-08-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (17,59,1,NULL,1,'2022-09-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (18,59,1,NULL,1,'2022-10-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (19,59,1,NULL,1,'2022-11-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (20,59,1,NULL,1,'2022-12-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (21,59,1,NULL,1,'2023-01-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (22,59,1,NULL,1,'2023-02-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (23,59,1,NULL,1,'2023-03-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (24,59,1,NULL,1,'2023-04-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (25,59,1,NULL,1,'2023-05-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (26,99,1,NULL,1,'2023-02-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (27,99,1,NULL,1,'2023-03-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (28,99,1,NULL,1,'2023-04-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (29,99,1,NULL,1,'2023-05-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (30,99,1,NULL,1,'2023-06-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (31,103,1,NULL,1,'2023-09-07 01:51:39',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (32,181,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'199fe91a3a34c8ce',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (33,143,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'92a30dc12bc6f89f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (34,69,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'b9a6747fd6568fc2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (35,140,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'82e83517499bed14',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (36,119,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'db59f4a2b5c5e910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (37,32,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'f4a649ade54561d2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (38,113,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'39c163eb3d4be45f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (39,157,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'247f664cf3df1315',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (40,18,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'500ccd7fcc2abbba',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (41,99,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'182b1f7585ecd170',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (42,23,2,NULL,1,'2023-10-07 01:51:39',0.00,1200.00,NULL,NULL,'b237ce5365d90585',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (43,115,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'335863057117965b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (44,128,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'f011e469b75a2a36',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (45,55,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'b6176b7b65ed72f1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (46,163,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'da38a9b7b64f40ca',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (47,126,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'9a4fc74545d39864',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (48,141,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'eb11e97806d830cb',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (49,125,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'05a06f6a774b5ff6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (50,172,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'5192d580921731bf',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (51,156,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'2950723f11f5e239',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (52,93,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'b7b728e2eaf732e1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (53,37,2,NULL,1,'2023-10-07 01:51:39',0.00,1200.00,NULL,NULL,'6600cd795ed03a60',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (54,81,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'94e3e06a9e9b53c1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (55,122,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'53b4c84f1f6d87f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (56,36,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'fb0b2a2539f57eb6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (57,15,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'7ba0d6192288fd47',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (58,131,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'0eaed8d79ce1b8e2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (59,158,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'4dd4ba301641ab44',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (60,193,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'377748d4cf02df93',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (61,30,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'ce228497888c2378',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (63,1,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'4959fbae7c7cc84c',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (64,7,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'aba6ff5d44f34e7f',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (65,10,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'a94fec7ebdce0620',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (66,13,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'7b7e2bdd408bae45',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (67,14,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'2bee5ffd2592ca3d',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (68,17,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'42a7294b9baf02d3',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (69,27,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'4132024b570ff06c',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (70,29,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'0148e195bca51d81',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (71,32,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'165967a21ea2b659',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (72,37,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'5601aea891e87f0d',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (73,50,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'7ed9ae13f33e76df',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (74,53,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'e532775a80589dd2',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (75,54,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'ed1ca23c1c2945c3',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (76,61,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'89e19b42e174eb80',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (77,63,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'0be1bc2f90a806b7',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (78,64,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'3df236b8a47b5bb9',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (79,69,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'6884516bd1244063',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (80,78,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'043190c33aa17fd2',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (81,79,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'c5ee4eb0b3d0c901',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (82,81,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'faa306e7256fce34',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (83,85,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'692f41d144ba99b2',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (84,89,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'3e52e256b26e001d',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (85,93,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'66e129a8d6e297fa',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (86,95,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'45bb6ea0781be9f0',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (87,100,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'69be08504eee5355',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (88,101,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'f5b11319837ef1e6',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (89,102,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'0840f3d87c6e85fb',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (90,111,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'27132cb320864779',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (91,112,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'374e2f2ed959566e',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (92,114,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'d0430a4a2d99e47f',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (93,118,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'7d4564e1bdd09791',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (94,121,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'03a4f5fe114a9c59',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (95,122,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'fe47d7e306522352',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (96,126,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'60f18e18ad36e0a8',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (97,134,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'e9270c01cb7e7d87',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (98,141,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'b0ec3e0cb2cb6aee',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (99,147,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'11002b1a386b49ad',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (100,150,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'7ab5e66da17e8d68',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (101,152,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'ccb8e93eff3029fa',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (102,160,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'1b101efdd36b05cf',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (103,165,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'629d63496b32ec37',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (104,168,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'a7ff24e77623ff66',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (105,169,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'857dc2777c1a660c',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (106,172,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'7f1e20b2b28f8226',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (107,175,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'609e9f6ac922d912',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (108,181,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'b0f27fe74b6b4a8a',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (109,188,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'8e6e4153b0abab95',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (110,190,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'d5dbc6b4bd2fac95',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (111,195,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'58ce3d135fec464e',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (112,200,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'e6502ad537f88d38',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); + (1,2,1,NULL,4,'2013-10-19 14:22:30',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0), + (2,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (3,6,1,NULL,4,'2017-09-24 01:22:30',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0), + (4,8,1,NULL,4,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0), + (5,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (6,16,1,NULL,4,'2023-07-26 13:40:30',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0), + (7,19,1,NULL,1,'2023-10-17 14:22:30',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0), + (8,82,1,NULL,1,'2023-02-24 22:33:30',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (9,92,1,NULL,1,'2022-11-19 14:22:30',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (10,34,1,NULL,1,'2019-05-27 16:22:30',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (11,71,1,NULL,1,'2023-10-18 10:22:30',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (12,43,1,NULL,1,'2022-07-19 03:49:10',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (13,32,1,NULL,1,'2023-07-19 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (14,32,1,NULL,1,'2023-08-19 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (15,59,1,NULL,1,'2022-07-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (16,59,1,NULL,1,'2022-08-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (17,59,1,NULL,1,'2022-09-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (18,59,1,NULL,1,'2022-10-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (19,59,1,NULL,1,'2022-11-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (20,59,1,NULL,1,'2022-12-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (21,59,1,NULL,1,'2023-01-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (22,59,1,NULL,1,'2023-02-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (23,59,1,NULL,1,'2023-03-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (24,59,1,NULL,1,'2023-04-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (25,59,1,NULL,1,'2023-05-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (26,99,1,NULL,1,'2023-02-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (27,99,1,NULL,1,'2023-03-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (28,99,1,NULL,1,'2023-04-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (29,99,1,NULL,1,'2023-05-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (30,99,1,NULL,1,'2023-06-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (31,103,1,NULL,1,'2023-09-19 14:22:30',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (32,55,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c908bcfa0cd5be20',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (33,168,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'4d24ed19cb02ed0c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (34,36,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c7f53644ae2a7abd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (35,87,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'df65e9305cdef133',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (36,48,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'9e43d605091634b7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (37,180,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e6d81f09a41d0f35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (38,8,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e38f6ec37b9fabb3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (39,54,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'f739f79d40e7bd2d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (40,106,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'0937a86d9856d20f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (41,17,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'386a76c90a983717',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (42,175,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'1d446a98d22519c5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (43,28,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'6f302a92a8d039f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (44,117,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'184c1625a0ab7dc0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (45,86,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'fd4792bd3a50da87',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (46,149,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'2ae34338151a8c31',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (47,47,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'62904aaad7687d16',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (48,126,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'58c722d9ea8f60e4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (49,113,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'0e4d2cc74726c33e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (50,169,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'46fff670fdd88c83',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (51,164,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'126eb1cbca88ac46',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (52,39,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'8e1a4f823c309e35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (53,49,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9183e73af132fbd1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (54,92,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'e7836a1040fc6647',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (55,136,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'dc8c98604902da07',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (56,187,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9668e4798e266def',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (57,100,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ef096073ba84bc0a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (58,78,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'aa13673d8ef85a65',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (59,66,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'32f851d09a3775f2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (60,93,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'fe44a2c192ab18be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (61,5,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'ffed5868e9951a95',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (63,6,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b28927dfa09ab7b4',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (64,8,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'52b5a6a76b142227',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (65,10,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7245aac602b546bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (66,13,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ff5b5537da44c970',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (67,14,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fad72a1cf34cf68e',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (68,16,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'95a80169077a3dea',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (69,17,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'413cb05032f4ef86',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (70,19,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'755c91f4df5025f2',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (71,23,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'d39bcc7bf0e51cab',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (72,30,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'2169580b75789814',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (73,36,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'25a9f0b5ed29df0a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (74,40,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3eb2384d79bdaa10',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (75,41,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ed07590fe067cb07',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (76,45,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'96af8634550c39ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (77,57,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a2542bee3dc332de',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (78,69,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6cc8dd5a5b8e8913',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (79,73,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'a720e6fdf9eea694',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (80,76,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'732d30e0d1d41ca5',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (81,77,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ac8995759a7a3270',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (82,80,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6ba712ac9576b7b6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (83,84,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b056ac8b83186f79',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (84,88,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'24cc9f9c83795713',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (85,92,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'548746b3839860da',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (86,94,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'472bf4e471ef125f',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (87,96,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'188d57636c31422a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (88,97,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'c8d10d10dd2d66bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (89,101,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'082640d22f20fcf6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (90,117,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'7a53e74599f788ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (91,123,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f78524f14cda217c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (92,127,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3de19df12cf6886c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (93,132,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b7c48e40295cdc9a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (94,135,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'648327e05cdee0ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (95,144,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9dc4f36b0500ac35',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (96,154,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fe477a4cedeef016',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (97,156,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'bd1cbf336bcdc529',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (98,158,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'146f0c5184fd503c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (99,159,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'6def5a3cac235219',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (100,160,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'0ab78d1432305653',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (101,163,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4bc019d5fcebe204',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (102,172,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'44c3f7faa315a724',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (103,175,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7749b8e4f077e05c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (104,178,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7e35b99bd91e7b4c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (105,179,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'504a9107e1c840c3',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (106,182,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'cca171d375cdc8f6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (107,184,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'656d8e5060576829',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (108,189,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b7318d85efca799b',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (109,192,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4feacc260963ba72',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (110,195,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f82bc2b76969d315',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (111,196,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a96ed671bbd3ea09',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (112,197,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'60f19d9651d20536',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -2358,9 +2363,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_recur` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */; INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES - (1,59,25.00,'USD','month',1,12,'2022-07-07 01:51:39','2023-10-07 01:51:39','2023-10-07 01:51:39',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), - (2,99,10.00,'CAD','month',1,6,'2023-02-07 01:51:39','2023-10-07 01:51:39','2023-10-07 01:51:39','2023-09-07 01:51:39','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), - (3,103,5.00,'EUR','month',3,3,'2023-09-07 01:51:39','2023-10-07 01:51:39','2023-10-07 01:51:39',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-07 01:51:39',0,NULL,0,1,NULL,NULL,NULL,1); + (1,59,25.00,'USD','month',1,12,'2022-07-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), + (2,99,10.00,'CAD','month',1,6,'2023-02-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30','2023-09-19 14:22:30','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), + (3,103,5.00,'EUR','month',3,3,'2023-09-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-19 14:22:30',0,NULL,0,1,NULL,NULL,NULL,1); /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */; UNLOCK TABLES; @@ -2371,8 +2376,8 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_soft` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */; INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES - (1,9,113,10.00,'USD',1,1,'Jones Family','Helping Hands',10), - (2,10,113,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); + (1,9,142,10.00,'USD',1,1,'Jones Family','Helping Hands',10), + (2,10,142,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -2970,7 +2975,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_domain` WRITE; /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */; INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES - (1,'Default Domain Name',NULL,'5.67.3',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); + (1,'Default Domain Name',NULL,'5.68.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -2982,207 +2987,196 @@ LOCK TABLES `civicrm_email` WRITE; /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */; INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',1,0,0,0,NULL,NULL,NULL,NULL), - (2,26,1,'craigcruz87@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (3,26,1,'cruz.craig@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (4,201,1,'reynolds.iris@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (5,113,1,'jacobsj46@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (6,153,1,'grant.maxwell@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), - (7,98,1,'ashlier@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (8,98,1,'ashlier9@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (9,78,1,'zope.lincoln4@example.org',1,0,0,0,NULL,NULL,NULL,NULL), - (10,78,1,'lincolnz81@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (11,180,1,'barkleym81@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (12,182,1,'jameson.margaret@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (13,109,1,'rolandodimitrov6@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (14,109,1,'dimitrovr@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL), - (15,83,1,'ajameson@lol.com',1,0,0,0,NULL,NULL,NULL,NULL), - (16,83,1,'ashleyjameson65@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (17,125,1,'ek.dimitrov84@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (18,125,1,'errold@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (19,33,1,'rosariosmith@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (20,33,1,'rosariosmith@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (21,90,1,'samuelso87@example.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (22,90,1,'samuels.omar@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (23,72,1,'chowski.irvin5@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (24,72,1,'chowskii@sample.com',0,0,0,0,NULL,NULL,NULL,NULL), - (25,129,1,'jones.elbert@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (26,185,1,'sanfordterry@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (27,44,1,'blackwellm13@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (28,114,1,'robertson.l.santina@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (29,160,1,'jyadav81@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), - (30,95,1,'rsmith99@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (31,106,1,'jk.jacobs2@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (32,20,1,'dazr@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (33,20,1,'rz.daz78@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (34,94,1,'beulap@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (35,104,1,'rolandoblackwell56@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (36,104,1,'rolandoblackwell@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (37,142,1,'russelly86@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (38,97,1,'roberts.k.rolando@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (39,97,1,'robertsr51@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (40,120,1,'smitha23@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (41,120,1,'asmith@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (42,119,1,'shermanchowski@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (43,16,1,'mcreynolds.u.junko9@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (44,47,1,'vo.barkley@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (45,47,1,'valeneb@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (46,15,1,'lcooper@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (47,15,1,'cooper.landon@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (48,199,1,'nr.samson7@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), - (49,199,1,'norriss@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (50,165,1,'reynoldsk@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (51,146,1,'wilson.valene@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (52,146,1,'valenew@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (53,91,1,'sj.ivanov@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (54,91,1,'sanfordi@example.info',0,0,0,0,NULL,NULL,NULL,NULL), - (55,54,1,'gonzlez.carlos@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (56,30,1,'smith.o.mei95@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (57,164,1,'rayterry98@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (58,170,1,'deforests@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (59,138,1,'alidat@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (60,138,1,'terrya@example.net',0,0,0,0,NULL,NULL,NULL,NULL), - (61,177,1,'teddyterry@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (62,143,1,'wattson.h.errol73@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (63,143,1,'errolw@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (64,196,1,'bachman.craig8@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (65,198,1,'ashleyjameson@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL), - (66,198,1,'jamesona32@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (67,181,1,'yadava@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (68,181,1,'yadava@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (69,102,1,'jensend@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (70,102,1,'jensen.l.daren@example.info',0,0,0,0,NULL,NULL,NULL,NULL), - (71,167,1,'ivanov.jackson59@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (72,167,1,'ivanov.jackson@testing.com',0,0,0,0,NULL,NULL,NULL,NULL), - (73,68,1,'meiyadav72@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (74,68,1,'yadavm72@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (75,189,1,'jdimitrov@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (76,189,1,'jacobdimitrov@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (77,12,1,'adamsl4@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (78,12,1,'adams.k.lawerence@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (79,195,1,'bd.terry11@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (80,195,1,'terryb@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (81,192,1,'rebekahnielsen@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (82,192,1,'nielsen.v.rebekah@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (83,36,1,'grantk80@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (84,32,1,'grantt@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (85,32,1,'grantt@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (86,116,1,'teddyo@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (87,116,1,'olsen.a.teddy73@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (88,24,1,'eleonorivanov@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (89,24,1,'ivanov.eleonor61@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (90,163,1,'jones.winford@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (91,163,1,'winfordjones@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (92,46,1,'sjensen26@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (93,46,1,'jensen.shauna37@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (94,149,1,'jeromej@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (95,18,1,'rblackwell57@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (96,18,1,'rosarioblackwell@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (97,184,1,'blackwellm64@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (98,184,1,'margaretb34@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (99,10,1,'blackwelln@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (100,63,1,'dimitrovw@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), - (101,87,1,'roberts-dimitrov.x.megan@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (102,87,1,'roberts-dimitrovm77@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (103,57,1,'tdimitrov@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (104,175,1,'eolsen-mcreynolds91@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), - (105,93,1,'mcreynoldsa@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (106,93,1,'mcreynoldsa25@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (107,29,1,'lashawndamcreynolds@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (108,29,1,'mcreynolds.lashawnda@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (109,101,1,'hz.lee98@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (110,40,1,'llee51@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (111,40,1,'llee76@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (112,154,1,'ht.cruz@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (113,154,1,'heidicruz84@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (114,58,1,'zope.juliann@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (115,58,1,'zope.juliann@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (116,84,1,'ashleyjameson@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), - (117,22,1,'jamesonl@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (118,22,1,'jamesonl91@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (119,158,1,'russelljameson@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (120,158,1,'jamesonr@testing.net',0,0,0,0,NULL,NULL,NULL,NULL), - (121,65,1,'rzope42@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (122,82,1,'erikyadav16@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (123,82,1,'yadav.n.erik79@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (124,186,1,'elinay@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (125,80,1,'teresayadav59@example.info',1,0,0,0,NULL,NULL,NULL,NULL), - (126,80,1,'tyadav@sample.org',0,0,0,0,NULL,NULL,NULL,NULL), - (127,159,1,'erikyadav83@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (128,159,1,'yadave@sample.com',0,0,0,0,NULL,NULL,NULL,NULL), - (129,45,1,'lawerencejones@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (130,48,1,'meganterrell@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (131,48,1,'mterrell83@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (132,141,1,'jones-terrell.o.mei@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (133,141,1,'jones-terrellm@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (134,157,1,'dimitrov.z.ray@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (135,157,1,'rayd@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (136,128,1,'deforest.maxwell@example.net',1,0,0,0,NULL,NULL,NULL,NULL), - (137,8,1,'mz.dimitrov-deforest@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (138,8,1,'dimitrov-deforest.z.merrie@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (139,140,1,'dimitrov-deforest.toby97@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (140,144,1,'terrell.w.sanford@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (141,4,1,'eleonorw@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (142,4,1,'ewattson-terrell@example.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (143,178,1,'tobyt@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (144,127,1,'terrells@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (145,56,1,'wilson-daz.ashley@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (146,193,1,'jdaz@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (147,193,1,'jacobdaz@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (148,39,1,'jacobs.w.lashawnda61@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (149,79,1,'jacobs.beula@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (150,79,1,'jacobs.beula34@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (151,49,1,'jacobs.beula@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (152,137,1,'wilsonj2@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (153,173,1,'wilson.scott@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (154,173,1,'wilson.scott@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (155,69,1,'mmcreynolds@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL), - (156,75,1,'allanm@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (157,75,1,'mcreynoldsa@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (158,38,1,'elizabethb36@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (159,38,1,'blackwelle@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (160,176,1,'blackwell.k.angelika11@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (161,176,1,'blackwell.angelika@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (162,145,1,'samuels.jacob13@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (163,145,1,'jsamuels68@sample.org',0,0,0,0,NULL,NULL,NULL,NULL), - (164,191,1,'hsamuels61@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (165,41,1,'samuels.s.rolando81@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), - (166,25,1,'mdimitrov24@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (167,25,1,'merriedimitrov@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (168,28,1,'mariacruz-dimitrov48@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (169,28,1,'mariac75@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (170,31,3,'contact@bfmusicassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (171,194,2,'lee.jackson@bfmusicassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (172,150,3,'info@vnliteracysolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), - (173,79,2,'bjacobs68@vnliteracysolutions.org',0,0,0,0,NULL,NULL,NULL,NULL), - (174,133,3,'info@texasculturealliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (175,104,2,'rolandoblackwell@texasculturealliance.org',0,0,0,0,NULL,NULL,NULL,NULL), - (176,168,3,'info@globalagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL), - (177,174,3,'info@maplehealthfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), - (178,187,2,'jones-terrell.carlos17@maplehealthfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), - (179,190,3,'feedback@floridatechnology.org',1,0,0,0,NULL,NULL,NULL,NULL), - (180,122,2,'allanjameson68@floridatechnology.org',1,0,0,0,NULL,NULL,NULL,NULL), - (181,74,3,'info@longvilleactioncenter.org',1,0,0,0,NULL,NULL,NULL,NULL), - (182,159,2,'erikyadav@longvilleactioncenter.org',0,0,0,0,NULL,NULL,NULL,NULL), - (183,89,3,'service@greenaction.org',1,0,0,0,NULL,NULL,NULL,NULL), - (184,171,3,'sales@jacksonpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (185,169,2,'daz.h.santina57@jacksonpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (186,121,3,'info@californiacollective.org',1,0,0,0,NULL,NULL,NULL,NULL), - (187,58,2,'juliannz19@californiacollective.org',0,0,0,0,NULL,NULL,NULL,NULL), - (188,50,3,'info@collegeadvocacy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (189,112,3,'feedback@jamaicaarts.org',1,0,0,0,NULL,NULL,NULL,NULL), - (190,136,2,'lee.russell28@jamaicaarts.org',1,0,0,0,NULL,NULL,NULL,NULL), - (191,53,3,'info@communityeducationpartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), - (192,180,2,'robertson.lawerence31@communityeducationpartnership.org',0,0,0,0,NULL,NULL,NULL,NULL), - (193,111,3,'info@statesactionsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (194,45,2,'bterrell@statesactionsystems.org',0,0,0,0,NULL,NULL,NULL,NULL), - (195,17,3,'contact@lancastersustainability.org',1,0,0,0,NULL,NULL,NULL,NULL), - (196,57,2,'chowski.maria@lancastersustainability.org',0,0,0,0,NULL,NULL,NULL,NULL), - (197,51,3,'feedback@montierpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (198,75,2,'allanmcreynolds@montierpeace.org',0,0,0,0,NULL,NULL,NULL,NULL), - (199,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (200,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (201,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (202,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); + (2,25,1,'beulaw59@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (3,25,1,'wagnerb94@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (4,35,1,'mllero90@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (5,35,1,'omarmller@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (6,5,1,'jacobs.esta@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (7,54,1,'teddynielsen@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (8,4,1,'smith.a.damaris42@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (9,4,1,'smith.a.damaris@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (10,9,1,'brigetteroberts@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (11,9,1,'brigetter@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (12,143,1,'olsenk90@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (13,143,1,'olsenk@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (14,123,1,'kz.roberts@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (15,123,1,'kathlynroberts79@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), + (16,70,1,'daz.irvin@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (17,70,1,'irvindaz@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (18,173,1,'yadav.sharyn@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (19,186,1,'jacobs.kenny@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (20,186,1,'jacobsk50@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (21,127,1,'kiarab15@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (22,101,1,'delanadimitrov@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (23,30,1,'josefag39@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (24,30,1,'grant.josefa82@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (25,89,1,'nielsenk60@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (26,187,1,'bobt59@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (27,194,1,'troymller@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (28,115,1,'deforest.u.clint2@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (29,115,1,'deforest.u.clint61@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (30,129,1,'erikd57@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (31,129,1,'deforest.erik32@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (32,168,1,'ideforest7@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (33,168,1,'iveyd@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (34,157,1,'jameson.megan@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (35,157,1,'jameson.megan@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (36,172,1,'allanz@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (37,172,1,'at.zope30@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (38,197,1,'rayg@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (39,197,1,'raygrant@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (40,98,1,'shaunapatel@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (41,94,1,'omarp@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (42,94,1,'omarp59@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (43,11,1,'cruzc@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (44,178,1,'rjameson4@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (45,144,1,'princessterry@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (46,201,1,'beulanielsen@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (47,87,1,'reynolds.q.laree29@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (48,8,1,'lt.blackwell40@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (49,8,1,'blackwell.t.laree45@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (50,33,1,'dimitrovb@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (51,33,1,'dimitrovb20@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (52,42,1,'grantr7@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (53,120,1,'blackwell.josefa@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (54,169,1,'kathlynj@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), + (55,169,1,'kjones@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (56,17,1,'aolsen@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (57,17,1,'alexiao17@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (58,174,1,'miguelzope@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (59,71,1,'mllerb@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (60,71,1,'bf.mller@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (61,56,1,'cooper.merrie@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (62,171,1,'sx.robertson@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (63,171,1,'robertson.santina5@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (64,97,1,'chowski.bernadette@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (65,29,1,'cruz.beula75@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (66,138,1,'tobyj@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (67,138,1,'tjacobs90@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (68,107,1,'estachowski@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (69,107,1,'chowski.g.esta16@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (70,167,1,'ivanov.errol42@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (71,167,1,'ivanov.errol@testing.info',0,0,0,0,NULL,NULL,NULL,NULL), + (72,27,1,'robertson.merrie@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (73,27,1,'robertsonm44@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (74,184,1,'cooper.teddy48@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (75,184,1,'teddycooper72@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (76,102,1,'wagner.n.barry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (77,102,1,'barryw56@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (78,96,1,'blackwella@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (79,106,1,'dazr@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), + (80,106,1,'daz.rosario@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (81,86,1,'eleonorp@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (82,86,1,'eleonorparker61@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (83,24,1,'sbachman@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (84,189,1,'bachman.maria@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (85,176,1,'reynolds.iris@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL), + (86,176,1,'ireynolds85@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (87,151,1,'kandacecruz-reynolds@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (88,49,1,'carlosivanov25@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), + (89,49,1,'carlosi64@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (90,200,1,'deforest-ivanov.lashawnda36@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), + (91,125,1,'ivanov.sharyn@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (92,125,1,'sharyni93@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (93,55,1,'ivanov.p.russell30@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (94,55,1,'russelli@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (95,150,1,'prentice.h.allan58@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (96,150,1,'prenticea@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (97,34,1,'sonnyprentice32@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (98,34,1,'sonnyprentice47@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (99,183,1,'ivanov.a.kenny24@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (100,183,1,'ivanovk@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (101,193,1,'ivanova@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (102,44,1,'divanov@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), + (103,44,1,'delanai@example.com',0,0,0,0,NULL,NULL,NULL,NULL), + (104,60,1,'louivanov85@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (105,60,1,'livanov@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (106,109,1,'lashawndaprentice31@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (107,109,1,'lashawndap@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (108,76,1,'prenticem4@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (109,76,1,'prenticem86@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (110,126,1,'troyp@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (111,126,1,'tprentice83@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (112,46,1,'miguels@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (113,74,1,'samuels.valene96@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (114,163,1,'kjensen-terry@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (115,162,1,'terry.brigette@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (116,162,1,'brigettet@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (117,21,1,'jc.wattson@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (118,14,1,'delanaw69@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (119,14,1,'wattson.delana@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), + (120,170,1,'wattsonm@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (121,45,1,'estaw12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (122,45,1,'estawattson@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (123,199,1,'mo.mller8@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), + (124,199,1,'mllerm@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (125,112,1,'mller.h.sherman73@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (126,79,1,'irvinmller41@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (127,79,1,'mlleri@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (128,48,1,'teddywilson@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (129,91,1,'rebekahj@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (130,91,1,'jameson.q.rebekah@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (131,104,1,'wilson-jameson.brittney@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (132,104,1,'bj.wilson-jameson@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (133,92,1,'maganwilson-jameson9@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (134,100,1,'justinawilson-deforest24@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (135,160,1,'alexiad24@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (136,198,1,'brentr@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (137,198,1,'reynoldsb42@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (138,6,1,'reynolds.magan75@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (139,15,1,'olsenb@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (140,137,1,'olsena@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (141,180,1,'cf.samson37@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (142,180,1,'cf.samson29@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (143,114,1,'darens@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (144,114,1,'darens48@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (145,32,1,'jl.samson-terry93@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (146,18,1,'andrewd35@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (147,18,1,'ae.daz94@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (148,90,1,'junkochowski28@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (149,39,1,'daz-chowskid16@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (150,121,1,'terrell.g.sherman70@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (151,121,1,'terrells@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (152,196,1,'terrell.barry@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (153,154,1,'vz.reynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (154,61,1,'arlynereynolds@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (155,61,1,'reynoldsa@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (156,63,1,'sreynolds21@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (157,63,1,'sonnyreynolds@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (158,85,1,'mcreynolds.justina@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (159,85,1,'mcreynolds.justina@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (160,36,1,'yadav.j.lou79@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (161,36,1,'louyadav@testing.org',0,0,0,0,NULL,NULL,NULL,NULL), + (162,118,1,'ap.lee-yadav10@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (163,118,1,'lee-yadava5@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (164,103,3,'info@oregondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL), + (165,187,2,'bterrell@oregondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL), + (166,135,3,'service@sacramentopartners.org',1,0,0,0,NULL,NULL,NULL,NULL), + (167,115,2,'clintdeforest@sacramentopartners.org',0,0,0,0,NULL,NULL,NULL,NULL), + (168,77,3,'contact@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (169,81,2,'smith.elina@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (170,22,3,'info@bostonacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), + (171,33,2,'angelikaterrell45@bostonacademy.org',0,0,0,0,NULL,NULL,NULL,NULL), + (172,68,3,'contact@unitedagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL), + (173,85,2,'mcreynolds.justina@unitedagriculture.org',0,0,0,0,NULL,NULL,NULL,NULL), + (174,133,3,'feedback@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (175,72,2,'wagner.miguel@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (176,19,3,'info@creativesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), + (177,129,2,'erikd10@creativesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL), + (178,161,3,'info@progressivenetwork.org',1,0,0,0,NULL,NULL,NULL,NULL), + (179,69,3,'info@globalsportscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (180,4,2,'smith.damaris@globalsportscenter.org',0,0,0,0,NULL,NULL,NULL,NULL), + (181,95,3,'info@ruralagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL), + (182,139,3,'sales@ruralinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), + (183,197,2,'raygrant48@ruralinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL), + (184,7,3,'sales@hanovereducation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (185,15,2,'juliannt81@hanovereducation.org',0,0,0,0,NULL,NULL,NULL,NULL), + (186,148,3,'contact@localtrust.org',1,0,0,0,NULL,NULL,NULL,NULL), + (187,96,2,'valeneb@localtrust.org',0,0,0,0,NULL,NULL,NULL,NULL), + (188,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -3306,165 +3300,165 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, (60,'civicrm_financial_item',30,30,10.00), (61,'civicrm_contribution',31,31,5.00), (62,'civicrm_financial_item',31,31,5.00), - (63,'civicrm_contribution',32,32,100.00), - (64,'civicrm_financial_item',32,32,100.00), - (65,'civicrm_contribution',34,33,100.00), + (63,'civicrm_contribution',61,32,1200.00), + (64,'civicrm_financial_item',32,32,1200.00), + (65,'civicrm_contribution',38,33,100.00), (66,'civicrm_financial_item',33,33,100.00), - (67,'civicrm_contribution',38,34,100.00), + (67,'civicrm_contribution',41,34,100.00), (68,'civicrm_financial_item',34,34,100.00), - (69,'civicrm_contribution',40,35,100.00), + (69,'civicrm_contribution',43,35,100.00), (70,'civicrm_financial_item',35,35,100.00), - (71,'civicrm_contribution',41,36,100.00), + (71,'civicrm_contribution',34,36,100.00), (72,'civicrm_financial_item',36,36,100.00), - (73,'civicrm_contribution',44,37,100.00), - (74,'civicrm_financial_item',37,37,100.00), - (75,'civicrm_contribution',46,38,100.00), - (76,'civicrm_financial_item',38,38,100.00), - (77,'civicrm_contribution',48,39,100.00), + (73,'civicrm_contribution',52,37,50.00), + (74,'civicrm_financial_item',37,37,50.00), + (75,'civicrm_contribution',47,38,50.00), + (76,'civicrm_financial_item',38,38,50.00), + (77,'civicrm_contribution',36,39,100.00), (78,'civicrm_financial_item',39,39,100.00), - (79,'civicrm_contribution',50,40,100.00), - (80,'civicrm_financial_item',40,40,100.00), - (81,'civicrm_contribution',51,41,100.00), + (79,'civicrm_contribution',53,40,50.00), + (80,'civicrm_financial_item',40,40,50.00), + (81,'civicrm_contribution',39,41,100.00), (82,'civicrm_financial_item',41,41,100.00), - (83,'civicrm_contribution',52,42,100.00), + (83,'civicrm_contribution',32,42,100.00), (84,'civicrm_financial_item',42,42,100.00), - (85,'civicrm_contribution',54,43,100.00), - (86,'civicrm_financial_item',43,43,100.00), - (87,'civicrm_contribution',56,44,100.00), - (88,'civicrm_financial_item',44,44,100.00), - (89,'civicrm_contribution',58,45,100.00), + (85,'civicrm_contribution',59,43,50.00), + (86,'civicrm_financial_item',43,43,50.00), + (87,'civicrm_contribution',58,44,50.00), + (88,'civicrm_financial_item',44,44,50.00), + (89,'civicrm_contribution',45,45,100.00), (90,'civicrm_financial_item',45,45,100.00), - (91,'civicrm_contribution',60,46,100.00), + (91,'civicrm_contribution',35,46,100.00), (92,'civicrm_financial_item',46,46,100.00), - (93,'civicrm_contribution',33,47,50.00), + (93,'civicrm_contribution',54,47,50.00), (94,'civicrm_financial_item',47,47,50.00), - (95,'civicrm_contribution',35,48,50.00), - (96,'civicrm_financial_item',48,48,50.00), - (97,'civicrm_contribution',36,49,50.00), + (95,'civicrm_contribution',60,48,1200.00), + (96,'civicrm_financial_item',48,48,1200.00), + (97,'civicrm_contribution',57,49,50.00), (98,'civicrm_financial_item',49,49,50.00), - (99,'civicrm_contribution',37,50,50.00), - (100,'civicrm_financial_item',50,50,50.00), - (101,'civicrm_contribution',39,51,50.00), + (99,'civicrm_contribution',40,50,100.00), + (100,'civicrm_financial_item',50,50,100.00), + (101,'civicrm_contribution',49,51,50.00), (102,'civicrm_financial_item',51,51,50.00), - (103,'civicrm_contribution',43,52,50.00), - (104,'civicrm_financial_item',52,52,50.00), - (105,'civicrm_contribution',45,53,50.00), + (103,'civicrm_contribution',44,52,100.00), + (104,'civicrm_financial_item',52,52,100.00), + (105,'civicrm_contribution',48,53,50.00), (106,'civicrm_financial_item',53,53,50.00), - (107,'civicrm_contribution',47,54,50.00), + (107,'civicrm_contribution',55,54,50.00), (108,'civicrm_financial_item',54,54,50.00), - (109,'civicrm_contribution',49,55,50.00), - (110,'civicrm_financial_item',55,55,50.00), - (111,'civicrm_contribution',55,56,50.00), + (109,'civicrm_contribution',46,55,100.00), + (110,'civicrm_financial_item',55,55,100.00), + (111,'civicrm_contribution',51,56,50.00), (112,'civicrm_financial_item',56,56,50.00), - (113,'civicrm_contribution',57,57,50.00), - (114,'civicrm_financial_item',57,57,50.00), - (115,'civicrm_contribution',59,58,50.00), + (113,'civicrm_contribution',33,57,100.00), + (114,'civicrm_financial_item',57,57,100.00), + (115,'civicrm_contribution',50,58,50.00), (116,'civicrm_financial_item',58,58,50.00), - (117,'civicrm_contribution',61,59,50.00), - (118,'civicrm_financial_item',59,59,50.00), - (119,'civicrm_contribution',42,60,1200.00), - (120,'civicrm_financial_item',60,60,1200.00), - (121,'civicrm_contribution',53,61,1200.00), - (122,'civicrm_financial_item',61,61,1200.00), - (123,'civicrm_contribution',83,62,50.00), + (117,'civicrm_contribution',42,59,100.00), + (118,'civicrm_financial_item',59,59,100.00), + (119,'civicrm_contribution',37,60,100.00), + (120,'civicrm_financial_item',60,60,100.00), + (121,'civicrm_contribution',56,61,50.00), + (122,'civicrm_financial_item',61,61,50.00), + (123,'civicrm_contribution',85,62,50.00), (124,'civicrm_financial_item',62,62,50.00), - (125,'civicrm_contribution',90,63,50.00), + (125,'civicrm_contribution',73,63,50.00), (126,'civicrm_financial_item',63,63,50.00), - (127,'civicrm_contribution',102,64,50.00), + (127,'civicrm_contribution',75,64,50.00), (128,'civicrm_financial_item',64,64,50.00), - (129,'civicrm_contribution',70,65,50.00), + (129,'civicrm_contribution',110,65,50.00), (130,'civicrm_financial_item',65,65,50.00), - (131,'civicrm_contribution',101,66,50.00), + (131,'civicrm_contribution',72,66,50.00), (132,'civicrm_financial_item',66,66,50.00), - (133,'civicrm_contribution',89,67,50.00), + (133,'civicrm_contribution',105,67,50.00), (134,'civicrm_financial_item',67,67,50.00), - (135,'civicrm_contribution',78,68,50.00), + (135,'civicrm_contribution',95,68,50.00), (136,'civicrm_financial_item',68,68,50.00), - (137,'civicrm_contribution',82,69,50.00), + (137,'civicrm_contribution',76,69,50.00), (138,'civicrm_financial_item',69,69,50.00), - (139,'civicrm_contribution',104,70,50.00), + (139,'civicrm_contribution',89,70,50.00), (140,'civicrm_financial_item',70,70,50.00), - (141,'civicrm_contribution',85,71,50.00), + (141,'civicrm_contribution',79,71,50.00), (142,'civicrm_financial_item',71,71,50.00), - (143,'civicrm_contribution',84,72,50.00), + (143,'civicrm_contribution',88,72,50.00), (144,'civicrm_financial_item',72,72,50.00), - (145,'civicrm_contribution',111,73,50.00), + (145,'civicrm_contribution',69,73,50.00), (146,'civicrm_financial_item',73,73,50.00), - (147,'civicrm_contribution',92,74,50.00), + (147,'civicrm_contribution',83,74,50.00), (148,'civicrm_financial_item',74,74,50.00), - (149,'civicrm_contribution',86,75,50.00), + (149,'civicrm_contribution',97,75,50.00), (150,'civicrm_financial_item',75,75,50.00), - (151,'civicrm_contribution',67,76,50.00), + (151,'civicrm_contribution',87,76,50.00), (152,'civicrm_financial_item',76,76,50.00), - (153,'civicrm_contribution',107,77,50.00), + (153,'civicrm_contribution',102,77,50.00), (154,'civicrm_financial_item',77,77,50.00), - (155,'civicrm_contribution',72,78,800.00), + (155,'civicrm_contribution',100,78,800.00), (156,'civicrm_financial_item',78,78,800.00), - (157,'civicrm_contribution',71,79,800.00), + (157,'civicrm_contribution',74,79,800.00), (158,'civicrm_financial_item',79,79,800.00), - (159,'civicrm_contribution',97,80,800.00), + (159,'civicrm_contribution',71,80,800.00), (160,'civicrm_financial_item',80,80,800.00), - (161,'civicrm_contribution',106,81,800.00), + (161,'civicrm_contribution',109,81,800.00), (162,'civicrm_financial_item',81,81,800.00), - (163,'civicrm_contribution',75,82,800.00), + (163,'civicrm_contribution',68,82,800.00), (164,'civicrm_financial_item',82,82,800.00), - (165,'civicrm_contribution',63,83,800.00), + (165,'civicrm_contribution',108,83,800.00), (166,'civicrm_financial_item',83,83,800.00), - (167,'civicrm_contribution',76,84,800.00), + (167,'civicrm_contribution',82,84,800.00), (168,'civicrm_financial_item',84,84,800.00), - (169,'civicrm_contribution',96,85,800.00), + (169,'civicrm_contribution',111,85,800.00), (170,'civicrm_financial_item',85,85,800.00), - (171,'civicrm_contribution',100,86,800.00), + (171,'civicrm_contribution',106,86,800.00), (172,'civicrm_financial_item',86,86,800.00), - (173,'civicrm_contribution',77,87,800.00), + (173,'civicrm_contribution',98,87,800.00), (174,'civicrm_financial_item',87,87,800.00), - (175,'civicrm_contribution',73,88,800.00), + (175,'civicrm_contribution',80,88,800.00), (176,'civicrm_financial_item',88,88,800.00), - (177,'civicrm_contribution',95,89,800.00), + (177,'civicrm_contribution',63,89,800.00), (178,'civicrm_financial_item',89,89,800.00), - (179,'civicrm_contribution',91,90,800.00), + (179,'civicrm_contribution',92,90,800.00), (180,'civicrm_financial_item',90,90,800.00), - (181,'civicrm_contribution',108,91,800.00), + (181,'civicrm_contribution',90,91,800.00), (182,'civicrm_financial_item',91,91,800.00), - (183,'civicrm_contribution',105,92,800.00), + (183,'civicrm_contribution',101,92,800.00), (184,'civicrm_financial_item',92,92,800.00), - (185,'civicrm_contribution',110,93,800.00), + (185,'civicrm_contribution',77,93,800.00), (186,'civicrm_financial_item',93,93,800.00), - (187,'civicrm_contribution',80,94,800.00), + (187,'civicrm_contribution',78,94,800.00), (188,'civicrm_financial_item',94,94,800.00), - (189,'civicrm_contribution',68,95,800.00), + (189,'civicrm_contribution',84,95,800.00), (190,'civicrm_financial_item',95,95,800.00), - (191,'civicrm_contribution',109,96,50.00), + (191,'civicrm_contribution',65,96,50.00), (192,'civicrm_financial_item',96,96,50.00), - (193,'civicrm_contribution',88,97,50.00), + (193,'civicrm_contribution',81,97,50.00), (194,'civicrm_financial_item',97,97,50.00), - (195,'civicrm_contribution',74,98,50.00), + (195,'civicrm_contribution',86,98,50.00), (196,'civicrm_financial_item',98,98,50.00), - (197,'civicrm_contribution',93,99,50.00), + (197,'civicrm_contribution',66,99,50.00), (198,'civicrm_financial_item',99,99,50.00), - (199,'civicrm_contribution',66,100,50.00), + (199,'civicrm_contribution',94,100,50.00), (200,'civicrm_financial_item',100,100,50.00), - (201,'civicrm_contribution',81,101,50.00), + (201,'civicrm_contribution',93,101,50.00), (202,'civicrm_financial_item',101,101,50.00), - (203,'civicrm_contribution',87,102,50.00), + (203,'civicrm_contribution',91,102,50.00), (204,'civicrm_financial_item',102,102,50.00), - (205,'civicrm_contribution',94,103,50.00), + (205,'civicrm_contribution',104,103,50.00), (206,'civicrm_financial_item',103,103,50.00), - (207,'civicrm_contribution',98,104,50.00), + (207,'civicrm_contribution',64,104,50.00), (208,'civicrm_financial_item',104,104,50.00), - (209,'civicrm_contribution',103,105,50.00), + (209,'civicrm_contribution',70,105,50.00), (210,'civicrm_financial_item',105,105,50.00), - (211,'civicrm_contribution',79,106,50.00), + (211,'civicrm_contribution',112,106,50.00), (212,'civicrm_financial_item',106,106,50.00), - (213,'civicrm_contribution',65,107,50.00), + (213,'civicrm_contribution',99,107,50.00), (214,'civicrm_financial_item',107,107,50.00), - (215,'civicrm_contribution',64,108,50.00), + (215,'civicrm_contribution',96,108,50.00), (216,'civicrm_financial_item',108,108,50.00), - (217,'civicrm_contribution',112,109,50.00), + (217,'civicrm_contribution',67,109,50.00), (218,'civicrm_financial_item',109,109,50.00), - (219,'civicrm_contribution',99,110,50.00), + (219,'civicrm_contribution',107,110,50.00), (220,'civicrm_financial_item',110,110,50.00), - (221,'civicrm_contribution',69,111,50.00), + (221,'civicrm_contribution',103,111,50.00), (222,'civicrm_financial_item',111,111,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3476,121 +3470,126 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_tag` WRITE; /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */; INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES - (43,'civicrm_contact',2,5), - (96,'civicrm_contact',8,5), - (69,'civicrm_contact',10,5), - (57,'civicrm_contact',12,4), - (58,'civicrm_contact',12,5), - (113,'civicrm_contact',13,5), - (9,'civicrm_contact',17,1), - (67,'civicrm_contact',18,4), - (68,'civicrm_contact',18,5), - (8,'civicrm_contact',19,1), - (32,'civicrm_contact',20,4), - (74,'civicrm_contact',23,4), - (11,'civicrm_contact',26,4), - (115,'civicrm_contact',28,4), - (1,'civicrm_contact',31,1), - (61,'civicrm_contact',32,5), - (22,'civicrm_contact',33,4), - (23,'civicrm_contact',33,5), - (101,'civicrm_contact',34,4), - (63,'civicrm_contact',37,5), - (78,'civicrm_contact',40,4), - (109,'civicrm_contact',42,4), - (110,'civicrm_contact',42,5), - (38,'civicrm_contact',43,5), - (92,'civicrm_contact',45,4), - (93,'civicrm_contact',45,5), - (40,'civicrm_contact',47,5), - (44,'civicrm_contact',54,4), - (45,'civicrm_contact',54,5), - (34,'civicrm_contact',55,5), - (72,'civicrm_contact',57,4), - (73,'civicrm_contact',57,5), - (82,'civicrm_contact',58,4), - (85,'civicrm_contact',60,4), - (86,'civicrm_contact',60,5), - (16,'civicrm_contact',61,4), - (70,'civicrm_contact',63,4), - (71,'civicrm_contact',63,5), - (87,'civicrm_contact',65,5), - (65,'civicrm_contact',66,4), - (66,'civicrm_contact',66,5), - (100,'civicrm_contact',67,5), - (106,'civicrm_contact',69,4), - (107,'civicrm_contact',69,5), - (114,'civicrm_contact',71,4), - (24,'civicrm_contact',72,4), - (25,'civicrm_contact',72,5), - (102,'civicrm_contact',77,5), - (103,'civicrm_contact',79,5), - (91,'civicrm_contact',80,5), - (90,'civicrm_contact',82,4), - (21,'civicrm_contact',83,5), - (83,'civicrm_contact',84,4), - (84,'civicrm_contact',84,5), - (79,'civicrm_contact',85,4), - (62,'civicrm_contact',86,5), - (5,'civicrm_contact',89,3), - (75,'civicrm_contact',93,4), - (76,'civicrm_contact',93,5), - (33,'civicrm_contact',94,4), - (17,'civicrm_contact',98,5), - (88,'civicrm_contact',99,4), - (89,'civicrm_contact',99,5), - (81,'civicrm_contact',103,4), - (31,'civicrm_contact',106,5), - (7,'civicrm_contact',112,2), - (28,'civicrm_contact',114,4), - (29,'civicrm_contact',114,5), - (4,'civicrm_contact',118,3), - (39,'civicrm_contact',119,5), - (36,'civicrm_contact',120,4), - (37,'civicrm_contact',120,5), - (6,'civicrm_contact',121,3), - (2,'civicrm_contact',133,1), - (108,'civicrm_contact',134,5), - (47,'civicrm_contact',138,4), - (48,'civicrm_contact',138,5), - (35,'civicrm_contact',142,4), - (51,'civicrm_contact',143,5), - (97,'civicrm_contact',144,4), - (98,'civicrm_contact',144,5), - (112,'civicrm_contact',145,5), - (111,'civicrm_contact',151,4), - (14,'civicrm_contact',153,4), - (15,'civicrm_contact',153,5), - (80,'civicrm_contact',154,5), - (95,'civicrm_contact',157,4), - (30,'civicrm_contact',160,5), - (64,'civicrm_contact',163,4), - (46,'civicrm_contact',164,4), - (10,'civicrm_contact',166,1), + (111,'civicrm_contact',2,5), + (14,'civicrm_contact',4,4), + (13,'civicrm_contact',5,4), + (15,'civicrm_contact',9,4), + (16,'civicrm_contact',9,5), + (98,'civicrm_contact',13,5), + (99,'civicrm_contact',15,4), + (100,'civicrm_contact',15,5), + (107,'civicrm_contact',18,4), + (108,'civicrm_contact',18,5), + (6,'civicrm_contact',19,3), + (86,'civicrm_contact',21,4), + (87,'civicrm_contact',21,5), + (64,'civicrm_contact',24,4), + (65,'civicrm_contact',24,5), + (51,'civicrm_contact',29,4), + (11,'civicrm_contact',31,5), + (37,'civicrm_contact',33,4), + (38,'civicrm_contact',33,5), + (73,'civicrm_contact',34,4), + (12,'civicrm_contact',35,4), + (117,'civicrm_contact',36,4), + (118,'civicrm_contact',36,5), + (55,'civicrm_contact',37,4), + (45,'civicrm_contact',38,5), + (109,'civicrm_contact',39,4), + (110,'civicrm_contact',39,5), + (56,'civicrm_contact',40,4), + (76,'civicrm_contact',44,4), + (80,'civicrm_contact',46,4), + (115,'civicrm_contact',47,4), + (91,'civicrm_contact',48,4), + (92,'civicrm_contact',48,5), + (69,'civicrm_contact',49,5), + (3,'civicrm_contact',50,3), + (4,'civicrm_contact',59,2), + (114,'civicrm_contact',61,4), + (8,'civicrm_contact',64,1), + (7,'civicrm_contact',69,3), + (19,'civicrm_contact',70,5), + (48,'civicrm_contact',71,4), + (79,'civicrm_contact',76,5), + (2,'civicrm_contact',77,1), + (39,'civicrm_contact',80,5), + (46,'civicrm_contact',81,4), + (47,'civicrm_contact',81,5), + (20,'civicrm_contact',83,5), + (77,'civicrm_contact',84,4), + (78,'civicrm_contact',84,5), + (63,'civicrm_contact',86,5), + (24,'civicrm_contact',89,5), + (43,'civicrm_contact',93,4), + (44,'civicrm_contact',93,5), + (32,'civicrm_contact',94,5), + (60,'civicrm_contact',96,4), + (61,'civicrm_contact',96,5), + (101,'civicrm_contact',99,4), + (102,'civicrm_contact',99,5), + (23,'civicrm_contact',101,4), + (58,'civicrm_contact',102,4), + (59,'civicrm_contact',102,5), + (1,'civicrm_contact',103,1), + (93,'civicrm_contact',104,5), + (53,'civicrm_contact',107,5), + (94,'civicrm_contact',110,5), + (119,'civicrm_contact',111,4), + (120,'civicrm_contact',111,5), + (90,'civicrm_contact',112,4), + (105,'civicrm_contact',114,4), + (106,'civicrm_contact',114,5), + (26,'civicrm_contact',115,5), + (62,'civicrm_contact',119,4), + (40,'civicrm_contact',120,4), + (41,'civicrm_contact',120,5), + (9,'civicrm_contact',122,1), + (17,'civicrm_contact',123,4), + (18,'civicrm_contact',123,5), + (89,'civicrm_contact',124,4), + (70,'civicrm_contact',125,4), + (36,'civicrm_contact',128,4), + (42,'civicrm_contact',130,5), + (5,'civicrm_contact',133,2), + (83,'civicrm_contact',140,4), + (66,'civicrm_contact',141,4), + (67,'civicrm_contact',141,5), + (52,'civicrm_contact',145,5), + (81,'civicrm_contact',147,4), + (82,'civicrm_contact',147,5), + (10,'civicrm_contact',148,2), + (71,'civicrm_contact',150,4), + (72,'civicrm_contact',150,5), + (68,'civicrm_contact',151,4), + (113,'civicrm_contact',154,5), + (95,'civicrm_contact',160,4), + (84,'civicrm_contact',162,4), + (85,'civicrm_contact',162,5), (54,'civicrm_contact',167,5), - (27,'civicrm_contact',169,5), - (104,'civicrm_contact',172,4), - (105,'civicrm_contact',173,4), - (3,'civicrm_contact',174,3), - (49,'civicrm_contact',177,4), - (50,'civicrm_contact',177,5), - (99,'civicrm_contact',178,4), - (20,'civicrm_contact',179,5), - (18,'civicrm_contact',180,4), - (19,'civicrm_contact',180,5), - (53,'civicrm_contact',181,5), - (26,'civicrm_contact',185,4), - (94,'civicrm_contact',187,4), - (42,'civicrm_contact',188,5), - (55,'civicrm_contact',189,4), - (56,'civicrm_contact',189,5), - (59,'civicrm_contact',192,4), - (60,'civicrm_contact',192,5), - (77,'civicrm_contact',194,5), - (52,'civicrm_contact',196,5), - (41,'civicrm_contact',199,4), - (12,'civicrm_contact',201,4), - (13,'civicrm_contact',201,5); + (27,'civicrm_contact',168,4), + (28,'civicrm_contact',168,5), + (88,'civicrm_contact',170,4), + (49,'civicrm_contact',171,4), + (50,'civicrm_contact',171,5), + (29,'civicrm_contact',172,4), + (116,'civicrm_contact',175,5), + (33,'civicrm_contact',178,5), + (103,'civicrm_contact',180,4), + (104,'civicrm_contact',180,5), + (74,'civicrm_contact',183,4), + (75,'civicrm_contact',183,5), + (57,'civicrm_contact',184,5), + (31,'civicrm_contact',185,5), + (21,'civicrm_contact',186,4), + (22,'civicrm_contact',186,5), + (25,'civicrm_contact',194,4), + (112,'civicrm_contact',196,4), + (30,'civicrm_contact',197,4), + (96,'civicrm_contact',198,4), + (97,'civicrm_contact',198,5), + (34,'civicrm_contact',201,4), + (35,'civicrm_contact',201,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -3601,9 +3600,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_event` WRITE; /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */; INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES - (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-07 17:00:00','2024-04-09 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-06 12:00:00','2023-10-06 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-07 07:00:00','2024-05-10 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-19 17:00:00','2024-04-21 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-18 12:00:00','2023-10-18 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-19 07:00:00','2024-05-22 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); @@ -3690,117 +3689,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_item` WRITE; /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */; INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES - (1,'2023-10-07 01:51:40','2013-10-07 01:51:39',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), - (2,'2023-10-07 01:51:40','2021-07-07 01:51:39',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), - (3,'2023-10-07 01:51:40','2017-09-11 12:51:39',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), - (4,'2023-10-07 01:51:40','2021-07-07 01:51:39',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), - (5,'2023-10-07 01:51:40','2021-07-07 01:51:39',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), - (6,'2023-10-07 01:51:40','2023-07-14 01:09:39',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), - (7,'2023-10-07 01:51:40','2023-10-05 01:51:39',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), - (8,'2023-10-07 01:51:40','2023-02-12 10:02:39',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), - (9,'2023-10-07 01:51:40','2022-11-07 01:51:39',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), - (10,'2023-10-07 01:51:40','2019-05-15 03:51:39',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), - (11,'2023-10-07 01:51:40','2023-10-05 21:51:39',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), - (12,'2023-10-07 01:51:40','2022-07-06 15:18:19',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), - (13,'2023-10-07 01:51:40','2023-07-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), - (14,'2023-10-07 01:51:40','2023-08-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), - (15,'2023-10-07 01:51:40','2022-07-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), - (16,'2023-10-07 01:51:40','2022-08-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), - (17,'2023-10-07 01:51:40','2022-09-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), - (18,'2023-10-07 01:51:40','2022-10-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), - (19,'2023-10-07 01:51:40','2022-11-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), - (20,'2023-10-07 01:51:40','2022-12-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), - (21,'2023-10-07 01:51:40','2023-01-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), - (22,'2023-10-07 01:51:40','2023-02-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), - (23,'2023-10-07 01:51:40','2023-03-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), - (24,'2023-10-07 01:51:40','2023-04-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), - (25,'2023-10-07 01:51:40','2023-05-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), - (26,'2023-10-07 01:51:40','2023-02-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), - (27,'2023-10-07 01:51:40','2023-03-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), - (28,'2023-10-07 01:51:40','2023-04-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), - (29,'2023-10-07 01:51:40','2023-05-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), - (30,'2023-10-07 01:51:40','2023-06-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), - (31,'2023-10-07 01:51:40','2023-09-07 01:51:39',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), - (32,'2023-10-07 01:51:40','2023-10-07 01:51:39',181,'General',100.00,'USD',2,1,'civicrm_line_item',32), - (33,'2023-10-07 01:51:40','2023-10-07 01:51:39',69,'General',100.00,'USD',2,1,'civicrm_line_item',33), - (34,'2023-10-07 01:51:40','2023-10-07 01:51:39',113,'General',100.00,'USD',2,1,'civicrm_line_item',34), - (35,'2023-10-07 01:51:40','2023-10-07 01:51:39',18,'General',100.00,'USD',2,1,'civicrm_line_item',35), - (36,'2023-10-07 01:51:40','2023-10-07 01:51:39',99,'General',100.00,'USD',2,1,'civicrm_line_item',36), - (37,'2023-10-07 01:51:40','2023-10-07 01:51:39',128,'General',100.00,'USD',2,1,'civicrm_line_item',37), - (38,'2023-10-07 01:51:40','2023-10-07 01:51:39',163,'General',100.00,'USD',2,1,'civicrm_line_item',38), - (39,'2023-10-07 01:51:40','2023-10-07 01:51:39',141,'General',100.00,'USD',2,1,'civicrm_line_item',39), - (40,'2023-10-07 01:51:40','2023-10-07 01:51:39',172,'General',100.00,'USD',2,1,'civicrm_line_item',40), - (41,'2023-10-07 01:51:40','2023-10-07 01:51:39',156,'General',100.00,'USD',2,1,'civicrm_line_item',41), - (42,'2023-10-07 01:51:40','2023-10-07 01:51:39',93,'General',100.00,'USD',2,1,'civicrm_line_item',42), - (43,'2023-10-07 01:51:40','2023-10-07 01:51:39',81,'General',100.00,'USD',2,1,'civicrm_line_item',43), - (44,'2023-10-07 01:51:40','2023-10-07 01:51:39',36,'General',100.00,'USD',2,1,'civicrm_line_item',44), - (45,'2023-10-07 01:51:40','2023-10-07 01:51:39',131,'General',100.00,'USD',2,1,'civicrm_line_item',45), - (46,'2023-10-07 01:51:40','2023-10-07 01:51:39',193,'General',100.00,'USD',2,1,'civicrm_line_item',46), - (47,'2023-10-07 01:51:40','2023-10-07 01:51:39',143,'Student',50.00,'USD',2,1,'civicrm_line_item',47), - (48,'2023-10-07 01:51:41','2023-10-07 01:51:39',140,'Student',50.00,'USD',2,1,'civicrm_line_item',48), - (49,'2023-10-07 01:51:41','2023-10-07 01:51:39',119,'Student',50.00,'USD',2,1,'civicrm_line_item',49), - (50,'2023-10-07 01:51:41','2023-10-07 01:51:39',32,'Student',50.00,'USD',2,1,'civicrm_line_item',50), - (51,'2023-10-07 01:51:41','2023-10-07 01:51:39',157,'Student',50.00,'USD',2,1,'civicrm_line_item',51), - (52,'2023-10-07 01:51:41','2023-10-07 01:51:39',115,'Student',50.00,'USD',2,1,'civicrm_line_item',52), - (53,'2023-10-07 01:51:41','2023-10-07 01:51:39',55,'Student',50.00,'USD',2,1,'civicrm_line_item',53), - (54,'2023-10-07 01:51:41','2023-10-07 01:51:39',126,'Student',50.00,'USD',2,1,'civicrm_line_item',54), - (55,'2023-10-07 01:51:41','2023-10-07 01:51:39',125,'Student',50.00,'USD',2,1,'civicrm_line_item',55), - (56,'2023-10-07 01:51:41','2023-10-07 01:51:39',122,'Student',50.00,'USD',2,1,'civicrm_line_item',56), - (57,'2023-10-07 01:51:41','2023-10-07 01:51:39',15,'Student',50.00,'USD',2,1,'civicrm_line_item',57), - (58,'2023-10-07 01:51:41','2023-10-07 01:51:39',158,'Student',50.00,'USD',2,1,'civicrm_line_item',58), - (59,'2023-10-07 01:51:41','2023-10-07 01:51:39',30,'Student',50.00,'USD',2,1,'civicrm_line_item',59), - (60,'2023-10-07 01:51:41','2023-10-07 01:51:39',23,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), - (61,'2023-10-07 01:51:41','2023-10-07 01:51:39',37,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), - (62,'2023-10-07 01:51:41','2023-10-07 01:51:40',85,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), - (63,'2023-10-07 01:51:41','2023-10-07 01:51:40',111,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), - (64,'2023-10-07 01:51:41','2023-10-07 01:51:40',160,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), - (65,'2023-10-07 01:51:41','2023-10-07 01:51:40',29,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), - (66,'2023-10-07 01:51:41','2023-10-07 01:51:40',152,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), - (67,'2023-10-07 01:51:41','2023-10-07 01:51:40',102,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), - (68,'2023-10-07 01:51:41','2023-10-07 01:51:40',64,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), - (69,'2023-10-07 01:51:41','2023-10-07 01:51:40',81,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), - (70,'2023-10-07 01:51:41','2023-10-07 01:51:40',168,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), - (71,'2023-10-07 01:51:41','2023-10-07 01:51:40',93,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), - (72,'2023-10-07 01:51:41','2023-10-07 01:51:40',89,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), - (73,'2023-10-07 01:51:41','2023-10-07 01:51:40',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), - (74,'2023-10-07 01:51:41','2023-10-07 01:51:40',114,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), - (75,'2023-10-07 01:51:41','2023-10-07 01:51:40',95,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), - (76,'2023-10-07 01:51:41','2023-10-07 01:51:40',14,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), - (77,'2023-10-07 01:51:41','2023-10-07 01:51:40',175,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), - (78,'2023-10-07 01:51:41','2023-10-07 01:51:40',37,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), - (79,'2023-10-07 01:51:41','2023-10-07 01:51:40',32,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), - (80,'2023-10-07 01:51:41','2023-10-07 01:51:40',134,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), - (81,'2023-10-07 01:51:41','2023-10-07 01:51:40',172,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), - (82,'2023-10-07 01:51:41','2023-10-07 01:51:40',54,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), - (83,'2023-10-07 01:51:41','2023-10-07 01:51:40',1,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), - (84,'2023-10-07 01:51:41','2023-10-07 01:51:40',61,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), - (85,'2023-10-07 01:51:41','2023-10-07 01:51:40',126,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), - (86,'2023-10-07 01:51:41','2023-10-07 01:51:40',150,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), - (87,'2023-10-07 01:51:41','2023-10-07 01:51:40',63,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), - (88,'2023-10-07 01:51:41','2023-10-07 01:51:40',50,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), - (89,'2023-10-07 01:51:41','2023-10-07 01:51:40',122,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), - (90,'2023-10-07 01:51:41','2023-10-07 01:51:40',112,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), - (91,'2023-10-07 01:51:41','2023-10-07 01:51:40',181,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), - (92,'2023-10-07 01:51:41','2023-10-07 01:51:40',169,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), - (93,'2023-10-07 01:51:41','2023-10-07 01:51:40',190,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), - (94,'2023-10-07 01:51:41','2023-10-07 01:51:40',78,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), - (95,'2023-10-07 01:51:41','2023-10-07 01:51:40',17,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), - (96,'2023-10-07 01:51:41','2023-10-07 01:51:40',188,'Single',50.00,'USD',4,1,'civicrm_line_item',81), - (97,'2023-10-07 01:51:41','2023-10-07 01:51:40',101,'Single',50.00,'USD',4,1,'civicrm_line_item',82), - (98,'2023-10-07 01:51:41','2023-10-07 01:51:40',53,'Single',50.00,'USD',4,1,'civicrm_line_item',83), - (99,'2023-10-07 01:51:41','2023-10-07 01:51:40',118,'Single',50.00,'USD',4,1,'civicrm_line_item',84), - (100,'2023-10-07 01:51:41','2023-10-07 01:51:40',13,'Single',50.00,'USD',4,1,'civicrm_line_item',85), - (101,'2023-10-07 01:51:41','2023-10-07 01:51:40',79,'Single',50.00,'USD',4,1,'civicrm_line_item',86), - (102,'2023-10-07 01:51:41','2023-10-07 01:51:40',100,'Single',50.00,'USD',4,1,'civicrm_line_item',87), - (103,'2023-10-07 01:51:41','2023-10-07 01:51:40',121,'Single',50.00,'USD',4,1,'civicrm_line_item',88), - (104,'2023-10-07 01:51:41','2023-10-07 01:51:40',141,'Single',50.00,'USD',4,1,'civicrm_line_item',89), - (105,'2023-10-07 01:51:41','2023-10-07 01:51:40',165,'Single',50.00,'USD',4,1,'civicrm_line_item',90), - (106,'2023-10-07 01:51:41','2023-10-07 01:51:40',69,'Single',50.00,'USD',4,1,'civicrm_line_item',91), - (107,'2023-10-07 01:51:41','2023-10-07 01:51:40',10,'Single',50.00,'USD',4,1,'civicrm_line_item',92), - (108,'2023-10-07 01:51:41','2023-10-07 01:51:40',7,'Single',50.00,'USD',4,1,'civicrm_line_item',93), - (109,'2023-10-07 01:51:41','2023-10-07 01:51:40',200,'Single',50.00,'USD',4,1,'civicrm_line_item',94), - (110,'2023-10-07 01:51:41','2023-10-07 01:51:40',147,'Single',50.00,'USD',4,1,'civicrm_line_item',95), - (111,'2023-10-07 01:51:41','2023-10-07 01:51:40',27,'Single',50.00,'USD',4,1,'civicrm_line_item',96); + (1,'2023-10-19 21:22:30','2013-10-19 14:22:30',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), + (2,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), + (3,'2023-10-19 21:22:30','2017-09-24 01:22:30',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), + (4,'2023-10-19 21:22:30','2021-07-19 14:22:30',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), + (5,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), + (6,'2023-10-19 21:22:30','2023-07-26 13:40:30',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), + (7,'2023-10-19 21:22:30','2023-10-17 14:22:30',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), + (8,'2023-10-19 21:22:30','2023-02-24 22:33:30',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), + (9,'2023-10-19 21:22:30','2022-11-19 14:22:30',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), + (10,'2023-10-19 21:22:30','2019-05-27 16:22:30',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), + (11,'2023-10-19 21:22:30','2023-10-18 10:22:30',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), + (12,'2023-10-19 21:22:30','2022-07-19 03:49:10',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), + (13,'2023-10-19 21:22:30','2023-07-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), + (14,'2023-10-19 21:22:30','2023-08-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), + (15,'2023-10-19 21:22:30','2022-07-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), + (16,'2023-10-19 21:22:30','2022-08-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), + (17,'2023-10-19 21:22:30','2022-09-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), + (18,'2023-10-19 21:22:30','2022-10-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), + (19,'2023-10-19 21:22:30','2022-11-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), + (20,'2023-10-19 21:22:30','2022-12-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), + (21,'2023-10-19 21:22:30','2023-01-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), + (22,'2023-10-19 21:22:30','2023-02-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), + (23,'2023-10-19 21:22:30','2023-03-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), + (24,'2023-10-19 21:22:30','2023-04-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), + (25,'2023-10-19 21:22:30','2023-05-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), + (26,'2023-10-19 21:22:30','2023-02-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), + (27,'2023-10-19 21:22:30','2023-03-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), + (28,'2023-10-19 21:22:30','2023-04-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), + (29,'2023-10-19 21:22:30','2023-05-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), + (30,'2023-10-19 21:22:30','2023-06-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), + (31,'2023-10-19 21:22:30','2023-09-19 14:22:30',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), + (32,'2023-10-19 21:22:30','2023-10-19 14:22:30',5,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), + (33,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'General',100.00,'USD',2,1,'civicrm_line_item',38), + (34,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'General',100.00,'USD',2,1,'civicrm_line_item',41), + (35,'2023-10-19 21:22:30','2023-10-19 14:22:30',28,'General',100.00,'USD',2,1,'civicrm_line_item',43), + (36,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'General',100.00,'USD',2,1,'civicrm_line_item',34), + (37,'2023-10-19 21:22:30','2023-10-19 14:22:30',39,'Student',50.00,'USD',2,1,'civicrm_line_item',52), + (38,'2023-10-19 21:22:30','2023-10-19 14:22:30',47,'Student',50.00,'USD',2,1,'civicrm_line_item',47), + (39,'2023-10-19 21:22:30','2023-10-19 14:22:30',48,'General',100.00,'USD',2,1,'civicrm_line_item',36), + (40,'2023-10-19 21:22:30','2023-10-19 14:22:30',49,'Student',50.00,'USD',2,1,'civicrm_line_item',53), + (41,'2023-10-19 21:22:30','2023-10-19 14:22:30',54,'General',100.00,'USD',2,1,'civicrm_line_item',39), + (42,'2023-10-19 21:22:30','2023-10-19 14:22:30',55,'General',100.00,'USD',2,1,'civicrm_line_item',32), + (43,'2023-10-19 21:22:30','2023-10-19 14:22:30',66,'Student',50.00,'USD',2,1,'civicrm_line_item',59), + (44,'2023-10-19 21:22:30','2023-10-19 14:22:30',78,'Student',50.00,'USD',2,1,'civicrm_line_item',58), + (45,'2023-10-19 21:22:30','2023-10-19 14:22:30',86,'General',100.00,'USD',2,1,'civicrm_line_item',45), + (46,'2023-10-19 21:22:30','2023-10-19 14:22:30',87,'General',100.00,'USD',2,1,'civicrm_line_item',35), + (47,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Student',50.00,'USD',2,1,'civicrm_line_item',54), + (48,'2023-10-19 21:22:30','2023-10-19 14:22:30',93,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), + (49,'2023-10-19 21:22:30','2023-10-19 14:22:30',100,'Student',50.00,'USD',2,1,'civicrm_line_item',57), + (50,'2023-10-19 21:22:30','2023-10-19 14:22:30',106,'General',100.00,'USD',2,1,'civicrm_line_item',40), + (51,'2023-10-19 21:22:30','2023-10-19 14:22:30',113,'Student',50.00,'USD',2,1,'civicrm_line_item',49), + (52,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'General',100.00,'USD',2,1,'civicrm_line_item',44), + (53,'2023-10-19 21:22:30','2023-10-19 14:22:30',126,'Student',50.00,'USD',2,1,'civicrm_line_item',48), + (54,'2023-10-19 21:22:30','2023-10-19 14:22:30',136,'Student',50.00,'USD',2,1,'civicrm_line_item',55), + (55,'2023-10-19 21:22:30','2023-10-19 14:22:30',149,'General',100.00,'USD',2,1,'civicrm_line_item',46), + (56,'2023-10-19 21:22:30','2023-10-19 14:22:30',164,'Student',50.00,'USD',2,1,'civicrm_line_item',51), + (57,'2023-10-19 21:22:30','2023-10-19 14:22:30',168,'General',100.00,'USD',2,1,'civicrm_line_item',33), + (58,'2023-10-19 21:22:30','2023-10-19 14:22:30',169,'Student',50.00,'USD',2,1,'civicrm_line_item',50), + (59,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'General',100.00,'USD',2,1,'civicrm_line_item',42), + (60,'2023-10-19 21:22:30','2023-10-19 14:22:30',180,'General',100.00,'USD',2,1,'civicrm_line_item',37), + (61,'2023-10-19 21:22:30','2023-10-19 14:22:30',187,'Student',50.00,'USD',2,1,'civicrm_line_item',56), + (62,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), + (63,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), + (64,'2023-10-19 21:22:30','2023-10-19 14:22:30',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), + (65,'2023-10-19 21:22:30','2023-10-19 14:22:30',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), + (66,'2023-10-19 21:22:30','2023-10-19 14:22:30',30,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), + (67,'2023-10-19 21:22:30','2023-10-19 14:22:30',179,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), + (68,'2023-10-19 21:22:30','2023-10-19 14:22:30',144,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), + (69,'2023-10-19 21:22:30','2023-10-19 14:22:30',45,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), + (70,'2023-10-19 21:22:30','2023-10-19 14:22:30',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), + (71,'2023-10-19 21:22:30','2023-10-19 14:22:30',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), + (72,'2023-10-19 21:22:30','2023-10-19 14:22:30',97,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), + (73,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), + (74,'2023-10-19 21:22:30','2023-10-19 14:22:30',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), + (75,'2023-10-19 21:22:30','2023-10-19 14:22:30',156,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), + (76,'2023-10-19 21:22:30','2023-10-19 14:22:30',96,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), + (77,'2023-10-19 21:22:30','2023-10-19 14:22:30',172,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), + (78,'2023-10-19 21:22:30','2023-10-19 14:22:30',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), + (79,'2023-10-19 21:22:30','2023-10-19 14:22:30',40,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), + (80,'2023-10-19 21:22:30','2023-10-19 14:22:30',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), + (81,'2023-10-19 21:22:30','2023-10-19 14:22:30',192,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), + (82,'2023-10-19 21:22:30','2023-10-19 14:22:30',16,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), + (83,'2023-10-19 21:22:30','2023-10-19 14:22:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), + (84,'2023-10-19 21:22:30','2023-10-19 14:22:30',80,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), + (85,'2023-10-19 21:22:30','2023-10-19 14:22:30',196,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), + (86,'2023-10-19 21:22:30','2023-10-19 14:22:30',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), + (87,'2023-10-19 21:22:30','2023-10-19 14:22:30',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), + (88,'2023-10-19 21:22:30','2023-10-19 14:22:30',76,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), + (89,'2023-10-19 21:22:30','2023-10-19 14:22:30',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), + (90,'2023-10-19 21:22:30','2023-10-19 14:22:30',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), + (91,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), + (92,'2023-10-19 21:22:30','2023-10-19 14:22:30',163,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), + (93,'2023-10-19 21:22:30','2023-10-19 14:22:30',57,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), + (94,'2023-10-19 21:22:30','2023-10-19 14:22:30',69,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), + (95,'2023-10-19 21:22:30','2023-10-19 14:22:30',88,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), + (96,'2023-10-19 21:22:30','2023-10-19 14:22:30',10,'Single',50.00,'USD',4,1,'civicrm_line_item',81), + (97,'2023-10-19 21:22:30','2023-10-19 14:22:30',77,'Single',50.00,'USD',4,1,'civicrm_line_item',82), + (98,'2023-10-19 21:22:30','2023-10-19 14:22:30',94,'Single',50.00,'USD',4,1,'civicrm_line_item',83), + (99,'2023-10-19 21:22:30','2023-10-19 14:22:30',13,'Single',50.00,'USD',4,1,'civicrm_line_item',84), + (100,'2023-10-19 21:22:30','2023-10-19 14:22:30',135,'Single',50.00,'USD',4,1,'civicrm_line_item',85), + (101,'2023-10-19 21:22:30','2023-10-19 14:22:30',132,'Single',50.00,'USD',4,1,'civicrm_line_item',86), + (102,'2023-10-19 21:22:30','2023-10-19 14:22:30',123,'Single',50.00,'USD',4,1,'civicrm_line_item',87), + (103,'2023-10-19 21:22:30','2023-10-19 14:22:30',178,'Single',50.00,'USD',4,1,'civicrm_line_item',88), + (104,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'Single',50.00,'USD',4,1,'civicrm_line_item',89), + (105,'2023-10-19 21:22:30','2023-10-19 14:22:30',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90), + (106,'2023-10-19 21:22:30','2023-10-19 14:22:30',197,'Single',50.00,'USD',4,1,'civicrm_line_item',91), + (107,'2023-10-19 21:22:30','2023-10-19 14:22:30',159,'Single',50.00,'USD',4,1,'civicrm_line_item',92), + (108,'2023-10-19 21:22:30','2023-10-19 14:22:30',154,'Single',50.00,'USD',4,1,'civicrm_line_item',93), + (109,'2023-10-19 21:22:30','2023-10-19 14:22:30',14,'Single',50.00,'USD',4,1,'civicrm_line_item',94), + (110,'2023-10-19 21:22:30','2023-10-19 14:22:30',184,'Single',50.00,'USD',4,1,'civicrm_line_item',95), + (111,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'Single',50.00,'USD',4,1,'civicrm_line_item',96); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -3811,117 +3810,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */; INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES - (1,NULL,6,'2013-10-07 01:51:39',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), - (2,NULL,6,'2021-07-07 01:51:39',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (3,NULL,6,'2017-09-11 12:51:39',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), - (4,NULL,6,'2021-07-07 01:51:39',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), - (5,NULL,6,'2021-07-07 01:51:39',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (6,NULL,6,'2023-07-14 01:09:39',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), - (7,NULL,6,'2023-10-05 01:51:39',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), - (8,NULL,6,'2023-02-12 10:02:39',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (9,NULL,6,'2022-11-07 01:51:39',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (10,NULL,6,'2019-05-15 03:51:39',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (11,NULL,6,'2023-10-05 21:51:39',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (12,NULL,6,'2022-07-06 15:18:19',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (13,NULL,6,'2023-07-07 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (14,NULL,6,'2023-08-07 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (15,NULL,6,'2022-07-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (16,NULL,6,'2022-08-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (17,NULL,6,'2022-09-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (18,NULL,6,'2022-10-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (19,NULL,6,'2022-11-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (20,NULL,6,'2022-12-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (21,NULL,6,'2023-01-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (22,NULL,6,'2023-02-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (23,NULL,6,'2023-03-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (24,NULL,6,'2023-04-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (25,NULL,6,'2023-05-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (26,NULL,6,'2023-02-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (27,NULL,6,'2023-03-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (28,NULL,6,'2023-04-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (29,NULL,6,'2023-05-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (30,NULL,6,'2023-06-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (31,NULL,6,'2023-09-07 01:51:39',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (32,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'199fe91a3a34c8ce',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (33,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'b9a6747fd6568fc2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (34,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'39c163eb3d4be45f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (35,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'500ccd7fcc2abbba',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (36,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'182b1f7585ecd170',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (37,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'f011e469b75a2a36',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (38,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'da38a9b7b64f40ca',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (39,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'eb11e97806d830cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (40,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'5192d580921731bf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (41,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'2950723f11f5e239',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (42,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'b7b728e2eaf732e1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (43,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'94e3e06a9e9b53c1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (44,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'fb0b2a2539f57eb6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (45,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'0eaed8d79ce1b8e2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (46,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'377748d4cf02df93',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (47,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'92a30dc12bc6f89f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (48,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'82e83517499bed14',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (49,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'db59f4a2b5c5e910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (50,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'f4a649ade54561d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (51,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'247f664cf3df1315',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (52,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'335863057117965b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (53,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'b6176b7b65ed72f1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (54,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'9a4fc74545d39864',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (55,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'05a06f6a774b5ff6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (56,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'53b4c84f1f6d87f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (57,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'7ba0d6192288fd47',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (58,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'4dd4ba301641ab44',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (59,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'ce228497888c2378',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (60,NULL,6,'2023-10-07 01:51:39',1200.00,NULL,NULL,'USD',1,'b237ce5365d90585',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (61,NULL,6,'2023-10-07 01:51:39',1200.00,NULL,NULL,'USD',1,'6600cd795ed03a60',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (62,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'692f41d144ba99b2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (63,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'27132cb320864779',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (64,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'1b101efdd36b05cf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (65,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'0148e195bca51d81',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (66,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'ccb8e93eff3029fa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (67,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'0840f3d87c6e85fb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (68,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'3df236b8a47b5bb9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (69,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'faa306e7256fce34',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (70,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'a7ff24e77623ff66',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (71,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'66e129a8d6e297fa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (72,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'3e52e256b26e001d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (73,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'58ce3d135fec464e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (74,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'d0430a4a2d99e47f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (75,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'45bb6ea0781be9f0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (76,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'2bee5ffd2592ca3d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (77,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'609e9f6ac922d912',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (78,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'5601aea891e87f0d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (79,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'165967a21ea2b659',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (80,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'e9270c01cb7e7d87',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (81,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'7f1e20b2b28f8226',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (82,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'ed1ca23c1c2945c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (83,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'4959fbae7c7cc84c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (84,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'89e19b42e174eb80',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (85,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'60f18e18ad36e0a8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (86,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'7ab5e66da17e8d68',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (87,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'0be1bc2f90a806b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (88,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'7ed9ae13f33e76df',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (89,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'fe47d7e306522352',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (90,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'374e2f2ed959566e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (91,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'b0f27fe74b6b4a8a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (92,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'857dc2777c1a660c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (93,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'d5dbc6b4bd2fac95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (94,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'043190c33aa17fd2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (95,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'42a7294b9baf02d3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (96,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'8e6e4153b0abab95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (97,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'f5b11319837ef1e6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (98,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'e532775a80589dd2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (99,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'7d4564e1bdd09791',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (100,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'7b7e2bdd408bae45',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (101,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'c5ee4eb0b3d0c901',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (102,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'69be08504eee5355',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (103,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'03a4f5fe114a9c59',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (104,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'b0ec3e0cb2cb6aee',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (105,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'629d63496b32ec37',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (106,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'6884516bd1244063',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (107,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'a94fec7ebdce0620',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (108,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'aba6ff5d44f34e7f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (109,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'e6502ad537f88d38',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (110,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'11002b1a386b49ad',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (111,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'4132024b570ff06c',NULL,1,NULL,1,NULL,NULL,NULL,NULL); + (1,NULL,6,'2013-10-19 14:22:30',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), + (2,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (3,NULL,6,'2017-09-24 01:22:30',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), + (4,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), + (5,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (6,NULL,6,'2023-07-26 13:40:30',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), + (7,NULL,6,'2023-10-17 14:22:30',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), + (8,NULL,6,'2023-02-24 22:33:30',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (9,NULL,6,'2022-11-19 14:22:30',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (10,NULL,6,'2019-05-27 16:22:30',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (11,NULL,6,'2023-10-18 10:22:30',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (12,NULL,6,'2022-07-19 03:49:10',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (13,NULL,6,'2023-07-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (14,NULL,6,'2023-08-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (15,NULL,6,'2022-07-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (16,NULL,6,'2022-08-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (17,NULL,6,'2022-09-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (18,NULL,6,'2022-10-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (19,NULL,6,'2022-11-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (20,NULL,6,'2022-12-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (21,NULL,6,'2023-01-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (22,NULL,6,'2023-02-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (23,NULL,6,'2023-03-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (24,NULL,6,'2023-04-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (25,NULL,6,'2023-05-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (26,NULL,6,'2023-02-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (27,NULL,6,'2023-03-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (28,NULL,6,'2023-04-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (29,NULL,6,'2023-05-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (30,NULL,6,'2023-06-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (31,NULL,6,'2023-09-19 14:22:30',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (32,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'ffed5868e9951a95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (33,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e38f6ec37b9fabb3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (34,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'386a76c90a983717',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (35,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'6f302a92a8d039f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (36,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c7f53644ae2a7abd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (37,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'8e1a4f823c309e35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (38,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'62904aaad7687d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (39,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'9e43d605091634b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (40,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9183e73af132fbd1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (41,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'f739f79d40e7bd2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (42,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c908bcfa0cd5be20',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (43,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'32f851d09a3775f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (44,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'aa13673d8ef85a65',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (45,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'fd4792bd3a50da87',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (46,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'df65e9305cdef133',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (47,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'e7836a1040fc6647',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (48,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'fe44a2c192ab18be',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (49,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ef096073ba84bc0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (50,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'0937a86d9856d20f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (51,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'0e4d2cc74726c33e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (52,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'184c1625a0ab7dc0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (53,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'58c722d9ea8f60e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (54,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'dc8c98604902da07',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (55,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'2ae34338151a8c31',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (56,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'126eb1cbca88ac46',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (57,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'4d24ed19cb02ed0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (58,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'46fff670fdd88c83',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (59,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'1d446a98d22519c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (60,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e6d81f09a41d0f35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (61,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9668e4798e266def',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (62,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'548746b3839860da',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (63,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'25a9f0b5ed29df0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (64,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ed07590fe067cb07',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (65,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f82bc2b76969d315',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (66,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'2169580b75789814',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (67,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'504a9107e1c840c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (68,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9dc4f36b0500ac35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (69,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'96af8634550c39ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (70,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'082640d22f20fcf6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (71,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'a720e6fdf9eea694',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (72,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'c8d10d10dd2d66bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (73,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'413cb05032f4ef86',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (74,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b056ac8b83186f79',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (75,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'bd1cbf336bcdc529',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (76,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'188d57636c31422a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (77,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'44c3f7faa315a724',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (78,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'0ab78d1432305653',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (79,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3eb2384d79bdaa10',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (80,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'d39bcc7bf0e51cab',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (81,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4feacc260963ba72',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (82,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'95a80169077a3dea',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (83,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b7318d85efca799b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (84,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6ba712ac9576b7b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (85,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a96ed671bbd3ea09',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (86,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'cca171d375cdc8f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (87,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'146f0c5184fd503c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (88,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'732d30e0d1d41ca5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (89,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b28927dfa09ab7b4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (90,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3de19df12cf6886c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (91,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'7a53e74599f788ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (92,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4bc019d5fcebe204',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (93,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a2542bee3dc332de',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (94,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6cc8dd5a5b8e8913',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (95,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'24cc9f9c83795713',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (96,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7245aac602b546bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (97,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ac8995759a7a3270',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (98,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'472bf4e471ef125f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (99,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ff5b5537da44c970',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (100,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'648327e05cdee0ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (101,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b7c48e40295cdc9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (102,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f78524f14cda217c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (103,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7e35b99bd91e7b4c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (104,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'52b5a6a76b142227',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (105,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'755c91f4df5025f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (106,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'60f19d9651d20536',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (107,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'6def5a3cac235219',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (108,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fe477a4cedeef016',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (109,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fad72a1cf34cf68e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (110,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'656d8e5060576829',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (111,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7749b8e4f077e05c',NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3960,89 +3959,89 @@ UNLOCK TABLES; LOCK TABLES `civicrm_group_contact` WRITE; /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */; INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES - (1,2,26,'Added',NULL,NULL), - (2,2,35,'Added',NULL,NULL), - (3,2,201,'Added',NULL,NULL), - (4,2,113,'Added',NULL,NULL), - (5,2,153,'Added',NULL,NULL), - (6,2,81,'Added',NULL,NULL), - (7,2,61,'Added',NULL,NULL), - (8,2,5,'Added',NULL,NULL), - (9,2,98,'Added',NULL,NULL), - (10,2,78,'Added',NULL,NULL), - (11,2,180,'Added',NULL,NULL), - (12,2,182,'Added',NULL,NULL), - (13,2,179,'Added',NULL,NULL), - (14,2,109,'Added',NULL,NULL), + (1,2,31,'Added',NULL,NULL), + (2,2,25,'Added',NULL,NULL), + (3,2,35,'Added',NULL,NULL), + (4,2,142,'Added',NULL,NULL), + (5,2,5,'Added',NULL,NULL), + (6,2,54,'Added',NULL,NULL), + (7,2,4,'Added',NULL,NULL), + (8,2,82,'Added',NULL,NULL), + (9,2,9,'Added',NULL,NULL), + (10,2,143,'Added',NULL,NULL), + (11,2,123,'Added',NULL,NULL), + (12,2,78,'Added',NULL,NULL), + (13,2,70,'Added',NULL,NULL), + (14,2,173,'Added',NULL,NULL), (15,2,83,'Added',NULL,NULL), - (16,2,125,'Added',NULL,NULL), - (17,2,33,'Added',NULL,NULL), - (18,2,90,'Added',NULL,NULL), - (19,2,72,'Added',NULL,NULL), - (20,2,129,'Added',NULL,NULL), - (21,2,185,'Added',NULL,NULL), - (22,2,44,'Added',NULL,NULL), - (23,2,169,'Added',NULL,NULL), - (24,2,96,'Added',NULL,NULL), - (25,2,114,'Added',NULL,NULL), - (26,2,110,'Added',NULL,NULL), - (27,2,160,'Added',NULL,NULL), - (28,2,95,'Added',NULL,NULL), - (29,2,106,'Added',NULL,NULL), - (30,2,100,'Added',NULL,NULL), - (31,2,20,'Added',NULL,NULL), - (32,2,155,'Added',NULL,NULL), - (33,2,94,'Added',NULL,NULL), - (34,2,197,'Added',NULL,NULL), - (35,2,55,'Added',NULL,NULL), - (36,2,104,'Added',NULL,NULL), - (37,2,142,'Added',NULL,NULL), - (38,2,97,'Added',NULL,NULL), - (39,2,120,'Added',NULL,NULL), - (40,2,105,'Added',NULL,NULL), - (41,2,43,'Added',NULL,NULL), - (42,2,70,'Added',NULL,NULL), - (43,2,119,'Added',NULL,NULL), - (44,2,16,'Added',NULL,NULL), - (45,2,47,'Added',NULL,NULL), - (46,2,15,'Added',NULL,NULL), - (47,2,199,'Added',NULL,NULL), - (48,2,165,'Added',NULL,NULL), - (49,2,188,'Added',NULL,NULL), - (50,2,146,'Added',NULL,NULL), - (51,2,2,'Added',NULL,NULL), - (52,2,91,'Added',NULL,NULL), - (53,2,54,'Added',NULL,NULL), - (54,2,30,'Added',NULL,NULL), - (55,2,164,'Added',NULL,NULL), - (56,2,170,'Added',NULL,NULL), - (57,2,138,'Added',NULL,NULL), - (58,2,156,'Added',NULL,NULL), - (59,2,177,'Added',NULL,NULL), - (60,2,7,'Added',NULL,NULL), - (61,3,143,'Added',NULL,NULL), - (62,3,122,'Added',NULL,NULL), - (63,3,196,'Added',NULL,NULL), - (64,3,198,'Added',NULL,NULL), - (65,3,181,'Added',NULL,NULL), - (66,3,102,'Added',NULL,NULL), + (16,2,72,'Added',NULL,NULL), + (17,2,186,'Added',NULL,NULL), + (18,2,127,'Added',NULL,NULL), + (19,2,101,'Added',NULL,NULL), + (20,2,30,'Added',NULL,NULL), + (21,2,89,'Added',NULL,NULL), + (22,2,187,'Added',NULL,NULL), + (23,2,194,'Added',NULL,NULL), + (24,2,136,'Added',NULL,NULL), + (25,2,115,'Added',NULL,NULL), + (26,2,129,'Added',NULL,NULL), + (27,2,168,'Added',NULL,NULL), + (28,2,157,'Added',NULL,NULL), + (29,2,172,'Added',NULL,NULL), + (30,2,117,'Added',NULL,NULL), + (31,2,197,'Added',NULL,NULL), + (32,2,98,'Added',NULL,NULL), + (33,2,185,'Added',NULL,NULL), + (34,2,132,'Added',NULL,NULL), + (35,2,94,'Added',NULL,NULL), + (36,2,11,'Added',NULL,NULL), + (37,2,178,'Added',NULL,NULL), + (38,2,144,'Added',NULL,NULL), + (39,2,201,'Added',NULL,NULL), + (40,2,87,'Added',NULL,NULL), + (41,2,128,'Added',NULL,NULL), + (42,2,8,'Added',NULL,NULL), + (43,2,33,'Added',NULL,NULL), + (44,2,42,'Added',NULL,NULL), + (45,2,80,'Added',NULL,NULL), + (46,2,153,'Added',NULL,NULL), + (47,2,120,'Added',NULL,NULL), + (48,2,169,'Added',NULL,NULL), + (49,2,130,'Added',NULL,NULL), + (50,2,28,'Added',NULL,NULL), + (51,2,93,'Added',NULL,NULL), + (52,2,17,'Added',NULL,NULL), + (53,2,38,'Added',NULL,NULL), + (54,2,174,'Added',NULL,NULL), + (55,2,81,'Added',NULL,NULL), + (56,2,113,'Added',NULL,NULL), + (57,2,71,'Added',NULL,NULL), + (58,2,56,'Added',NULL,NULL), + (59,2,171,'Added',NULL,NULL), + (60,2,97,'Added',NULL,NULL), + (61,3,29,'Added',NULL,NULL), + (62,3,138,'Added',NULL,NULL), + (63,3,145,'Added',NULL,NULL), + (64,3,166,'Added',NULL,NULL), + (65,3,107,'Added',NULL,NULL), + (66,3,105,'Added',NULL,NULL), (67,3,167,'Added',NULL,NULL), - (68,3,68,'Added',NULL,NULL), - (69,3,189,'Added',NULL,NULL), - (70,3,115,'Added',NULL,NULL), - (71,3,12,'Added',NULL,NULL), - (72,3,195,'Added',NULL,NULL), - (73,3,192,'Added',NULL,NULL), - (74,3,36,'Added',NULL,NULL), - (75,3,32,'Added',NULL,NULL), - (76,4,26,'Added',NULL,NULL), - (77,4,5,'Added',NULL,NULL), + (68,3,192,'Added',NULL,NULL), + (69,3,37,'Added',NULL,NULL), + (70,3,27,'Added',NULL,NULL), + (71,3,40,'Added',NULL,NULL), + (72,3,165,'Added',NULL,NULL), + (73,3,184,'Added',NULL,NULL), + (74,3,158,'Added',NULL,NULL), + (75,3,102,'Added',NULL,NULL), + (76,4,31,'Added',NULL,NULL), + (77,4,82,'Added',NULL,NULL), (78,4,83,'Added',NULL,NULL), - (79,4,44,'Added',NULL,NULL), - (80,4,106,'Added',NULL,NULL), - (81,4,104,'Added',NULL,NULL), - (82,4,119,'Added',NULL,NULL), - (83,4,146,'Added',NULL,NULL), + (79,4,187,'Added',NULL,NULL), + (80,4,172,'Added',NULL,NULL), + (81,4,11,'Added',NULL,NULL), + (82,4,33,'Added',NULL,NULL), + (83,4,28,'Added',NULL,NULL), (84,4,202,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -4158,85 +4157,85 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio (30,'civicrm_contribution',30,30,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), (31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,0.00,NULL), (32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (34,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (35,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (36,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (37,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (38,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (39,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (40,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (41,'civicrm_membership',20,51,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (42,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (43,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (44,'civicrm_membership',25,56,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (45,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (46,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (47,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (48,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (49,'civicrm_membership',5,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (50,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (51,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (52,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (53,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (54,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (55,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (58,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), - (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), - (63,'civicrm_participant',3,72,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (64,'civicrm_participant',6,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (65,'civicrm_participant',9,97,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (66,'civicrm_participant',12,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (67,'civicrm_participant',15,75,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (68,'civicrm_participant',18,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (69,'civicrm_participant',21,76,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (70,'civicrm_participant',24,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (71,'civicrm_participant',25,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (72,'civicrm_participant',28,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (73,'civicrm_participant',31,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (74,'civicrm_participant',34,95,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (75,'civicrm_participant',37,91,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (76,'civicrm_participant',40,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (78,'civicrm_participant',46,110,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (79,'civicrm_participant',49,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (80,'civicrm_participant',50,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (81,'civicrm_participant',1,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (82,'civicrm_participant',4,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (83,'civicrm_participant',7,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (84,'civicrm_participant',10,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (85,'civicrm_participant',13,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (86,'civicrm_participant',16,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (87,'civicrm_participant',19,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (88,'civicrm_participant',22,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (89,'civicrm_participant',26,98,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (90,'civicrm_participant',29,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (91,'civicrm_participant',32,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (92,'civicrm_participant',35,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (93,'civicrm_participant',38,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (94,'civicrm_participant',41,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (95,'civicrm_participant',44,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (96,'civicrm_participant',47,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (97,'civicrm_participant',2,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (98,'civicrm_participant',5,90,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (99,'civicrm_participant',8,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (100,'civicrm_participant',11,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (101,'civicrm_participant',14,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (102,'civicrm_participant',17,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (103,'civicrm_participant',20,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (104,'civicrm_participant',23,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (105,'civicrm_participant',27,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (106,'civicrm_participant',30,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (107,'civicrm_participant',33,84,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (108,'civicrm_participant',36,111,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (109,'civicrm_participant',39,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (110,'civicrm_participant',42,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (111,'civicrm_participant',45,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (112,'civicrm_participant',48,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL); + (33,'civicrm_membership',3,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (34,'civicrm_membership',7,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (35,'civicrm_membership',9,35,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (36,'civicrm_membership',13,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (37,'civicrm_membership',15,37,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (38,'civicrm_membership',17,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (39,'civicrm_membership',19,39,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (40,'civicrm_membership',20,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (41,'civicrm_membership',21,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (42,'civicrm_membership',23,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (43,'civicrm_membership',25,43,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (44,'civicrm_membership',27,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (45,'civicrm_membership',29,45,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (46,'civicrm_membership',30,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (47,'civicrm_membership',2,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (48,'civicrm_membership',4,48,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (49,'civicrm_membership',5,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (50,'civicrm_membership',6,50,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (51,'civicrm_membership',8,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (52,'civicrm_membership',10,52,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (53,'civicrm_membership',12,53,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (54,'civicrm_membership',14,54,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (55,'civicrm_membership',16,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (56,'civicrm_membership',18,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (57,'civicrm_membership',24,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (58,'civicrm_membership',26,58,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (59,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (60,'civicrm_membership',11,60,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), + (61,'civicrm_membership',22,61,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), + (63,'civicrm_participant',3,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (64,'civicrm_participant',6,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (66,'civicrm_participant',12,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (67,'civicrm_participant',15,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (68,'civicrm_participant',18,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (69,'civicrm_participant',21,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (70,'civicrm_participant',24,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (71,'civicrm_participant',25,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (72,'civicrm_participant',28,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (73,'civicrm_participant',31,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (74,'civicrm_participant',34,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (75,'civicrm_participant',37,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (76,'civicrm_participant',40,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (77,'civicrm_participant',43,101,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (78,'civicrm_participant',46,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (79,'civicrm_participant',49,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (80,'civicrm_participant',50,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (81,'civicrm_participant',1,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (82,'civicrm_participant',4,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (83,'civicrm_participant',7,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (84,'civicrm_participant',10,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (85,'civicrm_participant',13,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (86,'civicrm_participant',16,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (87,'civicrm_participant',19,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (88,'civicrm_participant',22,104,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (89,'civicrm_participant',26,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (90,'civicrm_participant',29,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (91,'civicrm_participant',32,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (92,'civicrm_participant',35,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (93,'civicrm_participant',38,96,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (94,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (95,'civicrm_participant',44,107,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (96,'civicrm_participant',47,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (97,'civicrm_participant',2,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (98,'civicrm_participant',5,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (99,'civicrm_participant',8,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (100,'civicrm_participant',11,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (101,'civicrm_participant',14,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (102,'civicrm_participant',17,105,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (103,'civicrm_participant',20,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (104,'civicrm_participant',23,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (106,'civicrm_participant',30,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (107,'civicrm_participant',33,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (108,'civicrm_participant',36,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (109,'civicrm_participant',39,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (110,'civicrm_participant',42,97,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (111,'civicrm_participant',45,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (112,'civicrm_participant',48,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -4247,9 +4246,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_loc_block` WRITE; /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */; INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES - (1,185,200,173,NULL,NULL,NULL,NULL,NULL), - (2,186,201,174,NULL,NULL,NULL,NULL,NULL), - (3,187,202,175,NULL,NULL,NULL,NULL,NULL); + (1,178,189,175,NULL,NULL,NULL,NULL,NULL), + (2,179,190,176,NULL,NULL,NULL,NULL,NULL), + (3,180,191,177,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -4275,7 +4274,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_log` WRITE; /*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */; INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES - (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-07 01:51:34'); + (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-19 14:22:30'); /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4695,36 +4694,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership` WRITE; /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */; INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES - (1,181,1,'2023-10-07','2023-10-07','2025-10-06','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (2,143,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (3,69,1,'2023-10-05','2023-10-05','2025-10-04','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (4,140,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (5,119,2,'2022-10-03','2022-10-03','2023-10-02','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (6,32,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (7,113,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (8,157,2,'2023-09-30','2023-09-30','2024-09-29','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (9,18,1,'2023-09-29','2023-09-29','2025-09-28','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (10,99,1,'2021-07-27','2021-07-27','2023-07-26','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (11,23,3,'2023-09-27','2023-09-27',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (12,115,2,'2023-09-26','2023-09-26','2024-09-25','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (13,128,1,'2023-09-25','2023-09-25','2025-09-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (14,55,2,'2023-09-24','2023-09-24','2024-09-23','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (15,163,1,'2021-06-17','2021-06-17','2023-06-16','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (16,126,2,'2023-09-22','2023-09-22','2024-09-21','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (17,141,1,'2023-09-21','2023-09-21','2025-09-20','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (18,125,2,'2023-09-20','2023-09-20','2024-09-19','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (19,172,1,'2023-09-19','2023-09-19','2025-09-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (20,156,1,'2021-05-08','2021-05-08','2023-05-07','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (21,93,1,'2023-09-17','2023-09-17','2025-09-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (22,37,3,'2023-09-16','2023-09-16',NULL,'Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (23,81,1,'2023-09-15','2023-09-15','2025-09-14','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (24,122,2,'2023-09-14','2023-09-14','2024-09-13','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (25,36,1,'2021-03-29','2021-03-29','2023-03-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (26,15,2,'2023-09-12','2023-09-12','2024-09-11','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (27,131,1,'2023-09-11','2023-09-11','2025-09-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (28,158,2,'2023-09-10','2023-09-10','2024-09-09','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (29,193,1,'2023-09-09','2023-09-09','2025-09-08','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (30,30,2,'2022-09-08','2022-09-08','2023-09-07','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL); + (1,55,1,'2023-10-19','2023-10-19','2025-10-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (2,47,2,'2023-10-18','2023-10-18','2024-10-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (3,168,1,'2023-10-17','2023-10-17','2025-10-16','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (4,126,2,'2023-10-16','2023-10-16','2024-10-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (5,113,2,'2022-10-15','2022-10-15','2023-10-14','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (6,169,2,'2023-10-14','2023-10-14','2024-10-13','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (7,36,1,'2023-10-13','2023-10-13','2025-10-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (8,164,2,'2023-10-12','2023-10-12','2024-10-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (9,87,1,'2023-10-11','2023-10-11','2025-10-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (10,39,2,'2022-10-10','2022-10-10','2023-10-09','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (11,93,3,'2023-10-09','2023-10-09',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (12,49,2,'2023-10-08','2023-10-08','2024-10-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (13,48,1,'2023-10-07','2023-10-07','2025-10-06','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (14,92,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (15,180,1,'2021-06-29','2021-06-29','2023-06-28','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (16,136,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (17,8,1,'2023-10-03','2023-10-03','2025-10-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (18,187,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (19,54,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (20,106,1,'2021-05-20','2021-05-20','2023-05-19','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (21,17,1,'2023-09-29','2023-09-29','2025-09-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (22,5,3,'2023-09-28','2023-09-28',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (23,175,1,'2023-09-27','2023-09-27','2025-09-26','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (24,100,2,'2023-09-26','2023-09-26','2024-09-25','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (25,28,1,'2021-04-10','2021-04-10','2023-04-09','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (26,78,2,'2023-09-24','2023-09-24','2024-09-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (27,117,1,'2023-09-23','2023-09-23','2025-09-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (28,66,2,'2023-09-22','2023-09-22','2024-09-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (29,86,1,'2023-09-21','2023-09-21','2025-09-20','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (30,149,1,'2021-03-01','2021-03-01','2023-02-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -4746,36 +4745,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_log` WRITE; /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */; INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES - (1,26,1,'2023-09-12','2024-09-11',15,'2023-10-07',2,NULL), - (2,9,1,'2023-09-29','2025-09-28',18,'2023-10-07',1,NULL), - (3,11,1,'2023-09-27',NULL,23,'2023-10-07',3,NULL), - (4,30,4,'2022-09-08','2023-09-07',30,'2023-10-07',2,NULL), - (5,6,1,'2023-10-02','2024-10-01',32,'2023-10-07',2,NULL), - (6,25,3,'2021-03-29','2023-03-28',36,'2023-10-07',1,NULL), - (7,22,1,'2023-09-16',NULL,37,'2023-10-07',3,NULL), - (8,14,1,'2023-09-24','2024-09-23',55,'2023-10-07',2,NULL), - (9,3,1,'2023-10-05','2025-10-04',69,'2023-10-07',1,NULL), - (10,23,1,'2023-09-15','2025-09-14',81,'2023-10-07',1,NULL), - (11,21,1,'2023-09-17','2025-09-16',93,'2023-10-07',1,NULL), - (12,10,3,'2021-07-27','2023-07-26',99,'2023-10-07',1,NULL), - (13,7,1,'2023-10-01','2025-09-30',113,'2023-10-07',1,NULL), - (14,12,1,'2023-09-26','2024-09-25',115,'2023-10-07',2,NULL), - (15,5,4,'2022-10-03','2023-10-02',119,'2023-10-07',2,NULL), - (16,24,1,'2023-09-14','2024-09-13',122,'2023-10-07',2,NULL), - (17,18,1,'2023-09-20','2024-09-19',125,'2023-10-07',2,NULL), - (18,16,1,'2023-09-22','2024-09-21',126,'2023-10-07',2,NULL), - (19,13,1,'2023-09-25','2025-09-24',128,'2023-10-07',1,NULL), - (20,27,1,'2023-09-11','2025-09-10',131,'2023-10-07',1,NULL), - (21,4,1,'2023-10-04','2024-10-03',140,'2023-10-07',2,NULL), - (22,17,1,'2023-09-21','2025-09-20',141,'2023-10-07',1,NULL), - (23,2,1,'2023-10-06','2024-10-05',143,'2023-10-07',2,NULL), - (24,20,3,'2021-05-08','2023-05-07',156,'2023-10-07',1,NULL), - (25,8,1,'2023-09-30','2024-09-29',157,'2023-10-07',2,NULL), - (26,28,1,'2023-09-10','2024-09-09',158,'2023-10-07',2,NULL), - (27,15,3,'2021-06-17','2023-06-16',163,'2023-10-07',1,NULL), - (28,19,1,'2023-09-19','2025-09-18',172,'2023-10-07',1,NULL), - (29,1,1,'2023-10-07','2025-10-06',181,'2023-10-07',1,NULL), - (30,29,1,'2023-09-09','2025-09-08',193,'2023-10-07',1,NULL); + (1,22,1,'2023-09-28',NULL,5,'2023-10-19',3,NULL), + (2,17,1,'2023-10-03','2025-10-02',8,'2023-10-19',1,NULL), + (3,21,1,'2023-09-29','2025-09-28',17,'2023-10-19',1,NULL), + (4,25,3,'2021-04-10','2023-04-09',28,'2023-10-19',1,NULL), + (5,7,1,'2023-10-13','2025-10-12',36,'2023-10-19',1,NULL), + (6,10,4,'2022-10-10','2023-10-09',39,'2023-10-19',2,NULL), + (7,2,1,'2023-10-18','2024-10-17',47,'2023-10-19',2,NULL), + (8,13,1,'2023-10-07','2025-10-06',48,'2023-10-19',1,NULL), + (9,12,1,'2023-10-08','2024-10-07',49,'2023-10-19',2,NULL), + (10,19,1,'2023-10-01','2025-09-30',54,'2023-10-19',1,NULL), + (11,1,1,'2023-10-19','2025-10-18',55,'2023-10-19',1,NULL), + (12,28,1,'2023-09-22','2024-09-21',66,'2023-10-19',2,NULL), + (13,26,1,'2023-09-24','2024-09-23',78,'2023-10-19',2,NULL), + (14,29,1,'2023-09-21','2025-09-20',86,'2023-10-19',1,NULL), + (15,9,1,'2023-10-11','2025-10-10',87,'2023-10-19',1,NULL), + (16,14,1,'2023-10-06','2024-10-05',92,'2023-10-19',2,NULL), + (17,11,1,'2023-10-09',NULL,93,'2023-10-19',3,NULL), + (18,24,1,'2023-09-26','2024-09-25',100,'2023-10-19',2,NULL), + (19,20,3,'2021-05-20','2023-05-19',106,'2023-10-19',1,NULL), + (20,5,4,'2022-10-15','2023-10-14',113,'2023-10-19',2,NULL), + (21,27,1,'2023-09-23','2025-09-22',117,'2023-10-19',1,NULL), + (22,4,1,'2023-10-16','2024-10-15',126,'2023-10-19',2,NULL), + (23,16,1,'2023-10-04','2024-10-03',136,'2023-10-19',2,NULL), + (24,30,3,'2021-03-01','2023-02-28',149,'2023-10-19',1,NULL), + (25,8,1,'2023-10-12','2024-10-11',164,'2023-10-19',2,NULL), + (26,3,1,'2023-10-17','2025-10-16',168,'2023-10-19',1,NULL), + (27,6,1,'2023-10-14','2024-10-13',169,'2023-10-19',2,NULL), + (28,23,1,'2023-09-27','2025-09-26',175,'2023-10-19',1,NULL), + (29,15,3,'2021-06-29','2023-06-28',180,'2023-10-19',1,NULL), + (30,18,1,'2023-10-02','2024-10-01',187,'2023-10-19',2,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4786,36 +4785,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_payment` WRITE; /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */; INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES - (29,1,32), - (23,2,33), - (9,3,34), - (21,4,35), - (15,5,36), - (5,6,37), - (13,7,38), - (25,8,39), - (2,9,40), - (12,10,41), - (3,11,42), - (14,12,43), - (19,13,44), - (8,14,45), - (27,15,46), - (18,16,47), - (22,17,48), - (17,18,49), - (28,19,50), - (24,20,51), - (11,21,52), - (7,22,53), - (10,23,54), - (16,24,55), - (6,25,56), - (1,26,57), - (20,27,58), - (26,28,59), - (30,29,60), - (4,30,61); + (1,1,32), + (2,3,33), + (3,7,34), + (4,9,35), + (5,13,36), + (6,15,37), + (7,17,38), + (8,19,39), + (9,20,40), + (10,21,41), + (11,23,42), + (12,25,43), + (13,27,44), + (14,29,45), + (15,30,46), + (16,2,47), + (17,4,48), + (18,5,49), + (19,6,50), + (20,8,51), + (21,10,52), + (22,12,53), + (23,14,54), + (24,16,55), + (25,18,56), + (26,24,57), + (27,26,58), + (28,28,59), + (29,11,60), + (30,22,61); /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -4856,134 +4855,134 @@ UNLOCK TABLES; LOCK TABLES `civicrm_menu` WRITE; /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */; INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES - (1,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'), - (2,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'), - (3,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (4,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (5,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (6,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'), - (7,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), - (8,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), - (9,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (10,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), - (11,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'), - (12,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), - (13,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (14,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'), - (15,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (16,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (17,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (18,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (19,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'), - (20,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (21,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (22,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (23,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (24,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (25,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (26,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (27,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'), - (28,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'), - (29,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'), - (30,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'), - (31,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'), - (32,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'), - (33,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'), - (34,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (35,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (36,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (37,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (38,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (39,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (40,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (41,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (42,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (43,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (44,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (45,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (46,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (47,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (48,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (49,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (50,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (51,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (52,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (53,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (54,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (55,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (56,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (57,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'), - (58,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (59,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (60,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (61,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (62,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (63,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (64,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (65,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (66,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (67,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (68,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (69,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (70,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (71,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'), - (72,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), - (73,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'), - (74,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), - (75,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (76,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (77,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (78,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (79,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (80,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (81,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (82,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (83,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (84,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (85,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (86,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (87,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (88,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (89,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (90,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (91,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (92,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (93,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (94,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (95,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (96,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), - (97,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'), - (98,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (99,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'), - (100,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (101,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), - (102,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'), - (103,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'), - (104,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'), - (105,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (106,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (107,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (108,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'), - (109,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'), - (110,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (111,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (112,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (113,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (114,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (115,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (116,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'), - (117,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (118,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (119,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (120,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (121,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (122,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (123,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (124,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (125,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (126,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (127,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (128,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (1,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (2,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (3,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (4,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (5,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (6,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (7,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (8,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (9,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (10,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (11,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'), + (12,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (13,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (14,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (15,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (16,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (17,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (18,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (19,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'), + (20,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'), + (21,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'), + (22,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'), + (23,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'), + (24,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'), + (25,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'), + (26,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (27,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (28,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (29,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (30,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (31,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (32,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (33,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (34,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (35,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (36,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (37,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (38,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (39,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (40,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (41,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (42,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (43,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (44,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (45,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (46,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (47,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (48,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (49,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'), + (50,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (51,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (52,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (53,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (54,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (55,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (56,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (57,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (58,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (59,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (60,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (61,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (62,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (63,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'), + (64,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), + (65,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'), + (66,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), + (67,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (68,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (69,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (70,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (71,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (72,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (73,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (74,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (75,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (76,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (77,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (78,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (79,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (80,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (81,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (82,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (83,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (84,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (85,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (86,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (87,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (88,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), + (89,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'), + (90,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (91,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'), + (92,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (93,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), + (94,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'), + (95,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'), + (96,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'), + (97,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (98,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (99,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (100,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'), + (101,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'), + (102,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (103,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (104,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (105,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (106,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (107,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (108,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'), + (109,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (110,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (111,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (112,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'), + (113,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), + (114,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), + (115,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (116,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), + (117,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'), + (118,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), + (119,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (120,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'), + (121,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (122,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (123,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (124,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'), + (125,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'), + (126,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (127,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (128,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (129,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (130,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (131,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), @@ -5037,181 +5036,181 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title` (179,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (180,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (181,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (182,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), - (183,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'), - (184,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'), - (185,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (186,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (187,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (188,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'), - (189,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'), - (190,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (191,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (192,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (193,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (194,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (195,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (196,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (197,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (198,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (199,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (200,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (201,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (202,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (203,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (204,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (205,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (206,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (207,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (208,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (209,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (210,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (211,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (212,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (213,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (214,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (215,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (216,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (217,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (218,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (219,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (220,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (221,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (222,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (223,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (224,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (225,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (226,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (227,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (228,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (229,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (230,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (231,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (232,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (233,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), - (234,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (235,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (236,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (237,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'), - (238,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (239,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (240,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (241,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (242,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (243,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (244,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (245,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (246,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (247,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (248,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (249,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (250,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (251,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (252,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (253,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (254,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (255,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (256,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (257,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (258,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (259,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (260,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (261,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (262,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (263,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (264,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (265,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (266,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (267,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), - (268,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), - (269,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), - (270,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), - (271,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), - (272,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (273,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (274,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (275,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (276,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (277,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (278,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (279,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (280,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (281,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'), - (282,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'), - (283,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), - (284,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'), - (285,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), - (286,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'), - (287,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), - (288,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'), - (289,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'), - (290,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'), - (291,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'), - (292,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'), - (293,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'), - (294,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'), - (295,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'), - (296,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), - (297,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), - (298,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (299,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (300,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), - (301,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'), - (302,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), - (303,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (304,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (305,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (306,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (307,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), - (308,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (309,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), - (310,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), - (311,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), - (312,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), - (313,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), - (314,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), - (315,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), - (316,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), - (317,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), - (318,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (319,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (320,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (321,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (322,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (323,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (324,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (325,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (326,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (327,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (328,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (329,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (330,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (331,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), - (332,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), - (333,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), - (334,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), - (335,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (336,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (337,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (338,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (339,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (340,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (341,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), - (342,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), - (343,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), - (344,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), - (345,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), - (346,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (347,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (348,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (349,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (350,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (351,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (352,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (353,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (354,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (355,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'), - (356,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (182,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (183,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (184,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (185,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (186,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), + (187,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'), + (188,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'), + (189,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (190,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (191,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (192,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'), + (193,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'), + (194,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (195,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (196,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (197,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (198,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (199,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (200,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (201,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (202,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (203,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (204,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (205,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (206,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (207,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (208,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (209,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (210,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (211,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (212,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (213,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (214,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (215,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (216,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (217,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (218,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (219,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (220,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (221,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (222,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (223,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (224,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (225,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (226,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (227,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (228,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (229,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (230,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (231,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (232,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (233,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (234,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (235,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (236,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (237,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), + (238,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (239,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (240,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (241,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'), + (242,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (243,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (244,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (245,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (246,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (247,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (248,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (249,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (250,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (251,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (252,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (253,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (254,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (255,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (256,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (257,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (258,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (259,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (260,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (261,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (262,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (263,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (264,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (265,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (266,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (267,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'), + (268,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (269,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (270,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (271,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (272,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (273,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (274,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (275,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (276,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (277,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (278,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (279,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (280,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (281,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (282,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (283,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (284,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'), + (285,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'), + (286,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), + (287,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'), + (288,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), + (289,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'), + (290,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), + (291,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'), + (292,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'), + (293,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'), + (294,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'), + (295,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'), + (296,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'), + (297,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'), + (298,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'), + (299,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), + (300,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), + (301,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (302,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (303,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), + (304,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'), + (305,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (306,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (307,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (308,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (309,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), + (310,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (311,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), + (312,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), + (313,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), + (314,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (315,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (316,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), + (317,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), + (318,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), + (319,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), + (320,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (321,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (322,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (323,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (324,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (325,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (326,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (327,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (328,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (329,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (330,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (331,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (332,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (333,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), + (334,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), + (335,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), + (336,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), + (337,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (338,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (339,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (340,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (341,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (342,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (343,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), + (344,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), + (345,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), + (346,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), + (347,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), + (348,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (349,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (350,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (351,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (352,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (353,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (354,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (355,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (356,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), (357,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), (358,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), (359,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), @@ -5308,8 +5307,8 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title` (450,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (451,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (452,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); + (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'), + (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -5348,10 +5347,10 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text` (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n {/if}\n </p>\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n <tr><td>{ts}Contribution Date{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n </table>\n</body>\n</html>\n',1,826,'pcp_owner_notify',0,1,0,NULL), (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n {if $paymentsComplete}\n <p>{ts}Thank you for completing this contribution.{/ts}</p>\n {/if}\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney:$currency}\n </td>\n </tr>\n {else}\n <tr>\n <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n {if !empty($paidBy)}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n <tr>\n <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n </tr>\n {if $totalAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Fee{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $totalPaid}\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $amountOwed}\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney:$currency}\n </td> {* This will be zero after final payment. *}\n </tr>\n {/if}\n </table>\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !empty($billingName) || !empty($address)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if !empty($billingName)}{$billingName}{/if}<br />\n {if !empty($address)}{$address|nl2br}{/if}\n </td>\n </tr>\n {/if}\n {if !empty($credit_card_number)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $component eq \'event\'}\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if !empty($event.participant_role)}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n </table>\n </td>\n </tr>\n\n </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL), (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n {if $paymentsComplete}\n <p>{ts}Thank you for completing this contribution.{/ts}</p>\n {/if}\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney:$currency}\n </td>\n </tr>\n {else}\n <tr>\n <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n {if !empty($paidBy)}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n <tr>\n <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n </tr>\n {if $totalAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Fee{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $totalPaid}\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $amountOwed}\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney:$currency}\n </td> {* This will be zero after final payment. *}\n </tr>\n {/if}\n </table>\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !empty($billingName) || !empty($address)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if !empty($billingName)}{$billingName}{/if}<br />\n {if !empty($address)}{$address|nl2br}{/if}\n </td>\n </tr>\n {/if}\n {if !empty($credit_card_number)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $component eq \'event\'}\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if !empty($event.participant_role)}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n </table>\n </td>\n </tr>\n\n </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL), - (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n{ts}Event Contacts:{/ts}\n\n{if {event.loc_block_id.phone_id.phone|boolean}}\n{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.phone_2_id.phone|boolean}}\n{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n\n\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if {contact.email_primary.email|boolean}}\n\n===============================================================================\n\n{ts}Registered Email{/ts}\n\n===============================================================================\n\n{contact.email_primary.email}\n{/if}\n{if {event.is_monetary|boolean}} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if {event.is_monetary|boolean}}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n-----------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n==============================================================================\n\n{$customName}\n==============================================================================\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL), - (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n{ts}Event Contacts:{/ts}\n\n{if {event.loc_block_id.phone_id.phone|boolean}}\n{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.phone_2_id.phone|boolean}}\n{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n\n\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if {contact.email_primary.email|boolean}}\n\n===============================================================================\n\n{ts}Registered Email{/ts}\n\n===============================================================================\n\n{contact.email_primary.email}\n{/if}\n{if {event.is_monetary|boolean}} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if {event.is_monetary|boolean}}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n-----------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n==============================================================================\n\n{$customName}\n==============================================================================\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL), - (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL), - (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL), + (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL), + (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL), + (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL), + (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL), (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $is_pay_later}\n <p>\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n </p>\n {else}\n <p>\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n </p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p>\n {/if}\n\n <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$billing_name}<br />\n {$billing_street_address}<br />\n {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n <br/>\n {$email}\n </td>\n </tr>\n </table>\n{/if}\n{if $credit_card_type}\n <p> </p>\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n </td>\n </tr>\n </table>\n{/if}\n{if !empty($source)}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"700\">\n <thead>\n <tr>\n{if $line_items}\n <th style=\"text-align: left;\">\n Event\n </th>\n <th style=\"text-align: left;\">\n Participants\n </th>\n{/if}\n <th style=\"text-align: left;\">\n Price\n </th>\n <th style=\"text-align: left;\">\n Total\n </th>\n </tr>\n </thead>\n <tbody>\n {foreach from=$line_items item=line_item}\n <tr>\n <td style=\"width: 220px\">\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}<br /><br />\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n </td>\n <td style=\"width: 180px\">\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:<br/>\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n </td>\n <td style=\"width: 100px\">\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n <td style=\"width: 100px\">\n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {/foreach}\n </tbody>\n <tfoot>\n {if $discounts}\n <tr>\n <td>\n </td>\n <td>\n </td>\n <td>\n Subtotal:\n </td>\n <td>\n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {foreach from=$discounts key=myId item=i}\n <tr>\n <td>\n {$i.title}\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n -{$i.amount}\n </td>\n </tr>\n {/foreach}\n {/if}\n <tr>\n{if $line_items}\n <td>\n </td>\n <td>\n </td>\n{/if}\n <td>\n <strong>Total:</strong>\n </td>\n <td>\n <strong> {$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n </td>\n </tr>\n </tfoot>\n </table>\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n </body>\n</html>\n',1,830,'event_registration_receipt',1,0,0,NULL), (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $is_pay_later}\n <p>\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n </p>\n {else}\n <p>\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n </p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p>\n {/if}\n\n <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$billing_name}<br />\n {$billing_street_address}<br />\n {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n <br/>\n {$email}\n </td>\n </tr>\n </table>\n{/if}\n{if $credit_card_type}\n <p> </p>\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n </td>\n </tr>\n </table>\n{/if}\n{if !empty($source)}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"700\">\n <thead>\n <tr>\n{if $line_items}\n <th style=\"text-align: left;\">\n Event\n </th>\n <th style=\"text-align: left;\">\n Participants\n </th>\n{/if}\n <th style=\"text-align: left;\">\n Price\n </th>\n <th style=\"text-align: left;\">\n Total\n </th>\n </tr>\n </thead>\n <tbody>\n {foreach from=$line_items item=line_item}\n <tr>\n <td style=\"width: 220px\">\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}<br /><br />\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n </td>\n <td style=\"width: 180px\">\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:<br/>\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n </td>\n <td style=\"width: 100px\">\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n <td style=\"width: 100px\">\n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {/foreach}\n </tbody>\n <tfoot>\n {if $discounts}\n <tr>\n <td>\n </td>\n <td>\n </td>\n <td>\n Subtotal:\n </td>\n <td>\n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {foreach from=$discounts key=myId item=i}\n <tr>\n <td>\n {$i.title}\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n -{$i.amount}\n </td>\n </tr>\n {/foreach}\n {/if}\n <tr>\n{if $line_items}\n <td>\n </td>\n <td>\n </td>\n{/if}\n <td>\n <strong>Total:</strong>\n </td>\n <td>\n <strong> {$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n </td>\n </tr>\n </tfoot>\n </table>\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n </body>\n</html>\n',1,830,'event_registration_receipt',0,1,0,NULL), (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email}\n </td>\n </tr>\n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_cancelled',1,0,0,NULL), @@ -5366,8 +5365,8 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text` (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{$senderMessage}</p>\n {if $generalLink}\n <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n {/if}\n {if $contribute}\n <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n {/if}\n {if $event}\n <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n {/if}\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,835,'friend',0,1,0,NULL), (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-membership_receipt\"\n style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $receipt_text}\n <p>{$receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for this contribution.{/ts}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !$isShowLineItems}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {membership.membership_type_id:name}\n </td>\n </tr>\n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.start_date|crmDate:\"Full\"}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/if}\n {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if $isShowLineItems}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>\n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n </td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n </td>\n {/if}\n <td>\n {$line.membership.start_date|crmDate:\"Full\"}\n </td>\n <td>\n {$line.membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_exclusive_amount}\n </td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if !empty($isPrimary)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {$billingName}<br/>\n {$address}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Expires{/ts}\n </td>\n <td {$valueStyle}>\n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {/if}\n\n {if !empty($customValues)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Membership Options{/ts}\n </th>\n </tr>\n {foreach from=$customValues item=value key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',1,0,0,NULL), (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-membership_receipt\"\n style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $receipt_text}\n <p>{$receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for this contribution.{/ts}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !$isShowLineItems}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {membership.membership_type_id:name}\n </td>\n </tr>\n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.start_date|crmDate:\"Full\"}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/if}\n {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if $isShowLineItems}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>\n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n </td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n </td>\n {/if}\n <td>\n {$line.membership.start_date|crmDate:\"Full\"}\n </td>\n <td>\n {$line.membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_exclusive_amount}\n </td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if !empty($isPrimary)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {$billingName}<br/>\n {$address}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Expires{/ts}\n </td>\n <td {$valueStyle}>\n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {/if}\n\n {if !empty($customValues)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Membership Options{/ts}\n </th>\n </tr>\n {foreach from=$customValues item=value key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',0,1,0,NULL), - (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL), - (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL), + (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL), + (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL), (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Status{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_status}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL), (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Status{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_status}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL), (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,839,'membership_autorenew_billing',1,0,0,NULL), @@ -5652,26 +5651,26 @@ UNLOCK TABLES; LOCK TABLES `civicrm_note` WRITE; /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */; INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES - (1,'civicrm_contact',183,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-09-17 21:35:11',NULL,'0'), - (2,'civicrm_contact',9,'Organize the Terry Fox run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-10-29 06:16:48',NULL,'0'), - (3,'civicrm_contact',183,'Get the registration done for NGO status',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-05-22 07:40:08',NULL,'0'), - (4,'civicrm_contact',76,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-03-16 12:45:10',NULL,'0'), - (5,'civicrm_contact',3,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-11-03 18:40:45',NULL,'0'), - (6,'civicrm_contact',64,'Connect for presentation',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-11-19 00:33:50',NULL,'0'), - (7,'civicrm_contact',151,'Arrange for cricket match with Sunil Gavaskar',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-03-01 19:56:31',NULL,'0'), - (8,'civicrm_contact',167,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-12-03 16:06:54',NULL,'0'), - (9,'civicrm_contact',149,'Send reminder for annual dinner',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-06-25 09:28:58',NULL,'0'), - (10,'civicrm_contact',47,'Reminder screening of \"Black\" on next Friday',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-04-21 10:56:44',NULL,'0'), - (11,'civicrm_contact',176,'Organize the Terry Fox run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-04-13 07:09:04',NULL,'0'), - (12,'civicrm_contact',175,'Arrange collection of funds from members',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-09-19 02:55:32',NULL,'0'), - (13,'civicrm_contact',161,'Get the registration done for NGO status',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-08-19 21:42:17',NULL,'0'), - (14,'civicrm_contact',140,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-10-30 11:23:44',NULL,'0'), - (15,'civicrm_contact',81,'Arrange for cricket match with Sunil Gavaskar',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-07-04 07:00:20',NULL,'0'), - (16,'civicrm_contact',52,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-01-01 04:09:42',NULL,'0'), - (17,'civicrm_contact',150,'Reminder screening of \"Black\" on next Friday',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-10-14 15:49:05',NULL,'0'), - (18,'civicrm_contact',70,'Contact the Commissioner of Charities',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-06-17 10:56:50',NULL,'0'), - (19,'civicrm_contact',90,'Send reminder for annual dinner',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-02-19 21:13:07',NULL,'0'), - (20,'civicrm_contact',40,'Arrange collection of funds from members',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-01-13 21:47:53',NULL,'0'); + (1,'civicrm_contact',114,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-01-16 11:08:46',NULL,'0'), + (2,'civicrm_contact',17,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-07-05 07:23:18',NULL,'0'), + (3,'civicrm_contact',20,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 14:07:31',NULL,'0'), + (4,'civicrm_contact',18,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 15:25:51',NULL,'0'), + (5,'civicrm_contact',41,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-07 11:05:21',NULL,'0'), + (6,'civicrm_contact',148,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-28 19:57:06',NULL,'0'), + (7,'civicrm_contact',53,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-10-24 13:07:48',NULL,'0'), + (8,'civicrm_contact',89,'Chart out route map for next 10k run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-09 07:36:28',NULL,'0'), + (9,'civicrm_contact',12,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-11-11 03:25:47',NULL,'0'), + (10,'civicrm_contact',107,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-08-16 01:33:00',NULL,'0'), + (11,'civicrm_contact',38,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-04 04:20:12',NULL,'0'), + (12,'civicrm_contact',165,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-22 04:04:51',NULL,'0'), + (13,'civicrm_contact',189,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 21:42:27',NULL,'0'), + (14,'civicrm_contact',70,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-03-13 02:59:38',NULL,'0'), + (15,'civicrm_contact',83,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 02:27:16',NULL,'0'), + (16,'civicrm_contact',119,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-04 21:03:38',NULL,'0'), + (17,'civicrm_contact',157,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-10 22:02:49',NULL,'0'), + (18,'civicrm_contact',124,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-14 01:33:44',NULL,'0'), + (19,'civicrm_contact',196,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-09-08 05:58:30',NULL,'0'), + (20,'civicrm_contact',49,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-26 14:48:43',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -6678,56 +6677,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant` WRITE; /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */; INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES - (1,188,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (2,85,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (3,37,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (4,101,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (5,111,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (6,32,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (7,53,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (8,160,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (9,134,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (10,118,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (11,29,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (12,172,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (13,13,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (14,152,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (15,54,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (16,79,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (17,102,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (18,1,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (19,100,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (20,64,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (21,61,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (22,121,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (23,81,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (24,126,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (25,150,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (26,141,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (27,168,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (28,63,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (29,165,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (30,93,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (31,50,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (32,69,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (33,89,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (34,122,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (35,10,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (36,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (37,112,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (38,7,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (39,114,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (40,181,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (41,200,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (42,95,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (43,169,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (44,147,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (45,14,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (46,190,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (47,27,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (48,175,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (49,78,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (50,17,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL); + (1,10,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (2,92,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (3,160,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (4,77,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (5,36,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (6,40,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (7,94,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (8,41,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (9,23,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (10,13,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (11,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (12,192,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (13,135,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (14,30,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (15,16,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (16,132,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (17,179,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (18,189,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (19,123,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (20,144,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (21,80,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (22,178,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (23,45,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (24,196,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (25,182,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (26,8,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (27,101,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (28,158,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (29,19,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (30,73,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (31,76,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (32,197,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (33,97,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (34,6,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (35,159,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (36,17,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (37,127,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (38,154,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (39,84,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (40,117,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (41,14,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (42,156,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (43,163,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (44,184,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (45,96,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (46,57,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (47,175,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (48,172,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (49,69,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (50,88,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -6738,56 +6737,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES - (1,18,63), - (2,38,64), - (3,35,65), - (4,13,66), - (5,45,67), - (6,50,68), - (7,47,69), - (8,11,70), - (9,6,71), - (10,3,72), - (11,31,73), - (12,7,74), - (13,15,75), - (14,21,76), - (15,28,77), - (16,20,78), - (17,32,79), - (18,49,80), - (19,16,81), - (20,23,82), - (21,2,83), - (22,33,84), - (23,30,85), - (24,42,86), - (25,19,87), - (26,4,88), - (27,17,89), - (28,5,90), - (29,37,91), - (30,39,92), - (31,10,93), - (32,22,94), - (33,34,95), - (34,24,96), - (35,9,97), - (36,26,98), - (37,44,99), - (38,25,100), - (39,14,101), - (40,8,102), - (41,29,103), - (42,27,104), - (43,43,105), - (44,12,106), - (45,48,107), - (46,40,108), - (47,1,109), - (48,46,110), - (49,36,111), - (50,41,112); + (1,34,63), + (2,26,64), + (3,1,65), + (4,10,66), + (5,41,67), + (6,15,68), + (7,36,69), + (8,29,70), + (9,9,71), + (10,14,72), + (11,5,73), + (12,6,74), + (13,8,75), + (14,23,76), + (15,46,77), + (16,49,78), + (17,30,79), + (18,31,80), + (19,4,81), + (20,21,82), + (21,39,83), + (22,50,84), + (23,2,85), + (24,7,86), + (25,45,87), + (26,33,88), + (27,27,89), + (28,40,90), + (29,19,91), + (30,37,92), + (31,16,93), + (32,13,94), + (33,20,95), + (34,38,96), + (35,42,97), + (36,28,98), + (37,35,99), + (38,3,100), + (39,43,101), + (40,48,102), + (41,47,103), + (42,22,104), + (43,17,105), + (44,25,106), + (45,44,107), + (46,18,108), + (47,12,109), + (48,11,110), + (49,24,111), + (50,32,112); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -6860,7 +6859,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_pcp` WRITE; /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */; INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES - (1,113,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); + (1,142,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */; UNLOCK TABLES; @@ -6882,181 +6881,183 @@ UNLOCK TABLES; LOCK TABLES `civicrm_phone` WRITE; /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */; INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES - (1,26,1,1,0,NULL,'626-4452',NULL,'6264452',1), - (2,201,1,1,0,NULL,'(601) 877-3596',NULL,'6018773596',1), - (3,201,1,0,0,NULL,'516-4306',NULL,'5164306',2), - (4,153,1,1,0,NULL,'(358) 601-7395',NULL,'3586017395',1), - (5,153,1,0,0,NULL,'308-1097',NULL,'3081097',1), - (6,81,1,1,0,NULL,'645-2038',NULL,'6452038',2), - (7,61,1,1,0,NULL,'(249) 569-3805',NULL,'2495693805',2), - (8,5,1,1,0,NULL,'(339) 424-4730',NULL,'3394244730',2), - (9,78,1,1,0,NULL,'(852) 800-1134',NULL,'8528001134',2), - (10,182,1,1,0,NULL,'(308) 606-9887',NULL,'3086069887',2), - (11,182,1,0,0,NULL,'406-2390',NULL,'4062390',1), - (12,109,1,1,0,NULL,'(721) 755-7020',NULL,'7217557020',2), - (13,125,1,1,0,NULL,'(777) 747-4203',NULL,'7777474203',2), - (14,33,1,1,0,NULL,'(522) 513-5343',NULL,'5225135343',1), - (15,33,1,0,0,NULL,'246-4005',NULL,'2464005',2), - (16,72,1,1,0,NULL,'302-9143',NULL,'3029143',1), - (17,72,1,0,0,NULL,'248-8006',NULL,'2488006',2), - (18,129,1,1,0,NULL,'440-9856',NULL,'4409856',2), - (19,129,1,0,0,NULL,'(882) 427-5654',NULL,'8824275654',1), - (20,185,1,1,0,NULL,'(651) 851-4106',NULL,'6518514106',1), - (21,185,1,0,0,NULL,'(668) 892-3651',NULL,'6688923651',1), - (22,44,1,1,0,NULL,'482-8124',NULL,'4828124',2), - (23,44,1,0,0,NULL,'270-9054',NULL,'2709054',2), - (24,169,1,1,0,NULL,'(599) 556-8363',NULL,'5995568363',1), - (25,169,1,0,0,NULL,'203-1147',NULL,'2031147',1), - (26,96,1,1,0,NULL,'(812) 562-6926',NULL,'8125626926',1), - (27,96,1,0,0,NULL,'766-4045',NULL,'7664045',1), - (28,114,1,1,0,NULL,'(327) 206-1159',NULL,'3272061159',1), - (29,160,1,1,0,NULL,'803-3643',NULL,'8033643',1), - (30,160,1,0,0,NULL,'(402) 532-8458',NULL,'4025328458',1), - (31,95,1,1,0,NULL,'(615) 382-3038',NULL,'6153823038',2), - (32,95,1,0,0,NULL,'361-7641',NULL,'3617641',1), - (33,106,1,1,0,NULL,'526-4509',NULL,'5264509',1), - (34,106,1,0,0,NULL,'523-8678',NULL,'5238678',2), - (35,100,1,1,0,NULL,'(783) 848-5368',NULL,'7838485368',2), - (36,100,1,0,0,NULL,'827-7185',NULL,'8277185',1), - (37,155,1,1,0,NULL,'666-4681',NULL,'6664681',2), - (38,155,1,0,0,NULL,'267-3399',NULL,'2673399',2), - (39,197,1,1,0,NULL,'706-3696',NULL,'7063696',2), - (40,142,1,1,0,NULL,'(815) 428-7800',NULL,'8154287800',1), - (41,97,1,1,0,NULL,'(611) 631-6002',NULL,'6116316002',1), - (42,97,1,0,0,NULL,'(735) 209-4377',NULL,'7352094377',2), - (43,105,1,1,0,NULL,'271-4577',NULL,'2714577',1), - (44,43,1,1,0,NULL,'(822) 378-7074',NULL,'8223787074',1), - (45,70,1,1,0,NULL,'575-9967',NULL,'5759967',2), - (46,70,1,0,0,NULL,'(474) 708-2621',NULL,'4747082621',1), - (47,16,1,1,0,NULL,'660-6224',NULL,'6606224',2), - (48,47,1,1,0,NULL,'(818) 576-3760',NULL,'8185763760',2), - (49,47,1,0,0,NULL,'(379) 438-1039',NULL,'3794381039',2), - (50,199,1,1,0,NULL,'567-8499',NULL,'5678499',1), - (51,199,1,0,0,NULL,'(393) 220-2518',NULL,'3932202518',1), - (52,165,1,1,0,NULL,'(476) 227-4887',NULL,'4762274887',1), - (53,165,1,0,0,NULL,'(343) 783-2679',NULL,'3437832679',2), - (54,188,1,1,0,NULL,'(346) 565-8167',NULL,'3465658167',2), - (55,54,1,1,0,NULL,'667-8248',NULL,'6678248',1), - (56,164,1,1,0,NULL,'(650) 339-7133',NULL,'6503397133',1), - (57,164,1,0,0,NULL,'323-7421',NULL,'3237421',2), - (58,170,1,1,0,NULL,'791-9346',NULL,'7919346',1), - (59,138,1,1,0,NULL,'(303) 823-1661',NULL,'3038231661',2), - (60,156,1,1,0,NULL,'(614) 548-1388',NULL,'6145481388',2), - (61,156,1,0,0,NULL,'(578) 580-9693',NULL,'5785809693',1), - (62,177,1,1,0,NULL,'(830) 835-8328',NULL,'8308358328',1), - (63,177,1,0,0,NULL,'272-7601',NULL,'2727601',2), - (64,7,1,1,0,NULL,'495-7276',NULL,'4957276',1), - (65,7,1,0,0,NULL,'554-6513',NULL,'5546513',1), - (66,143,1,1,0,NULL,'313-2230',NULL,'3132230',1), - (67,143,1,0,0,NULL,'443-8070',NULL,'4438070',2), - (68,122,1,1,0,NULL,'872-1807',NULL,'8721807',2), - (69,122,1,0,0,NULL,'201-4413',NULL,'2014413',2), - (70,196,1,1,0,NULL,'548-1138',NULL,'5481138',1), - (71,196,1,0,0,NULL,'(593) 258-8785',NULL,'5932588785',1), - (72,198,1,1,0,NULL,'(546) 798-8341',NULL,'5467988341',1), - (73,198,1,0,0,NULL,'(556) 293-5499',NULL,'5562935499',2), - (74,181,1,1,0,NULL,'(269) 523-5210',NULL,'2695235210',1), - (75,181,1,0,0,NULL,'760-3813',NULL,'7603813',1), - (76,167,1,1,0,NULL,'(555) 291-1194',NULL,'5552911194',1), - (77,167,1,0,0,NULL,'609-9136',NULL,'6099136',1), - (78,12,1,1,0,NULL,'(421) 498-6332',NULL,'4214986332',2), - (79,12,1,0,0,NULL,'341-9113',NULL,'3419113',2), - (80,195,1,1,0,NULL,'(383) 636-3232',NULL,'3836363232',1), - (81,36,1,1,0,NULL,'(279) 241-7027',NULL,'2792417027',1), - (82,36,1,0,0,NULL,'443-1835',NULL,'4431835',2), - (83,32,1,1,0,NULL,'256-5859',NULL,'2565859',1), - (84,37,1,1,0,NULL,'594-8325',NULL,'5948325',2), - (85,37,1,0,0,NULL,'400-3124',NULL,'4003124',2), - (86,123,1,1,0,NULL,'690-3904',NULL,'6903904',2), - (87,123,1,0,0,NULL,'744-4576',NULL,'7444576',2), - (88,163,1,1,0,NULL,'310-5682',NULL,'3105682',2), - (89,163,1,0,0,NULL,'795-3038',NULL,'7953038',2), - (90,46,1,1,0,NULL,'428-6045',NULL,'4286045',2), - (91,66,1,1,0,NULL,'(301) 737-9585',NULL,'3017379585',2), - (92,149,1,1,0,NULL,'(784) 358-2801',NULL,'7843582801',1), - (93,149,1,0,0,NULL,'(452) 586-4393',NULL,'4525864393',1), - (94,18,1,1,0,NULL,'(500) 830-8578',NULL,'5008308578',1), - (95,18,1,0,0,NULL,'824-4374',NULL,'8244374',2), - (96,184,1,1,0,NULL,'(492) 602-6601',NULL,'4926026601',2), - (97,10,1,1,0,NULL,'748-1140',NULL,'7481140',1), - (98,63,1,1,0,NULL,'(525) 886-6876',NULL,'5258866876',2), - (99,63,1,0,0,NULL,'795-1814',NULL,'7951814',1), - (100,57,1,1,0,NULL,'280-4050',NULL,'2804050',1), - (101,175,1,1,0,NULL,'(225) 327-4446',NULL,'2253274446',1), - (102,175,1,0,0,NULL,'(836) 875-2003',NULL,'8368752003',1), - (103,93,1,1,0,NULL,'286-3814',NULL,'2863814',2), - (104,29,1,1,0,NULL,'791-6883',NULL,'7916883',2), - (105,29,1,0,0,NULL,'847-2190',NULL,'8472190',2), - (106,101,1,1,0,NULL,'487-6713',NULL,'4876713',2), - (107,40,1,1,0,NULL,'755-2296',NULL,'7552296',2), - (108,40,1,0,0,NULL,'245-5267',NULL,'2455267',1), - (109,136,1,1,0,NULL,'515-8076',NULL,'5158076',2), - (110,85,1,1,0,NULL,'269-5707',NULL,'2695707',2), - (111,162,1,1,0,NULL,'(732) 342-4533',NULL,'7323424533',1), - (112,103,1,1,0,NULL,'659-6791',NULL,'6596791',2), - (113,103,1,0,0,NULL,'(337) 260-7949',NULL,'3372607949',1), - (114,58,1,1,0,NULL,'(689) 711-1407',NULL,'6897111407',2), - (115,84,1,1,0,NULL,'(720) 688-3131',NULL,'7206883131',2), - (116,84,1,0,0,NULL,'804-6332',NULL,'8046332',1), - (117,60,1,1,0,NULL,'202-5712',NULL,'2025712',1), - (118,60,1,0,0,NULL,'(397) 533-8934',NULL,'3975338934',1), - (119,65,1,1,0,NULL,'(320) 201-3967',NULL,'3202013967',1), - (120,99,1,1,0,NULL,'704-3868',NULL,'7043868',2), - (121,99,1,0,0,NULL,'(858) 886-3121',NULL,'8588863121',2), - (122,82,1,1,0,NULL,'(480) 443-8208',NULL,'4804438208',2), - (123,186,1,1,0,NULL,'259-1752',NULL,'2591752',1), - (124,186,1,0,0,NULL,'(871) 414-6154',NULL,'8714146154',2), - (125,80,1,1,0,NULL,'(799) 712-3640',NULL,'7997123640',2), - (126,48,1,1,0,NULL,'(388) 583-9146',NULL,'3885839146',2), - (127,141,1,1,0,NULL,'832-7394',NULL,'8327394',2), - (128,141,1,0,0,NULL,'607-1851',NULL,'6071851',2), - (129,128,1,1,0,NULL,'(716) 406-7646',NULL,'7164067646',2), - (130,8,1,1,0,NULL,'(502) 493-4962',NULL,'5024934962',1), - (131,8,1,0,0,NULL,'(411) 824-5904',NULL,'4118245904',1), - (132,144,1,1,0,NULL,'(482) 437-3978',NULL,'4824373978',2), - (133,144,1,0,0,NULL,'631-8441',NULL,'6318441',1), - (134,4,1,1,0,NULL,'205-1528',NULL,'2051528',1), - (135,178,1,1,0,NULL,'(596) 650-9099',NULL,'5966509099',1), - (136,178,1,0,0,NULL,'560-4777',NULL,'5604777',2), - (137,127,1,1,0,NULL,'(238) 449-1118',NULL,'2384491118',1), - (138,127,1,0,0,NULL,'292-5458',NULL,'2925458',1), - (139,67,1,1,0,NULL,'366-9985',NULL,'3669985',1), - (140,67,1,0,0,NULL,'(778) 800-1139',NULL,'7788001139',2), - (141,56,1,1,0,NULL,'362-2510',NULL,'3622510',1), - (142,56,1,0,0,NULL,'474-4970',NULL,'4744970',2), - (143,34,1,1,0,NULL,'(545) 780-9250',NULL,'5457809250',2), - (144,34,1,0,0,NULL,'(798) 772-6598',NULL,'7987726598',1), - (145,193,1,1,0,NULL,'(696) 639-7693',NULL,'6966397693',1), - (146,77,1,1,0,NULL,'(709) 304-5994',NULL,'7093045994',1), - (147,77,1,0,0,NULL,'397-4425',NULL,'3974425',2), - (148,39,1,1,0,NULL,'(398) 727-2939',NULL,'3987272939',2), - (149,79,1,1,0,NULL,'657-8933',NULL,'6578933',1), - (150,172,1,1,0,NULL,'(337) 793-6277',NULL,'3377936277',1), - (151,172,1,0,0,NULL,'(747) 298-3682',NULL,'7472983682',1), - (152,173,1,1,0,NULL,'(206) 468-8799',NULL,'2064688799',1), - (153,27,1,1,0,NULL,'(704) 709-2944',NULL,'7047092944',2), - (154,27,1,0,0,NULL,'579-9306',NULL,'5799306',2), - (155,108,1,1,0,NULL,'478-3752',NULL,'4783752',1), - (156,75,1,1,0,NULL,'(465) 877-2813',NULL,'4658772813',2), - (157,42,1,1,0,NULL,'216-9882',NULL,'2169882',2), - (158,42,1,0,0,NULL,'290-9531',NULL,'2909531',1), - (159,38,1,1,0,NULL,'632-2241',NULL,'6322241',1), - (160,151,1,1,0,NULL,'564-5887',NULL,'5645887',2), - (161,151,1,0,0,NULL,'784-3769',NULL,'7843769',2), - (162,145,1,1,0,NULL,'(457) 598-5893',NULL,'4575985893',2), - (163,191,1,1,0,NULL,'279-5915',NULL,'2795915',2), - (164,13,1,1,0,NULL,'(514) 748-4814',NULL,'5147484814',1), - (165,13,1,0,0,NULL,'(632) 471-6768',NULL,'6324716768',1), - (166,41,1,1,0,NULL,'(521) 447-9220',NULL,'5214479220',1), - (167,41,1,0,0,NULL,'276-7516',NULL,'2767516',2), - (168,71,1,1,0,NULL,'640-5187',NULL,'6405187',1), - (169,25,1,1,0,NULL,'852-7798',NULL,'8527798',1), - (170,25,1,0,0,NULL,'277-7950',NULL,'2777950',1), - (171,92,1,1,0,NULL,'(475) 443-2769',NULL,'4754432769',1), - (172,92,1,0,0,NULL,'645-2329',NULL,'6452329',2), - (173,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), - (174,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), - (175,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); + (1,31,1,1,0,NULL,'701-8326',NULL,'7018326',1), + (2,25,1,1,0,NULL,'(561) 723-5834',NULL,'5617235834',2), + (3,25,1,0,0,NULL,'(214) 874-3538',NULL,'2148743538',1), + (4,35,1,1,0,NULL,'(371) 870-9746',NULL,'3718709746',2), + (5,142,1,1,0,NULL,'(383) 878-6066',NULL,'3838786066',1), + (6,142,1,0,0,NULL,'612-7608',NULL,'6127608',1), + (7,5,1,1,0,NULL,'836-9875',NULL,'8369875',1), + (8,5,1,0,0,NULL,'(476) 579-4329',NULL,'4765794329',2), + (9,54,1,1,0,NULL,'(781) 303-5891',NULL,'7813035891',2), + (10,82,1,1,0,NULL,'(380) 311-8610',NULL,'3803118610',2), + (11,82,1,0,0,NULL,'(881) 823-9927',NULL,'8818239927',2), + (12,9,1,1,0,NULL,'823-8440',NULL,'8238440',2), + (13,9,1,0,0,NULL,'(751) 878-9340',NULL,'7518789340',2), + (14,143,1,1,0,NULL,'609-4732',NULL,'6094732',2), + (15,143,1,0,0,NULL,'(851) 855-2107',NULL,'8518552107',2), + (16,78,1,1,0,NULL,'259-3009',NULL,'2593009',2), + (17,78,1,0,0,NULL,'(489) 221-8298',NULL,'4892218298',2), + (18,173,1,1,0,NULL,'298-2873',NULL,'2982873',2), + (19,173,1,0,0,NULL,'507-5321',NULL,'5075321',2), + (20,186,1,1,0,NULL,'(692) 738-5997',NULL,'6927385997',2), + (21,127,1,1,0,NULL,'(596) 782-2345',NULL,'5967822345',2), + (22,127,1,0,0,NULL,'(793) 307-2359',NULL,'7933072359',2), + (23,101,1,1,0,NULL,'(580) 815-9336',NULL,'5808159336',2), + (24,101,1,0,0,NULL,'(425) 772-7439',NULL,'4257727439',2), + (25,30,1,1,0,NULL,'406-5173',NULL,'4065173',1), + (26,30,1,0,0,NULL,'(377) 427-8722',NULL,'3774278722',1), + (27,89,1,1,0,NULL,'889-6983',NULL,'8896983',1), + (28,89,1,0,0,NULL,'751-6212',NULL,'7516212',2), + (29,194,1,1,0,NULL,'(842) 838-3758',NULL,'8428383758',2), + (30,194,1,0,0,NULL,'(369) 362-6537',NULL,'3693626537',2), + (31,136,1,1,0,NULL,'(685) 284-2451',NULL,'6852842451',1), + (32,136,1,0,0,NULL,'830-5972',NULL,'8305972',2), + (33,129,1,1,0,NULL,'(278) 577-6073',NULL,'2785776073',1), + (34,157,1,1,0,NULL,'452-1042',NULL,'4521042',1), + (35,172,1,1,0,NULL,'430-7484',NULL,'4307484',1), + (36,197,1,1,0,NULL,'578-3660',NULL,'5783660',2), + (37,197,1,0,0,NULL,'(746) 349-8797',NULL,'7463498797',1), + (38,185,1,1,0,NULL,'(468) 598-9717',NULL,'4685989717',2), + (39,185,1,0,0,NULL,'(239) 246-8389',NULL,'2392468389',2), + (40,132,1,1,0,NULL,'752-6132',NULL,'7526132',1), + (41,132,1,0,0,NULL,'(421) 637-1571',NULL,'4216371571',2), + (42,94,1,1,0,NULL,'425-1925',NULL,'4251925',1), + (43,11,1,1,0,NULL,'439-4637',NULL,'4394637',1), + (44,11,1,0,0,NULL,'411-7439',NULL,'4117439',2), + (45,178,1,1,0,NULL,'(772) 371-1531',NULL,'7723711531',1), + (46,144,1,1,0,NULL,'481-6839',NULL,'4816839',1), + (47,201,1,1,0,NULL,'(565) 235-7766',NULL,'5652357766',2), + (48,201,1,0,0,NULL,'(593) 665-8270',NULL,'5936658270',2), + (49,8,1,1,0,NULL,'859-2182',NULL,'8592182',2), + (50,33,1,1,0,NULL,'800-2321',NULL,'8002321',1), + (51,153,1,1,0,NULL,'(784) 658-5457',NULL,'7846585457',1), + (52,153,1,0,0,NULL,'627-6722',NULL,'6276722',2), + (53,120,1,1,0,NULL,'292-2860',NULL,'2922860',1), + (54,120,1,0,0,NULL,'468-1106',NULL,'4681106',2), + (55,169,1,1,0,NULL,'363-1993',NULL,'3631993',1), + (56,130,1,1,0,NULL,'542-5373',NULL,'5425373',1), + (57,28,1,1,0,NULL,'862-4570',NULL,'8624570',2), + (58,17,1,1,0,NULL,'(245) 434-1599',NULL,'2454341599',1), + (59,38,1,1,0,NULL,'(613) 348-5759',NULL,'6133485759',2), + (60,38,1,0,0,NULL,'(712) 372-4759',NULL,'7123724759',2), + (61,174,1,1,0,NULL,'(434) 223-4524',NULL,'4342234524',1), + (62,174,1,0,0,NULL,'247-9687',NULL,'2479687',2), + (63,113,1,1,0,NULL,'857-6594',NULL,'8576594',1), + (64,71,1,1,0,NULL,'414-8952',NULL,'4148952',1), + (65,71,1,0,0,NULL,'764-9546',NULL,'7649546',2), + (66,56,1,1,0,NULL,'(296) 887-3997',NULL,'2968873997',1), + (67,171,1,1,0,NULL,'(271) 495-5559',NULL,'2714955559',1), + (68,171,1,0,0,NULL,'(733) 578-6411',NULL,'7335786411',2), + (69,29,1,1,0,NULL,'494-3776',NULL,'4943776',2), + (70,29,1,0,0,NULL,'413-1135',NULL,'4131135',1), + (71,138,1,1,0,NULL,'278-9104',NULL,'2789104',1), + (72,145,1,1,0,NULL,'334-7938',NULL,'3347938',2), + (73,107,1,1,0,NULL,'(722) 383-3115',NULL,'7223833115',1), + (74,107,1,0,0,NULL,'(535) 772-4758',NULL,'5357724758',1), + (75,105,1,1,0,NULL,'(498) 296-3018',NULL,'4982963018',1), + (76,167,1,1,0,NULL,'224-2691',NULL,'2242691',2), + (77,167,1,0,0,NULL,'(865) 340-9624',NULL,'8653409624',1), + (78,37,1,1,0,NULL,'846-3229',NULL,'8463229',2), + (79,37,1,0,0,NULL,'704-8850',NULL,'7048850',2), + (80,27,1,1,0,NULL,'(811) 430-2028',NULL,'8114302028',2), + (81,40,1,1,0,NULL,'(515) 357-5489',NULL,'5153575489',1), + (82,40,1,0,0,NULL,'692-6797',NULL,'6926797',2), + (83,184,1,1,0,NULL,'(556) 507-5924',NULL,'5565075924',1), + (84,184,1,0,0,NULL,'738-7531',NULL,'7387531',2), + (85,102,1,1,0,NULL,'(885) 386-6877',NULL,'8853866877',1), + (86,102,1,0,0,NULL,'(807) 355-3320',NULL,'8073553320',1), + (87,108,1,1,0,NULL,'479-5380',NULL,'4795380',2), + (88,188,1,1,0,NULL,'(496) 577-5005',NULL,'4965775005',2), + (89,188,1,0,0,NULL,'310-9165',NULL,'3109165',1), + (90,119,1,1,0,NULL,'(476) 320-7474',NULL,'4763207474',1), + (91,119,1,0,0,NULL,'(329) 447-8458',NULL,'3294478458',1), + (92,141,1,1,0,NULL,'880-8053',NULL,'8808053',1), + (93,141,1,0,0,NULL,'(859) 278-9294',NULL,'8592789294',1), + (94,176,1,1,0,NULL,'(560) 309-3969',NULL,'5603093969',2), + (95,151,1,1,0,NULL,'(619) 444-1535',NULL,'6194441535',2), + (96,151,1,0,0,NULL,'(482) 747-9033',NULL,'4827479033',1), + (97,20,1,1,0,NULL,'362-2214',NULL,'3622214',2), + (98,20,1,0,0,NULL,'438-4004',NULL,'4384004',1), + (99,49,1,1,0,NULL,'798-8766',NULL,'7988766',2), + (100,49,1,0,0,NULL,'775-7678',NULL,'7757678',1), + (101,200,1,1,0,NULL,'503-9866',NULL,'5039866',1), + (102,200,1,0,0,NULL,'(289) 816-8906',NULL,'2898168906',2), + (103,125,1,1,0,NULL,'387-7137',NULL,'3877137',2), + (104,55,1,1,0,NULL,'(391) 528-2746',NULL,'3915282746',2), + (105,164,1,1,0,NULL,'353-1272',NULL,'3531272',2), + (106,164,1,0,0,NULL,'470-5909',NULL,'4705909',2), + (107,193,1,1,0,NULL,'714-8765',NULL,'7148765',1), + (108,193,1,0,0,NULL,'(285) 824-3376',NULL,'2858243376',1), + (109,44,1,1,0,NULL,'(344) 649-2733',NULL,'3446492733',1), + (110,44,1,0,0,NULL,'(366) 835-9590',NULL,'3668359590',1), + (111,60,1,1,0,NULL,'363-2460',NULL,'3632460',2), + (112,60,1,0,0,NULL,'216-8190',NULL,'2168190',2), + (113,84,1,1,0,NULL,'472-6165',NULL,'4726165',1), + (114,84,1,0,0,NULL,'428-9663',NULL,'4289663',2), + (115,109,1,1,0,NULL,'510-6627',NULL,'5106627',2), + (116,109,1,0,0,NULL,'243-7513',NULL,'2437513',1), + (117,76,1,1,0,NULL,'(459) 671-5070',NULL,'4596715070',2), + (118,76,1,0,0,NULL,'(765) 787-7486',NULL,'7657877486',2), + (119,149,1,1,0,NULL,'331-1328',NULL,'3311328',2), + (120,74,1,1,0,NULL,'(374) 251-1719',NULL,'3742511719',1), + (121,140,1,1,0,NULL,'651-1898',NULL,'6511898',2), + (122,163,1,1,0,NULL,'(626) 322-3211',NULL,'6263223211',2), + (123,66,1,1,0,NULL,'(724) 450-1369',NULL,'7244501369',2), + (124,21,1,1,0,NULL,'(536) 578-2919',NULL,'5365782919',1), + (125,21,1,0,0,NULL,'(584) 872-8621',NULL,'5848728621',2), + (126,14,1,1,0,NULL,'(568) 369-5716',NULL,'5683695716',2), + (127,14,1,0,0,NULL,'(330) 403-9152',NULL,'3304039152',1), + (128,170,1,1,0,NULL,'647-9420',NULL,'6479420',2), + (129,170,1,0,0,NULL,'458-3219',NULL,'4583219',2), + (130,124,1,1,0,NULL,'(632) 454-8571',NULL,'6324548571',1), + (131,124,1,0,0,NULL,'(828) 768-4009',NULL,'8287684009',2), + (132,199,1,1,0,NULL,'708-5459',NULL,'7085459',1), + (133,112,1,1,0,NULL,'(577) 229-6716',NULL,'5772296716',1), + (134,104,1,1,0,NULL,'(785) 655-3220',NULL,'7856553220',2), + (135,110,1,1,0,NULL,'545-3656',NULL,'5453656',2), + (136,110,1,0,0,NULL,'460-7083',NULL,'4607083',2), + (137,100,1,1,0,NULL,'747-4183',NULL,'7474183',1), + (138,100,1,0,0,NULL,'(767) 535-3474',NULL,'7675353474',1), + (139,160,1,1,0,NULL,'273-8785',NULL,'2738785',1), + (140,57,1,1,0,NULL,'(807) 566-1513',NULL,'8075661513',2), + (141,6,1,1,0,NULL,'521-4662',NULL,'5214662',1), + (142,6,1,0,0,NULL,'(797) 575-5372',NULL,'7975755372',1), + (143,62,1,1,0,NULL,'851-5822',NULL,'8515822',1), + (144,62,1,0,0,NULL,'371-2426',NULL,'3712426',2), + (145,137,1,1,0,NULL,'855-6543',NULL,'8556543',1), + (146,137,1,0,0,NULL,'757-5565',NULL,'7575565',2), + (147,99,1,1,0,NULL,'(824) 300-5139',NULL,'8243005139',1), + (148,116,1,1,0,NULL,'(218) 349-9660',NULL,'2183499660',2), + (149,180,1,1,0,NULL,'683-4985',NULL,'6834985',1), + (150,180,1,0,0,NULL,'540-9753',NULL,'5409753',1), + (151,114,1,1,0,NULL,'574-9685',NULL,'5749685',1), + (152,114,1,0,0,NULL,'877-1810',NULL,'8771810',2), + (153,32,1,1,0,NULL,'(327) 275-4451',NULL,'3272754451',2), + (154,18,1,1,0,NULL,'270-8573',NULL,'2708573',1), + (155,90,1,1,0,NULL,'(732) 233-1502',NULL,'7322331502',2), + (156,39,1,1,0,NULL,'(297) 642-7386',NULL,'2976427386',1), + (157,39,1,0,0,NULL,'392-3136',NULL,'3923136',2), + (158,41,1,1,0,NULL,'732-3802',NULL,'7323802',2), + (159,121,1,1,0,NULL,'518-7925',NULL,'5187925',1), + (160,121,1,0,0,NULL,'582-8517',NULL,'5828517',2), + (161,12,1,1,0,NULL,'891-1072',NULL,'8911072',2), + (162,12,1,0,0,NULL,'(298) 460-2344',NULL,'2984602344',2), + (163,61,1,1,0,NULL,'700-2528',NULL,'7002528',2), + (164,47,1,1,0,NULL,'660-6029',NULL,'6606029',1), + (165,181,1,1,0,NULL,'(739) 875-8399',NULL,'7398758399',2), + (166,181,1,0,0,NULL,'(217) 474-7210',NULL,'2174747210',1), + (167,85,1,1,0,NULL,'767-7183',NULL,'7677183',2), + (168,85,1,0,0,NULL,'(716) 432-5188',NULL,'7164325188',2), + (169,36,1,1,0,NULL,'(359) 373-1010',NULL,'3593731010',1), + (170,36,1,0,0,NULL,'348-2045',NULL,'3482045',2), + (171,118,1,1,0,NULL,'519-9913',NULL,'5199913',1), + (172,118,1,0,0,NULL,'(566) 410-4236',NULL,'5664104236',1), + (173,152,1,1,0,NULL,'(630) 518-4681',NULL,'6305184681',2), + (174,152,1,0,0,NULL,'(480) 533-9631',NULL,'4805339631',2), + (175,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), + (176,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), + (177,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -7291,223 +7292,224 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship` WRITE; /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */; INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`, `created_date`, `modified_date`) VALUES - (1,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (2,149,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (3,66,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (4,149,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (5,149,66,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (6,46,200,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (7,66,200,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (8,149,200,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (9,163,200,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (10,46,163,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (11,10,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (12,152,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (13,10,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (14,152,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (15,152,10,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (16,184,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (17,10,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (18,152,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (19,18,14,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (20,184,18,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (21,57,63,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (22,126,63,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (23,57,87,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (24,126,87,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (25,126,57,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (26,87,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (27,57,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (28,126,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (29,63,52,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (30,87,63,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (31,93,23,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (32,29,23,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (33,93,175,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (34,29,175,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (35,29,93,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (36,175,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (37,93,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (38,29,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (39,23,6,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (40,175,23,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (41,40,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (42,136,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (43,40,101,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (44,136,101,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (45,136,40,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (46,101,11,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (47,40,11,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (48,136,11,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (49,194,11,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (50,101,194,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (51,154,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (52,162,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (53,154,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (54,162,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (55,162,154,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (56,62,139,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (57,154,139,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (58,162,139,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (59,85,139,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (60,62,85,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (61,58,103,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (62,131,103,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (63,58,3,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (64,131,3,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (65,131,58,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (66,3,130,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (67,58,130,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (68,131,130,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (69,103,130,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (70,3,103,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (71,60,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (72,158,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (73,60,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (74,158,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (75,158,60,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (76,22,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (77,60,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (78,158,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (79,84,124,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (80,22,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (81,99,65,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (82,9,65,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (83,99,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (84,9,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (85,9,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (86,73,147,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (87,99,147,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (88,9,147,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (89,65,147,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (90,73,65,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (91,80,82,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (92,159,82,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (93,80,186,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (94,159,186,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (95,159,80,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (96,186,107,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (97,80,107,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (98,159,107,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (99,82,107,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (100,186,82,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (101,187,45,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (102,141,45,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (103,187,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (104,141,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (105,141,187,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (106,48,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (107,187,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (108,141,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (109,45,161,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (110,48,45,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (111,8,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (112,140,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (113,8,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (114,140,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (115,140,8,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (116,128,59,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (117,8,59,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (118,140,59,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (119,157,59,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (120,128,157,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (121,178,144,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (122,127,144,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (123,178,4,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (124,127,4,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (125,127,178,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (126,4,117,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (127,178,117,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (128,127,117,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (129,144,117,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (130,4,144,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (131,34,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (132,193,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (133,34,56,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (134,193,56,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (135,193,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (136,56,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (137,34,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (138,193,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (139,67,88,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (140,56,67,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (141,79,77,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (142,49,77,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (143,79,39,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (144,49,39,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (145,49,79,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (146,39,135,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (147,79,135,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (148,49,135,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (149,77,135,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (150,39,77,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (151,173,172,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (152,27,172,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (153,173,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (154,27,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (155,27,173,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (156,137,132,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (157,173,132,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (158,27,132,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (159,172,132,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (160,137,172,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (161,134,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (162,75,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (163,134,108,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (164,75,108,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (165,75,134,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (166,108,76,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (167,134,76,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (168,75,76,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (169,69,76,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (170,108,69,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (171,151,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (172,176,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (173,151,38,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (174,176,38,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (175,176,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (176,38,21,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (177,151,21,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (178,176,21,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (179,42,21,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (180,38,42,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (181,13,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (182,41,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (183,13,191,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (184,41,191,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (185,41,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (186,191,183,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (187,13,183,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (188,41,183,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (189,145,183,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (190,191,145,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (191,28,71,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (192,92,71,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (193,28,25,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (194,92,25,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (195,92,28,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (196,25,148,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (197,28,148,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (198,92,148,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (199,71,148,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (200,25,71,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (201,57,17,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (202,69,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (203,194,31,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (204,75,51,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (205,180,53,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (206,120,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (207,159,74,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (208,45,111,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (209,136,112,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (210,12,118,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (211,58,121,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (212,104,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (213,79,150,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (214,54,166,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (215,169,171,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (216,187,174,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (217,122,190,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'); + (1,24,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (2,189,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (3,24,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (4,189,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (5,189,24,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (6,16,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (7,24,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (8,189,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (9,86,58,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (10,16,86,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (11,151,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (12,20,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (13,151,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (14,20,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (15,20,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (16,176,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (17,151,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (18,20,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (19,141,190,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (20,176,141,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (21,125,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (22,55,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (23,125,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (24,55,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (25,55,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (26,200,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (27,125,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (28,55,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (29,49,155,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (30,200,49,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (31,34,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (32,164,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (33,34,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (34,164,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (35,164,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (36,179,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (37,34,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (38,164,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (39,150,26,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (40,179,150,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (41,44,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (42,60,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (43,44,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (44,60,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (45,60,44,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (46,193,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (47,44,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (48,60,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (49,183,53,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (50,193,183,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (51,76,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (52,126,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (53,76,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (54,126,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (55,126,76,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (56,109,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (57,76,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (58,126,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (59,84,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (60,109,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (61,147,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (62,74,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (63,147,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (64,74,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (65,74,147,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (66,149,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (67,147,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (68,74,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (69,46,131,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (70,149,46,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (71,162,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (72,66,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (73,162,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (74,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (75,66,162,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (76,163,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (77,162,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (78,66,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (79,140,10,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (80,163,140,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (81,170,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (82,45,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (83,170,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (84,45,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (85,45,170,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (86,14,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (87,170,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (88,45,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (89,21,177,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (90,14,21,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (91,112,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (92,79,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (93,112,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (94,79,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (95,79,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (96,199,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (97,112,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (98,79,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (99,124,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (100,199,124,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (101,104,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (102,92,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (103,104,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (104,92,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (105,92,104,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (106,91,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (107,104,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (108,92,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (109,48,191,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (110,91,48,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (111,160,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (112,57,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (113,160,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (114,57,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (115,57,160,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (116,100,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (117,160,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (118,57,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (119,110,134,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (120,100,110,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (121,13,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (122,62,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (123,13,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (124,62,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (125,62,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (126,6,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (127,13,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (128,62,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (129,198,73,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (130,6,198,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (131,99,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (132,116,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (133,99,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (134,116,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (135,116,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (136,137,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (137,99,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (138,116,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (139,15,88,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (140,137,15,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (141,114,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (142,32,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (143,114,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (144,32,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (145,32,114,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (146,182,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (147,114,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (148,32,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (149,180,23,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (150,182,180,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (151,39,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (152,41,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (153,39,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (154,41,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (155,41,39,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (156,90,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (157,39,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (158,41,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (159,18,51,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (160,90,18,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (161,196,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (162,195,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (163,196,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (164,195,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (165,195,196,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (166,121,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (167,196,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (168,195,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (169,2,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (170,121,2,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (171,61,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (172,63,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (173,61,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (174,63,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (175,63,61,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (176,12,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (177,61,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (178,63,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (179,154,75,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (180,12,154,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (181,175,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (182,85,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (183,175,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (184,85,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (185,85,175,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (186,181,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (187,175,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (188,85,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (189,47,65,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (190,181,47,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (191,111,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (192,152,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (193,111,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (194,152,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (195,152,111,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (196,118,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (197,111,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (198,152,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (199,36,159,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (200,118,36,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (201,15,7,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (202,129,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (203,33,22,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (204,74,50,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (205,109,52,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (206,185,59,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (207,184,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (208,76,67,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (209,85,68,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (210,4,69,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (211,81,77,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (212,187,103,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (213,18,122,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (214,72,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (215,115,135,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (216,197,139,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (217,178,146,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (218,96,148,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -7518,440 +7520,442 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship_cache` WRITE; /*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */; INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES - (1,1,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL), - (2,1,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL), - (3,2,1,'a_b',149,'Child of',163,'Parent of',1,NULL,NULL,NULL), - (4,2,1,'b_a',163,'Parent of',149,'Child of',1,NULL,NULL,NULL), - (5,3,1,'a_b',66,'Child of',46,'Parent of',1,NULL,NULL,NULL), - (6,3,1,'b_a',46,'Parent of',66,'Child of',1,NULL,NULL,NULL), - (7,4,1,'a_b',149,'Child of',46,'Parent of',1,NULL,NULL,NULL), - (8,4,1,'b_a',46,'Parent of',149,'Child of',1,NULL,NULL,NULL), - (9,5,4,'a_b',149,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL), - (10,5,4,'b_a',66,'Sibling of',149,'Sibling of',1,NULL,NULL,NULL), - (11,6,8,'a_b',46,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL), - (12,6,8,'b_a',200,'Household Member is',46,'Household Member of',1,NULL,NULL,NULL), - (13,7,8,'a_b',66,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL), - (14,7,8,'b_a',200,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL), - (15,8,8,'a_b',149,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL), - (16,8,8,'b_a',200,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL), - (17,9,7,'a_b',163,'Head of Household for',200,'Head of Household is',0,NULL,NULL,NULL), - (18,9,7,'b_a',200,'Head of Household is',163,'Head of Household for',0,NULL,NULL,NULL), - (19,10,2,'a_b',46,'Spouse of',163,'Spouse of',0,NULL,NULL,NULL), - (20,10,2,'b_a',163,'Spouse of',46,'Spouse of',0,NULL,NULL,NULL), - (21,11,1,'a_b',10,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (22,11,1,'b_a',18,'Parent of',10,'Child of',1,NULL,NULL,NULL), - (23,12,1,'a_b',152,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (24,12,1,'b_a',18,'Parent of',152,'Child of',1,NULL,NULL,NULL), - (25,13,1,'a_b',10,'Child of',184,'Parent of',1,NULL,NULL,NULL), - (26,13,1,'b_a',184,'Parent of',10,'Child of',1,NULL,NULL,NULL), - (27,14,1,'a_b',152,'Child of',184,'Parent of',1,NULL,NULL,NULL), - (28,14,1,'b_a',184,'Parent of',152,'Child of',1,NULL,NULL,NULL), - (29,15,4,'a_b',152,'Sibling of',10,'Sibling of',1,NULL,NULL,NULL), - (30,15,4,'b_a',10,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL), - (31,16,8,'a_b',184,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), - (32,16,8,'b_a',14,'Household Member is',184,'Household Member of',1,NULL,NULL,NULL), - (33,17,8,'a_b',10,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), - (34,17,8,'b_a',14,'Household Member is',10,'Household Member of',1,NULL,NULL,NULL), - (35,18,8,'a_b',152,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), - (36,18,8,'b_a',14,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL), - (37,19,7,'a_b',18,'Head of Household for',14,'Head of Household is',1,NULL,NULL,NULL), - (38,19,7,'b_a',14,'Head of Household is',18,'Head of Household for',1,NULL,NULL,NULL), - (39,20,2,'a_b',184,'Spouse of',18,'Spouse of',1,NULL,NULL,NULL), - (40,20,2,'b_a',18,'Spouse of',184,'Spouse of',1,NULL,NULL,NULL), - (41,21,1,'a_b',57,'Child of',63,'Parent of',1,NULL,NULL,NULL), - (42,21,1,'b_a',63,'Parent of',57,'Child of',1,NULL,NULL,NULL), - (43,22,1,'a_b',126,'Child of',63,'Parent of',1,NULL,NULL,NULL), - (44,22,1,'b_a',63,'Parent of',126,'Child of',1,NULL,NULL,NULL), - (45,23,1,'a_b',57,'Child of',87,'Parent of',1,NULL,NULL,NULL), - (46,23,1,'b_a',87,'Parent of',57,'Child of',1,NULL,NULL,NULL), - (47,24,1,'a_b',126,'Child of',87,'Parent of',1,NULL,NULL,NULL), - (48,24,1,'b_a',87,'Parent of',126,'Child of',1,NULL,NULL,NULL), - (49,25,4,'a_b',126,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL), - (50,25,4,'b_a',57,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), - (51,26,8,'a_b',87,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (52,26,8,'b_a',52,'Household Member is',87,'Household Member of',1,NULL,NULL,NULL), - (53,27,8,'a_b',57,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (54,27,8,'b_a',52,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), - (55,28,8,'a_b',126,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (56,28,8,'b_a',52,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), - (57,29,7,'a_b',63,'Head of Household for',52,'Head of Household is',1,NULL,NULL,NULL), - (58,29,7,'b_a',52,'Head of Household is',63,'Head of Household for',1,NULL,NULL,NULL), - (59,30,2,'a_b',87,'Spouse of',63,'Spouse of',1,NULL,NULL,NULL), - (60,30,2,'b_a',63,'Spouse of',87,'Spouse of',1,NULL,NULL,NULL), - (61,31,1,'a_b',93,'Child of',23,'Parent of',1,NULL,NULL,NULL), - (62,31,1,'b_a',23,'Parent of',93,'Child of',1,NULL,NULL,NULL), - (63,32,1,'a_b',29,'Child of',23,'Parent of',1,NULL,NULL,NULL), - (64,32,1,'b_a',23,'Parent of',29,'Child of',1,NULL,NULL,NULL), - (65,33,1,'a_b',93,'Child of',175,'Parent of',1,NULL,NULL,NULL), - (66,33,1,'b_a',175,'Parent of',93,'Child of',1,NULL,NULL,NULL), - (67,34,1,'a_b',29,'Child of',175,'Parent of',1,NULL,NULL,NULL), - (68,34,1,'b_a',175,'Parent of',29,'Child of',1,NULL,NULL,NULL), - (69,35,4,'a_b',29,'Sibling of',93,'Sibling of',1,NULL,NULL,NULL), - (70,35,4,'b_a',93,'Sibling of',29,'Sibling of',1,NULL,NULL,NULL), - (71,36,8,'a_b',175,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), - (72,36,8,'b_a',6,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL), - (73,37,8,'a_b',93,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), - (74,37,8,'b_a',6,'Household Member is',93,'Household Member of',1,NULL,NULL,NULL), - (75,38,8,'a_b',29,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), - (76,38,8,'b_a',6,'Household Member is',29,'Household Member of',1,NULL,NULL,NULL), - (77,39,7,'a_b',23,'Head of Household for',6,'Head of Household is',1,NULL,NULL,NULL), - (78,39,7,'b_a',6,'Head of Household is',23,'Head of Household for',1,NULL,NULL,NULL), - (79,40,2,'a_b',175,'Spouse of',23,'Spouse of',1,NULL,NULL,NULL), - (80,40,2,'b_a',23,'Spouse of',175,'Spouse of',1,NULL,NULL,NULL), - (81,41,1,'a_b',40,'Child of',194,'Parent of',1,NULL,NULL,NULL), - (82,41,1,'b_a',194,'Parent of',40,'Child of',1,NULL,NULL,NULL), - (83,42,1,'a_b',136,'Child of',194,'Parent of',1,NULL,NULL,NULL), - (84,42,1,'b_a',194,'Parent of',136,'Child of',1,NULL,NULL,NULL), - (85,43,1,'a_b',40,'Child of',101,'Parent of',1,NULL,NULL,NULL), - (86,43,1,'b_a',101,'Parent of',40,'Child of',1,NULL,NULL,NULL), - (87,44,1,'a_b',136,'Child of',101,'Parent of',1,NULL,NULL,NULL), - (88,44,1,'b_a',101,'Parent of',136,'Child of',1,NULL,NULL,NULL), - (89,45,4,'a_b',136,'Sibling of',40,'Sibling of',1,NULL,NULL,NULL), - (90,45,4,'b_a',40,'Sibling of',136,'Sibling of',1,NULL,NULL,NULL), - (91,46,8,'a_b',101,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL), - (92,46,8,'b_a',11,'Household Member is',101,'Household Member of',1,NULL,NULL,NULL), - (93,47,8,'a_b',40,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL), - (94,47,8,'b_a',11,'Household Member is',40,'Household Member of',1,NULL,NULL,NULL), - (95,48,8,'a_b',136,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL), - (96,48,8,'b_a',11,'Household Member is',136,'Household Member of',1,NULL,NULL,NULL), - (97,49,7,'a_b',194,'Head of Household for',11,'Head of Household is',1,NULL,NULL,NULL), - (98,49,7,'b_a',11,'Head of Household is',194,'Head of Household for',1,NULL,NULL,NULL), - (99,50,2,'a_b',101,'Spouse of',194,'Spouse of',1,NULL,NULL,NULL), - (100,50,2,'b_a',194,'Spouse of',101,'Spouse of',1,NULL,NULL,NULL), - (101,51,1,'a_b',154,'Child of',85,'Parent of',1,NULL,NULL,NULL), - (102,51,1,'b_a',85,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (103,52,1,'a_b',162,'Child of',85,'Parent of',1,NULL,NULL,NULL), - (104,52,1,'b_a',85,'Parent of',162,'Child of',1,NULL,NULL,NULL), - (105,53,1,'a_b',154,'Child of',62,'Parent of',1,NULL,NULL,NULL), - (106,53,1,'b_a',62,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (107,54,1,'a_b',162,'Child of',62,'Parent of',1,NULL,NULL,NULL), - (108,54,1,'b_a',62,'Parent of',162,'Child of',1,NULL,NULL,NULL), - (109,55,4,'a_b',162,'Sibling of',154,'Sibling of',1,NULL,NULL,NULL), - (110,55,4,'b_a',154,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL), - (111,56,8,'a_b',62,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL), - (112,56,8,'b_a',139,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), - (113,57,8,'a_b',154,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL), - (114,57,8,'b_a',139,'Household Member is',154,'Household Member of',1,NULL,NULL,NULL), - (115,58,8,'a_b',162,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL), - (116,58,8,'b_a',139,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL), - (117,59,7,'a_b',85,'Head of Household for',139,'Head of Household is',0,NULL,NULL,NULL), - (118,59,7,'b_a',139,'Head of Household is',85,'Head of Household for',0,NULL,NULL,NULL), - (119,60,2,'a_b',62,'Spouse of',85,'Spouse of',0,NULL,NULL,NULL), - (120,60,2,'b_a',85,'Spouse of',62,'Spouse of',0,NULL,NULL,NULL), - (121,61,1,'a_b',58,'Child of',103,'Parent of',1,NULL,NULL,NULL), - (122,61,1,'b_a',103,'Parent of',58,'Child of',1,NULL,NULL,NULL), - (123,62,1,'a_b',131,'Child of',103,'Parent of',1,NULL,NULL,NULL), - (124,62,1,'b_a',103,'Parent of',131,'Child of',1,NULL,NULL,NULL), - (125,63,1,'a_b',58,'Child of',3,'Parent of',1,NULL,NULL,NULL), - (126,63,1,'b_a',3,'Parent of',58,'Child of',1,NULL,NULL,NULL), - (127,64,1,'a_b',131,'Child of',3,'Parent of',1,NULL,NULL,NULL), - (128,64,1,'b_a',3,'Parent of',131,'Child of',1,NULL,NULL,NULL), - (129,65,4,'a_b',131,'Sibling of',58,'Sibling of',1,NULL,NULL,NULL), - (130,65,4,'b_a',58,'Sibling of',131,'Sibling of',1,NULL,NULL,NULL), - (131,66,8,'a_b',3,'Household Member of',130,'Household Member is',1,NULL,NULL,NULL), - (132,66,8,'b_a',130,'Household Member is',3,'Household Member of',1,NULL,NULL,NULL), - (133,67,8,'a_b',58,'Household Member of',130,'Household Member is',1,NULL,NULL,NULL), - (134,67,8,'b_a',130,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL), - (135,68,8,'a_b',131,'Household Member of',130,'Household Member is',1,NULL,NULL,NULL), - (136,68,8,'b_a',130,'Household Member is',131,'Household Member of',1,NULL,NULL,NULL), - (137,69,7,'a_b',103,'Head of Household for',130,'Head of Household is',1,NULL,NULL,NULL), - (138,69,7,'b_a',130,'Head of Household is',103,'Head of Household for',1,NULL,NULL,NULL), - (139,70,2,'a_b',3,'Spouse of',103,'Spouse of',1,NULL,NULL,NULL), - (140,70,2,'b_a',103,'Spouse of',3,'Spouse of',1,NULL,NULL,NULL), - (141,71,1,'a_b',60,'Child of',84,'Parent of',1,NULL,NULL,NULL), - (142,71,1,'b_a',84,'Parent of',60,'Child of',1,NULL,NULL,NULL), - (143,72,1,'a_b',158,'Child of',84,'Parent of',1,NULL,NULL,NULL), - (144,72,1,'b_a',84,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (145,73,1,'a_b',60,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (146,73,1,'b_a',22,'Parent of',60,'Child of',1,NULL,NULL,NULL), - (147,74,1,'a_b',158,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (148,74,1,'b_a',22,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (149,75,4,'a_b',158,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL), - (150,75,4,'b_a',60,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL), - (151,76,8,'a_b',22,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), - (152,76,8,'b_a',124,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL), - (153,77,8,'a_b',60,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), - (154,77,8,'b_a',124,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), - (155,78,8,'a_b',158,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), - (156,78,8,'b_a',124,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL), - (157,79,7,'a_b',84,'Head of Household for',124,'Head of Household is',1,NULL,NULL,NULL), - (158,79,7,'b_a',124,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL), - (159,80,2,'a_b',22,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL), - (160,80,2,'b_a',84,'Spouse of',22,'Spouse of',1,NULL,NULL,NULL), - (161,81,1,'a_b',99,'Child of',65,'Parent of',1,NULL,NULL,NULL), - (162,81,1,'b_a',65,'Parent of',99,'Child of',1,NULL,NULL,NULL), - (163,82,1,'a_b',9,'Child of',65,'Parent of',1,NULL,NULL,NULL), - (164,82,1,'b_a',65,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (165,83,1,'a_b',99,'Child of',73,'Parent of',1,NULL,NULL,NULL), - (166,83,1,'b_a',73,'Parent of',99,'Child of',1,NULL,NULL,NULL), - (167,84,1,'a_b',9,'Child of',73,'Parent of',1,NULL,NULL,NULL), - (168,84,1,'b_a',73,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (169,85,4,'a_b',9,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL), - (170,85,4,'b_a',99,'Sibling of',9,'Sibling of',1,NULL,NULL,NULL), - (171,86,8,'a_b',73,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL), - (172,86,8,'b_a',147,'Household Member is',73,'Household Member of',1,NULL,NULL,NULL), - (173,87,8,'a_b',99,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL), - (174,87,8,'b_a',147,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), - (175,88,8,'a_b',9,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL), - (176,88,8,'b_a',147,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL), - (177,89,7,'a_b',65,'Head of Household for',147,'Head of Household is',1,NULL,NULL,NULL), - (178,89,7,'b_a',147,'Head of Household is',65,'Head of Household for',1,NULL,NULL,NULL), - (179,90,2,'a_b',73,'Spouse of',65,'Spouse of',1,NULL,NULL,NULL), - (180,90,2,'b_a',65,'Spouse of',73,'Spouse of',1,NULL,NULL,NULL), - (181,91,1,'a_b',80,'Child of',82,'Parent of',1,NULL,NULL,NULL), - (182,91,1,'b_a',82,'Parent of',80,'Child of',1,NULL,NULL,NULL), - (183,92,1,'a_b',159,'Child of',82,'Parent of',1,NULL,NULL,NULL), - (184,92,1,'b_a',82,'Parent of',159,'Child of',1,NULL,NULL,NULL), - (185,93,1,'a_b',80,'Child of',186,'Parent of',1,NULL,NULL,NULL), - (186,93,1,'b_a',186,'Parent of',80,'Child of',1,NULL,NULL,NULL), - (187,94,1,'a_b',159,'Child of',186,'Parent of',1,NULL,NULL,NULL), - (188,94,1,'b_a',186,'Parent of',159,'Child of',1,NULL,NULL,NULL), - (189,95,4,'a_b',159,'Sibling of',80,'Sibling of',1,NULL,NULL,NULL), - (190,95,4,'b_a',80,'Sibling of',159,'Sibling of',1,NULL,NULL,NULL), - (191,96,8,'a_b',186,'Household Member of',107,'Household Member is',1,NULL,NULL,NULL), - (192,96,8,'b_a',107,'Household Member is',186,'Household Member of',1,NULL,NULL,NULL), - (193,97,8,'a_b',80,'Household Member of',107,'Household Member is',1,NULL,NULL,NULL), - (194,97,8,'b_a',107,'Household Member is',80,'Household Member of',1,NULL,NULL,NULL), - (195,98,8,'a_b',159,'Household Member of',107,'Household Member is',1,NULL,NULL,NULL), - (196,98,8,'b_a',107,'Household Member is',159,'Household Member of',1,NULL,NULL,NULL), - (197,99,7,'a_b',82,'Head of Household for',107,'Head of Household is',0,NULL,NULL,NULL), - (198,99,7,'b_a',107,'Head of Household is',82,'Head of Household for',0,NULL,NULL,NULL), - (199,100,2,'a_b',186,'Spouse of',82,'Spouse of',0,NULL,NULL,NULL), - (200,100,2,'b_a',82,'Spouse of',186,'Spouse of',0,NULL,NULL,NULL), - (201,101,1,'a_b',187,'Child of',45,'Parent of',1,NULL,NULL,NULL), - (202,101,1,'b_a',45,'Parent of',187,'Child of',1,NULL,NULL,NULL), - (203,102,1,'a_b',141,'Child of',45,'Parent of',1,NULL,NULL,NULL), - (204,102,1,'b_a',45,'Parent of',141,'Child of',1,NULL,NULL,NULL), - (205,103,1,'a_b',187,'Child of',48,'Parent of',1,NULL,NULL,NULL), - (206,103,1,'b_a',48,'Parent of',187,'Child of',1,NULL,NULL,NULL), - (207,104,1,'a_b',141,'Child of',48,'Parent of',1,NULL,NULL,NULL), - (208,104,1,'b_a',48,'Parent of',141,'Child of',1,NULL,NULL,NULL), - (209,105,4,'a_b',141,'Sibling of',187,'Sibling of',1,NULL,NULL,NULL), - (210,105,4,'b_a',187,'Sibling of',141,'Sibling of',1,NULL,NULL,NULL), - (211,106,8,'a_b',48,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), - (212,106,8,'b_a',161,'Household Member is',48,'Household Member of',1,NULL,NULL,NULL), - (213,107,8,'a_b',187,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), - (214,107,8,'b_a',161,'Household Member is',187,'Household Member of',1,NULL,NULL,NULL), - (215,108,8,'a_b',141,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), - (216,108,8,'b_a',161,'Household Member is',141,'Household Member of',1,NULL,NULL,NULL), - (217,109,7,'a_b',45,'Head of Household for',161,'Head of Household is',1,NULL,NULL,NULL), - (218,109,7,'b_a',161,'Head of Household is',45,'Head of Household for',1,NULL,NULL,NULL), - (219,110,2,'a_b',48,'Spouse of',45,'Spouse of',1,NULL,NULL,NULL), - (220,110,2,'b_a',45,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL), - (221,111,1,'a_b',8,'Child of',157,'Parent of',1,NULL,NULL,NULL), - (222,111,1,'b_a',157,'Parent of',8,'Child of',1,NULL,NULL,NULL), - (223,112,1,'a_b',140,'Child of',157,'Parent of',1,NULL,NULL,NULL), - (224,112,1,'b_a',157,'Parent of',140,'Child of',1,NULL,NULL,NULL), - (225,113,1,'a_b',8,'Child of',128,'Parent of',1,NULL,NULL,NULL), - (226,113,1,'b_a',128,'Parent of',8,'Child of',1,NULL,NULL,NULL), - (227,114,1,'a_b',140,'Child of',128,'Parent of',1,NULL,NULL,NULL), - (228,114,1,'b_a',128,'Parent of',140,'Child of',1,NULL,NULL,NULL), - (229,115,4,'a_b',140,'Sibling of',8,'Sibling of',1,NULL,NULL,NULL), - (230,115,4,'b_a',8,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL), - (231,116,8,'a_b',128,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL), - (232,116,8,'b_a',59,'Household Member is',128,'Household Member of',1,NULL,NULL,NULL), - (233,117,8,'a_b',8,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL), - (234,117,8,'b_a',59,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL), - (235,118,8,'a_b',140,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL), - (236,118,8,'b_a',59,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL), - (237,119,7,'a_b',157,'Head of Household for',59,'Head of Household is',1,NULL,NULL,NULL), - (238,119,7,'b_a',59,'Head of Household is',157,'Head of Household for',1,NULL,NULL,NULL), - (239,120,2,'a_b',128,'Spouse of',157,'Spouse of',1,NULL,NULL,NULL), - (240,120,2,'b_a',157,'Spouse of',128,'Spouse of',1,NULL,NULL,NULL), - (241,121,1,'a_b',178,'Child of',144,'Parent of',1,NULL,NULL,NULL), - (242,121,1,'b_a',144,'Parent of',178,'Child of',1,NULL,NULL,NULL), - (243,122,1,'a_b',127,'Child of',144,'Parent of',1,NULL,NULL,NULL), - (244,122,1,'b_a',144,'Parent of',127,'Child of',1,NULL,NULL,NULL), - (245,123,1,'a_b',178,'Child of',4,'Parent of',1,NULL,NULL,NULL), - (246,123,1,'b_a',4,'Parent of',178,'Child of',1,NULL,NULL,NULL), - (247,124,1,'a_b',127,'Child of',4,'Parent of',1,NULL,NULL,NULL), - (248,124,1,'b_a',4,'Parent of',127,'Child of',1,NULL,NULL,NULL), - (249,125,4,'a_b',127,'Sibling of',178,'Sibling of',1,NULL,NULL,NULL), - (250,125,4,'b_a',178,'Sibling of',127,'Sibling of',1,NULL,NULL,NULL), - (251,126,8,'a_b',4,'Household Member of',117,'Household Member is',1,NULL,NULL,NULL), - (252,126,8,'b_a',117,'Household Member is',4,'Household Member of',1,NULL,NULL,NULL), - (253,127,8,'a_b',178,'Household Member of',117,'Household Member is',1,NULL,NULL,NULL), - (254,127,8,'b_a',117,'Household Member is',178,'Household Member of',1,NULL,NULL,NULL), - (255,128,8,'a_b',127,'Household Member of',117,'Household Member is',1,NULL,NULL,NULL), - (256,128,8,'b_a',117,'Household Member is',127,'Household Member of',1,NULL,NULL,NULL), - (257,129,7,'a_b',144,'Head of Household for',117,'Head of Household is',0,NULL,NULL,NULL), - (258,129,7,'b_a',117,'Head of Household is',144,'Head of Household for',0,NULL,NULL,NULL), - (259,130,2,'a_b',4,'Spouse of',144,'Spouse of',0,NULL,NULL,NULL), - (260,130,2,'b_a',144,'Spouse of',4,'Spouse of',0,NULL,NULL,NULL), - (261,131,1,'a_b',34,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (262,131,1,'b_a',67,'Parent of',34,'Child of',1,NULL,NULL,NULL), - (263,132,1,'a_b',193,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (264,132,1,'b_a',67,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (265,133,1,'a_b',34,'Child of',56,'Parent of',1,NULL,NULL,NULL), - (266,133,1,'b_a',56,'Parent of',34,'Child of',1,NULL,NULL,NULL), - (267,134,1,'a_b',193,'Child of',56,'Parent of',1,NULL,NULL,NULL), - (268,134,1,'b_a',56,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (269,135,4,'a_b',193,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), - (270,135,4,'b_a',34,'Sibling of',193,'Sibling of',1,NULL,NULL,NULL), - (271,136,8,'a_b',56,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), - (272,136,8,'b_a',88,'Household Member is',56,'Household Member of',1,NULL,NULL,NULL), - (273,137,8,'a_b',34,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), - (274,137,8,'b_a',88,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), - (275,138,8,'a_b',193,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), - (276,138,8,'b_a',88,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), - (277,139,7,'a_b',67,'Head of Household for',88,'Head of Household is',0,NULL,NULL,NULL), - (278,139,7,'b_a',88,'Head of Household is',67,'Head of Household for',0,NULL,NULL,NULL), - (279,140,2,'a_b',56,'Spouse of',67,'Spouse of',0,NULL,NULL,NULL), - (280,140,2,'b_a',67,'Spouse of',56,'Spouse of',0,NULL,NULL,NULL), - (281,141,1,'a_b',79,'Child of',77,'Parent of',1,NULL,NULL,NULL), - (282,141,1,'b_a',77,'Parent of',79,'Child of',1,NULL,NULL,NULL), - (283,142,1,'a_b',49,'Child of',77,'Parent of',1,NULL,NULL,NULL), - (284,142,1,'b_a',77,'Parent of',49,'Child of',1,NULL,NULL,NULL), - (285,143,1,'a_b',79,'Child of',39,'Parent of',1,NULL,NULL,NULL), - (286,143,1,'b_a',39,'Parent of',79,'Child of',1,NULL,NULL,NULL), - (287,144,1,'a_b',49,'Child of',39,'Parent of',1,NULL,NULL,NULL), - (288,144,1,'b_a',39,'Parent of',49,'Child of',1,NULL,NULL,NULL), - (289,145,4,'a_b',49,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL), - (290,145,4,'b_a',79,'Sibling of',49,'Sibling of',1,NULL,NULL,NULL), - (291,146,8,'a_b',39,'Household Member of',135,'Household Member is',1,NULL,NULL,NULL), - (292,146,8,'b_a',135,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL), - (293,147,8,'a_b',79,'Household Member of',135,'Household Member is',1,NULL,NULL,NULL), - (294,147,8,'b_a',135,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL), - (295,148,8,'a_b',49,'Household Member of',135,'Household Member is',1,NULL,NULL,NULL), - (296,148,8,'b_a',135,'Household Member is',49,'Household Member of',1,NULL,NULL,NULL), - (297,149,7,'a_b',77,'Head of Household for',135,'Head of Household is',0,NULL,NULL,NULL), - (298,149,7,'b_a',135,'Head of Household is',77,'Head of Household for',0,NULL,NULL,NULL), - (299,150,2,'a_b',39,'Spouse of',77,'Spouse of',0,NULL,NULL,NULL), - (300,150,2,'b_a',77,'Spouse of',39,'Spouse of',0,NULL,NULL,NULL), - (301,151,1,'a_b',173,'Child of',172,'Parent of',1,NULL,NULL,NULL), - (302,151,1,'b_a',172,'Parent of',173,'Child of',1,NULL,NULL,NULL), - (303,152,1,'a_b',27,'Child of',172,'Parent of',1,NULL,NULL,NULL), - (304,152,1,'b_a',172,'Parent of',27,'Child of',1,NULL,NULL,NULL), - (305,153,1,'a_b',173,'Child of',137,'Parent of',1,NULL,NULL,NULL), - (306,153,1,'b_a',137,'Parent of',173,'Child of',1,NULL,NULL,NULL), - (307,154,1,'a_b',27,'Child of',137,'Parent of',1,NULL,NULL,NULL), - (308,154,1,'b_a',137,'Parent of',27,'Child of',1,NULL,NULL,NULL), - (309,155,4,'a_b',27,'Sibling of',173,'Sibling of',1,NULL,NULL,NULL), - (310,155,4,'b_a',173,'Sibling of',27,'Sibling of',1,NULL,NULL,NULL), - (311,156,8,'a_b',137,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL), - (312,156,8,'b_a',132,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), - (313,157,8,'a_b',173,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL), - (314,157,8,'b_a',132,'Household Member is',173,'Household Member of',1,NULL,NULL,NULL), - (315,158,8,'a_b',27,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL), - (316,158,8,'b_a',132,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL), - (317,159,7,'a_b',172,'Head of Household for',132,'Head of Household is',1,NULL,NULL,NULL), - (318,159,7,'b_a',132,'Head of Household is',172,'Head of Household for',1,NULL,NULL,NULL), - (319,160,2,'a_b',137,'Spouse of',172,'Spouse of',1,NULL,NULL,NULL), - (320,160,2,'b_a',172,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL), - (321,161,1,'a_b',134,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (322,161,1,'b_a',69,'Parent of',134,'Child of',1,NULL,NULL,NULL), - (323,162,1,'a_b',75,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (324,162,1,'b_a',69,'Parent of',75,'Child of',1,NULL,NULL,NULL), - (325,163,1,'a_b',134,'Child of',108,'Parent of',1,NULL,NULL,NULL), - (326,163,1,'b_a',108,'Parent of',134,'Child of',1,NULL,NULL,NULL), - (327,164,1,'a_b',75,'Child of',108,'Parent of',1,NULL,NULL,NULL), - (328,164,1,'b_a',108,'Parent of',75,'Child of',1,NULL,NULL,NULL), - (329,165,4,'a_b',75,'Sibling of',134,'Sibling of',1,NULL,NULL,NULL), - (330,165,4,'b_a',134,'Sibling of',75,'Sibling of',1,NULL,NULL,NULL), - (331,166,8,'a_b',108,'Household Member of',76,'Household Member is',1,NULL,NULL,NULL), - (332,166,8,'b_a',76,'Household Member is',108,'Household Member of',1,NULL,NULL,NULL), - (333,167,8,'a_b',134,'Household Member of',76,'Household Member is',1,NULL,NULL,NULL), - (334,167,8,'b_a',76,'Household Member is',134,'Household Member of',1,NULL,NULL,NULL), - (335,168,8,'a_b',75,'Household Member of',76,'Household Member is',1,NULL,NULL,NULL), - (336,168,8,'b_a',76,'Household Member is',75,'Household Member of',1,NULL,NULL,NULL), - (337,169,7,'a_b',69,'Head of Household for',76,'Head of Household is',0,NULL,NULL,NULL), - (338,169,7,'b_a',76,'Head of Household is',69,'Head of Household for',0,NULL,NULL,NULL), - (339,170,2,'a_b',108,'Spouse of',69,'Spouse of',0,NULL,NULL,NULL), - (340,170,2,'b_a',69,'Spouse of',108,'Spouse of',0,NULL,NULL,NULL), - (341,171,1,'a_b',151,'Child of',42,'Parent of',1,NULL,NULL,NULL), - (342,171,1,'b_a',42,'Parent of',151,'Child of',1,NULL,NULL,NULL), - (343,172,1,'a_b',176,'Child of',42,'Parent of',1,NULL,NULL,NULL), - (344,172,1,'b_a',42,'Parent of',176,'Child of',1,NULL,NULL,NULL), - (345,173,1,'a_b',151,'Child of',38,'Parent of',1,NULL,NULL,NULL), - (346,173,1,'b_a',38,'Parent of',151,'Child of',1,NULL,NULL,NULL), - (347,174,1,'a_b',176,'Child of',38,'Parent of',1,NULL,NULL,NULL), - (348,174,1,'b_a',38,'Parent of',176,'Child of',1,NULL,NULL,NULL), - (349,175,4,'a_b',176,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL), - (350,175,4,'b_a',151,'Sibling of',176,'Sibling of',1,NULL,NULL,NULL), - (351,176,8,'a_b',38,'Household Member of',21,'Household Member is',1,NULL,NULL,NULL), - (352,176,8,'b_a',21,'Household Member is',38,'Household Member of',1,NULL,NULL,NULL), - (353,177,8,'a_b',151,'Household Member of',21,'Household Member is',1,NULL,NULL,NULL), - (354,177,8,'b_a',21,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), - (355,178,8,'a_b',176,'Household Member of',21,'Household Member is',1,NULL,NULL,NULL), - (356,178,8,'b_a',21,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL), - (357,179,7,'a_b',42,'Head of Household for',21,'Head of Household is',1,NULL,NULL,NULL), - (358,179,7,'b_a',21,'Head of Household is',42,'Head of Household for',1,NULL,NULL,NULL), - (359,180,2,'a_b',38,'Spouse of',42,'Spouse of',1,NULL,NULL,NULL), - (360,180,2,'b_a',42,'Spouse of',38,'Spouse of',1,NULL,NULL,NULL), - (361,181,1,'a_b',13,'Child of',145,'Parent of',1,NULL,NULL,NULL), - (362,181,1,'b_a',145,'Parent of',13,'Child of',1,NULL,NULL,NULL), - (363,182,1,'a_b',41,'Child of',145,'Parent of',1,NULL,NULL,NULL), - (364,182,1,'b_a',145,'Parent of',41,'Child of',1,NULL,NULL,NULL), - (365,183,1,'a_b',13,'Child of',191,'Parent of',1,NULL,NULL,NULL), - (366,183,1,'b_a',191,'Parent of',13,'Child of',1,NULL,NULL,NULL), - (367,184,1,'a_b',41,'Child of',191,'Parent of',1,NULL,NULL,NULL), - (368,184,1,'b_a',191,'Parent of',41,'Child of',1,NULL,NULL,NULL), - (369,185,4,'a_b',41,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL), - (370,185,4,'b_a',13,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL), - (371,186,8,'a_b',191,'Household Member of',183,'Household Member is',1,NULL,NULL,NULL), - (372,186,8,'b_a',183,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL), - (373,187,8,'a_b',13,'Household Member of',183,'Household Member is',1,NULL,NULL,NULL), - (374,187,8,'b_a',183,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), - (375,188,8,'a_b',41,'Household Member of',183,'Household Member is',1,NULL,NULL,NULL), - (376,188,8,'b_a',183,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), - (377,189,7,'a_b',145,'Head of Household for',183,'Head of Household is',1,NULL,NULL,NULL), - (378,189,7,'b_a',183,'Head of Household is',145,'Head of Household for',1,NULL,NULL,NULL), - (379,190,2,'a_b',191,'Spouse of',145,'Spouse of',1,NULL,NULL,NULL), - (380,190,2,'b_a',145,'Spouse of',191,'Spouse of',1,NULL,NULL,NULL), - (381,191,1,'a_b',28,'Child of',71,'Parent of',1,NULL,NULL,NULL), - (382,191,1,'b_a',71,'Parent of',28,'Child of',1,NULL,NULL,NULL), - (383,192,1,'a_b',92,'Child of',71,'Parent of',1,NULL,NULL,NULL), - (384,192,1,'b_a',71,'Parent of',92,'Child of',1,NULL,NULL,NULL), - (385,193,1,'a_b',28,'Child of',25,'Parent of',1,NULL,NULL,NULL), - (386,193,1,'b_a',25,'Parent of',28,'Child of',1,NULL,NULL,NULL), - (387,194,1,'a_b',92,'Child of',25,'Parent of',1,NULL,NULL,NULL), - (388,194,1,'b_a',25,'Parent of',92,'Child of',1,NULL,NULL,NULL), - (389,195,4,'a_b',92,'Sibling of',28,'Sibling of',1,NULL,NULL,NULL), - (390,195,4,'b_a',28,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL), - (391,196,8,'a_b',25,'Household Member of',148,'Household Member is',1,NULL,NULL,NULL), - (392,196,8,'b_a',148,'Household Member is',25,'Household Member of',1,NULL,NULL,NULL), - (393,197,8,'a_b',28,'Household Member of',148,'Household Member is',1,NULL,NULL,NULL), - (394,197,8,'b_a',148,'Household Member is',28,'Household Member of',1,NULL,NULL,NULL), - (395,198,8,'a_b',92,'Household Member of',148,'Household Member is',1,NULL,NULL,NULL), - (396,198,8,'b_a',148,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL), - (397,199,7,'a_b',71,'Head of Household for',148,'Head of Household is',1,NULL,NULL,NULL), - (398,199,7,'b_a',148,'Head of Household is',71,'Head of Household for',1,NULL,NULL,NULL), - (399,200,2,'a_b',25,'Spouse of',71,'Spouse of',1,NULL,NULL,NULL), - (400,200,2,'b_a',71,'Spouse of',25,'Spouse of',1,NULL,NULL,NULL), - (401,201,5,'a_b',57,'Employee of',17,'Employer of',1,NULL,NULL,NULL), - (402,201,5,'b_a',17,'Employer of',57,'Employee of',1,NULL,NULL,NULL), - (403,202,5,'a_b',69,'Employee of',19,'Employer of',1,NULL,NULL,NULL), - (404,202,5,'b_a',19,'Employer of',69,'Employee of',1,NULL,NULL,NULL), - (405,203,5,'a_b',194,'Employee of',31,'Employer of',1,NULL,NULL,NULL), - (406,203,5,'b_a',31,'Employer of',194,'Employee of',1,NULL,NULL,NULL), - (407,204,5,'a_b',75,'Employee of',51,'Employer of',1,NULL,NULL,NULL), - (408,204,5,'b_a',51,'Employer of',75,'Employee of',1,NULL,NULL,NULL), - (409,205,5,'a_b',180,'Employee of',53,'Employer of',1,NULL,NULL,NULL), - (410,205,5,'b_a',53,'Employer of',180,'Employee of',1,NULL,NULL,NULL), - (411,206,5,'a_b',120,'Employee of',64,'Employer of',1,NULL,NULL,NULL), - (412,206,5,'b_a',64,'Employer of',120,'Employee of',1,NULL,NULL,NULL), - (413,207,5,'a_b',159,'Employee of',74,'Employer of',1,NULL,NULL,NULL), - (414,207,5,'b_a',74,'Employer of',159,'Employee of',1,NULL,NULL,NULL), - (415,208,5,'a_b',45,'Employee of',111,'Employer of',1,NULL,NULL,NULL), - (416,208,5,'b_a',111,'Employer of',45,'Employee of',1,NULL,NULL,NULL), - (417,209,5,'a_b',136,'Employee of',112,'Employer of',1,NULL,NULL,NULL), - (418,209,5,'b_a',112,'Employer of',136,'Employee of',1,NULL,NULL,NULL), - (419,210,5,'a_b',12,'Employee of',118,'Employer of',1,NULL,NULL,NULL), - (420,210,5,'b_a',118,'Employer of',12,'Employee of',1,NULL,NULL,NULL), - (421,211,5,'a_b',58,'Employee of',121,'Employer of',1,NULL,NULL,NULL), - (422,211,5,'b_a',121,'Employer of',58,'Employee of',1,NULL,NULL,NULL), - (423,212,5,'a_b',104,'Employee of',133,'Employer of',1,NULL,NULL,NULL), - (424,212,5,'b_a',133,'Employer of',104,'Employee of',1,NULL,NULL,NULL), - (425,213,5,'a_b',79,'Employee of',150,'Employer of',1,NULL,NULL,NULL), - (426,213,5,'b_a',150,'Employer of',79,'Employee of',1,NULL,NULL,NULL), - (427,214,5,'a_b',54,'Employee of',166,'Employer of',1,NULL,NULL,NULL), - (428,214,5,'b_a',166,'Employer of',54,'Employee of',1,NULL,NULL,NULL), - (429,215,5,'a_b',169,'Employee of',171,'Employer of',1,NULL,NULL,NULL), - (430,215,5,'b_a',171,'Employer of',169,'Employee of',1,NULL,NULL,NULL), - (431,216,5,'a_b',187,'Employee of',174,'Employer of',1,NULL,NULL,NULL), - (432,216,5,'b_a',174,'Employer of',187,'Employee of',1,NULL,NULL,NULL), - (433,217,5,'a_b',122,'Employee of',190,'Employer of',1,NULL,NULL,NULL), - (434,217,5,'b_a',190,'Employer of',122,'Employee of',1,NULL,NULL,NULL); + (1,1,1,'a_b',24,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (2,1,1,'b_a',86,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (3,2,1,'a_b',189,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (4,2,1,'b_a',86,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (5,3,1,'a_b',24,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (6,3,1,'b_a',16,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (7,4,1,'a_b',189,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (8,4,1,'b_a',16,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (9,5,4,'a_b',189,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL), + (10,5,4,'b_a',24,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL), + (11,6,8,'a_b',16,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (12,6,8,'b_a',58,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL), + (13,7,8,'a_b',24,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (14,7,8,'b_a',58,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL), + (15,8,8,'a_b',189,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (16,8,8,'b_a',58,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), + (17,9,7,'a_b',86,'Head of Household for',58,'Head of Household is',0,NULL,NULL,NULL), + (18,9,7,'b_a',58,'Head of Household is',86,'Head of Household for',0,NULL,NULL,NULL), + (19,10,2,'a_b',16,'Spouse of',86,'Spouse of',0,NULL,NULL,NULL), + (20,10,2,'b_a',86,'Spouse of',16,'Spouse of',0,NULL,NULL,NULL), + (21,11,1,'a_b',151,'Child of',141,'Parent of',1,NULL,NULL,NULL), + (22,11,1,'b_a',141,'Parent of',151,'Child of',1,NULL,NULL,NULL), + (23,12,1,'a_b',20,'Child of',141,'Parent of',1,NULL,NULL,NULL), + (24,12,1,'b_a',141,'Parent of',20,'Child of',1,NULL,NULL,NULL), + (25,13,1,'a_b',151,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (26,13,1,'b_a',176,'Parent of',151,'Child of',1,NULL,NULL,NULL), + (27,14,1,'a_b',20,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (28,14,1,'b_a',176,'Parent of',20,'Child of',1,NULL,NULL,NULL), + (29,15,4,'a_b',20,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL), + (30,15,4,'b_a',151,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL), + (31,16,8,'a_b',176,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (32,16,8,'b_a',190,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL), + (33,17,8,'a_b',151,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (34,17,8,'b_a',190,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), + (35,18,8,'a_b',20,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (36,18,8,'b_a',190,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL), + (37,19,7,'a_b',141,'Head of Household for',190,'Head of Household is',1,NULL,NULL,NULL), + (38,19,7,'b_a',190,'Head of Household is',141,'Head of Household for',1,NULL,NULL,NULL), + (39,20,2,'a_b',176,'Spouse of',141,'Spouse of',1,NULL,NULL,NULL), + (40,20,2,'b_a',141,'Spouse of',176,'Spouse of',1,NULL,NULL,NULL), + (41,21,1,'a_b',125,'Child of',49,'Parent of',1,NULL,NULL,NULL), + (42,21,1,'b_a',49,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (43,22,1,'a_b',55,'Child of',49,'Parent of',1,NULL,NULL,NULL), + (44,22,1,'b_a',49,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (45,23,1,'a_b',125,'Child of',200,'Parent of',1,NULL,NULL,NULL), + (46,23,1,'b_a',200,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (47,24,1,'a_b',55,'Child of',200,'Parent of',1,NULL,NULL,NULL), + (48,24,1,'b_a',200,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (49,25,4,'a_b',55,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL), + (50,25,4,'b_a',125,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL), + (51,26,8,'a_b',200,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (52,26,8,'b_a',155,'Household Member is',200,'Household Member of',1,NULL,NULL,NULL), + (53,27,8,'a_b',125,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (54,27,8,'b_a',155,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL), + (55,28,8,'a_b',55,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (56,28,8,'b_a',155,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL), + (57,29,7,'a_b',49,'Head of Household for',155,'Head of Household is',1,NULL,NULL,NULL), + (58,29,7,'b_a',155,'Head of Household is',49,'Head of Household for',1,NULL,NULL,NULL), + (59,30,2,'a_b',200,'Spouse of',49,'Spouse of',1,NULL,NULL,NULL), + (60,30,2,'b_a',49,'Spouse of',200,'Spouse of',1,NULL,NULL,NULL), + (61,31,1,'a_b',34,'Child of',150,'Parent of',1,NULL,NULL,NULL), + (62,31,1,'b_a',150,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (63,32,1,'a_b',164,'Child of',150,'Parent of',1,NULL,NULL,NULL), + (64,32,1,'b_a',150,'Parent of',164,'Child of',1,NULL,NULL,NULL), + (65,33,1,'a_b',34,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (66,33,1,'b_a',179,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (67,34,1,'a_b',164,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (68,34,1,'b_a',179,'Parent of',164,'Child of',1,NULL,NULL,NULL), + (69,35,4,'a_b',164,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), + (70,35,4,'b_a',34,'Sibling of',164,'Sibling of',1,NULL,NULL,NULL), + (71,36,8,'a_b',179,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (72,36,8,'b_a',26,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL), + (73,37,8,'a_b',34,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (74,37,8,'b_a',26,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), + (75,38,8,'a_b',164,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (76,38,8,'b_a',26,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL), + (77,39,7,'a_b',150,'Head of Household for',26,'Head of Household is',0,NULL,NULL,NULL), + (78,39,7,'b_a',26,'Head of Household is',150,'Head of Household for',0,NULL,NULL,NULL), + (79,40,2,'a_b',179,'Spouse of',150,'Spouse of',0,NULL,NULL,NULL), + (80,40,2,'b_a',150,'Spouse of',179,'Spouse of',0,NULL,NULL,NULL), + (81,41,1,'a_b',44,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (82,41,1,'b_a',183,'Parent of',44,'Child of',1,NULL,NULL,NULL), + (83,42,1,'a_b',60,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (84,42,1,'b_a',183,'Parent of',60,'Child of',1,NULL,NULL,NULL), + (85,43,1,'a_b',44,'Child of',193,'Parent of',1,NULL,NULL,NULL), + (86,43,1,'b_a',193,'Parent of',44,'Child of',1,NULL,NULL,NULL), + (87,44,1,'a_b',60,'Child of',193,'Parent of',1,NULL,NULL,NULL), + (88,44,1,'b_a',193,'Parent of',60,'Child of',1,NULL,NULL,NULL), + (89,45,4,'a_b',60,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL), + (90,45,4,'b_a',44,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL), + (91,46,8,'a_b',193,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (92,46,8,'b_a',53,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), + (93,47,8,'a_b',44,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (94,47,8,'b_a',53,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL), + (95,48,8,'a_b',60,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (96,48,8,'b_a',53,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), + (97,49,7,'a_b',183,'Head of Household for',53,'Head of Household is',0,NULL,NULL,NULL), + (98,49,7,'b_a',53,'Head of Household is',183,'Head of Household for',0,NULL,NULL,NULL), + (99,50,2,'a_b',193,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL), + (100,50,2,'b_a',183,'Spouse of',193,'Spouse of',0,NULL,NULL,NULL), + (101,51,1,'a_b',76,'Child of',84,'Parent of',1,NULL,NULL,NULL), + (102,51,1,'b_a',84,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (103,52,1,'a_b',126,'Child of',84,'Parent of',1,NULL,NULL,NULL), + (104,52,1,'b_a',84,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (105,53,1,'a_b',76,'Child of',109,'Parent of',1,NULL,NULL,NULL), + (106,53,1,'b_a',109,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (107,54,1,'a_b',126,'Child of',109,'Parent of',1,NULL,NULL,NULL), + (108,54,1,'b_a',109,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (109,55,4,'a_b',126,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL), + (110,55,4,'b_a',76,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), + (111,56,8,'a_b',109,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (112,56,8,'b_a',156,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL), + (113,57,8,'a_b',76,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (114,57,8,'b_a',156,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL), + (115,58,8,'a_b',126,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (116,58,8,'b_a',156,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), + (117,59,7,'a_b',84,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL), + (118,59,7,'b_a',156,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL), + (119,60,2,'a_b',109,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL), + (120,60,2,'b_a',84,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL), + (121,61,1,'a_b',147,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (122,61,1,'b_a',46,'Parent of',147,'Child of',1,NULL,NULL,NULL), + (123,62,1,'a_b',74,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (124,62,1,'b_a',46,'Parent of',74,'Child of',1,NULL,NULL,NULL), + (125,63,1,'a_b',147,'Child of',149,'Parent of',1,NULL,NULL,NULL), + (126,63,1,'b_a',149,'Parent of',147,'Child of',1,NULL,NULL,NULL), + (127,64,1,'a_b',74,'Child of',149,'Parent of',1,NULL,NULL,NULL), + (128,64,1,'b_a',149,'Parent of',74,'Child of',1,NULL,NULL,NULL), + (129,65,4,'a_b',74,'Sibling of',147,'Sibling of',1,NULL,NULL,NULL), + (130,65,4,'b_a',147,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL), + (131,66,8,'a_b',149,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (132,66,8,'b_a',131,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL), + (133,67,8,'a_b',147,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (134,67,8,'b_a',131,'Household Member is',147,'Household Member of',1,NULL,NULL,NULL), + (135,68,8,'a_b',74,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (136,68,8,'b_a',131,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL), + (137,69,7,'a_b',46,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL), + (138,69,7,'b_a',131,'Head of Household is',46,'Head of Household for',1,NULL,NULL,NULL), + (139,70,2,'a_b',149,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL), + (140,70,2,'b_a',46,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL), + (141,71,1,'a_b',162,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (142,71,1,'b_a',140,'Parent of',162,'Child of',1,NULL,NULL,NULL), + (143,72,1,'a_b',66,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (144,72,1,'b_a',140,'Parent of',66,'Child of',1,NULL,NULL,NULL), + (145,73,1,'a_b',162,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (146,73,1,'b_a',163,'Parent of',162,'Child of',1,NULL,NULL,NULL), + (147,74,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (148,74,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL), + (149,75,4,'a_b',66,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL), + (150,75,4,'b_a',162,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL), + (151,76,8,'a_b',163,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (152,76,8,'b_a',10,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL), + (153,77,8,'a_b',162,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (154,77,8,'b_a',10,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL), + (155,78,8,'a_b',66,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (156,78,8,'b_a',10,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL), + (157,79,7,'a_b',140,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL), + (158,79,7,'b_a',10,'Head of Household is',140,'Head of Household for',1,NULL,NULL,NULL), + (159,80,2,'a_b',163,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL), + (160,80,2,'b_a',140,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL), + (161,81,1,'a_b',170,'Child of',21,'Parent of',1,NULL,NULL,NULL), + (162,81,1,'b_a',21,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (163,82,1,'a_b',45,'Child of',21,'Parent of',1,NULL,NULL,NULL), + (164,82,1,'b_a',21,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (165,83,1,'a_b',170,'Child of',14,'Parent of',1,NULL,NULL,NULL), + (166,83,1,'b_a',14,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (167,84,1,'a_b',45,'Child of',14,'Parent of',1,NULL,NULL,NULL), + (168,84,1,'b_a',14,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (169,85,4,'a_b',45,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL), + (170,85,4,'b_a',170,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), + (171,86,8,'a_b',14,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (172,86,8,'b_a',177,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL), + (173,87,8,'a_b',170,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (174,87,8,'b_a',177,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL), + (175,88,8,'a_b',45,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (176,88,8,'b_a',177,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), + (177,89,7,'a_b',21,'Head of Household for',177,'Head of Household is',1,NULL,NULL,NULL), + (178,89,7,'b_a',177,'Head of Household is',21,'Head of Household for',1,NULL,NULL,NULL), + (179,90,2,'a_b',14,'Spouse of',21,'Spouse of',1,NULL,NULL,NULL), + (180,90,2,'b_a',21,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL), + (181,91,1,'a_b',112,'Child of',124,'Parent of',1,NULL,NULL,NULL), + (182,91,1,'b_a',124,'Parent of',112,'Child of',1,NULL,NULL,NULL), + (183,92,1,'a_b',79,'Child of',124,'Parent of',1,NULL,NULL,NULL), + (184,92,1,'b_a',124,'Parent of',79,'Child of',1,NULL,NULL,NULL), + (185,93,1,'a_b',112,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (186,93,1,'b_a',199,'Parent of',112,'Child of',1,NULL,NULL,NULL), + (187,94,1,'a_b',79,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (188,94,1,'b_a',199,'Parent of',79,'Child of',1,NULL,NULL,NULL), + (189,95,4,'a_b',79,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL), + (190,95,4,'b_a',112,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL), + (191,96,8,'a_b',199,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (192,96,8,'b_a',3,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), + (193,97,8,'a_b',112,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (194,97,8,'b_a',3,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL), + (195,98,8,'a_b',79,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (196,98,8,'b_a',3,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL), + (197,99,7,'a_b',124,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL), + (198,99,7,'b_a',3,'Head of Household is',124,'Head of Household for',1,NULL,NULL,NULL), + (199,100,2,'a_b',199,'Spouse of',124,'Spouse of',1,NULL,NULL,NULL), + (200,100,2,'b_a',124,'Spouse of',199,'Spouse of',1,NULL,NULL,NULL), + (201,101,1,'a_b',104,'Child of',48,'Parent of',1,NULL,NULL,NULL), + (202,101,1,'b_a',48,'Parent of',104,'Child of',1,NULL,NULL,NULL), + (203,102,1,'a_b',92,'Child of',48,'Parent of',1,NULL,NULL,NULL), + (204,102,1,'b_a',48,'Parent of',92,'Child of',1,NULL,NULL,NULL), + (205,103,1,'a_b',104,'Child of',91,'Parent of',1,NULL,NULL,NULL), + (206,103,1,'b_a',91,'Parent of',104,'Child of',1,NULL,NULL,NULL), + (207,104,1,'a_b',92,'Child of',91,'Parent of',1,NULL,NULL,NULL), + (208,104,1,'b_a',91,'Parent of',92,'Child of',1,NULL,NULL,NULL), + (209,105,4,'a_b',92,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL), + (210,105,4,'b_a',104,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL), + (211,106,8,'a_b',91,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (212,106,8,'b_a',191,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL), + (213,107,8,'a_b',104,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (214,107,8,'b_a',191,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL), + (215,108,8,'a_b',92,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (216,108,8,'b_a',191,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL), + (217,109,7,'a_b',48,'Head of Household for',191,'Head of Household is',1,NULL,NULL,NULL), + (218,109,7,'b_a',191,'Head of Household is',48,'Head of Household for',1,NULL,NULL,NULL), + (219,110,2,'a_b',91,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL), + (220,110,2,'b_a',48,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL), + (221,111,1,'a_b',160,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (222,111,1,'b_a',110,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (223,112,1,'a_b',57,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (224,112,1,'b_a',110,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (225,113,1,'a_b',160,'Child of',100,'Parent of',1,NULL,NULL,NULL), + (226,113,1,'b_a',100,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (227,114,1,'a_b',57,'Child of',100,'Parent of',1,NULL,NULL,NULL), + (228,114,1,'b_a',100,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (229,115,4,'a_b',57,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL), + (230,115,4,'b_a',160,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL), + (231,116,8,'a_b',100,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (232,116,8,'b_a',134,'Household Member is',100,'Household Member of',1,NULL,NULL,NULL), + (233,117,8,'a_b',160,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (234,117,8,'b_a',134,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL), + (235,118,8,'a_b',57,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (236,118,8,'b_a',134,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), + (237,119,7,'a_b',110,'Head of Household for',134,'Head of Household is',0,NULL,NULL,NULL), + (238,119,7,'b_a',134,'Head of Household is',110,'Head of Household for',0,NULL,NULL,NULL), + (239,120,2,'a_b',100,'Spouse of',110,'Spouse of',0,NULL,NULL,NULL), + (240,120,2,'b_a',110,'Spouse of',100,'Spouse of',0,NULL,NULL,NULL), + (241,121,1,'a_b',13,'Child of',198,'Parent of',1,NULL,NULL,NULL), + (242,121,1,'b_a',198,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (243,122,1,'a_b',62,'Child of',198,'Parent of',1,NULL,NULL,NULL), + (244,122,1,'b_a',198,'Parent of',62,'Child of',1,NULL,NULL,NULL), + (245,123,1,'a_b',13,'Child of',6,'Parent of',1,NULL,NULL,NULL), + (246,123,1,'b_a',6,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (247,124,1,'a_b',62,'Child of',6,'Parent of',1,NULL,NULL,NULL), + (248,124,1,'b_a',6,'Parent of',62,'Child of',1,NULL,NULL,NULL), + (249,125,4,'a_b',62,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL), + (250,125,4,'b_a',13,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL), + (251,126,8,'a_b',6,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (252,126,8,'b_a',73,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL), + (253,127,8,'a_b',13,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (254,127,8,'b_a',73,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), + (255,128,8,'a_b',62,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (256,128,8,'b_a',73,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), + (257,129,7,'a_b',198,'Head of Household for',73,'Head of Household is',0,NULL,NULL,NULL), + (258,129,7,'b_a',73,'Head of Household is',198,'Head of Household for',0,NULL,NULL,NULL), + (259,130,2,'a_b',6,'Spouse of',198,'Spouse of',0,NULL,NULL,NULL), + (260,130,2,'b_a',198,'Spouse of',6,'Spouse of',0,NULL,NULL,NULL), + (261,131,1,'a_b',99,'Child of',15,'Parent of',1,NULL,NULL,NULL), + (262,131,1,'b_a',15,'Parent of',99,'Child of',1,NULL,NULL,NULL), + (263,132,1,'a_b',116,'Child of',15,'Parent of',1,NULL,NULL,NULL), + (264,132,1,'b_a',15,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (265,133,1,'a_b',99,'Child of',137,'Parent of',1,NULL,NULL,NULL), + (266,133,1,'b_a',137,'Parent of',99,'Child of',1,NULL,NULL,NULL), + (267,134,1,'a_b',116,'Child of',137,'Parent of',1,NULL,NULL,NULL), + (268,134,1,'b_a',137,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (269,135,4,'a_b',116,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL), + (270,135,4,'b_a',99,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL), + (271,136,8,'a_b',137,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (272,136,8,'b_a',88,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), + (273,137,8,'a_b',99,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (274,137,8,'b_a',88,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), + (275,138,8,'a_b',116,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (276,138,8,'b_a',88,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), + (277,139,7,'a_b',15,'Head of Household for',88,'Head of Household is',1,NULL,NULL,NULL), + (278,139,7,'b_a',88,'Head of Household is',15,'Head of Household for',1,NULL,NULL,NULL), + (279,140,2,'a_b',137,'Spouse of',15,'Spouse of',1,NULL,NULL,NULL), + (280,140,2,'b_a',15,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL), + (281,141,1,'a_b',114,'Child of',180,'Parent of',1,NULL,NULL,NULL), + (282,141,1,'b_a',180,'Parent of',114,'Child of',1,NULL,NULL,NULL), + (283,142,1,'a_b',32,'Child of',180,'Parent of',1,NULL,NULL,NULL), + (284,142,1,'b_a',180,'Parent of',32,'Child of',1,NULL,NULL,NULL), + (285,143,1,'a_b',114,'Child of',182,'Parent of',1,NULL,NULL,NULL), + (286,143,1,'b_a',182,'Parent of',114,'Child of',1,NULL,NULL,NULL), + (287,144,1,'a_b',32,'Child of',182,'Parent of',1,NULL,NULL,NULL), + (288,144,1,'b_a',182,'Parent of',32,'Child of',1,NULL,NULL,NULL), + (289,145,4,'a_b',32,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL), + (290,145,4,'b_a',114,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL), + (291,146,8,'a_b',182,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (292,146,8,'b_a',23,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL), + (293,147,8,'a_b',114,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (294,147,8,'b_a',23,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL), + (295,148,8,'a_b',32,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (296,148,8,'b_a',23,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL), + (297,149,7,'a_b',180,'Head of Household for',23,'Head of Household is',1,NULL,NULL,NULL), + (298,149,7,'b_a',23,'Head of Household is',180,'Head of Household for',1,NULL,NULL,NULL), + (299,150,2,'a_b',182,'Spouse of',180,'Spouse of',1,NULL,NULL,NULL), + (300,150,2,'b_a',180,'Spouse of',182,'Spouse of',1,NULL,NULL,NULL), + (301,151,1,'a_b',39,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (302,151,1,'b_a',18,'Parent of',39,'Child of',1,NULL,NULL,NULL), + (303,152,1,'a_b',41,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (304,152,1,'b_a',18,'Parent of',41,'Child of',1,NULL,NULL,NULL), + (305,153,1,'a_b',39,'Child of',90,'Parent of',1,NULL,NULL,NULL), + (306,153,1,'b_a',90,'Parent of',39,'Child of',1,NULL,NULL,NULL), + (307,154,1,'a_b',41,'Child of',90,'Parent of',1,NULL,NULL,NULL), + (308,154,1,'b_a',90,'Parent of',41,'Child of',1,NULL,NULL,NULL), + (309,155,4,'a_b',41,'Sibling of',39,'Sibling of',1,NULL,NULL,NULL), + (310,155,4,'b_a',39,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL), + (311,156,8,'a_b',90,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (312,156,8,'b_a',51,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL), + (313,157,8,'a_b',39,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (314,157,8,'b_a',51,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL), + (315,158,8,'a_b',41,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (316,158,8,'b_a',51,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), + (317,159,7,'a_b',18,'Head of Household for',51,'Head of Household is',0,NULL,NULL,NULL), + (318,159,7,'b_a',51,'Head of Household is',18,'Head of Household for',0,NULL,NULL,NULL), + (319,160,2,'a_b',90,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL), + (320,160,2,'b_a',18,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL), + (321,161,1,'a_b',196,'Child of',2,'Parent of',1,NULL,NULL,NULL), + (322,161,1,'b_a',2,'Parent of',196,'Child of',1,NULL,NULL,NULL), + (323,162,1,'a_b',195,'Child of',2,'Parent of',1,NULL,NULL,NULL), + (324,162,1,'b_a',2,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (325,163,1,'a_b',196,'Child of',121,'Parent of',1,NULL,NULL,NULL), + (326,163,1,'b_a',121,'Parent of',196,'Child of',1,NULL,NULL,NULL), + (327,164,1,'a_b',195,'Child of',121,'Parent of',1,NULL,NULL,NULL), + (328,164,1,'b_a',121,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (329,165,4,'a_b',195,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL), + (330,165,4,'b_a',196,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL), + (331,166,8,'a_b',121,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (332,166,8,'b_a',43,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL), + (333,167,8,'a_b',196,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (334,167,8,'b_a',43,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL), + (335,168,8,'a_b',195,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (336,168,8,'b_a',43,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL), + (337,169,7,'a_b',2,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL), + (338,169,7,'b_a',43,'Head of Household is',2,'Head of Household for',0,NULL,NULL,NULL), + (339,170,2,'a_b',121,'Spouse of',2,'Spouse of',0,NULL,NULL,NULL), + (340,170,2,'b_a',2,'Spouse of',121,'Spouse of',0,NULL,NULL,NULL), + (341,171,1,'a_b',61,'Child of',154,'Parent of',1,NULL,NULL,NULL), + (342,171,1,'b_a',154,'Parent of',61,'Child of',1,NULL,NULL,NULL), + (343,172,1,'a_b',63,'Child of',154,'Parent of',1,NULL,NULL,NULL), + (344,172,1,'b_a',154,'Parent of',63,'Child of',1,NULL,NULL,NULL), + (345,173,1,'a_b',61,'Child of',12,'Parent of',1,NULL,NULL,NULL), + (346,173,1,'b_a',12,'Parent of',61,'Child of',1,NULL,NULL,NULL), + (347,174,1,'a_b',63,'Child of',12,'Parent of',1,NULL,NULL,NULL), + (348,174,1,'b_a',12,'Parent of',63,'Child of',1,NULL,NULL,NULL), + (349,175,4,'a_b',63,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL), + (350,175,4,'b_a',61,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL), + (351,176,8,'a_b',12,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (352,176,8,'b_a',75,'Household Member is',12,'Household Member of',1,NULL,NULL,NULL), + (353,177,8,'a_b',61,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (354,177,8,'b_a',75,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL), + (355,178,8,'a_b',63,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (356,178,8,'b_a',75,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL), + (357,179,7,'a_b',154,'Head of Household for',75,'Head of Household is',1,NULL,NULL,NULL), + (358,179,7,'b_a',75,'Head of Household is',154,'Head of Household for',1,NULL,NULL,NULL), + (359,180,2,'a_b',12,'Spouse of',154,'Spouse of',1,NULL,NULL,NULL), + (360,180,2,'b_a',154,'Spouse of',12,'Spouse of',1,NULL,NULL,NULL), + (361,181,1,'a_b',175,'Child of',47,'Parent of',1,NULL,NULL,NULL), + (362,181,1,'b_a',47,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (363,182,1,'a_b',85,'Child of',47,'Parent of',1,NULL,NULL,NULL), + (364,182,1,'b_a',47,'Parent of',85,'Child of',1,NULL,NULL,NULL), + (365,183,1,'a_b',175,'Child of',181,'Parent of',1,NULL,NULL,NULL), + (366,183,1,'b_a',181,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (367,184,1,'a_b',85,'Child of',181,'Parent of',1,NULL,NULL,NULL), + (368,184,1,'b_a',181,'Parent of',85,'Child of',1,NULL,NULL,NULL), + (369,185,4,'a_b',85,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL), + (370,185,4,'b_a',175,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL), + (371,186,8,'a_b',181,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (372,186,8,'b_a',65,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL), + (373,187,8,'a_b',175,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (374,187,8,'b_a',65,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL), + (375,188,8,'a_b',85,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (376,188,8,'b_a',65,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL), + (377,189,7,'a_b',47,'Head of Household for',65,'Head of Household is',0,NULL,NULL,NULL), + (378,189,7,'b_a',65,'Head of Household is',47,'Head of Household for',0,NULL,NULL,NULL), + (379,190,2,'a_b',181,'Spouse of',47,'Spouse of',0,NULL,NULL,NULL), + (380,190,2,'b_a',47,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL), + (381,191,1,'a_b',111,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (382,191,1,'b_a',36,'Parent of',111,'Child of',1,NULL,NULL,NULL), + (383,192,1,'a_b',152,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (384,192,1,'b_a',36,'Parent of',152,'Child of',1,NULL,NULL,NULL), + (385,193,1,'a_b',111,'Child of',118,'Parent of',1,NULL,NULL,NULL), + (386,193,1,'b_a',118,'Parent of',111,'Child of',1,NULL,NULL,NULL), + (387,194,1,'a_b',152,'Child of',118,'Parent of',1,NULL,NULL,NULL), + (388,194,1,'b_a',118,'Parent of',152,'Child of',1,NULL,NULL,NULL), + (389,195,4,'a_b',152,'Sibling of',111,'Sibling of',1,NULL,NULL,NULL), + (390,195,4,'b_a',111,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL), + (391,196,8,'a_b',118,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (392,196,8,'b_a',159,'Household Member is',118,'Household Member of',1,NULL,NULL,NULL), + (393,197,8,'a_b',111,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (394,197,8,'b_a',159,'Household Member is',111,'Household Member of',1,NULL,NULL,NULL), + (395,198,8,'a_b',152,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (396,198,8,'b_a',159,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL), + (397,199,7,'a_b',36,'Head of Household for',159,'Head of Household is',0,NULL,NULL,NULL), + (398,199,7,'b_a',159,'Head of Household is',36,'Head of Household for',0,NULL,NULL,NULL), + (399,200,2,'a_b',118,'Spouse of',36,'Spouse of',0,NULL,NULL,NULL), + (400,200,2,'b_a',36,'Spouse of',118,'Spouse of',0,NULL,NULL,NULL), + (401,201,5,'a_b',15,'Employee of',7,'Employer of',1,NULL,NULL,NULL), + (402,201,5,'b_a',7,'Employer of',15,'Employee of',1,NULL,NULL,NULL), + (403,202,5,'a_b',129,'Employee of',19,'Employer of',1,NULL,NULL,NULL), + (404,202,5,'b_a',19,'Employer of',129,'Employee of',1,NULL,NULL,NULL), + (405,203,5,'a_b',33,'Employee of',22,'Employer of',1,NULL,NULL,NULL), + (406,203,5,'b_a',22,'Employer of',33,'Employee of',1,NULL,NULL,NULL), + (407,204,5,'a_b',74,'Employee of',50,'Employer of',1,NULL,NULL,NULL), + (408,204,5,'b_a',50,'Employer of',74,'Employee of',1,NULL,NULL,NULL), + (409,205,5,'a_b',109,'Employee of',52,'Employer of',1,NULL,NULL,NULL), + (410,205,5,'b_a',52,'Employer of',109,'Employee of',1,NULL,NULL,NULL), + (411,206,5,'a_b',185,'Employee of',59,'Employer of',1,NULL,NULL,NULL), + (412,206,5,'b_a',59,'Employer of',185,'Employee of',1,NULL,NULL,NULL), + (413,207,5,'a_b',184,'Employee of',64,'Employer of',1,NULL,NULL,NULL), + (414,207,5,'b_a',64,'Employer of',184,'Employee of',1,NULL,NULL,NULL), + (415,208,5,'a_b',76,'Employee of',67,'Employer of',1,NULL,NULL,NULL), + (416,208,5,'b_a',67,'Employer of',76,'Employee of',1,NULL,NULL,NULL), + (417,209,5,'a_b',85,'Employee of',68,'Employer of',1,NULL,NULL,NULL), + (418,209,5,'b_a',68,'Employer of',85,'Employee of',1,NULL,NULL,NULL), + (419,210,5,'a_b',4,'Employee of',69,'Employer of',1,NULL,NULL,NULL), + (420,210,5,'b_a',69,'Employer of',4,'Employee of',1,NULL,NULL,NULL), + (421,211,5,'a_b',81,'Employee of',77,'Employer of',1,NULL,NULL,NULL), + (422,211,5,'b_a',77,'Employer of',81,'Employee of',1,NULL,NULL,NULL), + (423,212,5,'a_b',187,'Employee of',103,'Employer of',1,NULL,NULL,NULL), + (424,212,5,'b_a',103,'Employer of',187,'Employee of',1,NULL,NULL,NULL), + (425,213,5,'a_b',18,'Employee of',122,'Employer of',1,NULL,NULL,NULL), + (426,213,5,'b_a',122,'Employer of',18,'Employee of',1,NULL,NULL,NULL), + (427,214,5,'a_b',72,'Employee of',133,'Employer of',1,NULL,NULL,NULL), + (428,214,5,'b_a',133,'Employer of',72,'Employee of',1,NULL,NULL,NULL), + (429,215,5,'a_b',115,'Employee of',135,'Employer of',1,NULL,NULL,NULL), + (430,215,5,'b_a',135,'Employer of',115,'Employee of',1,NULL,NULL,NULL), + (431,216,5,'a_b',197,'Employee of',139,'Employer of',1,NULL,NULL,NULL), + (432,216,5,'b_a',139,'Employer of',197,'Employee of',1,NULL,NULL,NULL), + (433,217,5,'a_b',178,'Employee of',146,'Employer of',1,NULL,NULL,NULL), + (434,217,5,'b_a',146,'Employer of',178,'Employee of',1,NULL,NULL,NULL), + (435,218,5,'a_b',96,'Employee of',148,'Employer of',1,NULL,NULL,NULL), + (436,218,5,'b_a',148,'Employer of',96,'Employee of',1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; UNLOCK TABLES; @@ -8027,9 +8031,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_saved_search` WRITE; /*!40000 ALTER TABLE `civicrm_saved_search` DISABLE KEYS */; INSERT INTO `civicrm_saved_search` (`id`, `name`, `label`, `form_values`, `mapping_id`, `search_custom_id`, `api_entity`, `api_params`, `created_id`, `modified_id`, `expires_date`, `created_date`, `modified_date`, `description`) VALUES - (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-07 01:51:25','2023-10-07 01:51:25',NULL), - (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-07 01:51:25','2023-10-07 01:51:25',NULL), - (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-07 01:51:25','2023-10-07 01:51:25',NULL); + (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL), + (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL), + (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL); /*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */; UNLOCK TABLES; @@ -10422,19 +10426,18 @@ INSERT INTO `civicrm_state_province` (`id`, `name`, `abbreviation`, `country_id` (3947,'Buskerud','06',1161,1), (3948,'Finnmark','20',1161,1), (3949,'Hedmark','04',1161,1), - (3950,'Hordaland','12',1161,1), (3951,'Møre og Romsdal','15',1161,1), (3952,'Nordland','18',1161,1), (3953,'Nord-Trøndelag','17',1161,1), (3954,'Oppland','05',1161,1), (3955,'Oslo','03',1161,1), (3956,'Rogaland','11',1161,1), - (3957,'Sogn og Fjordane','14',1161,1), - (3958,'Sør-Trøndelag','16',1161,1), - (3959,'Telemark','06',1161,1), - (3960,'Troms','19',1161,1), - (3961,'Vest-Agder','10',1161,1), - (3962,'Vestfold','07',1161,1), + (3957,'Sør-Trøndelag','16',1161,1), + (3958,'Telemark','06',1161,1), + (3959,'Troms','19',1161,1), + (3960,'Vest-Agder','10',1161,1), + (3961,'Vestfold','07',1161,1), + (3962,'Vestland','46',1161,1), (3963,'Østfold','01',1161,1), (3964,'Jan Mayen','22',1161,1), (3965,'Svalbard','21',1161,1), @@ -12132,90 +12135,90 @@ UNLOCK TABLES; LOCK TABLES `civicrm_subscription_history` WRITE; /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */; INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES - (1,26,2,'2023-04-20 15:20:24','Admin','Added',NULL), - (2,35,2,'2022-12-29 13:22:54','Email','Added',NULL), - (3,201,2,'2023-05-04 04:59:42','Email','Added',NULL), - (4,113,2,'2023-02-04 07:50:04','Email','Added',NULL), - (5,153,2,'2023-06-29 03:06:25','Email','Added',NULL), - (6,81,2,'2022-12-26 10:32:20','Admin','Added',NULL), - (7,61,2,'2023-05-11 10:29:01','Admin','Added',NULL), - (8,5,2,'2023-04-29 02:30:56','Email','Added',NULL), - (9,98,2,'2023-02-18 06:14:47','Email','Added',NULL), - (10,78,2,'2023-05-14 09:18:40','Admin','Added',NULL), - (11,180,2,'2023-06-30 20:28:17','Email','Added',NULL), - (12,182,2,'2023-05-13 06:27:05','Email','Added',NULL), - (13,179,2,'2022-10-09 13:22:29','Admin','Added',NULL), - (14,109,2,'2023-05-12 02:48:06','Email','Added',NULL), - (15,83,2,'2023-01-26 10:07:20','Admin','Added',NULL), - (16,125,2,'2023-06-17 18:55:10','Admin','Added',NULL), - (17,33,2,'2023-02-23 06:35:07','Admin','Added',NULL), - (18,90,2,'2023-04-08 08:33:49','Admin','Added',NULL), - (19,72,2,'2023-01-27 11:48:04','Admin','Added',NULL), - (20,129,2,'2023-08-21 17:38:29','Admin','Added',NULL), - (21,185,2,'2023-05-23 17:29:53','Admin','Added',NULL), - (22,44,2,'2023-08-12 03:39:31','Email','Added',NULL), - (23,169,2,'2023-01-16 02:40:55','Admin','Added',NULL), - (24,96,2,'2023-02-05 13:55:55','Admin','Added',NULL), - (25,114,2,'2023-01-30 16:45:02','Email','Added',NULL), - (26,110,2,'2023-04-27 05:59:55','Admin','Added',NULL), - (27,160,2,'2023-08-18 10:25:14','Admin','Added',NULL), - (28,95,2,'2023-05-18 11:14:21','Admin','Added',NULL), - (29,106,2,'2023-01-19 03:23:23','Email','Added',NULL), - (30,100,2,'2023-06-21 05:46:50','Email','Added',NULL), - (31,20,2,'2022-11-24 04:59:29','Admin','Added',NULL), - (32,155,2,'2023-02-23 09:44:36','Email','Added',NULL), - (33,94,2,'2023-09-09 18:40:24','Admin','Added',NULL), - (34,197,2,'2023-07-21 04:23:19','Email','Added',NULL), - (35,55,2,'2023-06-11 08:01:30','Admin','Added',NULL), - (36,104,2,'2022-10-28 07:08:37','Admin','Added',NULL), - (37,142,2,'2023-05-24 13:50:40','Admin','Added',NULL), - (38,97,2,'2023-02-23 17:04:16','Email','Added',NULL), - (39,120,2,'2023-03-28 21:52:17','Email','Added',NULL), - (40,105,2,'2023-08-30 02:55:31','Email','Added',NULL), - (41,43,2,'2023-07-09 21:08:04','Admin','Added',NULL), - (42,70,2,'2023-07-20 03:49:54','Email','Added',NULL), - (43,119,2,'2023-08-06 12:54:27','Admin','Added',NULL), - (44,16,2,'2022-10-19 14:05:53','Email','Added',NULL), - (45,47,2,'2023-07-08 14:47:36','Email','Added',NULL), - (46,15,2,'2023-06-18 16:47:02','Email','Added',NULL), - (47,199,2,'2022-11-23 10:12:42','Email','Added',NULL), - (48,165,2,'2023-08-25 00:48:12','Email','Added',NULL), - (49,188,2,'2022-11-29 10:28:06','Email','Added',NULL), - (50,146,2,'2022-10-13 20:53:57','Email','Added',NULL), - (51,2,2,'2023-03-31 20:13:03','Email','Added',NULL), - (52,91,2,'2022-12-12 21:39:48','Admin','Added',NULL), - (53,54,2,'2023-09-20 09:33:32','Admin','Added',NULL), - (54,30,2,'2023-03-18 20:13:01','Admin','Added',NULL), - (55,164,2,'2023-09-22 02:14:57','Admin','Added',NULL), - (56,170,2,'2023-07-27 21:42:09','Admin','Added',NULL), - (57,138,2,'2023-06-26 12:02:03','Email','Added',NULL), - (58,156,2,'2022-11-17 19:58:19','Admin','Added',NULL), - (59,177,2,'2023-06-06 23:29:30','Admin','Added',NULL), - (60,7,2,'2023-08-17 04:14:53','Admin','Added',NULL), - (61,143,3,'2022-12-11 17:37:23','Email','Added',NULL), - (62,122,3,'2022-11-05 23:51:49','Email','Added',NULL), - (63,196,3,'2022-11-25 20:27:49','Admin','Added',NULL), - (64,198,3,'2022-12-29 02:48:57','Email','Added',NULL), - (65,181,3,'2022-12-16 16:42:05','Admin','Added',NULL), - (66,102,3,'2023-09-03 11:57:32','Admin','Added',NULL), - (67,167,3,'2023-10-03 22:50:37','Email','Added',NULL), - (68,68,3,'2023-04-07 19:31:00','Email','Added',NULL), - (69,189,3,'2023-08-25 09:59:16','Admin','Added',NULL), - (70,115,3,'2023-06-17 08:11:57','Email','Added',NULL), - (71,12,3,'2023-09-29 16:40:49','Email','Added',NULL), - (72,195,3,'2023-03-30 10:24:21','Email','Added',NULL), - (73,192,3,'2022-12-16 03:52:26','Email','Added',NULL), - (74,36,3,'2023-06-11 22:40:10','Email','Added',NULL), - (75,32,3,'2023-03-10 21:51:06','Email','Added',NULL), - (76,26,4,'2023-05-09 00:52:42','Email','Added',NULL), - (77,5,4,'2023-02-02 16:44:11','Admin','Added',NULL), - (78,83,4,'2023-04-17 01:20:53','Email','Added',NULL), - (79,44,4,'2023-03-06 22:53:03','Email','Added',NULL), - (80,106,4,'2023-08-14 13:42:11','Admin','Added',NULL), - (81,104,4,'2023-03-25 02:23:06','Email','Added',NULL), - (82,119,4,'2022-11-30 01:21:40','Admin','Added',NULL), - (83,146,4,'2023-08-02 09:07:22','Admin','Added',NULL), - (84,202,4,'2022-11-18 03:01:21','Admin','Added',NULL); + (1,31,2,'2023-06-17 06:42:04','Admin','Added',NULL), + (2,25,2,'2023-07-29 17:06:05','Email','Added',NULL), + (3,35,2,'2023-10-10 10:20:46','Email','Added',NULL), + (4,142,2,'2023-05-12 17:24:35','Email','Added',NULL), + (5,5,2,'2023-08-15 17:12:02','Email','Added',NULL), + (6,54,2,'2023-04-21 05:22:06','Email','Added',NULL), + (7,4,2,'2022-11-15 04:45:11','Email','Added',NULL), + (8,82,2,'2023-04-27 11:52:00','Admin','Added',NULL), + (9,9,2,'2023-02-07 22:19:44','Email','Added',NULL), + (10,143,2,'2023-10-15 15:04:37','Email','Added',NULL), + (11,123,2,'2022-12-13 18:45:27','Email','Added',NULL), + (12,78,2,'2023-10-11 10:52:30','Admin','Added',NULL), + (13,70,2,'2023-09-05 08:07:37','Admin','Added',NULL), + (14,173,2,'2023-01-03 19:01:41','Email','Added',NULL), + (15,83,2,'2023-09-22 10:32:39','Email','Added',NULL), + (16,72,2,'2023-08-16 17:46:34','Admin','Added',NULL), + (17,186,2,'2023-07-10 09:04:31','Admin','Added',NULL), + (18,127,2,'2023-08-03 16:56:41','Email','Added',NULL), + (19,101,2,'2022-11-22 16:12:44','Admin','Added',NULL), + (20,30,2,'2023-04-14 11:28:27','Email','Added',NULL), + (21,89,2,'2023-05-01 10:11:01','Email','Added',NULL), + (22,187,2,'2022-10-24 23:34:49','Email','Added',NULL), + (23,194,2,'2023-01-14 21:44:34','Email','Added',NULL), + (24,136,2,'2023-10-06 04:42:02','Email','Added',NULL), + (25,115,2,'2023-05-29 09:42:23','Email','Added',NULL), + (26,129,2,'2022-12-15 17:58:49','Email','Added',NULL), + (27,168,2,'2023-06-01 16:19:03','Email','Added',NULL), + (28,157,2,'2022-12-04 05:28:34','Email','Added',NULL), + (29,172,2,'2023-01-29 07:28:48','Email','Added',NULL), + (30,117,2,'2023-01-18 06:12:33','Admin','Added',NULL), + (31,197,2,'2023-03-09 01:17:18','Email','Added',NULL), + (32,98,2,'2023-02-15 00:17:23','Email','Added',NULL), + (33,185,2,'2023-05-01 02:10:24','Admin','Added',NULL), + (34,132,2,'2023-03-03 17:21:03','Email','Added',NULL), + (35,94,2,'2023-05-25 12:14:49','Email','Added',NULL), + (36,11,2,'2023-06-07 12:12:02','Email','Added',NULL), + (37,178,2,'2023-08-19 05:20:04','Admin','Added',NULL), + (38,144,2,'2023-05-24 13:01:58','Email','Added',NULL), + (39,201,2,'2023-07-02 04:57:33','Admin','Added',NULL), + (40,87,2,'2023-03-03 03:27:18','Admin','Added',NULL), + (41,128,2,'2023-08-22 03:14:14','Email','Added',NULL), + (42,8,2,'2023-08-22 14:29:05','Email','Added',NULL), + (43,33,2,'2023-08-15 06:22:34','Admin','Added',NULL), + (44,42,2,'2022-12-12 14:44:03','Email','Added',NULL), + (45,80,2,'2023-08-12 15:59:31','Email','Added',NULL), + (46,153,2,'2023-02-17 13:31:32','Admin','Added',NULL), + (47,120,2,'2023-01-25 22:23:30','Admin','Added',NULL), + (48,169,2,'2023-10-11 23:30:19','Email','Added',NULL), + (49,130,2,'2023-02-24 19:28:54','Admin','Added',NULL), + (50,28,2,'2023-08-29 17:25:45','Admin','Added',NULL), + (51,93,2,'2023-06-01 23:00:05','Email','Added',NULL), + (52,17,2,'2023-03-05 09:50:24','Admin','Added',NULL), + (53,38,2,'2023-03-09 00:19:48','Email','Added',NULL), + (54,174,2,'2023-08-20 04:36:59','Admin','Added',NULL), + (55,81,2,'2023-06-08 11:19:53','Admin','Added',NULL), + (56,113,2,'2023-07-04 18:46:49','Email','Added',NULL), + (57,71,2,'2022-12-30 21:23:31','Admin','Added',NULL), + (58,56,2,'2023-01-19 09:16:37','Email','Added',NULL), + (59,171,2,'2023-01-20 19:56:48','Admin','Added',NULL), + (60,97,2,'2023-08-05 00:57:20','Admin','Added',NULL), + (61,29,3,'2023-02-12 19:03:55','Email','Added',NULL), + (62,138,3,'2023-07-27 12:54:22','Admin','Added',NULL), + (63,145,3,'2023-03-03 07:51:51','Admin','Added',NULL), + (64,166,3,'2023-07-16 17:54:55','Email','Added',NULL), + (65,107,3,'2022-10-20 20:33:11','Admin','Added',NULL), + (66,105,3,'2022-10-29 13:51:38','Admin','Added',NULL), + (67,167,3,'2023-04-28 14:06:13','Email','Added',NULL), + (68,192,3,'2023-10-16 07:50:41','Email','Added',NULL), + (69,37,3,'2023-06-29 19:06:47','Admin','Added',NULL), + (70,27,3,'2023-09-30 14:03:02','Admin','Added',NULL), + (71,40,3,'2023-06-18 18:53:12','Admin','Added',NULL), + (72,165,3,'2022-12-20 17:01:53','Admin','Added',NULL), + (73,184,3,'2023-08-23 17:10:56','Admin','Added',NULL), + (74,158,3,'2023-06-12 00:08:33','Email','Added',NULL), + (75,102,3,'2022-10-28 05:16:22','Admin','Added',NULL), + (76,31,4,'2022-11-12 19:16:25','Admin','Added',NULL), + (77,82,4,'2023-03-30 02:39:23','Admin','Added',NULL), + (78,83,4,'2023-04-28 09:57:10','Email','Added',NULL), + (79,187,4,'2022-12-28 18:09:01','Email','Added',NULL), + (80,172,4,'2023-06-03 10:17:38','Email','Added',NULL), + (81,11,4,'2023-07-02 11:27:36','Admin','Added',NULL), + (82,33,4,'2022-10-24 06:16:09','Email','Added',NULL), + (83,28,4,'2023-04-21 11:40:19','Admin','Added',NULL), + (84,202,4,'2023-08-23 03:21:20','Email','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -12243,12 +12246,12 @@ UNLOCK TABLES; LOCK TABLES `civicrm_tag` WRITE; /*!40000 ALTER TABLE `civicrm_tag` DISABLE KEYS */; -INSERT INTO `civicrm_tag` (`id`, `name`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES - (1,'Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (2,'Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (3,'Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (4,'Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (5,'Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL); +INSERT INTO `civicrm_tag` (`id`, `name`, `label`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES + (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-10-19 14:22:28'), + (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-10-19 14:22:28'), + (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-10-19 14:22:28'), + (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-10-19 14:22:28'), + (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-10-19 14:22:28'); /*!40000 ALTER TABLE `civicrm_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -12441,22 +12444,19 @@ UNLOCK TABLES; LOCK TABLES `civicrm_website` WRITE; /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */; INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES - (1,31,'http://bfmusicassociation.org',1), - (2,150,'http://vnliteracysolutions.org',1), - (3,133,'http://texasculturealliance.org',1), - (4,168,'http://globalagriculture.org',1), - (5,174,'http://maplehealthfellowship.org',1), - (6,190,'http://floridatechnology.org',1), - (7,74,'http://longvilleactioncenter.org',1), - (8,89,'http://greenaction.org',1), - (9,171,'http://jacksonpeace.org',1), - (10,121,'http://californiacollective.org',1), - (11,50,'http://collegeadvocacy.org',1), - (12,112,'http://jamaicaarts.org',1), - (13,53,'http://communityeducationpartnership.org',1), - (14,111,'http://statesactionsystems.org',1), - (15,17,'http://lancastersustainability.org',1), - (16,51,'http://montierpeace.org',1); + (1,103,'http://oregondevelopment.org',1), + (2,135,'http://sacramentopartners.org',1), + (3,77,'http://globalwellnesscenter.org',1), + (4,22,'http://bostonacademy.org',1), + (5,68,'http://unitedagriculture.org',1), + (6,133,'http://progressivepartnership.org',1), + (7,19,'http://creativesolutions.org',1), + (8,161,'http://progressivenetwork.org',1), + (9,69,'http://globalsportscenter.org',1), + (10,95,'http://ruralagriculturetrust.org',1), + (11,139,'http://ruralinitiative.org',1), + (12,7,'http://hanovereducation.org',1), + (13,148,'http://localtrust.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -12488,12 +12488,13 @@ UNLOCK TABLES; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2023-10-07 1:51:42 +-- Dump completed on 2023-10-19 14:22:31 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | diff --git a/civicrm/templates/CRM/Admin/Form/Job.tpl b/civicrm/templates/CRM/Admin/Form/Job.tpl index d2c0582808..839653cef2 100644 --- a/civicrm/templates/CRM/Admin/Form/Job.tpl +++ b/civicrm/templates/CRM/Admin/Form/Job.tpl @@ -35,57 +35,11 @@ <tr class="crm-job-form-block-run_frequency"> <td class="label">{$form.run_frequency.label}</td><td>{$form.run_frequency.html}</td> </tr> + <tr class="crm-job-form-block-api_entity"> + <td class="label">{$form.api_entity.label}</td><td>{$form.api_entity.html}</td> + </tr> <tr class="crm-job-form-block-api_action"> - <td class="label"><label>{ts}API call:{/ts}</label></td> - <td> - - <div id="fname"><br/> - </div> - <select name="api_entity" type="text" id="api_entity" class="crm-form-select required"> - {crmAPI entity="Entity" var="entities"} - {foreach from=$entities.values item=entity} - <option value="{$entity}"{if $entity eq $form.api_entity.value} selected="selected"{/if}>{$entity}</option> - {/foreach} - </select> - {$form.api_action.html} - - <div class="description">{ts}Put in the API method name. You need to enter pieces of full API function name as described in the documentation.{/ts}</div> -<script> -{literal} -CRM.$(function($) { - function assembleName( ) { - - // dunno yet - var apiName = ""; - - // building prefix - if( $('#api_action').val() == '' ) { - $('#fname').html( "<em>API name will start appearing here as you type in fields below.</em>" ); - return; - } - - var apiPrefix = 'api' - - // building entity - var apiEntity = $('#api_entity').val().replace( /([A-Z])/g, function($1) { - return $1.toLowerCase(); - }); - // building action - var apiAction = $('#api_action').val().replace(/(\_[a-z])/g, function($1) {return $1.toUpperCase().replace('_','');}); - apiName = apiPrefix + '.' + apiEntity + '.' + apiAction; - $('#fname').text( apiName ); - } - - // bind to different events to build API name live - $('#api_entity').change(assembleName) - $('#api_action').change(assembleName).keyup(assembleName); - assembleName(); -}); - -{/literal} -</script> - - </td> + <td class="label">{$form.api_action.label}</td><td>{$form.api_action.html}</td> </tr> <tr class="crm-job-form-block-parameters"> <td class="label">{$form.parameters.label}<br />{docURL page="user/initial-set-up/scheduled-jobs/#parameters"}</td> diff --git a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl index 3750619f9b..c7862dcdc1 100644 --- a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl +++ b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl @@ -78,14 +78,14 @@ <div class="clear"></div> <div class='html'> {$form.msg_html.html|crmAddClass:huge} - <div class="description">{ts}An HTML formatted version of this message will be sent to contacts whose Email Format preference is 'HTML' or 'Both'.{/ts}</div> </div> </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> <div id="msg_text_section" class="crm-accordion-wrapper crm-plaint_text_email-accordion "> <div class="crm-accordion-header"> - {ts}Plain-Text Format{/ts} + {ts}Optional Plain-Text Format{/ts} + {help id="id-message-plain" file="CRM/Contact/Form/Task/Email.hlp"} </div><!-- /.crm-accordion-header --> <div class="crm-accordion-body"> <div class="helpIcon" id="helptext"> @@ -95,7 +95,6 @@ <div class="clear"></div> <div class='text'> {$form.msg_text.html|crmAddClass:huge} - <div class="description">{ts}Text formatted message.{/ts}</div> </div> </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> diff --git a/civicrm/templates/CRM/Admin/Page/MailSettings.tpl b/civicrm/templates/CRM/Admin/Page/MailSettings.tpl index 7fce4665dd..80b2996e25 100644 --- a/civicrm/templates/CRM/Admin/Page/MailSettings.tpl +++ b/civicrm/templates/CRM/Admin/Page/MailSettings.tpl @@ -61,7 +61,7 @@ <select id="crm-mail-setup" name="crm-mail-setup" class="crm-select2 crm-form-select" aria-label="{ts}Add Mail Account{/ts}"> <option value="" aria-hidden="true">{ts}Add Mail Account{/ts}</option> {foreach from=$setupActions key=setupActionsName item=setupAction} - <option value="{$setupActionsName|escape}">{$setupAction.title|escape}</option> + <option data-url="{$setupAction.url|escape}" value="{$setupActionsName|escape}">{$setupAction.title|escape}</option> {/foreach} </select> </form> @@ -80,8 +80,7 @@ return; } event.stopPropagation(); - var url = CRM.url('civicrm/ajax/setupMailAccount', {type: event.val}); - window.location = url; + window.location = cj(event.choice.element).data('url'); }); </script> {/literal} diff --git a/civicrm/templates/CRM/Admin/Page/Reminders.tpl b/civicrm/templates/CRM/Admin/Page/Reminders.tpl index 0418fd99e4..c04b229e70 100644 --- a/civicrm/templates/CRM/Admin/Page/Reminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/Reminders.tpl @@ -29,7 +29,7 @@ {if $rows and is_array($rows)} {foreach from=$rows item=row} <tr id="action_schedule-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}"> - <td class="crm-scheduleReminders-title crm-editable" data-field="title">{$row.title}</td> + <td class="crm-scheduleReminders-title crm-editable" data-field="title">{$row.title|smarty:nodefaults|purify}</td> <td class="crm-scheduleReminders-value">{$row.entity} - {$row.value}</td> <td class="crm-scheduleReminders-description">{if $row.absolute_date}{$row.absolute_date|crmDate}{else}{$row.start_action_offset} {$row.start_action_unit}{if $row.start_action_offset > 1}{ts}(s){/ts}{/if} {$row.start_action_condition} {$row.entityDate}{/if}</td> <td class="crm-scheduleReminders-title">{$row.status}</td> diff --git a/civicrm/templates/CRM/Case/Form/Activity.tpl b/civicrm/templates/CRM/Case/Form/Activity.tpl index 90744ee0c6..ec74f69622 100644 --- a/civicrm/templates/CRM/Case/Form/Activity.tpl +++ b/civicrm/templates/CRM/Case/Form/Activity.tpl @@ -14,11 +14,9 @@ <div class="messages status no-popup"> <i class="crm-i fa-info-circle" aria-hidden="true"></i> {if $action eq 8} - {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {ts 1=$activityTypeName}Click Delete to move this "%1" activity to the Trash.{/ts} + {ts 1=$activityTypeNameAndLabel.displayLabel|escape}Click Delete to move this "%1" activity to the Trash.{/ts} {else} - {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {ts 1=$activityTypeName}Click Restore to retrieve this "%1" activity from the Trash.{/ts} + {ts 1=$activityTypeNameAndLabel.displayLabel|escape}Click Restore to retrieve this "%1" activity from the Trash.{/ts} {/if} </div><br /> {else} @@ -89,8 +87,7 @@ <tr class="crm-case-activity-form-block-activityTypeName"> <td class="label">{ts}Activity Type{/ts}</td> - {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - <td class="view-value bold">{$activityTypeName|escape}</td> + <td class="view-value bold">{$activityTypeNameAndLabel.displayLabel|escape}</td> </tr> <tr class="crm-case-activity-form-block-source_contact_id"> <td class="label">{$form.source_contact_id.label}</td> diff --git a/civicrm/templates/CRM/Case/Form/CaseView.tpl b/civicrm/templates/CRM/Case/Form/CaseView.tpl index bb5d90f058..dc6b80ea40 100644 --- a/civicrm/templates/CRM/Case/Form/CaseView.tpl +++ b/civicrm/templates/CRM/Case/Form/CaseView.tpl @@ -304,8 +304,8 @@ {foreach from=$tagSetTags item=displayTagset} <p class="crm-block crm-content-block crm-case-caseview-display-tagset"> - <strong>{$displayTagset.name}:</strong> - {', '|implode:$displayTagset.items} + <strong>{$displayTagset.label}:</strong> + {', '|implode:$displayTagset.items|escape} </p> {/foreach} diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl index 0aaf0d3942..db66fdc283 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl @@ -11,26 +11,28 @@ <table class="form-layout-compressed"> {crmRegion name="contact-form-edit-organization"} <tr> - <td>{ - $form.organization_name.label}<br/> + <td> + {$form.organization_name.label|smarty:nodefaults|purify}<br/> {$form.organization_name.html} </td> <td> - {$form.legal_name.label}<br/> + {$form.legal_name.label|smarty:nodefaults|purify}<br/> {$form.legal_name.html} </td> <td> - {$form.nick_name.label}<br/> + {$form.nick_name.label|smarty:nodefaults|purify}<br/> {$form.nick_name.html} </td> <td> - {$form.sic_code.label}<br/> + {$form.sic_code.label|smarty:nodefaults|purify}<br/> {$form.sic_code.html} </td> - <td> - {$form.contact_sub_type.label}<br /> - {$form.contact_sub_type.html} - </td> + {if array_key_exists('contact_sub_type', $form)} + <td> + {$form.contact_sub_type.label|smarty:nodefaults|purify}<br /> + {$form.contact_sub_type.html} + </td> + {/if} </tr> {/crmRegion} </table> diff --git a/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl b/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl index 26544de0ee..ded4c5981b 100644 --- a/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl +++ b/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl @@ -30,8 +30,7 @@ {if $key eq 'privacy'} <div class="crm-summary-row"> <div class="crm-label"> </div> - <div class="crm-content">{ - $form.is_opt_out.html} {$form.is_opt_out.label} {help id="id-optOut" file="CRM/Contact/Form/Contact.hlp"} + <div class="crm-content">{$form.is_opt_out.html} {$form.is_opt_out.label} {help id="id-optOut" file="CRM/Contact/Form/Contact.hlp"} </div> </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Email.hlp b/civicrm/templates/CRM/Contact/Form/Task/Email.hlp index e9a357730b..c2f28034ba 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Email.hlp +++ b/civicrm/templates/CRM/Contact/Form/Task/Email.hlp @@ -55,7 +55,15 @@ be an equal sign and a number (=12). The number (12 in this example) is the id o {ts}Message Text{/ts} {/htxt} {htxt id="id-message-text"} -<p>{ts}You can send your email as a simple text-only message, as an HTML formatted message, or both. Text-only messages are sufficient for most email communication - and some recipients may prefer not to receive HTML formatted messages.{/ts}</p> -<p>{ts}HTML messages have more visual impact, allow you to include images, and may be more readable if you are including links to website pages. However, different email programs may interpret HTML formats differently - so use this option cautiously unless you have a template format that has been tested with different web and desktop email programs.{/ts}</p> +<p>{ts}You can include tokens in your message{/ts}</p> <p>{docURL page="user/common-workflows/tokens-and-mail-merge" text=$tokentext}</p> {/htxt} +{htxt id="id-message-text-title"} + {ts}Message Plain Text{/ts} +{/htxt} +{htxt id="id-message-plain"} +<p>{ts}Configuring a plain text version of a message is optional will be removed from CiviCRM in a future version.{/ts}</p> +<p>{ts}If the text version is blank one will be automatically generated from the HTML content.{/ts}</p> +{capture assign=plainText}{ts}Find out more about including a plain text version{/ts}{/capture} +<p>{docURL page="user/common-workflows/tokens-and-mail-merge" text=$plainText}</p> +{/htxt} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl index 5b13d71471..5d8492e35d 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl @@ -276,14 +276,10 @@ </fieldset> {/if} - {if $contributeMode NEQ 'notify' and $is_monetary and ( $amount GT 0 OR $minimum_fee GT 0 )} {* In 'notify mode, contributor is taken to processor payment forms next *} + {if $confirmText} <div class="messages status continue_instructions-section"> <p> - {if $is_pay_later OR $amount LE 0.0} - {ts 1=$button}Your transaction will not be completed until you click the <strong>%1</strong> button. Please click the button one time only.{/ts} - {else} - {ts 1=$button}Your contribution will not be completed until you click the <strong>%1</strong> button. Please click the button one time only.{/ts} - {/if} + {$confirmText} </p> </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index 08c54321bc..33ff5ce7f3 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -17,12 +17,10 @@ <script type="text/javascript"> // Putting these functions directly in template so they are available for standalone forms - function useAmountOther() { - var priceset = {/literal}{if $contriPriceset}'{$contriPriceset}'{else}0{/if}{literal}; - - for( i=0; i < document.Main.elements.length; i++ ) { + function useAmountOther(mainPriceFieldName) { + for( i=0; i < document.Main.elements.length; i++ ) { element = document.Main.elements[i]; - if ( element.type == 'radio' && element.name == priceset ) { + if ( element.type == 'radio' && element.name === mainPriceFieldName ) { if (element.value == '0' ) { element.click(); } @@ -33,12 +31,9 @@ } } - function clearAmountOther() { - var priceset = {/literal}{if $priceset}'#{$priceset}'{else}0{/if}{literal} - if( priceset ){ - cj(priceset).val(''); - cj(priceset).blur(); - } + function clearAmountOther(otherPriceFieldName) { + cj('#' + otherPriceFieldName).val(''); + cj('#' + otherPriceFieldName).blur(); if (document.Main.amount_other == null) return; // other_amt field not present; do nothing document.Main.amount_other.value = ""; } @@ -71,7 +66,7 @@ </div> {include file="CRM/common/cidzero.tpl"} - {if $islifetime or $ispricelifetime} + {if $isShowMembershipBlock && $hasExistingLifetimeMembership} <div class="help">{ts}You have a current Lifetime Membership which does not need to be renewed.{/ts}</div> {/if} @@ -118,13 +113,13 @@ {$form.pledge_frequency_unit.html}<span id="pledge_installments_num"> {ts}for{/ts} {$form.pledge_installments.html} {ts}installments.{/ts}</span> </div> <div class="clear"></div> - {if $start_date_editable} + {if array_key_exists('start_date', $form) && $start_date_editable} {if $is_date} <div class="label">{$form.start_date.label}</div><div class="content">{$form.start_date.html}</div> {else} <div class="label">{$form.start_date.label}</div><div class="content">{$form.start_date.html}</div> {/if} - {else} + {elseif array_key_exists('start_date', $form)} <div class="label">{$form.start_date.label}</div> <div class="content">{$start_date_display|crmDate:'%b %e, %Y'}</div> {/if} @@ -188,7 +183,7 @@ {include file="CRM/common/CMSUser.tpl"} </div> <div class="crm-public-form-item crm-section premium_block-section"> - {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution"} + {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution" preview=false} </div> {if $honoreeProfileFields && $honoreeProfileFields|@count} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl index 7077c12d75..309ced9349 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl @@ -114,7 +114,7 @@ {literal} <script> CRM.$(function($) { - var is_separate_payment = {/literal}{if $membershipBlock.is_separate_payment}{$membershipBlock.is_separate_payment}{else}0{/if}{literal}; + var is_separate_payment = {/literal}{if $isShowMembershipBlock && $membershipBlock.is_separate_payment}{$membershipBlock.is_separate_payment}{else}0{/if}{literal}; // select a new premium function select_premium(premium_id) { diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl index 7f2d19e901..2feecd4200 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl @@ -199,12 +199,7 @@ {literal} <script type="text/javascript"> - var futurePaymentProcessorMapper = []; - {/literal}{if $futurePaymentProcessor} - {foreach from=$futurePaymentProcessor item="futurePaymentProcessor" key="index"}{literal} - futurePaymentProcessorMapper[{/literal}{$index}{literal}] = '{/literal}{$futurePaymentProcessor}{literal}'; - {/literal}{/foreach} - {literal} + {/literal}{if $futurePaymentProcessor}{literal} CRM.$(function($) { var defId = $('input[name="pledge_default_toggle"][value="contribution_date"]').attr('id'); var calId = $('input[name="pledge_default_toggle"][value="calendar_date"]').attr('id'); @@ -382,13 +377,13 @@ function showAdjustRecurring( paymentProcessorIds ) { var display = true; cj.each(paymentProcessorIds, function(k, id){ - if( cj.inArray(id, futurePaymentProcessorMapper) == -1 ) { - display = false; - } + if( cj.inArray(parseInt(id), {/literal}{$futurePaymentProcessor}{literal}) == -1 ) { + display = false; + } }); if(display) { - cj( '#adjustRecurringFields' ).show( ); + cj('#adjustRecurringFields').show(); } else { if ( cj( '#adjust_recur_start_date' ).prop('checked' ) ) { cj( '#adjust_recur_start_date' ).prop('checked', false); diff --git a/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl b/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl index 24f0e5b7f4..34dd650732 100644 --- a/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl +++ b/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl @@ -14,7 +14,12 @@ <td class="html-adjust description">{$element.help_pre}</td> </tr> {/if} -{if $element.options_per_line} +{if $element.html_type === 'Hidden'} + {* Hidden field - render in hidden row *} + <tr class="custom_field-row {$element.element_name}-row hiddenElement"> + <td>{$formElement.html}</td> + </tr> +{elseif $element.options_per_line} <tr class="custom_field-row {$element.element_name}-row"> <td class="label">{$formElement.label}{if $element.help_post}{help id=$element.id file="CRM/Custom/Form/CustomField.hlp" title=$element.label}{/if}</td> <td class="html-adjust"> diff --git a/civicrm/templates/CRM/Custom/Form/Field.tpl b/civicrm/templates/CRM/Custom/Form/Field.tpl index 4792fdc39f..e4476c6442 100644 --- a/civicrm/templates/CRM/Custom/Form/Field.tpl +++ b/civicrm/templates/CRM/Custom/Form/Field.tpl @@ -270,7 +270,7 @@ } if (_.includes(['String', 'Int', 'Float', 'Money'], dataType)) { - if (htmlType !== "Text") { + if (!['Text', 'Hidden'].includes(htmlType)) { $("#showoption, #searchable", $form).show(); $("#hideDefault, #hideDesc, #searchByRange", $form).hide(); } else { @@ -289,7 +289,7 @@ $("#showoption").hide(); } - if (_.includes(['String', 'Int', 'Float', 'Money'], dataType) && htmlType !== 'Text') { + if (_.includes(['String', 'Int', 'Float', 'Money'], dataType) && !['Text', 'Hidden'].includes(htmlType)) { if (serialize) { $('div[id^=checkbox]', '#optionField').show(); $('div[id^=radio]', '#optionField').hide(); diff --git a/civicrm/templates/CRM/Custom/Form/Group.tpl b/civicrm/templates/CRM/Custom/Form/Group.tpl index cfde76ea87..d38c203125 100644 --- a/civicrm/templates/CRM/Custom/Form/Group.tpl +++ b/civicrm/templates/CRM/Custom/Form/Group.tpl @@ -172,7 +172,7 @@ CRM.$(function($) { // When changing or initializing the `is_multiple` field // Check if this set supports multiple records and adjust other options accordingly function handleMultiple() { - if ($(this).is(':checked')) { + if ($(this).is(':checked') || ($(this).attr('type') === 'hidden' && $(this).val() === '1')) { $('tr.field-max_multiple', $form).show(); if (tabWithTableOption) { $('select[name=style]', $form).append(tabWithTableOption); diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl index 7162790c3e..e3bebc96ea 100644 --- a/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl +++ b/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl @@ -18,10 +18,6 @@ {/if} <div class="crm-block crm-form-block crm-event-manage-fee-form-block"> <table class="form-layout"> - <tr class="crm-event-manage-fee-form-block-title"> - <td class="label">{$form.title.label}</td> - <td>{$form.title.html}</td> - </tr> <tr class="crm-event-manage-fee-form-block-is_monetary"> <td class="label">{$form.is_monetary.label}</td> <td>{$form.is_monetary.html}</td> diff --git a/civicrm/templates/CRM/Event/Page/DashBoard.tpl b/civicrm/templates/CRM/Event/Page/DashBoard.tpl index 56587d3880..1fb1c38ce3 100644 --- a/civicrm/templates/CRM/Event/Page/DashBoard.tpl +++ b/civicrm/templates/CRM/Event/Page/DashBoard.tpl @@ -37,7 +37,7 @@ <tbody> {foreach from=$eventSummary.events item=values key=id} <tr class="crm-event_{$id}"> - <td class="crm-event-eventTitle"><a href="{crmURL p="civicrm/event/info" q="reset=1&id=`$id`"}" title="{ts}View event info page{/ts}">{$values.eventTitle}</a> + <td class="crm-event-eventTitle"><a href="{crmURL p="civicrm/event/info" q="reset=1&id=`$id`"}" title="{ts}View event info page{/ts}">{$values.eventTitle|smarty:nodefaults|purify}</a> {if $values.is_repeating_event} <br/> {if $values.is_repeating_event eq $id} diff --git a/civicrm/templates/CRM/Form/validate.tpl b/civicrm/templates/CRM/Form/validate.tpl index 297364a9d6..4740d0b687 100644 --- a/civicrm/templates/CRM/Form/validate.tpl +++ b/civicrm/templates/CRM/Form/validate.tpl @@ -9,7 +9,7 @@ *} {* Initialize jQuery validate on a form *} {* Extra params and functions may be added to the CRM.validate object before this template is loaded *} -{if empty($crm_form_validate_included) && ((isset($smarty.get.snippet|smarty:nodefaults) && $smarty.get.snippet neq 'json') || !isset($smarty.get.snippet|smarty:nodefaults)) && !empty($form) && !empty($form.formClass)} +{if empty($crm_form_validate_included) && $snippet_type neq 'json' && !empty($form) && !empty($form.formClass)} {assign var=crm_form_validate_included value=1} {literal} <script type="text/javascript"> diff --git a/civicrm/templates/CRM/PCP/Form/PCP.tpl b/civicrm/templates/CRM/PCP/Form/PCP.tpl index 156667116d..c96b51bafb 100644 --- a/civicrm/templates/CRM/PCP/Form/PCP.tpl +++ b/civicrm/templates/CRM/PCP/Form/PCP.tpl @@ -45,7 +45,7 @@ <td>{$form.notify_email.html} {help id="id-notify"}</td> </tr> <tr class="crm-contribution-contributionpage-pcp-form-block-supporter_profile_id"> - <td class="label">{$form.supporter_profile_id.label}</td> + <td class="label">{$form.supporter_profile_id.label} <span class="crm-marker"> *</span></td> <td>{$form.supporter_profile_id.html} {help id="id-supporter_profile"}</td> </tr> <tr class="crm-contribution-contributionpage-pcp-form-block-owner_notify_id"> diff --git a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl index cf1850b2e8..ef7fd58b08 100644 --- a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl @@ -42,7 +42,7 @@ <td class="label">{$form.amount.label}</td> <td> <span>{$form.currency.html|crmAddClass:eight} {$form.amount.html|crmAddClass:eight}</span> - {if $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} + {if $action EQ 2 && $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} </td> </tr> <tr class="crm-pledge-form-block-installments"> @@ -157,11 +157,6 @@ // load panes function calls for snippet based on id of crm-accordion-header function loadPanes( id ) { var url = "{/literal}{crmURL p='civicrm/contact/view/pledge' q='snippet=4&formType=' h=0}{literal}" + id; - {/literal} - {if $contributionMode} - url = url + "&mode={$contributionMode}"; - {/if} - {literal} if ( ! $('div.'+id).html() ) { var loading = '<img src="{/literal}{$config->resourceBase}i/loading.gif{literal}" alt="{/literal}{ts escape='js'}loading{/ts}{literal}" /> {/literal}{ts escape='js'}Loading{/ts}{literal}...'; $('div.'+id).html(loading); diff --git a/civicrm/templates/CRM/Pledge/Form/Selector.tpl b/civicrm/templates/CRM/Pledge/Form/Selector.tpl index 00c7ea84a8..af4a493801 100644 --- a/civicrm/templates/CRM/Pledge/Form/Selector.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Selector.tpl @@ -49,7 +49,7 @@ {/if} <td class="right">{$row.pledge_amount|crmMoney:$row.pledge_currency}</td> <td class="right">{$row.pledge_total_paid|crmMoney:$row.pledge_currency}</td> - <td class="right">{($row.pledge_amount-$row.pledge_total_paid)|crmMoney:$row.pledge_currency}</td> + <td class="right">{$row.pledge_balance_amount|crmMoney:$row.pledge_currency}</td> <td>{$row.pledge_financial_type}</td> <td>{$row.pledge_create_date|truncate:10:''|crmDate}</td> <td>{$row.pledge_next_pay_date|truncate:10:''|crmDate}</td> diff --git a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl index e335b6a883..dd3f09a66f 100644 --- a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl @@ -24,7 +24,7 @@ <tr id='rowid{$row.pledge_id}' class="{cycle values="odd-row,even-row"} {if $row.pledge_status_name eq 'Overdue'} disabled{/if} crm-pledge crm-pledge_{$row.pledge_id} "> <td class="crm-pledge-pledge_amount">{$row.pledge_amount|crmMoney:$row.pledge_currency}</td> <td class="crm-pledge-pledge_total_paid">{$row.pledge_total_paid|crmMoney:$row.pledge_currency}</td> - <td class="crm-pledge-pledge_amount">{$row.pledge_amount-$row.pledge_total_paid|crmMoney:$row.pledge_currency}</td> + <td class="crm-pledge-pledge_amount">{$row.pledge_balance_amount|crmMoney:$row.pledge_currency}</td> <td class="crm-pledge-pledge_contribution_type">{$row.pledge_financial_type}</td> <td class="crm-pledge-pledge_create_date">{$row.pledge_create_date|truncate:10:''|crmDate}</td> <td class="crm-pledge-pledge_next_pay_date">{$row.pledge_next_pay_date|truncate:10:''|crmDate}</td> diff --git a/civicrm/templates/CRM/Price/Form/Field.tpl b/civicrm/templates/CRM/Price/Form/Field.tpl index aee89a9db9..74a9cc2718 100644 --- a/civicrm/templates/CRM/Price/Form/Field.tpl +++ b/civicrm/templates/CRM/Price/Form/Field.tpl @@ -81,12 +81,12 @@ <div class="crm-block crm-form-block crm-price-field-form-block"> <table class="form-layout"> <tr class="crm-price-field-form-block-label"> - <td class="label">{$form.label.label}</td> + <td class="label">{$form.label.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field' field='label' id=$fid}{/if}{$form.label.html} </td> </tr> <tr class="crm-price-field-form-block-html_type"> - <td class="label">{$form.html_type.label}</td> + <td class="label">{$form.html_type.label|smarty:nodefaults|purify}</td> <td>{$form.html_type.html} </td> </tr> @@ -103,7 +103,7 @@ <div id="price-block" {if $action eq 2 && $form.html_type.value.0 eq 'Text'} class="show-block" {else} class="hiddenElement" {/if}> <table class="form-layout"> <tr class="crm-price-field-form-block-price"> - <td class="label">{$form.price.label} <span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td> + <td class="label">{$form.price.label|smarty:nodefaults|purify} <span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td> <td>{$form.price.html} {if $action neq 4} <br /><span class="description">{ts}Unit price.{/ts}</span> {help id="id-negative"} @@ -111,25 +111,25 @@ </td> </tr> <tr class="crm-price-field-form-block-non-deductible-amount"> - <td class="label">{$form.non_deductible_amount.label}</td> + <td class="label">{$form.non_deductible_amount.label|smarty:nodefaults|purify}</td> <td>{$form.non_deductible_amount.html}</td> </tr> {if $useForEvent} <tr class="crm-price-field-form-block-count"> - <td class="label">{$form.count.label}</td> + <td class="label">{$form.count.label|smarty:nodefaults|purify}</td> <td>{$form.count.html}<br /> <span class="description">{ts}Enter a value here if you want to increment the number of registered participants per unit against the maximum number of participants allowed for this event.{/ts}</span> {help id="id-participant-count"} </td> </tr> <tr class="crm-price-field-form-block-max_value"> - <td class="label">{$form.max_value.label}</td> + <td class="label">{$form.max_value.label|smarty:nodefaults|purify}</td> <td>{$form.max_value.html} </td> </tr> {/if} <tr class="crm-price-field-form-block-financial_type"> - <td class="label">{$form.financial_type_id.label}<span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td></td> + <td class="label">{$form.financial_type_id.label|smarty:nodefaults|purify}<span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td></td> <td> {if !$financialType} {capture assign=ftUrl}{crmURL p='civicrm/admin/financial/financialType' q="reset=1"}{/capture} @@ -169,7 +169,7 @@ </tr> <tr class="crm-price-field-form-block-help_pre"> - <td class="label">{$form.help_pre.label}</td> + <td class="label">{$form.help_pre.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field' field='help_pre' id=$fid}{/if}{$form.help_pre.html|crmAddClass:huge} {if $action neq 4} <div class="description">{ts}Explanatory text displayed to users at the beginning of this field.{/ts}</div> @@ -178,7 +178,7 @@ </tr> <tr class="crm-price-field-form-block-help_post"> - <td class="label">{$form.help_post.label}</td> + <td class="label">{$form.help_post.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field' field='help_post' id=$fid}{/if}{$form.help_post.html|crmAddClass:huge} {if $action neq 4} <div class="description">{ts}Explanatory text displayed to users below this field.{/ts}</div> @@ -243,7 +243,7 @@ {/literal} {* Give link to view/edit choice options if in edit mode and html_type is one of the multiple choice types *} -{if $action eq 2 AND ($form.data_type.value.1.0 eq 'CheckBox' OR $form.data_type.value.1.0 eq 'Radio' OR $form.data_type.value.1.0 eq 'Select')} +{if $action eq 2 AND array_key_exists('data_type', $form) && ($form.data_type.value.1.0 eq 'CheckBox' OR $form.data_type.value.1.0 eq 'Radio' OR $form.data_type.value.1.0 eq 'Select')} <div class="action-link"> <a href="{crmURL p="civicrm/admin/event/field/option" q="reset=1&action=browse&fid=`$fid`"}" class="button"><span>{ts}Multiple Choice Options{/ts}</span></a> </div> diff --git a/civicrm/templates/CRM/Price/Form/Option.tpl b/civicrm/templates/CRM/Price/Form/Option.tpl index 52b8ad7a60..2627e1deb8 100644 --- a/civicrm/templates/CRM/Price/Form/Option.tpl +++ b/civicrm/templates/CRM/Price/Form/Option.tpl @@ -28,11 +28,11 @@ </tr> {/if} <tr class="crm-price-option-form-block-label"> - <td class="label">{$form.label.label}</td> + <td class="label">{$form.label.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='label' id=$optionId}{/if}{$form.label.html}</td> </tr> <tr class="crm-price-option-form-block-amount"> - <td class="label">{$form.amount.label}</td> + <td class="label">{$form.amount.label|smarty:nodefaults|purify}</td> <td>{$form.amount.html}</td> </tr> <tr class="crm-price-option-form-block-non-deductible-amount"> @@ -44,11 +44,11 @@ <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='description' id=$optionId}{/if}{$form.description.html}</td> </tr> <tr class="crm-price-option-form-block-help-pre"> - <td class="label">{$form.help_pre.label}</td> + <td class="label">{$form.help_pre.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='help_pre' id=$optionId}{/if}{$form.help_pre.html}</td> </tr> <tr class="crm-price-option-form-block-help-post"> - <td class="label">{$form.help_post.label}</td> + <td class="label">{$form.help_post.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='help_post' id=$optionId}{/if}{$form.help_post.html}</td> </tr> <tr class="crm-price-option-form-block-financial-type"> diff --git a/civicrm/templates/CRM/Price/Form/PriceSet.tpl b/civicrm/templates/CRM/Price/Form/PriceSet.tpl index 67c1e9be22..6f64069ee4 100644 --- a/civicrm/templates/CRM/Price/Form/PriceSet.tpl +++ b/civicrm/templates/CRM/Price/Form/PriceSet.tpl @@ -10,7 +10,7 @@ {crmRegion name="price-set-1"} <div id="priceset" class="crm-section price_set-section"> {if $priceSet.help_pre} - <div class="messages help">{$priceSet.help_pre}</div> + <div class="messages help">{$priceSet.help_pre|purify}</div> {/if} {assign var='adminFld' value=false} @@ -28,12 +28,12 @@ {foreach from=$priceSet.fields item=element key=field_id} {* Skip 'Admin' visibility price fields WHEN this tpl is used in online registration unless user has administer CiviCRM permission. *} {if $element.visibility EQ 'public' || ($element.visibility EQ 'admin' && $adminFld EQ true) || $context eq 'standalone' || $context eq 'advanced' || $context eq 'search' || $context eq 'participant' || $context eq 'dashboard'} - {if $element.help_pre}<span class="content description">{$element.help_pre}</span><br />{/if} - <div class="crm-section {$element.name}-section crm-price-field-id-{$field_id}"> + {if $element.help_pre}<span class="content description">{$element.help_pre|purify}</span><br />{/if} + <div class="crm-section {$element.name|escape}-section crm-price-field-id-{$field_id}"> {if ($element.html_type eq 'CheckBox' || $element.html_type == 'Radio') && $element.options_per_line} {assign var="element_name" value="price_`$field_id`"} - <div class="label">{$form.$element_name.label}</div> - <div class="content {$element.name}-content"> + <div class="label">{$form.$element_name.label|purify}</div> + <div class="content {$element.name|escape}-content"> {assign var="elementCount" value="0"} {assign var="optionCount" value="0"} {assign var="rowCount" value="0"} @@ -43,7 +43,7 @@ {assign var="optionCount" value=$optionCount+1} {if $optionCount == 1} {assign var="rowCount" value=$rowCount+1} - <div class="price-set-row {$element.name}-row{$rowCount}"> + <div class="price-set-row {$element.name|escape}-row{$rowCount}"> {/if} <span class="price-set-option-content">{$form.$element_name.$key.html}</span> {if $optionCount == $element.options_per_line || $elementCount == $form.$element_name|@count} @@ -53,15 +53,15 @@ {/if} {/foreach} {if $element.help_post} - <div class="description">{$element.help_post}</div> + <div class="description">{$element.help_post|purify}</div> {/if} </div> {else} {assign var="element_name" value="price_"|cat:$field_id} - <div class="label">{$form.$element_name.label}</div> - <div class="content {$element.name}-content"> + <div class="label">{$form.$element_name.label|purify}</div> + <div class="content {$element.name|escape}-content"> {$form.$element_name.html} {if $element.html_type eq 'Text'} {if $element.is_display_amounts} @@ -91,18 +91,18 @@ {/if} {/if} {/if} - {if $element.help_post}<br /><span class="description">{$element.help_post}</span>{/if} + {if $element.help_post}<br /><span class="description">{$element.help_post|purify}</span>{/if} </div> {/if} {if !empty($extends) && $extends eq "Membership"} - {if (!empty($priceSet) && $element.id == $priceSet.auto_renew_membership_field) || (empty($priceSet) && $element.name == 'membership_amount')} + {if ($element.id == $priceSet.auto_renew_membership_field)} <div id="allow_auto_renew"> <div class='crm-section auto-renew'> <div class='label'></div> <div class='content' id="auto_renew_section"> {if $form.auto_renew} - {$form.auto_renew.html} {$form.auto_renew.label} + {$form.auto_renew.html} {$form.auto_renew.label|smarty:nodefaults|purify} {/if} </div> <div class='content' id="force_renew" style='display: none'>{ts}Membership will renew automatically.{/ts}</div> @@ -116,7 +116,7 @@ {/foreach} {if $priceSet.help_post} - <div class="messages help">{$priceSet.help_post}</div> + <div class="messages help">{$priceSet.help_post|purify}</div> {/if} {include file="CRM/Price/Form/Calculate.tpl"} diff --git a/civicrm/templates/CRM/Price/Page/Option.tpl b/civicrm/templates/CRM/Price/Page/Option.tpl index 90faab6cfe..1fab0ed7dc 100644 --- a/civicrm/templates/CRM/Price/Page/Option.tpl +++ b/civicrm/templates/CRM/Price/Page/Option.tpl @@ -59,11 +59,11 @@ <tbody> {foreach from=$customOption item=row} <tr id="price_field_value-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}"> - <td class="crm-price-option-label crm-editable" data-field="label">{$row.label}</td> + <td class="crm-price-option-label crm-editable" data-field="label">{$row.label|escape}</td> <td class="crm-price-option-value">{$row.amount|crmMoney}</td> <td class="crm-price-option-non-deductible-amount">{$row.non_deductible_amount|crmMoney}</td> - <td class="crm-price-option-pre-help">{$row.help_pre}</td> - <td class="crm-price-option-post-help">{$row.help_post}</td> + <td class="crm-price-option-pre-help">{$row.help_pre|escape}</td> + <td class="crm-price-option-post-help">{$row.help_post|escape}</td> {if $isEvent} <td class="crm-price-option-count">{$row.count}</td> <td class="crm-price-option-max">{$row.max_value}</td> diff --git a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl index 1fc531b81f..097066de54 100644 --- a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl +++ b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl @@ -67,8 +67,8 @@ <div {if $context neq 'dialog'}id="profilewrap{$field.group_id}"{/if}> <fieldset><legend>{$field.groupTitle}</legend> {/if} - {assign var=fieldset value=`$field.groupTitle`} - {assign var=groupHelpPost value=`$field.groupHelpPost`} + {assign var=fieldset value=$field.groupTitle} + {assign var=groupHelpPost value=$field.groupHelpPost} {if $field.groupHelpPre} <div class="messages help">{$field.groupHelpPre}</div> {/if} diff --git a/civicrm/templates/CRM/Tag/Form/Edit.tpl b/civicrm/templates/CRM/Tag/Form/Edit.tpl index 434ef8ecfb..e70aa192b8 100644 --- a/civicrm/templates/CRM/Tag/Form/Edit.tpl +++ b/civicrm/templates/CRM/Tag/Form/Edit.tpl @@ -12,8 +12,8 @@ {if $action eq 1 or $action eq 2} <table class="form-layout-compressed"> <tr class="crm-tag-form-block-label"> - <td class="label">{$form.name.label}</td> - <td>{$form.name.html}</td> + <td class="label">{$form.label.label}</td> + <td>{$form.label.html}</td> </tr> <tr class="crm-tag-form-block-description"> <td class="label">{$form.description.label}</td> diff --git a/civicrm/templates/CRM/Tag/Page/Tag.tpl b/civicrm/templates/CRM/Tag/Page/Tag.tpl index 4caf65995f..5f37b01b81 100644 --- a/civicrm/templates/CRM/Tag/Page/Tag.tpl +++ b/civicrm/templates/CRM/Tag/Page/Tag.tpl @@ -24,7 +24,7 @@ </li> {foreach from=$tagsets item=set} <li class="ui-corner-all crm-tab-button {if ($set.is_reserved)}is-reserved{/if}" title="{ts 1=', '|implode:$set.used_for_label}Tag Set for %1{/ts}"> - <a href="#tagset-{$set.id}">{$set.name}</a> + <a href="#tagset-{$set.id}">{$set.label}</a> </li> {/foreach} {if call_user_func(array('CRM_Core_Permission','check'), 'administer Tagsets')} @@ -164,7 +164,7 @@ function updateTagset(info) { tagSets[tagset].description = info.description; - tagSets[tagset].name = info.name; + tagSets[tagset].label = info.label; tagSets[tagset].used_for = info.used_for; tagSets[tagset].is_reserved = info.is_reserved; formatTagSet(tagSets[tagset]); @@ -175,7 +175,7 @@ function addTagsetHeader() { $('.tagset-header', $panel).remove(); $panel.prepend(tagsetHeaderTpl(tagSets[tagset])); - $("a[href='#tagset-" + tagset + "']").text(tagSets[tagset].name) + $("a[href='#tagset-" + tagset + "']").text(tagSets[tagset].label) .parent().toggleClass('is-reserved', tagSets[tagset].is_reserved == 1) .attr('title', ts('{/literal}{ts escape='js' 1='%1'}Tag Set for %1{/ts}{literal}', {'1': tagSets[tagset].used_for_label.join(', ')})); } @@ -188,7 +188,7 @@ e.preventDefault(); var sets = [{key: '0', value: '{/literal}{ts escape='js'}Main Tag Tree{/ts}{literal}'}]; _.each(tagSets, function(tagSet) { - sets.push({key: tagSet.id, value: tagSet.name}); + sets.push({key: tagSet.id, value: tagSet.label}); }); CRM.confirm({ title: '{/literal}{ts escape='js'}Move to Tagset{/ts}{literal}', @@ -321,7 +321,7 @@ tagSets[data.tag.id].display_name = user.display_name; formatTagSet(tagSets[data.tag.id]); $("#new-tagset").before('<div id="tagset-' + data.tag.id + '">'); - $("a[href='#new-tagset']").parent().before('<li class="ui-corner-all crm-tab-button"><a href="#tagset-' + data.tag.id + '">' + data.tag.name + '</a></li>'); + $("a[href='#new-tagset']").parent().before('<li class="ui-corner-all crm-tab-button"><a href="#tagset-' + data.tag.id + '">' + data.tag.label + '</a></li>'); $('#mainTabContainer').tabs('refresh'); $('#mainTabContainer').tabs('option', 'active', -2); }); @@ -482,7 +482,7 @@ <div class="crm-entity" data-entity="Tag" data-id="<%= id %>"> <h4> <input type="color" value="<%= data.color %>" <% if (!data.is_reserved || adminReserved) {ldelim} %>title="{ts}Select color{/ts}" <% {rdelim} else {ldelim} %>disabled<% {rdelim} %> /> - <span class="<% if (!data.is_reserved || adminReserved) {ldelim} %>crm-editable<% {rdelim} %>" data-field="name"><%- text %></span> + <span class="<% if (!data.is_reserved || adminReserved) {ldelim} %>crm-editable<% {rdelim} %>" data-field="label"><%- text %></span> </h4> <hr /> <div><span class="tdl">{ts}Description:{/ts}</span> diff --git a/civicrm/templates/CRM/common/joomla.tpl b/civicrm/templates/CRM/common/joomla.tpl index 32e5859ecc..4ef4433428 100644 --- a/civicrm/templates/CRM/common/joomla.tpl +++ b/civicrm/templates/CRM/common/joomla.tpl @@ -12,16 +12,7 @@ {/if} <div id="crm-container" class="crm-container{if !empty($urlIsPublic)} crm-public{/if}" lang="{$config->lcMessages|truncate:2:"":true}" xml:lang="{$config->lcMessages|truncate:2:"":true}"> - -<table border="0" cellpadding="0" cellspacing="0" id="crm-content"> - <tr> -{if $sidebarLeft} - <td id="sidebar-left" valign="top"> - <div id="civi-sidebar-logo" style="margin: 0 0 .25em .25em"><img src="{$config->resourceBase}i/logo_words_small.png" title="{ts}CiviCRM{/ts}"/></div><div class="spacer"></div> - {$sidebarLeft} - </td> -{/if} - <td id="content-right" valign="top"> + <div id ="crm-content"> {if $breadcrumb} <div class="breadcrumb"> {foreach from=$breadcrumb item=crumb key=key} @@ -33,16 +24,16 @@ </div> {/if} -{if $pageTitle} - <div class="crm-title"> - <h1 class="title">{if $isDeleted}<del>{/if}{$pageTitle}{if $isDeleted}</del>{/if}</h1> - </div> -{/if} + {if $pageTitle} + <div class="crm-title"> + <h1 class="title">{if $isDeleted}<del>{/if}{$pageTitle}{if $isDeleted}</del>{/if}</h1> + </div> + {/if} {crmRegion name='page-header'} {/crmRegion} -{*{include file="CRM/common/langSwitch.tpl"}*} + {*{include file="CRM/common/langSwitch.tpl"}*} <div class="clear"></div> @@ -68,9 +59,5 @@ {include file="CRM/common/footer.tpl"} {/if} {/crmRegion} - - </td> - - </tr> -</table> + </div> </div> {* end crm-container div *} diff --git a/civicrm/templates/CRM/common/l10n.js.tpl b/civicrm/templates/CRM/common/l10n.js.tpl index 03598223d7..5e8f34e45f 100644 --- a/civicrm/templates/CRM/common/l10n.js.tpl +++ b/civicrm/templates/CRM/common/l10n.js.tpl @@ -24,6 +24,7 @@ CRM.config.ajaxPopupsEnabled = {$ajaxPopupsEnabled|@json_encode}; CRM.config.allowAlertAutodismissal = {$allowAlertAutodismissal|@json_encode}; CRM.config.resourceCacheCode = {$resourceCacheCode|@json_encode}; + CRM.config.quickAdd = {$quickAdd|@json_encode}; // Merge entityRef settings CRM.config.entityRef = $.extend({ldelim}{rdelim}, {$entityRef|@json_encode}, CRM.config.entityRef || {ldelim}{rdelim}); @@ -125,10 +126,5 @@ functions: [] }; - // Load polyfill - if (!('Promise' in window)) { - CRM.loadScript(CRM.config.resourceBase + 'bower_components/es6-promise/es6-promise.auto.min.js'); - } - })(jQuery); {/literal} diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index 991adc65d8..d7f8e9f59f 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6::getLoader(); +return ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb::getLoader(); diff --git a/civicrm/vendor/composer/autoload_psr4.php b/civicrm/vendor/composer/autoload_psr4.php index 605608d617..e37f9ad0b2 100644 --- a/civicrm/vendor/composer/autoload_psr4.php +++ b/civicrm/vendor/composer/autoload_psr4.php @@ -34,6 +34,7 @@ return array( 'Symfony\\Component\\DependencyInjection\\' => array($vendorDir . '/symfony/dependency-injection'), 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), 'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'), + 'Soundasleep\\' => array($vendorDir . '/soundasleep/html2text/src'), 'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'), 'Sabberworm\\CSS\\' => array($vendorDir . '/sabberworm/php-css-parser/src'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), @@ -55,7 +56,6 @@ return array( 'LastCall\\DownloadsPlugin\\' => array($vendorDir . '/civicrm/composer-downloads-plugin/src'), 'Laminas\\ZendFrameworkBridge\\' => array($vendorDir . '/laminas/laminas-zendframework-bridge/src'), 'Laminas\\Escaper\\' => array($vendorDir . '/laminas/laminas-escaper/src'), - 'Html2Text\\' => array($vendorDir . '/html2text/html2text/src', $vendorDir . '/html2text/html2text/test'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index 00c36e72f6..20e36a6a98 100644 --- a/civicrm/vendor/composer/autoload_real.php +++ b/civicrm/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6 +class ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb { private static $loader; @@ -24,22 +24,22 @@ class ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6 require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); set_include_path(implode(PATH_SEPARATOR, $includePaths)); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::getInitializer($loader)); $loader->register(true); - $includeFiles = \Composer\Autoload\ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$files; + $includeFiles = \Composer\Autoload\ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$files; foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire7bbaec5d7960153e513fff9ee79197c6($fileIdentifier, $file); + composerRequire7e131bfaa15ca0367c946ea14269f3cb($fileIdentifier, $file); } return $loader; @@ -51,7 +51,7 @@ class ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6 * @param string $file * @return void */ -function composerRequire7bbaec5d7960153e513fff9ee79197c6($fileIdentifier, $file) +function composerRequire7e131bfaa15ca0367c946ea14269f3cb($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php index 750915507d..84556b530f 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 +class ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', @@ -141,6 +141,7 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 'Symfony\\Component\\DependencyInjection\\' => 38, 'Symfony\\Component\\Config\\' => 25, 'Svg\\' => 4, + 'Soundasleep\\' => 12, 'ScssPhp\\ScssPhp\\' => 16, 'Sabberworm\\CSS\\' => 15, ), @@ -172,10 +173,6 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 'Laminas\\ZendFrameworkBridge\\' => 28, 'Laminas\\Escaper\\' => 16, ), - 'H' => - array ( - 'Html2Text\\' => 10, - ), 'G' => array ( 'GuzzleHttp\\Psr7\\' => 16, @@ -319,6 +316,10 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 array ( 0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg', ), + 'Soundasleep\\' => + array ( + 0 => __DIR__ . '/..' . '/soundasleep/html2text/src', + ), 'ScssPhp\\ScssPhp\\' => array ( 0 => __DIR__ . '/..' . '/scssphp/scssphp/src', @@ -405,11 +406,6 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 array ( 0 => __DIR__ . '/..' . '/laminas/laminas-escaper/src', ), - 'Html2Text\\' => - array ( - 0 => __DIR__ . '/..' . '/html2text/html2text/src', - 1 => __DIR__ . '/..' . '/html2text/html2text/test', - ), 'GuzzleHttp\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', @@ -729,11 +725,11 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$fallbackDirsPsr0; - $loader->classMap = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$prefixesPsr0; + $loader->fallbackDirsPsr0 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$fallbackDirsPsr0; + $loader->classMap = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json index d69094cb29..6e8a6bf9e1 100644 --- a/civicrm/vendor/composer/installed.json +++ b/civicrm/vendor/composer/installed.json @@ -1011,55 +1011,6 @@ ], "install-path": "../guzzlehttp/psr7" }, - { - "name": "html2text/html2text", - "version": "4.3.1", - "version_normalized": "4.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/mtibben/html2text.git", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - }, - "time": "2020-04-16T23:44:31+00:00", - "type": "library", - "extra": { - "patches_applied": { - "Fix deprecation warning in php8.1 on html_entity_decode": "https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Html2Text\\": [ - "src/", - "test/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Converts HTML to formatted plain text", - "support": { - "issues": "https://github.com/mtibben/html2text/issues", - "source": "https://github.com/mtibben/html2text/tree/4.3.1" - }, - "install-path": "../html2text/html2text" - }, { "name": "laminas/laminas-escaper", "version": "2.6.1", @@ -3614,6 +3565,64 @@ }, "install-path": "../scssphp/scssphp" }, + { + "name": "soundasleep/html2text", + "version": "2.1.0", + "version_normalized": "2.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/soundasleep/html2text.git", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/soundasleep/html2text/zipball/83502b6f8f1aaef8e2e238897199d64f284b4af3", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "time": "2023-01-06T09:28:15+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "description": "A PHP script to convert HTML into a plain text format", + "homepage": "https://github.com/soundasleep/html2text", + "keywords": [ + "email", + "html", + "php", + "text" + ], + "support": { + "email": "support@jevon.org", + "issues": "https://github.com/soundasleep/html2text/issues", + "source": "https://github.com/soundasleep/html2text/tree/2.1.0" + }, + "install-path": "../soundasleep/html2text" + }, { "name": "symfony/config", "version": "v4.4.42", diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php index dd8efdadbb..59aa9b21e9 100644 --- a/civicrm/vendor/composer/installed.php +++ b/civicrm/vendor/composer/installed.php @@ -1,9 +1,9 @@ <?php return array( 'root' => array( 'name' => 'civicrm/civicrm-core', - 'pretty_version' => '5.67.x-dev', - 'version' => '5.67.9999999.9999999-dev', - 'reference' => '5f86ffb076598c9cae9841fda3004459df2aa77a', + 'pretty_version' => '5.68.x-dev', + 'version' => '5.68.9999999.9999999-dev', + 'reference' => '8a55d28fd045ac640eaa5fc32b2b1441f92fe4b9', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -38,9 +38,9 @@ 'dev_requirement' => false, ), 'civicrm/civicrm-core' => array( - 'pretty_version' => '5.67.x-dev', - 'version' => '5.67.9999999.9999999-dev', - 'reference' => '5f86ffb076598c9cae9841fda3004459df2aa77a', + 'pretty_version' => '5.68.x-dev', + 'version' => '5.68.9999999.9999999-dev', + 'reference' => '8a55d28fd045ac640eaa5fc32b2b1441f92fe4b9', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -160,15 +160,6 @@ 0 => '*', ), ), - 'html2text/html2text' => array( - 'pretty_version' => '4.3.1', - 'version' => '4.3.1.0', - 'reference' => '61ad68e934066a6f8df29a3d23a6460536d0855c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../html2text/html2text', - 'aliases' => array(), - 'dev_requirement' => false, - ), 'laminas/laminas-escaper' => array( 'pretty_version' => '2.6.1', 'version' => '2.6.1.0', @@ -544,6 +535,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'soundasleep/html2text' => array( + 'pretty_version' => '2.1.0', + 'version' => '2.1.0.0', + 'reference' => '83502b6f8f1aaef8e2e238897199d64f284b4af3', + 'type' => 'library', + 'install_path' => __DIR__ . '/../soundasleep/html2text', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/config' => array( 'pretty_version' => 'v4.4.42', 'version' => '4.4.42.0', diff --git a/civicrm/vendor/html2text/html2text/.gitignore b/civicrm/vendor/html2text/html2text/.gitignore deleted file mode 100644 index 3c973fb7da..0000000000 --- a/civicrm/vendor/html2text/html2text/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -/vendor/ -composer.lock diff --git a/civicrm/vendor/html2text/html2text/.travis.yml b/civicrm/vendor/html2text/html2text/.travis.yml deleted file mode 100644 index e9087914c8..0000000000 --- a/civicrm/vendor/html2text/html2text/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: php - -matrix: - include: - - php: 5.3 - dist: precise - - php: 5.4 - dist: trusty - - php: 5.5 - dist: trusty - - php: 5.6 - - php: 7.0 - - php: 7.1 - - php: 7.2 - - php: 7.3 - -before_script: - - composer install diff --git a/civicrm/vendor/html2text/html2text/PATCHES.txt b/civicrm/vendor/html2text/html2text/PATCHES.txt deleted file mode 100644 index 5388d4c0c9..0000000000 --- a/civicrm/vendor/html2text/html2text/PATCHES.txt +++ /dev/null @@ -1,7 +0,0 @@ -This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches) -Patches applied to this directory: - -Fix deprecation warning in php8.1 on html_entity_decode -Source: https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch - - diff --git a/civicrm/vendor/html2text/html2text/README.md b/civicrm/vendor/html2text/html2text/README.md deleted file mode 100644 index e66da7b18b..0000000000 --- a/civicrm/vendor/html2text/html2text/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Html2Text - -A PHP library for converting HTML to formatted plain text. - -[](https://travis-ci.org/mtibben/html2text) - -## Installing - -``` -composer require html2text/html2text -``` - -## Basic Usage -```php -$html = new \Html2Text\Html2Text('Hello, "<b>world</b>"'); - -echo $html->getText(); // Hello, "WORLD" -``` - -## History - -This library started life on the blog of Jon Abernathy http://www.chuggnutt.com/html2text - -A number of projects picked up the library and started using it - among those was RoundCube mail. They made a number of updates to it over time to suit their webmail client. - -Now it has been extracted as a standalone library. Hopefully it can be of use to others. diff --git a/civicrm/vendor/html2text/html2text/composer.json b/civicrm/vendor/html2text/html2text/composer.json deleted file mode 100644 index ab76efed56..0000000000 --- a/civicrm/vendor/html2text/html2text/composer.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "html2text/html2text", - "description": "Converts HTML to formatted plain text", - "type": "library", - "license": "GPL-2.0-or-later", - "autoload": { - "psr-4": { "Html2Text\\": ["src/", "test/"] } - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - } -} diff --git a/civicrm/vendor/html2text/html2text/phpunit.xml.dist b/civicrm/vendor/html2text/html2text/phpunit.xml.dist deleted file mode 100644 index 17beecab1c..0000000000 --- a/civicrm/vendor/html2text/html2text/phpunit.xml.dist +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<phpunit colors="true" - convertErrorsToExceptions="true" - convertNoticesToExceptions="true" - convertWarningsToExceptions="true" - processIsolation="false" - stopOnFailure="false" - syntaxCheck="false" - bootstrap="test/bootstrap.php" -> - <testsuites> - <testsuite name="Html2Text Test Suite"> - <directory>test</directory> - </testsuite> - </testsuites> -</phpunit> diff --git a/civicrm/vendor/html2text/html2text/src/Html2Text.php b/civicrm/vendor/html2text/html2text/src/Html2Text.php deleted file mode 100644 index 5fa6185ec8..0000000000 --- a/civicrm/vendor/html2text/html2text/src/Html2Text.php +++ /dev/null @@ -1,659 +0,0 @@ -<?php - -/* - * Copyright (c) 2005-2007 Jon Abernathy <jon@chuggnutt.com> - * - * This script is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -namespace Html2Text; - -class Html2Text -{ - const ENCODING = 'UTF-8'; - - protected $htmlFuncFlags; - - /** - * Contains the HTML content to convert. - * - * @var string $html - */ - protected $html; - - /** - * Contains the converted, formatted text. - * - * @var string $text - */ - protected $text; - - /** - * List of preg* regular expression patterns to search for, - * used in conjunction with $replace. - * - * @var array $search - * @see $replace - */ - protected $search = array( - "/\r/", // Non-legal carriage return - "/[\n\t]+/", // Newlines and tabs - '/<head\b[^>]*>.*?<\/head>/i', // <head> - '/<script\b[^>]*>.*?<\/script>/i', // <script>s -- which strip_tags supposedly has problems with - '/<style\b[^>]*>.*?<\/style>/i', // <style>s -- which strip_tags supposedly has problems with - '/<i\b[^>]*>(.*?)<\/i>/i', // <i> - '/<em\b[^>]*>(.*?)<\/em>/i', // <em> - '/<ins\b[^>]*>(.*?)<\/ins>/i', // <ins> - '/(<ul\b[^>]*>|<\/ul>)/i', // <ul> and </ul> - '/(<ol\b[^>]*>|<\/ol>)/i', // <ol> and </ol> - '/(<dl\b[^>]*>|<\/dl>)/i', // <dl> and </dl> - '/<li\b[^>]*>(.*?)<\/li>/i', // <li> and </li> - '/<dd\b[^>]*>(.*?)<\/dd>/i', // <dd> and </dd> - '/<dt\b[^>]*>(.*?)<\/dt>/i', // <dt> and </dt> - '/<li\b[^>]*>/i', // <li> - '/<hr\b[^>]*>/i', // <hr> - '/<div\b[^>]*>/i', // <div> - '/(<table\b[^>]*>|<\/table>)/i', // <table> and </table> - '/(<tr\b[^>]*>|<\/tr>)/i', // <tr> and </tr> - '/<td\b[^>]*>(.*?)<\/td>/i', // <td> and </td> - '/<span class="_html2text_ignore">.+?<\/span>/i', // <span class="_html2text_ignore">...</span> - '/<(img)\b[^>]*alt=\"([^>"]+)\"[^>]*>/i', // <img> with alt tag - ); - - /** - * List of pattern replacements corresponding to patterns searched. - * - * @var array $replace - * @see $search - */ - protected $replace = array( - '', // Non-legal carriage return - ' ', // Newlines and tabs - '', // <head> - '', // <script>s -- which strip_tags supposedly has problems with - '', // <style>s -- which strip_tags supposedly has problems with - '_\\1_', // <i> - '_\\1_', // <em> - '_\\1_', // <ins> - "\n\n", // <ul> and </ul> - "\n\n", // <ol> and </ol> - "\n\n", // <dl> and </dl> - "\t* \\1\n", // <li> and </li> - " \\1\n", // <dd> and </dd> - "\t* \\1", // <dt> and </dt> - "\n\t* ", // <li> - "\n-------------------------\n", // <hr> - "<div>\n", // <div> - "\n\n", // <table> and </table> - "\n", // <tr> and </tr> - "\t\t\\1\n", // <td> and </td> - "", // <span class="_html2text_ignore">...</span> - '[\\2]', // <img> with alt tag - ); - - /** - * List of preg* regular expression patterns to search for, - * used in conjunction with $entReplace. - * - * @var array $entSearch - * @see $entReplace - */ - protected $entSearch = array( - '/™/i', // TM symbol in win-1252 - '/—/i', // m-dash in win-1252 - '/&(amp|#38);/i', // Ampersand: see converter() - '/[ ]{2,}/', // Runs of spaces, post-handling - '/'/i', // The apostrophe symbol - ); - - /** - * List of pattern replacements corresponding to patterns searched. - * - * @var array $entReplace - * @see $entSearch - */ - protected $entReplace = array( - 'â„¢', // TM symbol - '—', // m-dash - '|+|amp|+|', // Ampersand: see converter() - ' ', // Runs of spaces, post-handling - '\'', // Apostrophe - ); - - /** - * List of preg* regular expression patterns to search for - * and replace using callback function. - * - * @var array $callbackSearch - */ - protected $callbackSearch = array( - '/<(h)[123456]( [^>]*)?>(.*?)<\/h[123456]>/i', // h1 - h6 - '/[ ]*<(p)( [^>]*)?>(.*?)<\/p>[ ]*/si', // <p> with surrounding whitespace. - '/<(br)[^>]*>[ ]*/i', // <br> with leading whitespace after the newline. - '/<(b)( [^>]*)?>(.*?)<\/b>/i', // <b> - '/<(strong)( [^>]*)?>(.*?)<\/strong>/i', // <strong> - '/<(del)( [^>]*)?>(.*?)<\/del>/i', // <del> - '/<(th)( [^>]*)?>(.*?)<\/th>/i', // <th> and </th> - '/<(a) [^>]*href=("|\')([^"\']+)\2([^>]*)>(.*?)<\/a>/i' // <a href=""> - ); - - /** - * List of preg* regular expression patterns to search for in PRE body, - * used in conjunction with $preReplace. - * - * @var array $preSearch - * @see $preReplace - */ - protected $preSearch = array( - "/\n/", - "/\t/", - '/ /', - '/<pre[^>]*>/', - '/<\/pre>/' - ); - - /** - * List of pattern replacements corresponding to patterns searched for PRE body. - * - * @var array $preReplace - * @see $preSearch - */ - protected $preReplace = array( - '<br>', - ' ', - ' ', - '', - '', - ); - - /** - * Temporary workspace used during PRE processing. - * - * @var string $preContent - */ - protected $preContent = ''; - - /** - * Contains the base URL that relative links should resolve to. - * - * @var string $baseurl - */ - protected $baseurl = ''; - - /** - * Indicates whether content in the $html variable has been converted yet. - * - * @var boolean $converted - * @see $html, $text - */ - protected $converted = false; - - /** - * Contains URL addresses from links to be rendered in plain text. - * - * @var array $linkList - * @see buildlinkList() - */ - protected $linkList = array(); - - /** - * Various configuration options (able to be set in the constructor) - * - * @var array $options - */ - protected $options = array( - 'do_links' => 'inline', // 'none' - // 'inline' (show links inline) - // 'nextline' (show links on the next line) - // 'table' (if a table of link URLs should be listed after the text. - // 'bbcode' (show links as bbcode) - - 'width' => 70, // Maximum width of the formatted text, in columns. - // Set this value to 0 (or less) to ignore word wrapping - // and not constrain text to a fixed-width column. - ); - - private function legacyConstruct($html = '', $fromFile = false, array $options = array()) - { - $this->set_html($html, $fromFile); - $this->options = array_merge($this->options, $options); - } - - /** - * @param string $html Source HTML - * @param array $options Set configuration options - */ - public function __construct($html = '', $options = array()) - { - $this->htmlFuncFlags = (PHP_VERSION_ID < 50400) - ? ENT_QUOTES - : ENT_QUOTES | ENT_HTML5; - - // for backwards compatibility - if (!is_array($options)) { - return call_user_func_array(array($this, 'legacyConstruct'), func_get_args()); - } - - $this->html = $html; - $this->options = array_merge($this->options, $options); - } - - /** - * Get the source HTML - * - * @return string - */ - public function getHtml() - { - return $this->html; - } - - /** - * Set the source HTML - * - * @param string $html HTML source content - */ - public function setHtml($html) - { - $this->html = $html; - $this->converted = false; - } - - /** - * @deprecated - */ - public function set_html($html, $from_file = false) - { - if ($from_file) { - throw new \InvalidArgumentException("Argument from_file no longer supported"); - } - - return $this->setHtml($html); - } - - /** - * Returns the text, converted from HTML. - * - * @return string Plain text - */ - public function getText() - { - if (!$this->converted) { - $this->convert(); - } - - return $this->text; - } - - /** - * @deprecated - */ - public function get_text() - { - return $this->getText(); - } - - /** - * @deprecated - */ - public function print_text() - { - print $this->getText(); - } - - /** - * @deprecated - */ - public function p() - { - return $this->print_text(); - } - - /** - * Sets a base URL to handle relative links. - * - * @param string $baseurl - */ - public function setBaseUrl($baseurl) - { - $this->baseurl = $baseurl; - } - - /** - * @deprecated - */ - public function set_base_url($baseurl) - { - return $this->setBaseUrl($baseurl); - } - - protected function convert() - { - $origEncoding = mb_internal_encoding(); - mb_internal_encoding(self::ENCODING); - - $this->doConvert(); - - mb_internal_encoding($origEncoding); - } - - protected function doConvert() - { - $this->linkList = array(); - - $text = trim($this->html); - - $this->converter($text); - - if ($this->linkList) { - $text .= "\n\nLinks:\n------\n"; - foreach ($this->linkList as $i => $url) { - $text .= '[' . ($i + 1) . '] ' . $url . "\n"; - } - } - - $this->text = $text; - - $this->converted = true; - } - - protected function converter(&$text) - { - $this->convertBlockquotes($text); - $this->convertPre($text); - $text = preg_replace($this->search, $this->replace, $text); - $text = preg_replace_callback($this->callbackSearch, array($this, 'pregCallback'), $text); - $text = strip_tags($text); - $text = preg_replace($this->entSearch, $this->entReplace, $text); - $text = html_entity_decode($text, $this->htmlFuncFlags, self::ENCODING); - - // Remove unknown/unhandled entities (this cannot be done in search-and-replace block) - $text = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $text); - - // Convert "|+|amp|+|" into "&", need to be done after handling of unknown entities - // This properly handles situation of "&quot;" in input string - $text = str_replace('|+|amp|+|', '&', $text); - - // Normalise empty lines - $text = preg_replace("/\n\s+\n/", "\n\n", $text); - $text = preg_replace("/[\n]{3,}/", "\n\n", $text); - - // remove leading empty lines (can be produced by eg. P tag on the beginning) - $text = ltrim($text, "\n"); - - if ($this->options['width'] > 0) { - $text = wordwrap($text, $this->options['width']); - } - } - - /** - * Helper function called by preg_replace() on link replacement. - * - * Maintains an internal list of links to be displayed at the end of the - * text, with numeric indices to the original point in the text they - * appeared. Also makes an effort at identifying and handling absolute - * and relative links. - * - * @param string $link URL of the link - * @param string $display Part of the text to associate number with - * @param null $linkOverride - * @return string - */ - protected function buildlinkList($link, $display, $linkOverride = null) - { - $linkMethod = ($linkOverride) ? $linkOverride : $this->options['do_links']; - if ($linkMethod == 'none') { - return $display; - } - - // Ignored link types - if (preg_match('!^(javascript:|mailto:|#)!i', html_entity_decode($link))) { - return $display; - } - - if (preg_match('!^([a-z][a-z0-9.+-]+:)!i', $link)) { - $url = $link; - } else { - $url = $this->baseurl; - if (mb_substr($link, 0, 1) != '/') { - $url .= '/'; - } - $url .= $link; - } - - if ($linkMethod == 'table') { - if (($index = array_search($url, $this->linkList)) === false) { - $index = count($this->linkList); - $this->linkList[] = $url; - } - - return $display . ' [' . ($index + 1) . ']'; - } elseif ($linkMethod == 'nextline') { - if ($url === $display) { - return $display; - } - return $display . "\n[" . $url . ']'; - } elseif ($linkMethod == 'bbcode') { - return sprintf('[url=%s]%s[/url]', $url, $display); - } else { // link_method defaults to inline - if ($url === $display) { - return $display; - } - return $display . ' [' . $url . ']'; - } - } - - /** - * Helper function for PRE body conversion. - * - * @param string &$text HTML content - */ - protected function convertPre(&$text) - { - // get the content of PRE element - while (preg_match('/<pre[^>]*>(.*)<\/pre>/ismU', $text, $matches)) { - // Replace br tags with newlines to prevent the search-and-replace callback from killing whitespace - $this->preContent = preg_replace('/(<br\b[^>]*>)/i', "\n", $matches[1]); - - // Run our defined tags search-and-replace with callback - $this->preContent = preg_replace_callback( - $this->callbackSearch, - array($this, 'pregCallback'), - $this->preContent - ); - - // convert the content - $this->preContent = sprintf( - '<div><br>%s<br></div>', - preg_replace($this->preSearch, $this->preReplace, $this->preContent) - ); - - // replace the content (use callback because content can contain $0 variable) - $text = preg_replace_callback( - '/<pre[^>]*>.*<\/pre>/ismU', - array($this, 'pregPreCallback'), - $text, - 1 - ); - - // free memory - $this->preContent = ''; - } - } - - /** - * Helper function for BLOCKQUOTE body conversion. - * - * @param string &$text HTML content - */ - protected function convertBlockquotes(&$text) - { - if (preg_match_all('/<\/*blockquote[^>]*>/i', $text, $matches, PREG_OFFSET_CAPTURE)) { - $originalText = $text; - $start = 0; - $taglen = 0; - $level = 0; - $diff = 0; - foreach ($matches[0] as $m) { - $m[1] = mb_strlen(substr($originalText, 0, $m[1])); - if ($m[0][0] == '<' && $m[0][1] == '/') { - $level--; - if ($level < 0) { - $level = 0; // malformed HTML: go to next blockquote - } elseif ($level > 0) { - // skip inner blockquote - } else { - $end = $m[1]; - $len = $end - $taglen - $start; - // Get blockquote content - $body = mb_substr($text, $start + $taglen - $diff, $len); - - // Set text width - $pWidth = $this->options['width']; - if ($this->options['width'] > 0) $this->options['width'] -= 2; - // Convert blockquote content - $body = trim($body); - $this->converter($body); - // Add citation markers and create PRE block - $body = preg_replace('/((^|\n)>*)/', '\\1> ', trim($body)); - $body = '<pre>' . htmlspecialchars($body, $this->htmlFuncFlags, self::ENCODING) . '</pre>'; - // Re-set text width - $this->options['width'] = $pWidth; - // Replace content - $text = mb_substr($text, 0, $start - $diff) - . $body - . mb_substr($text, $end + mb_strlen($m[0]) - $diff); - - $diff += $len + $taglen + mb_strlen($m[0]) - mb_strlen($body); - unset($body); - } - } else { - if ($level == 0) { - $start = $m[1]; - $taglen = mb_strlen($m[0]); - } - $level++; - } - } - } - } - - /** - * Callback function for preg_replace_callback use. - * - * @param array $matches PREG matches - * @return string - */ - protected function pregCallback($matches) - { - switch (mb_strtolower($matches[1])) { - case 'p': - // Replace newlines with spaces. - $para = str_replace("\n", " ", $matches[3]); - - // Trim trailing and leading whitespace within the tag. - $para = trim($para); - - // Add trailing newlines for this para. - return "\n" . $para . "\n"; - case 'br': - return "\n"; - case 'b': - case 'strong': - return $this->toupper($matches[3]); - case 'del': - return $this->tostrike($matches[3]); - case 'th': - return $this->toupper("\t\t" . $matches[3] . "\n"); - case 'h': - return $this->toupper("\n\n" . $matches[3] . "\n\n"); - case 'a': - // override the link method - $linkOverride = null; - if (preg_match('/_html2text_link_(\w+)/', $matches[4], $linkOverrideMatch)) { - $linkOverride = $linkOverrideMatch[1]; - } - // Remove spaces in URL (#1487805) - $url = str_replace(' ', '', $matches[3]); - - return $this->buildlinkList($url, $matches[5], $linkOverride); - } - - return ''; - } - - /** - * Callback function for preg_replace_callback use in PRE content handler. - * - * @param array $matches PREG matches - * @return string - */ - protected function pregPreCallback(/** @noinspection PhpUnusedParameterInspection */ $matches) - { - return $this->preContent; - } - - /** - * Strtoupper function with HTML tags and entities handling. - * - * @param string $str Text to convert - * @return string Converted text - */ - protected function toupper($str) - { - // string can contain HTML tags - $chunks = preg_split('/(<[^>]*>)/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); - - // convert toupper only the text between HTML tags - foreach ($chunks as $i => $chunk) { - if ($chunk[0] != '<') { - $chunks[$i] = $this->strtoupper($chunk); - } - } - - return implode($chunks); - } - - /** - * Strtoupper multibyte wrapper function with HTML entities handling. - * - * @param string $str Text to convert - * @return string Converted text - */ - protected function strtoupper($str) - { - $str = html_entity_decode($str, $this->htmlFuncFlags, self::ENCODING); - $str = mb_strtoupper($str); - $str = htmlspecialchars($str, $this->htmlFuncFlags, self::ENCODING); - - return $str; - } - - /** - * Helper function for DEL conversion. - * - * @param string $text HTML content - * @return string Converted text - */ - protected function tostrike($str) - { - $rtn = ''; - for ($i = 0; $i < mb_strlen($str); $i++) { - $chr = mb_substr($str, $i, 1); - $combiningChr = chr(0xC0 | 0x336 >> 6). chr(0x80 | 0x336 & 0x3F); - $rtn .= $chr . $combiningChr; - } - return $rtn; - } -} diff --git a/civicrm/vendor/soundasleep/html2text/.editorconfig b/civicrm/vendor/soundasleep/html2text/.editorconfig new file mode 100644 index 0000000000..7974b6a8a2 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.editorconfig @@ -0,0 +1,23 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = tab +indent_size = 4 + +[*.md] +indent_style = space +indent_size = 2 + +# don't add newlines to test files +[tests/*] +indent_style = tabs +trim_trailing_whitespace = false +insert_final_newline = false diff --git a/civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml b/civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml new file mode 100644 index 0000000000..d9c55dfc6a --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml @@ -0,0 +1,17 @@ +name: Lint +on: + - push +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + tools: phplint + - name: Check syntax + run: phplint . diff --git a/civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml b/civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml new file mode 100644 index 0000000000..f1c485e90c --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml @@ -0,0 +1,41 @@ +name: Test +on: + - push +jobs: + test: + strategy: + matrix: + operating-system: + - ubuntu-latest + php-version: + - '7.3' + - '7.4' + - '8.0' + - '8.1' + - '8.2' + name: php ${{ matrix.php-version }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring + coverage: none + - name: Get composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Setup composer cache + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + - name: Install composer dependencies + env: + COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} + run: composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + - name: Run tests + run: vendor/bin/phpunit diff --git a/civicrm/vendor/soundasleep/html2text/.gitignore b/civicrm/vendor/soundasleep/html2text/.gitignore new file mode 100644 index 0000000000..a41c6bab9f --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.gitignore @@ -0,0 +1,7 @@ +tests/*.output +*.sublime-project +*.sublime-workspace +vendor/ +**/*.DS_Store +.phpunit.result.cache +composer.lock diff --git a/civicrm/vendor/soundasleep/html2text/CHANGELOG.md b/civicrm/vendor/soundasleep/html2text/CHANGELOG.md new file mode 100644 index 0000000000..a1bda09549 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [1.1.0] - 2019-02-15 +### Added +- Zero-width non-joiners are now stripped to prevent output issues, similar to non-breaking whitespace + +### Fixed +- Fix namespace in composer [#67](https://github.com/soundasleep/html2text/pull/67) + +## [1.0.0] - 2019-02-14 +### Added +- Added `drop_links` option to render links without the target href [#65](https://github.com/soundasleep/html2text/pull/65) + +### Changed +- **Important:** Changed namespace from `\Html2Text\Html2Text` to `\Soundasleep\Html2text` [#45](https://github.com/soundasleep/html2text/issues/45) +- Treat non-breaking spaces consistently: never include them in output text [#64](https://github.com/soundasleep/html2text/pull/64) +- Second argument to `convert()` is now an array, rather than boolean [#65](https://github.com/soundasleep/html2text/pull/65) +- Optimise/improve newline & whitespace handling [#47](https://github.com/soundasleep/html2text/pull/47) +- Upgrade PHP support to PHP 7.3+ +- Upgrade PHPUnit to 7.x +- Re-release project under MIT license [#58](https://github.com/soundasleep/html2text/issues/58) + +## [0.5.0] - 2017-04-20 +### Added +- Add ignore_error optional argument [#63](https://github.com/soundasleep/html2text/pull/63) +- Blockquote support [#50](https://github.com/soundasleep/html2text/pull/50) + +[Unreleased]: https://github.com/soundasleep/html2text/compare/1.1.0...HEAD +[1.1.0]: https://github.com/soundasleep/html2text/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/soundasleep/html2text/compare/0.5.0...1.0.0 +[0.5.0]: https://github.com/soundasleep/html2text/compare/0.5.0...0.3.4 diff --git a/civicrm/vendor/soundasleep/html2text/LICENSE.md b/civicrm/vendor/soundasleep/html2text/LICENSE.md new file mode 100644 index 0000000000..d8613be25b --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jevon Wright + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/civicrm/vendor/soundasleep/html2text/README.md b/civicrm/vendor/soundasleep/html2text/README.md new file mode 100644 index 0000000000..3055234a78 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/README.md @@ -0,0 +1,102 @@ + [](https://packagist.org/packages/soundasleep/html2text) +========= + +html2text is a very simple script that uses DOM methods to convert HTML into a format similar to what would be +rendered by a browser - perfect for places where you need a quick text representation. For example: + +```html +<html> +<title>Ignored Title</title> +<body> + <h1>Hello, World!</h1> + + <p>This is some e-mail content. + Even though it has whitespace and newlines, the e-mail converter + will handle it correctly. + + <p>Even mismatched tags.</p> + + <div>A div</div> + <div>Another div</div> + <div>A div<div>within a div</div></div> + + <a href="http://foo.com">A link</a> + +</body> +</html> +``` + +Will be converted into: + +```text +Hello, World! + +This is some e-mail content. Even though it has whitespace and newlines, the e-mail converter will handle it correctly. + +Even mismatched tags. + +A div +Another div +A div +within a div + +[A link](http://foo.com) +``` + +See the [original blog post](http://journals.jevon.org/users/jevon-phd/entry/19818) or the related [StackOverflow answer](http://stackoverflow.com/a/2564472/39531). + +## Installing + +You can use [Composer](http://getcomposer.org/) to add the [package](https://packagist.org/packages/soundasleep/html2text) to your project: + +```json +{ + "require": { + "soundasleep/html2text": "~1.1" + } +} +``` + +And then use it quite simply: + +```php +$text = \Soundasleep\Html2Text::convert($html); +``` + +You can also include the supplied `html2text.php` and use `$text = convert_html_to_text($html);` instead. + +### Options + +| Option | Default | Description | +|--------|---------|-------------| +| **ignore_errors** | `false` | Set to `true` to ignore any XML parsing errors. | +| **drop_links** | `false` | Set to `true` to not render links as `[http://foo.com](My Link)`, but rather just `My Link`. | +| **char_set** | `'auto'` | Specify a specific character set. Pass multiple character sets (comma separated) to detect encoding, default is ASCII,UTF-8 | + +Pass along options as a second argument to `convert`, for example: + +```php +$options = array( + 'ignore_errors' => true, + // other options go here +); +$text = \Soundasleep\Html2Text::convert($html, $options); +``` + +## Tests + +Some very basic tests are provided in the `tests/` directory. Run them with `composer install && vendor/bin/phpunit`. + +## Troubleshooting + +### Class 'DOMDocument' not found + +You need to [install the PHP XML extension](https://github.com/soundasleep/html2text/issues/55) for your PHP version. e.g. `apt-get install php7.4-xml` + +## License + +`html2text` is [licensed under MIT](LICENSE.md), making it suitable for both Eclipse and GPL projects. + +## Other versions + +Also see [html2text_ruby](https://github.com/soundasleep/html2text_ruby), a Ruby implementation. diff --git a/civicrm/vendor/soundasleep/html2text/composer.json b/civicrm/vendor/soundasleep/html2text/composer.json new file mode 100644 index 0000000000..fb662c18ab --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/composer.json @@ -0,0 +1,32 @@ +{ + "name": "soundasleep/html2text", + "description": "A PHP script to convert HTML into a plain text format", + "type": "library", + "keywords": [ "php", "html", "text", "email" ], + "homepage": "https://github.com/soundasleep/html2text", + "license": "MIT", + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "support": { + "email": "support@jevon.org" + }, + "require": { + "php": "^7.3|^8.0", + "ext-dom": "*", + "ext-libxml": "*" + }, + "require-dev": { + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.9" + } +} diff --git a/civicrm/vendor/soundasleep/html2text/convert.php b/civicrm/vendor/soundasleep/html2text/convert.php new file mode 100644 index 0000000000..48094eb215 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/convert.php @@ -0,0 +1,21 @@ +<?php +/** + * This file allows you to convert through the command line. + * Usage: + * php -f convert.php [input file] + */ + +if (count($argv) < 2) { + throw new \InvalidArgumentException("Expected: php -f convert.php [input file]"); +} + +if (!file_exists($argv[1])) { + throw new \InvalidArgumentException("'" . $argv[1] . "' does not exist"); +} + +$input = file_get_contents($argv[1]); + +require_once(__DIR__ . "/src/Html2Text.php"); +require_once(__DIR__ . "/src/Html2TextException.php"); + +echo \Soundasleep\Html2Text::convert($input); diff --git a/civicrm/vendor/soundasleep/html2text/html2text.php b/civicrm/vendor/soundasleep/html2text/html2text.php new file mode 100644 index 0000000000..ed52a3b6da --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/html2text.php @@ -0,0 +1,16 @@ +<?php +/** + * This file is available if you still want to use functions rather than + * autoloading classes. + */ + +require_once(__DIR__ . "/src/Html2Text.php"); +require_once(__DIR__ . "/src/Html2TextException.php"); + +function convert_html_to_text($html, $ignore_error = false) { + return Soundasleep\Html2Text::convert($html, $ignore_error); +} + +function fix_newlines($text) { + return Soundasleep\Html2Text::fixNewlines($text); +} diff --git a/civicrm/vendor/soundasleep/html2text/phpstan.neon.dist b/civicrm/vendor/soundasleep/html2text/phpstan.neon.dist new file mode 100644 index 0000000000..b05dc95119 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/phpstan.neon.dist @@ -0,0 +1,7 @@ +parameters: + level: 6 + errorFormat: raw + editorUrl: '%%file%% %%line%% %%column%%: %%error%%' + paths: + - src + - tests diff --git a/civicrm/vendor/soundasleep/html2text/phpunit.xml b/civicrm/vendor/soundasleep/html2text/phpunit.xml new file mode 100644 index 0000000000..352d5537a8 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/phpunit.xml @@ -0,0 +1,8 @@ +<phpunit stopOnFailure="true" stopOnError="true" beStrictAboutTestsThatDoNotTestAnything="false"> + <testsuites> + <testsuite name="Tests"> + <!-- loads all *Test.php --> + <directory>tests</directory> + </testsuite> + </testsuites> +</phpunit> diff --git a/civicrm/vendor/soundasleep/html2text/src/Html2Text.php b/civicrm/vendor/soundasleep/html2text/src/Html2Text.php new file mode 100644 index 0000000000..1763cb4a45 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/src/Html2Text.php @@ -0,0 +1,540 @@ +<?php + +namespace Soundasleep; + +class Html2Text { + + /** @return array<string, bool | string> */ + public static function defaultOptions(): array { + return [ + 'ignore_errors' => false, + 'drop_links' => false, + 'char_set' => 'auto' + ]; + } + + /** + * Tries to convert the given HTML into a plain text format - best suited for + * e-mail display, etc. + * + * <p>In particular, it tries to maintain the following features: + * <ul> + * <li>Links are maintained, with the 'href' copied over + * <li>Information in the <head> is lost + * </ul> + * + * @param string $html the input HTML + * @param boolean|array<string, bool | string> $options if boolean, Ignore xml parsing errors, else ['ignore_errors' => false, 'drop_links' => false, 'char_set' => 'auto'] + * @return string the HTML converted, as best as possible, to text + * @throws Html2TextException if the HTML could not be loaded as a {@link \DOMDocument} + */ + public static function convert(string $html, $options = []): string { + + if ($options === false || $options === true) { + // Using old style (< 1.0) of passing in options + $options = ['ignore_errors' => $options]; + } + + $options = array_merge(static::defaultOptions(), $options); + + // check all options are valid + foreach ($options as $key => $value) { + if (!in_array($key, array_keys(static::defaultOptions()))) { + throw new \InvalidArgumentException("Unknown html2text option '$key'. Valid options are " . implode(',', static::defaultOptions())); + } + } + + $is_office_document = self::isOfficeDocument($html); + + if ($is_office_document) { + // remove office namespace + $html = str_replace(["<o:p>", "</o:p>"], "", $html); + } + + $html = self::fixNewlines($html); + + // use mb_convert_encoding for legacy versions of php + if (PHP_MAJOR_VERSION * 10 + PHP_MINOR_VERSION < 81 && mb_detect_encoding($html, "UTF-8", true)) { + $html = mb_convert_encoding($html, "HTML-ENTITIES", "UTF-8"); + } + + $doc = self::getDocument($html, $options); + + $output = self::iterateOverNode($doc, null, false, $is_office_document, $options); + + // process output for whitespace/newlines + $output = self::processWhitespaceNewlines($output); + + return $output; + } + + /** + * Unify newlines; in particular, \r\n becomes \n, and + * then \r becomes \n. This means that all newlines (Unix, Windows, Mac) + * all become \ns. + * + * @param string $text text with any number of \r, \r\n and \n combinations + * @return string the fixed text + */ + public static function fixNewlines(string $text): string { + // replace \r\n to \n + $text = str_replace("\r\n", "\n", $text); + // remove \rs + $text = str_replace("\r", "\n", $text); + + return $text; + } + + /** @return array<string> */ + public static function nbspCodes(): array { + return [ + "\xc2\xa0", + "\u00a0", + ]; + } + + /** @return array<string> */ + public static function zwnjCodes(): array { + return [ + "\xe2\x80\x8c", + "\u200c", + ]; + } + + /** + * Remove leading or trailing spaces and excess empty lines from provided multiline text + * + * @param string $text multiline text any number of leading or trailing spaces or excess lines + * @return string the fixed text + */ + public static function processWhitespaceNewlines(string $text): string { + + // remove excess spaces around tabs + $text = preg_replace("/ *\t */im", "\t", $text); + + // remove leading whitespace + $text = ltrim($text); + + // remove leading spaces on each line + $text = preg_replace("/\n[ \t]*/im", "\n", $text); + + // convert non-breaking spaces to regular spaces to prevent output issues, + // do it here so they do NOT get removed with other leading spaces, as they + // are sometimes used for indentation + $text = self::renderText($text); + + // remove trailing whitespace + $text = rtrim($text); + + // remove trailing spaces on each line + $text = preg_replace("/[ \t]*\n/im", "\n", $text); + + // unarmor pre blocks + $text = self::fixNewLines($text); + + // remove unnecessary empty lines + $text = preg_replace("/\n\n\n*/im", "\n\n", $text); + + return $text; + } + + /** + * Can we guess that this HTML is generated by Microsoft Office? + */ + public static function isOfficeDocument(string $html): bool { + return strpos($html, "urn:schemas-microsoft-com:office") !== false; + } + + public static function isWhitespace(string $text): bool { + return strlen(trim(self::renderText($text), "\n\r\t ")) === 0; + } + + /** + * Parse HTML into a DOMDocument + * + * @param string $html the input HTML + * @param array<string, bool | string> $options + * @return \DOMDocument the parsed document tree + */ + private static function getDocument(string $html, array $options): \DOMDocument { + + $doc = new \DOMDocument(); + + $html = trim($html); + + if (!$html) { + // DOMDocument doesn't support empty value and throws an error + // Return empty document instead + return $doc; + } + + if ($html[0] !== '<') { + // If HTML does not begin with a tag, we put a body tag around it. + // If we do not do this, PHP will insert a paragraph tag around + // the first block of text for some reason which can mess up + // the newlines. See pre.html test for an example. + $html = '<body>' . $html . '</body>'; + } + + $header = ''; + // use char sets for modern versions of php + if (PHP_MAJOR_VERSION * 10 + PHP_MINOR_VERSION >= 81) { + // use specified char_set, or auto detect if not set + $char_set = ! empty($options['char_set']) ? $options['char_set'] : 'auto'; + if ('auto' === $char_set) { + $char_set = mb_detect_encoding($html); + } else if (strpos($char_set, ',')) { + mb_detect_order($char_set); + $char_set = mb_detect_encoding($html); + } + // turn off error detection for Windows-1252 legacy html + if (strpos($char_set, '1252')) { + $options['ignore_errors'] = true; + } + $header = '<?xml version="1.0" encoding="' . $char_set . '">'; + } + + if (! empty($options['ignore_errors'])) { + $doc->strictErrorChecking = false; + $doc->recover = true; + $doc->xmlStandalone = true; + $old_internal_errors = libxml_use_internal_errors(true); + $load_result = $doc->loadHTML($header . $html, LIBXML_NOWARNING | LIBXML_NOERROR | LIBXML_NONET | LIBXML_PARSEHUGE); + libxml_use_internal_errors($old_internal_errors); + } + else { + $load_result = $doc->loadHTML($header . $html); + } + + if (!$load_result) { + throw new Html2TextException("Could not load HTML - badly formed?", $html); + } + + return $doc; + } + + /** + * Replace any special characters with simple text versions, to prevent output issues: + * - Convert non-breaking spaces to regular spaces; and + * - Convert zero-width non-joiners to '' (nothing). + * + * This is to match our goal of rendering documents as they would be rendered + * by a browser. + */ + private static function renderText(string $text): string { + $text = str_replace(self::nbspCodes(), " ", $text); + $text = str_replace(self::zwnjCodes(), "", $text); + return $text; + } + + private static function nextChildName(?\DOMNode $node): ?string { + // get the next child + $nextNode = $node->nextSibling; + while ($nextNode != null) { + if ($nextNode instanceof \DOMText) { + if (!self::isWhitespace($nextNode->wholeText)) { + break; + } + } + + if ($nextNode instanceof \DOMElement) { + break; + } + + $nextNode = $nextNode->nextSibling; + } + + $nextName = null; + if (($nextNode instanceof \DOMElement || $nextNode instanceof \DOMText) && $nextNode != null) { + $nextName = strtolower($nextNode->nodeName); + } + + return $nextName; + } + + /** @param array<string, bool | string> $options */ + private static function iterateOverNode(\DOMNode $node, ?string $prevName, bool $in_pre, bool $is_office_document, array $options): string { + if ($node instanceof \DOMText) { + // Replace whitespace characters with a space (equivilant to \s) + if ($in_pre) { + $text = "\n" . trim(self::renderText($node->wholeText), "\n\r\t ") . "\n"; + + // Remove trailing whitespace only + $text = preg_replace("/[ \t]*\n/im", "\n", $text); + + // armor newlines with \r. + return str_replace("\n", "\r", $text); + + } + $text = self::renderText($node->wholeText); + $text = preg_replace("/[\\t\\n\\f\\r ]+/im", " ", $text); + + if (!self::isWhitespace($text) && ($prevName == 'p' || $prevName == 'div')) { + return "\n" . $text; + } + return $text; + } + + if ($node instanceof \DOMDocumentType || $node instanceof \DOMProcessingInstruction) { + // ignore + return ""; + } + + $name = strtolower($node->nodeName); + $nextName = self::nextChildName($node); + + // start whitespace + switch ($name) { + case "hr": + $prefix = ''; + if ($prevName != null) { + $prefix = "\n"; + } + return $prefix . "---------------------------------------------------------------\n"; + + case "style": + case "head": + case "title": + case "meta": + case "script": + // ignore these tags + return ""; + + case "h1": + case "h2": + case "h3": + case "h4": + case "h5": + case "h6": + case "ol": + case "ul": + case "pre": + // add two newlines + $output = "\n\n"; + break; + + case "td": + case "th": + // add tab char to separate table fields + $output = "\t"; + break; + + case "p": + // Microsoft exchange emails often include HTML which, when passed through + // html2text, results in lots of double line returns everywhere. + // + // To fix this, for any p element with a className of `MsoNormal` (the standard + // classname in any Microsoft export or outlook for a paragraph that behaves + // like a line return) we skip the first line returns and set the name to br. + // @phpstan-ignore-next-line + if ($is_office_document && $node->getAttribute('class') == 'MsoNormal') { + $output = ""; + $name = 'br'; + break; + } + + // add two lines + $output = "\n\n"; + break; + + case "tr": + // add one line + $output = "\n"; + break; + + case "div": + $output = ""; + if ($prevName !== null) { + // add one line + $output .= "\n"; + } + break; + + case "li": + $output = "- "; + break; + + default: + // print out contents of unknown tags + $output = ""; + break; + } + + // debug + //$output .= "[$name,$nextName]"; + + if (isset($node->childNodes)) { + + $n = $node->childNodes->item(0); + $previousSiblingNames = []; + $previousSiblingName = null; + + $parts = []; + $trailing_whitespace = 0; + + while ($n != null) { + + $text = self::iterateOverNode($n, $previousSiblingName, $in_pre || $name == 'pre', $is_office_document, $options); + + // Pass current node name to next child, as previousSibling does not appear to get populated + if ($n instanceof \DOMDocumentType + || $n instanceof \DOMProcessingInstruction + || ($n instanceof \DOMText && self::isWhitespace($text))) { + // Keep current previousSiblingName, these are invisible + $trailing_whitespace++; + } + else { + $previousSiblingName = strtolower($n->nodeName); + $previousSiblingNames[] = $previousSiblingName; + $trailing_whitespace = 0; + } + + $node->removeChild($n); + $n = $node->childNodes->item(0); + + $parts[] = $text; + } + + // Remove trailing whitespace, important for the br check below + while ($trailing_whitespace-- > 0) { + array_pop($parts); + } + + // suppress last br tag inside a node list if follows text + $last_name = array_pop($previousSiblingNames); + if ($last_name === 'br') { + $last_name = array_pop($previousSiblingNames); + if ($last_name === '#text') { + array_pop($parts); + } + } + + $output .= implode('', $parts); + } + + // end whitespace + switch ($name) { + case "h1": + case "h2": + case "h3": + case "h4": + case "h5": + case "h6": + case "pre": + case "p": + // add two lines + $output .= "\n\n"; + break; + + case "br": + // add one line + $output .= "\n"; + break; + + case "div": + break; + + case "a": + // links are returned in [text](link) format + // @phpstan-ignore-next-line + $href = $node->getAttribute("href"); + + $output = trim($output); + + // remove double [[ ]] s from linking images + if (substr($output, 0, 1) == "[" && substr($output, -1) == "]") { + $output = substr($output, 1, strlen($output) - 2); + + // for linking images, the title of the <a> overrides the title of the <img> + // @phpstan-ignore-next-line + if ($node->getAttribute("title")) { + // @phpstan-ignore-next-line + $output = $node->getAttribute("title"); + } + } + + // if there is no link text, but a title attr + // @phpstan-ignore-next-line + if (!$output && $node->getAttribute("title")) { + // @phpstan-ignore-next-line + $output = $node->getAttribute("title"); + } + + if ($href == null) { + // it doesn't link anywhere + // @phpstan-ignore-next-line + if ($node->getAttribute("name") != null) { + if ($options['drop_links']) { + $output = "$output"; + } else { + $output = "[$output]"; + } + } + } else { + if ($href == $output || $href == "mailto:$output" || $href == "http://$output" || $href == "https://$output") { + // link to the same address: just use link + $output = "$output"; + } else { + // replace it + if ($output) { + if ($options['drop_links']) { + $output = "$output"; + } else { + $output = "[$output]($href)"; + } + } else { + // empty string + $output = "$href"; + } + } + } + + // does the next node require additional whitespace? + switch ($nextName) { + case "h1": case "h2": case "h3": case "h4": case "h5": case "h6": + $output .= "\n"; + break; + } + break; + + case "img": + // @phpstan-ignore-next-line + if ($node->getAttribute("title")) { + // @phpstan-ignore-next-line + $output = "[" . $node->getAttribute("title") . "]"; + // @phpstan-ignore-next-line + } elseif ($node->getAttribute("alt")) { + // @phpstan-ignore-next-line + $output = "[" . $node->getAttribute("alt") . "]"; + } else { + $output = ""; + } + break; + + case "li": + $output .= "\n"; + break; + + case "blockquote": + // process quoted text for whitespace/newlines + $output = self::processWhitespaceNewlines($output); + + // add leading newline + $output = "\n" . $output; + + // prepend '> ' at the beginning of all lines + $output = preg_replace("/\n/im", "\n> ", $output); + + // replace leading '> >' with '>>' + $output = preg_replace("/\n> >/im", "\n>>", $output); + + // add another leading newline and trailing newlines + $output = "\n" . $output . "\n\n"; + break; + default: + // do nothing + } + + return $output; + } +} diff --git a/civicrm/vendor/soundasleep/html2text/src/Html2TextException.php b/civicrm/vendor/soundasleep/html2text/src/Html2TextException.php new file mode 100644 index 0000000000..fe919f3577 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/src/Html2TextException.php @@ -0,0 +1,15 @@ +<?php + +namespace Soundasleep; + +class Html2TextException extends \Exception { + + /** @var string $more_info */ + public $more_info; + + public function __construct(string $message = "", string $more_info = "") { + parent::__construct($message); + $this->more_info = $more_info; + } + +} diff --git a/civicrm/xml/schema/ACL/ACL.xml b/civicrm/xml/schema/ACL/ACL.xml index 1e058ab473..94e143ce7f 100644 --- a/civicrm/xml/schema/ACL/ACL.xml +++ b/civicrm/xml/schema/ACL/ACL.xml @@ -144,6 +144,8 @@ <name>is_active</name> <title>ACL Is Active?</title> <type>boolean</type> + <required>true</required> + <default>1</default> <comment>Is this property active?</comment> <add>1.6</add> <html> diff --git a/civicrm/xml/schema/Contact/DashboardContact.xml b/civicrm/xml/schema/Contact/DashboardContact.xml index bd3538d35d..4018ca9673 100644 --- a/civicrm/xml/schema/Contact/DashboardContact.xml +++ b/civicrm/xml/schema/Contact/DashboardContact.xml @@ -96,8 +96,10 @@ <field> <name>is_active</name> <type>boolean</type> + <required>true</required> <title>Dashlet is Active?</title> <comment>Is this widget active?</comment> + <!-- FIXME - nonstandard default for is_active --> <default>0</default> <html> <type>CheckBox</type> diff --git a/civicrm/xml/schema/Core/Dashboard.xml b/civicrm/xml/schema/Core/Dashboard.xml index d623d645c5..d61f0b5465 100644 --- a/civicrm/xml/schema/Core/Dashboard.xml +++ b/civicrm/xml/schema/Core/Dashboard.xml @@ -131,6 +131,7 @@ <type>boolean</type> <title>Is Dashlet Active?</title> <comment>Is this dashlet active?</comment> + <!-- FIXME - nonstandard default for is_active --> <default>0</default> <html> <type>CheckBox</type> diff --git a/civicrm/xml/schema/Core/EntityTag.xml b/civicrm/xml/schema/Core/EntityTag.xml index ab063e8a7d..c39d45b2da 100644 --- a/civicrm/xml/schema/Core/EntityTag.xml +++ b/civicrm/xml/schema/Core/EntityTag.xml @@ -56,7 +56,8 @@ <pseudoconstant> <table>civicrm_tag</table> <keyColumn>id</keyColumn> - <labelColumn>name</labelColumn> + <nameColumn>name</nameColumn> + <labelColumn>label</labelColumn> <condition>is_tagset != 1</condition> </pseudoconstant> <html> diff --git a/civicrm/xml/schema/Core/Managed.xml b/civicrm/xml/schema/Core/Managed.xml index 43de469c9d..9897042cf8 100644 --- a/civicrm/xml/schema/Core/Managed.xml +++ b/civicrm/xml/schema/Core/Managed.xml @@ -27,16 +27,20 @@ <name>module</name> <title>Module</title> <type>varchar</type> - <length>127</length> + <length>255</length> <required>true</required> - <comment>Name of the module which declared this object</comment> + <comment>Name of the module which declared this object (soft FK to civicrm_extension.full_name)</comment> + <pseudoconstant> + <callback>CRM_Core_BAO_Managed::getBaseModules</callback> + </pseudoconstant> <add>4.2</add> </field> <field> <name>name</name> <title>Name</title> <type>varchar</type> - <length>127</length> + <length>255</length> + <required>true</required> <comment>Symbolic name used by the module to identify the object</comment> <add>4.2</add> </field> @@ -59,15 +63,16 @@ <name>entity_id</name> <title>Entity ID</title> <type>int unsigned</type> - <required>true</required> - <comment>Foreign key to the referenced item.</comment> + <comment>Soft foreign key to the referenced item.</comment> <add>4.2</add> </field> <field> <name>cleanup</name> <title>Cleanup Setting</title> <type>varchar</type> - <length>32</length> + <length>16</length> + <required>true</required> + <default>'always'</default> <comment>Policy on when to cleanup entity (always, never, unused)</comment> <pseudoconstant> <callback>CRM_Core_ManagedEntities::getCleanupOptions</callback> diff --git a/civicrm/xml/schema/Core/Tag.xml b/civicrm/xml/schema/Core/Tag.xml index 3d875d5346..620eb591e9 100644 --- a/civicrm/xml/schema/Core/Tag.xml +++ b/civicrm/xml/schema/Core/Tag.xml @@ -8,7 +8,7 @@ <add>1.1</add> <log>true</log> <icon>fa-tag</icon> - <labelField>name</labelField> + <labelField>label</labelField> <field> <name>id</name> <title>Tag ID</title> @@ -30,9 +30,23 @@ <type>varchar</type> <required>true</required> <length>64</length> - <comment>Name of Tag.</comment> + <comment>Unique machine name</comment> <add>1.1</add> </field> + <!-- TODO: Localizable --> + <field> + <name>label</name> + <title>Tag Label</title> + <comment>User-facing tag name</comment> + <required>true</required> + <type>varchar</type> + <length>64</length> + <html> + <type>Text</type> + </html> + <add>5.68</add> + </field> + <!-- TODO: Localizable --> <field> <name>description</name> <title>Description</title> @@ -50,7 +64,8 @@ <pseudoconstant> <table>civicrm_tag</table> <keyColumn>id</keyColumn> - <labelColumn>name</labelColumn> + <nameColumn>name</nameColumn> + <labelColumn>label</labelColumn> </pseudoconstant> <html> <label>Parent Tag</label> @@ -116,6 +131,7 @@ <comment>FK to civicrm_contact, who created this tag</comment> <html> <label>Created By</label> + <type>EntityRef</type> </html> <add>3.4</add> </field> @@ -140,6 +156,13 @@ <type>datetime</type> <title>Tag Created Date</title> <comment>Date and time that tag was created.</comment> + <default>CURRENT_TIMESTAMP</default> + <readonly>true</readonly> + <html> + <type>Select Date</type> + <formatType>activityDateTime</formatType> + <label>Created Date</label> + </html> <add>3.4</add> </field> </table> diff --git a/civicrm/xml/schema/Event/Event.xml b/civicrm/xml/schema/Event/Event.xml index 0ed5c2e863..194c97ecc8 100644 --- a/civicrm/xml/schema/Event/Event.xml +++ b/civicrm/xml/schema/Event/Event.xml @@ -294,6 +294,7 @@ <title>Is Active</title> <type>boolean</type> <required>true</required> + <!-- FIXME - nonstandard default for is_active --> <default>0</default> <comment>Is this Event enabled or disabled/cancelled?</comment> <add>1.7</add> diff --git a/civicrm/xml/schema/Mailing/Mailing.xml b/civicrm/xml/schema/Mailing/Mailing.xml index 5cba6fe185..740e64ae15 100644 --- a/civicrm/xml/schema/Mailing/Mailing.xml +++ b/civicrm/xml/schema/Mailing/Mailing.xml @@ -11,8 +11,9 @@ <component>CiviMail</component> <labelField>name</labelField> <paths> - <add>civicrm/a/#/mailing/new</add> - <update>civicrm/a/#/mailing/[id]</update> + <add>civicrm/mailing/send</add> + <update>civicrm/mailing/send?mid=[id]&continue=true</update> + <copy>civicrm/mailing/send?mid=[id]</copy> <view>civicrm/mailing/report?mid=[id]&reset=1</view> <preview>civicrm/mailing/view?id=[id]&reset=1</preview> </paths> diff --git a/civicrm/xml/schema/Mailing/MailingTrackableURL.xml b/civicrm/xml/schema/Mailing/MailingTrackableURL.xml index 337e8adbbf..7cef671ecd 100644 --- a/civicrm/xml/schema/Mailing/MailingTrackableURL.xml +++ b/civicrm/xml/schema/Mailing/MailingTrackableURL.xml @@ -28,6 +28,9 @@ <type>text</type> <required>true</required> <comment>The URL to be tracked.</comment> + <html> + <type>Text</type> + </html> </field> <field> <name>mailing_id</name> diff --git a/civicrm/xml/templates/civicrm_msg_template.tpl b/civicrm/xml/templates/civicrm_msg_template.tpl index 8fcd5fe035..22f55527c1 100644 --- a/civicrm/xml/templates/civicrm_msg_template.tpl +++ b/civicrm/xml/templates/civicrm_msg_template.tpl @@ -9,74 +9,6 @@ -- Generated from {$smarty.template} -- {$generated} -- -{* not sure how to define the below in Smarty, so doing it in PHP instead *} -{php} - $ogNames = array( - 'case' => ts('Message Template Workflow for Cases', array('escape' => 'sql')), - 'contribution' => ts('Message Template Workflow for Contributions', array('escape' => 'sql')), - 'event' => ts('Message Template Workflow for Events', array('escape' => 'sql')), - 'friend' => ts('Message Template Workflow for Tell-a-Friend', array('escape' => 'sql')), - 'membership' => ts('Message Template Workflow for Memberships', array('escape' => 'sql')), - 'meta' => ts('Message Template Workflow for Meta Templates', array('escape' => 'sql')), - 'pledge' => ts('Message Template Workflow for Pledges', array('escape' => 'sql')), - 'uf' => ts('Message Template Workflow for Profiles', array('escape' => 'sql')), - 'petition' => ts('Message Template Workflow for Petition', array('escape' => 'sql')), - ); - $ovNames = array( - 'case' => array( - 'case_activity' => ts('Cases - Send Copy of an Activity', array('escape' => 'sql')), - ), - 'contribution' => array( - 'contribution_dupalert' => ts('Contributions - Duplicate Organization Alert', array('escape' => 'sql')), - 'contribution_offline_receipt' => ts('Contributions - Receipt (off-line)', array('escape' => 'sql')), - 'contribution_online_receipt' => ts('Contributions - Receipt (on-line)', array('escape' => 'sql')), - 'contribution_invoice_receipt' => ts('Contributions - Invoice', array('escape' => 'sql')), - 'contribution_recurring_notify' => ts('Contributions - Recurring Start and End Notification', array('escape' => 'sql')), - 'contribution_recurring_cancelled' => ts('Contributions - Recurring Cancellation Notification', array('escape' => 'sql')), - 'contribution_recurring_billing' => ts('Contributions - Recurring Billing Updates', array('escape' => 'sql')), - 'contribution_recurring_edit' => ts('Contributions - Recurring Updates', array('escape' => 'sql')), - 'pcp_notify' => ts('Personal Campaign Pages - Admin Notification', array('escape' => 'sql')), - 'pcp_status_change' => ts('Personal Campaign Pages - Supporter Status Change Notification', array('escape' => 'sql')), - 'pcp_supporter_notify' => ts('Personal Campaign Pages - Supporter Welcome', array('escape' => 'sql')), - 'pcp_owner_notify' => ts('Personal Campaign Pages - Owner Notification', array('escape' => 'sql')), - 'payment_or_refund_notification' => ts('Additional Payment Receipt or Refund Notification', array('escape' => 'sql')), - ), - 'event' => array( - 'event_offline_receipt' => ts('Events - Registration Confirmation and Receipt (off-line)', array('escape' => 'sql')), - 'event_online_receipt' => ts('Events - Registration Confirmation and Receipt (on-line)', array('escape' => 'sql')), - 'event_registration_receipt' => ts('Events - Receipt only', array('escape' => 'sql')), - 'participant_cancelled' => ts('Events - Registration Cancellation Notice', array('escape' => 'sql')), - 'participant_confirm' => ts('Events - Registration Confirmation Invite', array('escape' => 'sql')), - 'participant_expired' => ts('Events - Pending Registration Expiration Notice', array('escape' => 'sql')), - 'participant_transferred' => ts('Events - Registration Transferred Notice', array('escape' => 'sql')), - ), - 'friend' => array( - 'friend' => ts('Tell-a-Friend Email', array('escape' => 'sql')), - ), - 'membership' => array( - 'membership_offline_receipt' => ts('Memberships - Signup and Renewal Receipts (off-line)', array('escape' => 'sql')), - 'membership_online_receipt' => ts('Memberships - Receipt (on-line)', array('escape' => 'sql')), - 'membership_autorenew_cancelled' => ts('Memberships - Auto-renew Cancellation Notification', array('escape' => 'sql')), - 'membership_autorenew_billing' => ts('Memberships - Auto-renew Billing Updates', array('escape' => 'sql')), - ), - 'meta' => array( - 'test_preview' => ts('Test-drive - Receipt Header', array('escape' => 'sql')), - ), - 'pledge' => array( - 'pledge_acknowledge' => ts('Pledges - Acknowledgement', array('escape' => 'sql')), - 'pledge_reminder' => ts('Pledges - Payment Reminder', array('escape' => 'sql')), - ), - 'uf' => array( - 'uf_notify' => ts('Profiles - Admin Notification', array('escape' => 'sql')), - ), - 'petition' => array( - 'petition_sign' => ts('Petition - signature added', array('escape' => 'sql')), - 'petition_confirmation_needed' => ts('Petition - need verification', array('escape' => 'sql')), - ), - ); - $this->assign('ogNames', $ogNames); - $this->assign('ovNames', $ovNames); -{/php} INSERT INTO civicrm_option_group (name, {localize field='title'}title{/localize}, {localize field='description'}description{/localize}, is_reserved, is_active) VALUES @@ -106,23 +38,17 @@ INSERT INTO civicrm_msg_template (msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved) VALUES {foreach from=$ovNames key=gName item=ovs name=for_groups} {foreach from=$ovs key=vName item=title name=for_values} - {fetch assign=subject file="`$gencodeXmlDir`/templates/message_templates/`$vName`_subject.tpl"} - {fetch assign=text file="`$gencodeXmlDir`/templates/message_templates/`$vName`_text.tpl"} - {fetch assign=html file="`$gencodeXmlDir`/templates/message_templates/`$vName`_html.tpl"} + {assign var="subject_file_name" value=$vName|cat:'_subject'} + {assign var="html_file_name" value=$vName|cat:'_html'} + {assign var="text_file_name" value=$vName|cat:'_text'} + {fetch assign=subject file="$gencodeXmlDir/templates/message_templates/$subject_file_name.tpl"} + {fetch assign=text file="$gencodeXmlDir/templates/message_templates/$text_file_name.tpl"} + {fetch assign=html file="$gencodeXmlDir/templates/message_templates/$html_file_name.tpl"} ('{$title}', '{$subject|escape:"quotes"}', '{$text|escape:"quotes"}', '{$html|escape:"quotes"}', '{$vName}', @tpl_ovid_{$vName}, 1, 0), ('{$title}', '{$subject|escape:"quotes"}', '{$text|escape:"quotes"}', '{$html|escape:"quotes"}', '{$vName}', @tpl_ovid_{$vName}, 0, 1) {if $smarty.foreach.for_groups.last and $smarty.foreach.for_values.last};{else},{/if} {/foreach} {/foreach} -{php} - $dir = $this->_tpl_vars['gencodeXmlDir'] . '/templates/message_templates/sample'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $templates[] = array('name' => basename($filename, '.tpl'), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - {foreach from=$templates item=tpl} {fetch assign=content file=$tpl.filename} INSERT INTO civicrm_msg_template diff --git a/civicrm/xml/templates/civicrm_state_province.tpl b/civicrm/xml/templates/civicrm_state_province.tpl index 45284f7413..0246455a8c 100644 --- a/civicrm/xml/templates/civicrm_state_province.tpl +++ b/civicrm/xml/templates/civicrm_state_province.tpl @@ -2386,19 +2386,18 @@ INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (3947, 1161, "06", "Buskerud"), (3948, 1161, "20", "Finnmark"), (3949, 1161, "04", "Hedmark"), -(3950, 1161, "12", "Hordaland"), (3951, 1161, "15", "Møre og Romsdal"), (3952, 1161, "18", "Nordland"), (3953, 1161, "17", "Nord-Trøndelag"), (3954, 1161, "05", "Oppland"), (3955, 1161, "03", "Oslo"), (3956, 1161, "11", "Rogaland"), -(3957, 1161, "14", "Sogn og Fjordane"), -(3958, 1161, "16", "Sør-Trøndelag"), -(3959, 1161, "06", "Telemark"), -(3960, 1161, "19", "Troms"), -(3961, 1161, "10", "Vest-Agder"), -(3962, 1161, "07", "Vestfold"), +(3957, 1161, "16", "Sør-Trøndelag"), +(3958, 1161, "06", "Telemark"), +(3959, 1161, "19", "Troms"), +(3960, 1161, "10", "Vest-Agder"), +(3961, 1161, "07", "Vestfold"), +(3962, 1161, "46", "Vestland"), (3963, 1161, "01", "Østfold"), (3964, 1161, "22", "Jan Mayen"), (3965, 1161, "21", "Svalbard"), diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl index 3cc70ea05f..8fad146e4b 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl @@ -380,7 +380,7 @@ </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -388,8 +388,8 @@ </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl index 62bb785446..e69de29bb2 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl @@ -1,233 +0,0 @@ -{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} -{$event.confirm_email_text} -{/if} - -{if !empty($isOnWaitlist)} -=============================================================================== - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -=============================================================================== - -{elseif !empty($isRequireApproval)} -=============================================================================== - -{ts}Your registration has been submitted.{/ts} - -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -=============================================================================== - -{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} - -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - - -=============================================================================== - -{ts}Event Information and Location{/ts} - -=============================================================================== - -{event.title} -{event.start_date|crmDate}{if {event.end_date|boolean}}-{if '{event.end_date|crmDate:"%Y%m%d"}' === '{event.start_date|crmDate:"%Y%m%d"}'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if} - -{if "{participant.role_id:label}" neq 'Attendee'} -{ts}Participant Role{/ts}: {participant.role_id:label} -{/if} - -{if !empty($isShowLocation)} -{event.location} -{/if}{*End of isShowLocation condition*} - -{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} -{ts}Event Contacts:{/ts} - -{if {event.loc_block_id.phone_id.phone|boolean}} -{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.phone_2_id.phone|boolean}} -{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.email_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_id.email} -{/if} -{if {event.loc_block_id.email_2_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if} -{/if} - - -{if {event.is_public|boolean}} -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar entry for this event.{/ts} {$icalFeed} -{capture assign=gCalendar}{crmURL p='civicrm/event/ical' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Add event to Google Calendar{/ts} {$gCalendar} -{/if} - -{if {contact.email_primary.email|boolean}} - -=============================================================================== - -{ts}Registered Email{/ts} - -=============================================================================== - -{contact.email_primary.email} -{/if} -{if {event.is_monetary|boolean}} {* This section for Paid events only.*} - -=============================================================================== - -{event.fee_label} -=============================================================================== - -{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if {event.is_monetary|boolean}} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ------------------------------------------------------------------------------ - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{if $isShowTax && {contribution.tax_amount|boolean}} -{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} -{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} -{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} -{/if} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:"%10s"}{/if} - -{foreach from=$value item=line} -{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} -{/foreach} -{/if} -{/foreach} - -{if $isShowTax && {contribution.tax_amount|boolean}} -{if $totalAmount and $totalTaxAmount} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{/if} -{/foreach} -{/if} -{/if} - -{if !empty($amount) && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} - -{if {contribution.tax_amount|boolean}} -{ts}Total Tax Amount{/ts}: {contribution.tax_amount} -{/if} -{if {event.is_monetary|boolean}} - -{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{ts}Balance{/ts}: {contribution.balance_amount} -{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{/if} - -{if !empty($pricesetFieldsCount)} - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1} - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - -{if {participant.register_date|boolean}} -{ts}Registration Date{/ts}: {participant.register_date} -{/if} -{if {contribution.receive_date|boolean}} -{ts}Transaction Date{/ts}: {contribution.receive_date} -{/if} -{if {contribution.financial_type_id|boolean}} -{ts}Financial Type{/ts}: {contribution.financial_type_id:label} -{/if} -{if {contribution.trxn_id|boolean}} -{ts}Transaction #{/ts}: {contribution.trxn_id} -{/if} -{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}} -{ts}Paid By{/ts}: {contribution.payment_instrument_id:label} -{/if} -{if {contribution.check_number|boolean}} -{ts}Check Number{/ts}: {contribution.check_number} -{/if} -{if !empty($billingName)} - -=============================================================================== - -{ts}Billing Name and Address{/ts} - -=============================================================================== - -{$billingName} -{$address} -{/if} - -{if !empty($credit_card_type)} -=========================================================== -{ts}Credit Card Information{/ts} - -=============================================================================== - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if !empty($customGroup)} -{foreach from=$customGroup item=value key=customName} -============================================================================== - -{$customName} -============================================================================== - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl index 12b3be3e4e..30b451ca27 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl @@ -389,7 +389,7 @@ </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -397,8 +397,8 @@ </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl index d9adb6fab7..1eb6b86c06 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl @@ -184,7 +184,7 @@ You were registered by: {$payer.name} {if !empty($checkNumber)} {ts}Check Number{/ts}: {$checkNumber} {/if} -{if !empty($billingName)} +{if {contribution.address_id.display|boolean}} =============================================================================== @@ -192,8 +192,8 @@ You were registered by: {$payer.name} =============================================================================== -{$billingName} -{$address} +{contribution.address_id.name} +{contribution.address_id.display} {/if} {if !empty($credit_card_type)} diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl index 00854d6e9e..6d1f2200dc 100644 --- a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl @@ -530,7 +530,6 @@ </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -539,7 +538,6 @@ {$customValue} </td> </tr> - {/if} {/foreach} {/if} diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index e508b09ccf..0cd863821a 100644 --- a/civicrm/xml/version.xml +++ b/civicrm/xml/version.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="iso-8859-1" ?> <version> - <version_no>5.67.3</version_no> + <version_no>5.68.0</version_no> </version> -- GitLab